(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [48855, 78775], {
        807801: e => {
            e.exports = {}
        },
        711196: e => {
            e.exports = {}
        },
        281786: e => {
            e.exports = {}
        },
        24261: e => {
            e.exports = {}
        },
        715216: e => {
            e.exports = {
                "tv-spinner__container-rotate": "tv-spinner__container-rotate-aLqboHuu"
            }
        },
        453917: e => {
            e.exports = {
                "css-value-copyright-transition-params": ".6s 0s cubic-bezier(.4, .01, .22, 1)",
                "css-value-copyright-transition-params-half-time": ".3s 0s cubic-bezier(.4, .01, .22, 1)",
                label: "label-dzbd7lyV",
                logoWrap: "logoWrap-dzbd7lyV",
                expandedWithTransition: "expandedWithTransition-dzbd7lyV",
                expandedByClick: "expandedByClick-dzbd7lyV",
                start: "start-dzbd7lyV",
                end: "end-dzbd7lyV",
                snap: "snap-dzbd7lyV",
                top: "top-dzbd7lyV",
                bottom: "bottom-dzbd7lyV",
                large: "large-dzbd7lyV",
                expanded: "expanded-dzbd7lyV",
                label__link: "label__link-dzbd7lyV"
            }
        },
        384961: e => {
            e.exports = {}
        },
        607423: (e, t, n) => {
            "use strict";
            n.d(t, {
                isNativeUIInteraction: () => i,
                isTextEditingField: () => o
            });
            var r = n(591800);

            function o(e) {
                if ("INPUT" === e.tagName) {
                    const t = e.type;
                    return "text" === t || "email" === t || "number" === t || "password" === t || "search" === t || "tel" === t || "url" === t
                }
                return "TEXTAREA" === e.tagName || e.isContentEditable
            }

            function i(e, t) {
                if (!t) return !1;
                const n = 255 & e;
                if (27 === n || n >>> 4 == 7) return !1;
                switch (e ^ n) {
                    case r.Modifiers.Alt:
                        return (38 === n || 40 === n) && "SELECT" === t.tagName || o(t);
                    case r.Modifiers.Alt + r.Modifiers.Shift:
                        return o(t);
                    case r.Modifiers.Mod:
                        if (67 === n || !r.isMacKeyboard && 45 === n) {
                            const e = t.ownerDocument && t.ownerDocument.getSelection();
                            if (e && !e.isCollapsed) return !0
                        }
                        return o(t);
                    case r.Modifiers.Mod + r.Modifiers.Shift:
                        return n >= 33 && n <= 40 && o(t);
                    case r.Modifiers.Shift:
                    case 0:
                        return 9 === n ? !(!t.ownerDocument || t === t.ownerDocument.body || t === t.ownerDocument.documentElement) : (! function(e) {
                            if ("BUTTON" === e.tagName) return !0;
                            if ("INPUT" === e.tagName) {
                                const t = e.type;
                                if ("submit" === t || "button" === t || "reset" === t || "checkbox" === t || "radio" === t) return !0
                            }
                            return !1
                        }(t) || 13 === n || 32 === n || 9 === n) && ("form" in t || t.isContentEditable)
                }
                return !1
            }
        },
        745269: (e, t, n) => {
            "use strict";
            n.d(t, {
                color: () => i,
                dur: () => r,
                easingFunc: () => o
            });
            const r = 350,
                o = {
                    linear: e => e,
                    easeInQuad: e => e * e,
                    easeOutQuad: e => e * (2 - e),
                    easeInOutQuad: e => e < .5 ? 2 * e * e : (4 - 2 * e) * e - 1,
                    easeInCubic: e => e * e * e,
                    easeOutCubic: e => --e * e * e + 1,
                    easeInOutCubic: e => e < .5 ? 4 * e * e * e : (e - 1) * (2 * e - 2) * (2 * e - 2) + 1,
                    easeInQuart: e => e * e * e * e,
                    easeOutQuart: e => 1 - --e * e * e * e,
                    easeInOutQuart: e => e < .5 ? 8 * e * e * e * e : 1 - 8 * --e * e * e * e,
                    easeInQuint: e => e * e * e * e * e,
                    easeOutQuint: e => 1 + --e * e * e * e * e,
                    easeInOutQuint: e => e < .5 ? 16 * e * e * e * e * e : 1 + 16 * --e * e * e * e * e
                };
            const i = {
                black70: "#4A4A4A",
                black80: "#535353"
            }
        },
        685023: (e, t, n) => {
            "use strict";
            n.d(t, {
                DEFAULT_SIZE: () => r,
                spinnerSizeMap: () => o
            });
            const r = "large",
                o = {
                    mini: "xsmall",
                    xxsmall: "xxsmall",
                    xsmall: "xsmall",
                    small: "small",
                    medium: "medium",
                    large: "large"
                }
        },
        673747: (e, t, n) => {
            "use strict";
            var r = n(778785),
                o = n(650151),
                i = n(799786),
                s = n(112539),
                a = n(630112),
                c = n(779527);
            let u = !1,
                l = null,
                d = null;
            r.mobiletouch || (document.addEventListener("mouseover", m, !0), document.addEventListener("focus", (function(e) {
                const t = e.target;
                if (!(t instanceof HTMLElement && t.closest('[data-tooltip-show-on-focus="true"]') && t.matches(":focus-visible"))) return;
                m(e, !0)
            }), {
                capture: !0
            }), document.addEventListener("active-descendant-focus", (function(e) {
                e.target instanceof HTMLElement && m(e, !0)
            }), {
                capture: !0
            }));
            const p = new MutationObserver((() => {
                    if (l && l.options.target) {
                        let e;
                        e = "isConnected" in l.options.target ? l.options.target.isConnected : document.body.contains(l.options.target), e || y()
                    }
                })),
                h = (e, t = {}) => {
                    const {
                        content: n,
                        ...r
                    } = _(t), o = c.getDataFromTarget(e), i = Object.assign(o, r);
                    return "none" !== n.type && (i.content = n), !("none" === i.content.type && !i.hotkey) && (i.target = e, f(i), !0)
                },
                f = e => {
                    const t = _(e),
                        n = c.getTooltip(t);
                    if (l = {
                            options: t,
                            element: n
                        }, (0, a.setTooltip)(n), (0, s.clearSchedule)(), !u) return c.hideTooltip(n), void(0, s.scheduleRender)((() => v(n)), function(e) {
                        return "number" != typeof e.tooltipDelay || isNaN(e.tooltipDelay) ? 500 : e.tooltipDelay
                    }(t));
                    const {
                        tooltipDebounce: r
                    } = e;
                    "number" != typeof r || isNaN(r) ? v(n) : (0, s.scheduleRender)((() => v(n)), r)
                };

            function m(e, t) {
                var n;
                if ("sourceCapabilities" in e && (null === (n = e.sourceCapabilities) || void 0 === n ? void 0 : n.firesTouchEvents)) return;
                const r = function(e, t, n) {
                    const r = [];
                    for (; e && e !== t;) e.classList && e.classList.contains(n) && r.push(e), e = e.parentElement || b(e.parentNode);
                    return r
                }(e.target, e.currentTarget, "apply-common-tooltip");
                for (const n of r) {
                    if (e instanceof MouseEvent)
                        if ("buttons" in e) {
                            if (1 & e.buttons) continue
                        } else if (1 === e.which) continue;
                    const r = () => h(n);
                    if (r()) {
                        const e = e => o(null, !0),
                            o = (i, s = !1) => {
                                n.removeEventListener("common-tooltip-update", r), n.removeEventListener("mouseleave", o), n.removeEventListener("mousedown", o), document.removeEventListener("scroll", e, {
                                    capture: !0
                                }), t && (n.removeEventListener("blur", o), n.removeEventListener("active-descendant-blur", o)), d && (d.destroy(), d = null), y(s)
                            };
                        n.addEventListener("common-tooltip-update", r), n.addEventListener("mouseleave", o), n.addEventListener("mousedown", o), document.addEventListener("scroll", e, {
                            capture: !0
                        }), t && (n.addEventListener("blur", o), n.addEventListener("active-descendant-blur", o)), null === d && (d = (0, i.createGroup)({
                            desc: "Tooltip"
                        }), d.add({
                            desc: "Hide",
                            hotkey: 27,
                            handler: o
                        }));
                        break
                    }
                }
            }

            function g() {
                (0, a.empty)(), u = !1, l = null
            }
            const y = (e, t) => {
                if ((0, s.clearSchedule)(), (0, o.ensureNotNull)(p).disconnect(), !l) return;
                if (!e && !u) return;
                const {
                    element: n,
                    options: r
                } = l, i = () => {
                    n.removeEventListener("mouseleave", i), c.hideTooltip(n), e ? g() : (0, s.scheduleRemove)((() => {
                        g()
                    }), 250), null == t || t()
                };
                r.tooltipHideDelay ? (0, s.scheduleHide)((() => {
                    n.querySelector(":hover") ? n.addEventListener("mouseleave", i) : i()
                }), r.tooltipHideDelay) : i()
            };

            function v(e) {
                const {
                    options: t
                } = (0, o.ensureNotNull)(l);
                if (c.setStyle(e, t), c.showTooltip(e), (0, o.ensureNotNull)(p).observe(document, {
                        childList: !0,
                        subtree: !0
                    }), u = !0, t.forceHideOnMove) {
                    const e = () => {
                        document.removeEventListener("mousemove", e), document.removeEventListener("touchmove", e), y()
                    };
                    document.addEventListener("mousemove", e), document.addEventListener("touchmove", e)
                }
            }

            function b(e) {
                return e && (e.nodeType === Node.ELEMENT_NODE ? e : null)
            }

            function _(e) {
                if (function(e) {
                        return "content" in e
                    }(e)) return e;
                const {
                    inner: t,
                    html: n,
                    text: r,
                    ...o
                } = e;
                let i = {
                    type: "none"
                };
                return t && (i = {
                    type: "element",
                    data: t
                }), r && (i = {
                    type: n ? "html" : "text",
                    data: r
                }), {
                    content: i,
                    ...o
                }
            }
        },
        62889: (e, t, n) => {
            "use strict";
            n.d(t, {
                copyrightLabel: () => c
            });
            var r, o = n(497754),
                i = n(995683),
                s = n(124829),
                a = n(453917);

            function c({
                svgText: e,
                icon: t,
                theme: n,
                url: c,
                mode: u,
                verticalPosition: l = r.Vertical.Bottom,
                horizontalPosition: d = r.Horizontal.End,
                snapToEdge: p = !0,
                isExpanded: h = !1,
                className: f
            }) {
                let m;
                switch (u) {
                    case "new":
                    case "with_border":
                    case "large_trade":
                        m = (0, s.clone)(n);
                        break;
                    default:
                        m = (0, i.mergeThemes)((0, s.clone)(a), n)
                }
                const g = document.createElement("span");
                let y;
                c && (y = document.createElement("a"), y.classList.add(...m.label__link.split(/\s/)), y.href = c, y.target = "_blank", y.rel = "noopener noreferrer", y.setAttribute("data-target-type", "copyright"), g.append(y)), g.className = o(m.label, d === r.Horizontal.Start && m.start, d === r.Horizontal.End && m.end, l === r.Vertical.Top && m.top, l === r.Vertical.Bottom && m.bottom, p && "large_trade" !== u && m.snap, "large_old" === u && m.large, (h || "large_trade" === u) && m.expanded, f, "js-copyright-label"), g.addEventListener("click", (() => {
                    function e() {
                        g.classList.remove(m.expandedByClick), g.removeEventListener("mouseleave", e)
                    }
                    g.classList.contains(m.expandedWithTransition) || g.classList.contains(m.expanded) || (g.classList.contains(m.expandedByClick) ? c || e() : (g.classList.add(m.expandedByClick), g.addEventListener("mouseleave", e)))
                }));
                const v = document.createElement("span");
                v.className = m.logoWrap, v.innerHTML = t;
                const b = document.createElement("span");
                return b.className = m.svgTextWrap, b.innerHTML = e, g.append(v, b), [g, m]
            }! function(e) {
                let t, n;
                ! function(e) {
                    e[e.Bottom = 0] = "Bottom", e[e.Top = 1] = "Top"
                }(t = e.Vertical || (e.Vertical = {})),
                function(e) {
                    e[e.Start = 0] = "Start", e[e.End = 1] = "End"
                }(n = e.Horizontal || (e.Horizontal = {}))
            }(r || (r = {}))
        },
        351079: (e, t, n) => {
            "use strict";
            n.d(t, {
                createCopyrightLabel: () => s
            });
            var r = n(497754),
                o = n(62889),
                i = n(952598);

            function s({
                sheriffOptions: e,
                ...t
            }) {
                const [n, s] = (0, o.copyrightLabel)(t), a = e && e.includes(i.KnownAction.Expand), c = e && e.includes(i.KnownAction.LargeTradeLogo);
                return n.className = r(n.className, (a || c) && s.expandedWithTransition), n
            }
        },
        952598: (e, t, n) => {
            "use strict";
            var r;
            n.d(t, {
                    KnownAction: () => r,
                    widgetSheriffActions: () => o
                }),
                function(e) {
                    e.Expand = "expand-logo", e.LargeTradeLogo = "large-trade-logo"
                }(r || (r = {}));
            const o = new Set([r.Expand, r.LargeTradeLogo])
        },
        607436: (e, t, n) => {
            "use strict";
            n.d(t, {
                DEFAULT_SIZE: () => r.DEFAULT_SIZE,
                spinnerSizeMap: () => r.spinnerSizeMap
            });
            var r = n(685023)
        },
        941285: (e, t, n) => {
            "use strict";
            n.d(t, {
                Spinner: () => s
            });
            n(715216);
            var r = n(715050),
                o = n(607436);
            const i = (0, r.parseHtmlElement)(function(e = "") {
                return `<div class="tv-spinner ${e}" role="progressbar"></div>`
            }());
            class s {
                constructor(e) {
                    this._shown = !1, this._el = i.cloneNode(!0), this.setSize(o.spinnerSizeMap[e || o.DEFAULT_SIZE])
                }
                spin(e) {
                    return this._el.classList.add("tv-spinner--shown"), void 0 === this._container && (this._container = e, void 0 !== e && e.appendChild(this._el)), this._shown = !0, this
                }
                stop(e) {
                    return e && void 0 !== this._container && this._container.removeChild(this._el), this._el && this._el.classList.remove("tv-spinner--shown"), this._shown = !1, this
                }
                setStyle(e) {
                    return Object.keys(e).forEach((t => {
                        const n = e[t];
                        void 0 !== n && this._el.style.setProperty(t, n)
                    })), this
                }
                style() {
                    return this._el.style
                }
                setSize(e) {
                    const t = void 0 !== e ? `tv-spinner--size_${e}` : "";
                    return this._el.className = `tv-spinner ${t} ${this._shown?"tv-spinner--shown":""}`, this
                }
                getEl() {
                    return this._el
                }
                destroy() {
                    this.stop(), delete this._el, delete this._container
                }
            }
        },
        596080: (e, t, n) => {
            "use strict";
            var r, o;
            n.d(t, {
                    IFrameEvents: () => o
                }),
                function(e) {
                    let t;
                    ! function(e) {
                        e.SetSymbol = "set-symbol", e.SetInterval = "set-interval"
                    }(t = e.Names || (e.Names = {}))
                }(r || (r = {})),
                function(e) {
                    let t;
                    ! function(e) {
                        e.SymbolClick = "tv-widget-symbol-click", e.WidgetLoad = "tv-widget-load", e.WidgetReady = "tv-widget-ready", e.ResizeIframe = "tv-widget-resize-iframe", e.NoData = "tv-widget-no-data"
                    }(t = e.Names || (e.Names = {}))
                }(o || (o = {}))
        },
        410899: (e, t, n) => {
            "use strict";

            function r(e, t, n) {
                const r = {
                    name: e,
                    frameElementId: t,
                    data: n
                };
                window.parent.postMessage(r, "*")
            }
            n.d(t, {
                dispatchEventToParent: () => r
            })
        },
        746849: (e, t, n) => {
            "use strict";
            n.d(t, {
                checkIfExchangeAvailable: () => i
            });
            n(466281);
            var r = n(406103);

            function o(e) {
                if (!(0, r.isIDCExchange)(e)) return !1;
                e = s(e);
                const t = window.pro,
                    n = t.getProduct(e);
                return void 0 !== n.idc_service_codes_delay && ((!Array.isArray(n.included_exchanges) || !n.included_exchanges.some((e => t.hasPackage(s(e))))) && ! function(e) {
                    const t = window.pro;
                    return t.hasPackage(e) || t.hasPackage(e + "_dly")
                }(e))
            }

            function i(e) {
                const t = window.pro;
                return new Promise((n => {
                    window.is_authenticated ? !t.getIDCExchanges(!0).length || t.isInvalidShopConf() ? t.updateShopConf().then((() => {
                        n(!o(e))
                    })).catch((() => {
                        n(!0)
                    })) : n(!o(e)) : n(!0)
                }))
            }

            function s(e) {
                return e.startsWith("exchange-") ? e : "exchange-{0}".format(e.toLowerCase())
            }
        },
        630440: (e, t, n) => {
            "use strict";
            n.d(t, {
                getWarningTextForFreeUsers: () => o
            });
            var r = n(444372);

            function o() {
                return window.is_authenticated ? r.t(null, void 0, n(401369)) : r.t(null, void 0, n(668083))
            }
        },
        406103: (e, t, n) => {
            "use strict";
            n.d(t, {
                isIDCExchange: () => o
            });
            var r = n(343823);

            function o(e, t = !1) {
                var n, o, i;
                if (e && e.startsWith("exchange-")) return function(e, t = !1) {
                    var n;
                    const o = null === (n = window.pro) || void 0 === n ? void 0 : n.getProduct(e);
                    return !(void 0 === o || !(0, r.isProductDefined)(o) || (t ? !o.idc_service_codes_delay : !o.idc_service_codes))
                }(e, t);
                const s = (e || "").toLowerCase();
                return null !== (i = null === (o = null === (n = window.pro) || void 0 === n ? void 0 : n.getIDCExchanges(t)) || void 0 === o ? void 0 : o.includes(s)) && void 0 !== i && i
            }
        },
        599612: (e, t, n) => {
            "use strict";
            n.d(t, {
                check: () => c
            });
            var r = n(268552),
                o = n(702598),
                i = n(778016),
                s = n(746849),
                a = n(98017);

            function c(e, t = !0) {
                return new Promise(((n, c) => {
                    const u = (0, r.getExchange)(e);
                    u ? (0, s.checkIfExchangeAvailable)(u).then((r => r ? n(e) : (0, i.enabled)("IDC_AVAILABLE_DELAY") ? t ? void(0, o.fetch)(`/idc-sign-agreement-check/${u}/`, {
                        credentials: "include"
                    }).then((t => t.json().then((t => t.res === a.SymbolAvailabilityCodes.DELAY_NOT_AVAILABLE ? c({
                        exchange: u,
                        errCode: t.res,
                        reason: "delay not available",
                        symbol: e
                    }) : t.res === a.SymbolAvailabilityCodes.NEED_SIGN_AGREEMENT ? c({
                        exchange: u,
                        errCode: t.res,
                        reason: "need sign agreement",
                        symbol: e
                    }) : t.res === a.SymbolAvailabilityCodes.NEED_ADD_SERVICE ? c({
                        exchange: u,
                        errCode: t.res,
                        reason: "need add service",
                        symbol: e
                    }) : n(e))))).catch((() => {
                        n(e)
                    })) : n(e) : c({
                        exchange: u,
                        errCode: a.SymbolAvailabilityCodes.DELAY_NOT_AVAILABLE,
                        reason: "delay not available",
                        symbol: e
                    }))) : n(e)
                }))
            }
        },
        98017: (e, t, n) => {
            "use strict";
            n.d(t, {
                SymbolAvailabilityCodes: () => r
            });
            const r = JSON.parse('{"OK":"OK","ERR":"ERR","SYMBOL_NOT_AVAILABLE_FOR_ANON":"SYMBOL_NOT_AVAILABLE_FOR_ANON","DELAY_NOT_AVAILABLE":"DELAY_NOT_AVAILABLE","NEED_SIGN_AGREEMENT":"NEED_SIGN_AGREEMENT","NEED_ADD_SERVICE":"NEED_ADD_SERVICE"}')
        },
        889267: (e, t, n) => {
            "use strict";
            n.d(t, {
                isSpread: () => a,
                shortNameFromTokens: () => c,
                tokenize: () => i
            });
            const r = {
                    number: /\d+(?:\.\d*|(?![a-zA-Z0-9_!:.&]))|\.\d+/,
                    incompleteNumber: /\./,
                    symbol: /(?:[^-+\/*^\s]'|[a-zA-Z0-9_\u0370-\u1FFF_\u2E80-\uFFFF])(?:[^-+\/*^\s]'|[a-zA-Z0-9_\u0020\u0370-\u1FFF_\u2E80-\uFFFF_!|:.&])*|'.+?'/,
                    incompleteSymbol: /'[^']*/,
                    separatorPrefix: n(173777).SEPARATOR_PREFIX,
                    openBrace: "(",
                    closeBrace: ")",
                    plus: "+",
                    minus: "-",
                    multiply: "*",
                    divide: "/",
                    power: "^",
                    whitespace: /[\0-\x20\s]+/,
                    unparsed: null
                },
                o = new RegExp(Object.values(r).map((e => {
                    return null === e ? "" : `(${"string"==typeof e?(t=e,t.replace(/[\^$()[\]{}*+?|\\]/g,"\\$&")):e.source})`;
                    var t
                })).filter((e => "" !== e)).concat(".").join("|"), "g");

            function i(e) {
                if (!e) return [];
                const t = [],
                    n = Object.keys(r);
                let i;
                for (; i = o.exec(e);) {
                    let e = !1;
                    for (let r = n.length; r--;)
                        if (i[r + 1]) {
                            n[r] && t.push({
                                value: i[r + 1],
                                type: n[r],
                                precedence: 0,
                                offset: i.index
                            }), e = !0;
                            break
                        }
                    e || t.push({
                        value: i[0],
                        type: "unparsed",
                        precedence: 0,
                        offset: i.index
                    })
                }
                return t
            }

            function s(e) {
                return "plus" === e || "minus" === e || "multiply" === e || "divide" === e || "power" === e
            }

            function a(e) {
                return e.length > 1 && e.some((e => s(e.type)))
            }

            function c(e) {
                return function(e) {
                    e = function(e) {
                        const t = [];
                        for (const n of e) "whitespace" !== n.type && t.push(n);
                        return t
                    }(e);
                    const t = [],
                        n = [];
                    let r;
                    for (let o = 0; o < e.length; o++) {
                        const i = e[o];
                        switch (i.type) {
                            case "plus":
                            case "minus":
                            case "multiply":
                            case "divide":
                            case "power":
                                n.length && n[n.length - 1].minPrecedence > i.precedence && (n[n.length - 1].minPrecedence = i.precedence);
                                break;
                            case "openBrace":
                                r = {
                                    minPrecedence: 1 / 0,
                                    openBraceIndex: o
                                }, n.push(r);
                                break;
                            case "closeBrace":
                                {
                                    if (r = n.pop(), !r) break;
                                    const i = e[r.openBraceIndex - 1],
                                        a = e[o + 1],
                                        c = i && ("plus" === i.type || "multiply" === i.type);
                                    (!s(null == a ? void 0 : a.type) || (null == a ? void 0 : a.precedence) <= r.minPrecedence) && (!s(null == i ? void 0 : i.type) || (null == i ? void 0 : i.precedence) < (null == r ? void 0 : r.minPrecedence) || (null == i ? void 0 : i.precedence) === (null == r ? void 0 : r.minPrecedence) && c) && (t.unshift(r.openBraceIndex), t.push(o), n.length && n[n.length - 1].minPrecedence > r.minPrecedence && (n[n.length - 1].minPrecedence = r.minPrecedence))
                                }
                        }
                    }
                    for (let n = t.length; n--;) e.splice(t[n], 1);
                    return e
                }(e).reduce(((e, t) => {
                    if ("symbol" !== t.type) return e + t.value;
                    const [, n] = function(e) {
                        const t = /^'?(?:([A-Z0-9_]+):)?(.*?)'?$/i.exec(e.value);
                        if (null === t) return [void 0, void 0];
                        return [t[1], t[2]]
                    }(t);
                    return n ? e + n : e
                }), "")
            }
        },
        607546: (e, t, n) => {
            "use strict";
            n.d(t, {
                getLogoUrlsHook: () => r.getLogoUrlsHook
            });
            var r = n(526639)
        },
        526639: (e, t, n) => {
            "use strict";
            n.d(t, {
                getLogoUrlsHook: () => i
            });
            var r = n(849204);
            const o = (0, r.getLogoUrlResolver)();

            function i(e, t) {
                let n = !1;
                return (i, a, c) => {
                    const u = i["currency-logoid"] && i["base-currency-logoid"];
                    if (!n && (i.logoid || u || c)) {
                        n = !0;
                        const a = function(e) {
                            if (2 !== e.length) return e;
                            if (function(e) {
                                    return e.some((e => s(e)))
                                }(e) && ! function(e) {
                                    return e.some((e => e.includes("country") && !s(e)))
                                }(e)) return e.filter((e => !s(e)));
                            return e
                        }(function(e, t = r.LogoSize.Medium) {
                            const n = e.logoid,
                                i = e["base-currency-logoid"],
                                s = e["currency-logoid"],
                                a = n && o.getSymbolLogoUrl(n, t);
                            if (a) return [a];
                            const c = i && o.getSymbolLogoUrl(i, t),
                                u = s && o.getSymbolLogoUrl(s, t);
                            return c && u ? [c, u] : c ? [c] : u ? [u] : []
                        }({
                            logoid: i.logoid,
                            "base-currency-logoid": i["base-currency-logoid"],
                            "currency-logoid": i["currency-logoid"]
                        }, t));
                        e(a)
                    }
                }
            }

            function s(e) {
                return e.includes("country/US")
            }
        },
        268552: e => {
            "use strict";
            var t = [{
                    d: "E-Mini S&P 500",
                    t: "ES"
                }, {
                    d: "E-Mini Nasdaq 100",
                    t: "NQ"
                }, {
                    d: "Gold",
                    t: "GC"
                }, {
                    d: "Silver",
                    t: "SI"
                }, {
                    d: "Crude Oil WTI",
                    t: "CL"
                }, {
                    d: "Natural Gas",
                    t: "NG"
                }, {
                    d: "Australian Dollar",
                    t: "6A"
                }, {
                    d: "Australian Dollar (Floor)",
                    t: "AD"
                }, {
                    d: "Euro FX",
                    t: "6E"
                }, {
                    d: "Euro FX (Floor)",
                    t: "EC"
                }, {
                    d: "Corn",
                    t: "ZC"
                }, {
                    d: "Corn (Floor)",
                    t: "C"
                }, {
                    d: "Eurodollar",
                    t: "GE"
                }, {
                    d: "Eurodollar (Floor)",
                    t: "ED"
                }],
                n = function() {
                    var e = [{
                        pattern: "(",
                        ctor: i
                    }, {
                        pattern: ")",
                        ctor: s
                    }, {
                        pattern: "+",
                        ctor: c
                    }, {
                        pattern: "-",
                        ctor: u
                    }, {
                        pattern: "*",
                        ctor: l
                    }, {
                        pattern: "/",
                        ctor: d
                    }, {
                        pattern: "^",
                        ctor: p
                    }, {
                        pattern: /\d+(?:\.\d*|(?![a-zA-Z0-9_!:.&]))|\.\d+/,
                        ctor: g
                    }, {
                        pattern: /\./,
                        ctor: b
                    }, {
                        pattern: /[a-zA-Z0-9_\u0370-\u1FFF_\u2E80-\uFFFF][a-zA-Z0-9_\u0020\u0370-\u1FFF_\u2E80-\uFFFF_!|:.&]*|'.+?'/,
                        ctor: m
                    }, {
                        pattern: /'[^']*/,
                        ctor: v
                    }, {
                        pattern: /[\0-\x20\s]+/,
                        ctor: o
                    }];

                    function n(e, t) {
                        var n = function() {};
                        return n.prototype = t.prototype, e.prototype = new n, e
                    }

                    function r() {}

                    function o(e) {
                        this.value = e
                    }

                    function i() {}

                    function s() {}

                    function a() {}

                    function c() {}

                    function u() {}

                    function l() {}

                    function d() {}

                    function p() {}
                    r.prototype.toString = function() {
                        return this.value
                    }, n(o, r), n(i, r), i.prototype.value = "(", n(s, r), s.prototype.value = ")", n(a, r), n(c, a), c.prototype.value = "+", c.prototype.precedence = 0, c.prototype.commutative = !0, n(u, a), u.prototype.value = "-", u.prototype.precedence = 0, u.prototype.commutative = !1, n(l, a), l.prototype.value = "*", l.prototype.precedence = 1, l.prototype.commutative = !0, n(d, a), d.prototype.value = "/", d.prototype.precedence = 1, d.prototype.commutative = !1, n(p, a), p.prototype.value = "^", p.prototype.precedence = 2, p.prototype.commutative = !1;
                    var h = /^'?(?:([A-Z0-9_]+):)?(.*?)'?$/i,
                        f = /[+\-/*]/;

                    function m(e) {
                        this.value = e
                    }

                    function g(e) {
                        this.value = e
                    }

                    function y(e) {
                        this.value = e
                    }

                    function v() {
                        m.apply(this, arguments)
                    }

                    function b() {
                        g.apply(this, arguments)
                    }
                    n(m, r), m.prototype.toString = function() {
                        if (this.hasOwnProperty("_ticker")) {
                            var e = f.test(this._ticker) ? "'" : "";
                            return e + (this._exchange ? this._exchange + ":" : "") + this._ticker + e
                        }
                        return this.value
                    }, m.prototype.parse = function() {
                        var e = h.exec(this.value);
                        e[1] && (this._exchange = e[1]), this._ticker = e[2]
                    }, m.prototype.parseAsFutures = function() {
                        this.hasOwnProperty("_ticker") || this.parse();
                        for (var e = function(e) {
                                return t.some((function(t) {
                                    return t.t === e
                                }))
                            }, n = 2; n >= 1; --n) {
                            var r = this._ticker.slice(0, n);
                            if (e(r)) {
                                this._root = r, this._contract = this._ticker.slice(n);
                                break
                            }
                        }
                    }, m.prototype.exchange = function(e) {
                        if (this.hasOwnProperty("_ticker") || this.parse(), !(arguments.length > 0)) return this._exchange;
                        null == e ? delete this._exchange : this._exchange = e + ""
                    }, m.prototype.ticker = function(e) {
                        if (this.hasOwnProperty("_ticker") || this.parse(), !(arguments.length > 0)) return this._ticker;
                        null == e ? delete this._ticker : this._ticker = e + "", delete this._root, delete this._contract
                    }, m.prototype.root = function(e) {
                        if (this.hasOwnProperty("_root") || this.parseAsFutures(), !(arguments.length > 0)) return this._root;
                        null == e ? delete this._root : (this._root = e + "", this._root && (this._ticker = this._root + (this._contract || "")))
                    }, m.prototype.contract = function(e) {
                        if (this.hasOwnProperty("_contract") || this.parseAsFutures(), !(arguments.length > 0)) return this._root;
                        null == e ? delete this._contract : (this._contract = e + "", this._root && (this._ticker = this._root + this._contract))
                    }, n(g, r), g.prototype.toString = function() {
                        return this.hasOwnProperty("_normalizedValue") ? this._normalizedValue : this.value
                    }, g.prototype.parse = function() {
                        this._normalizedValue = this.value.replace(/^0+|\.0*$/g, "").replace(/(\.\d*?)0+$/, "$1").replace(/^(\.|$)/, "0$1")
                    }, y.prototype.toString = function() {
                        return this.value
                    }, n(v, m), v.prototype.isIncomplete = !0, v.prototype.incompleteSuggest = function() {
                        if ("'" !== this.value) return String("'")
                    }, n(b, g), b.prototype.isIncomplete = !0;
                    var _ = new RegExp(e.map((function(e) {
                        return "(" + ("string" == typeof e.pattern ? e.pattern.replace(/[\^$()[\]{}*+?|\\]/g, "\\$&") : e.pattern.source) + ")"
                    })).concat(".").join("|"), "g");

                    function w(t, n) {
                        var r, i = [];
                        e: for (; r = _.exec(t);) {
                            for (var s = e.length; s--;)
                                if (r[s + 1]) {
                                    if (e[s].ctor) {
                                        var a = new e[s].ctor(r[s + 1]);
                                        a._offset = r.index, i.push(a)
                                    }
                                    continue e
                                }
                            var c = new y(r[0]);
                            c._offset = r.index, i.push(c)
                        }
                        if (n && n.recover) {
                            var u;
                            for (s = i.length; s--;) {
                                var l = i[s];
                                if (l instanceof g || l instanceof m) {
                                    if (void 0 !== u) {
                                        var d = new m(""),
                                            p = i.splice(s, u - s + 1, d);
                                        d.value = p.map((function(e) {
                                            return e.value
                                        })).join("")
                                    }
                                    u = s
                                } else l instanceof o || (u = void 0)
                            }
                        }
                        return i
                    }

                    function E(e) {
                        for (var t = [], n = 0; n < e.length; n++) e[n] instanceof o || t.push(e[n]);
                        return t
                    }

                    function x(e) {
                        e = E(e);
                        for (var t, n = [], r = [], o = 0; o < e.length; o++) {
                            var c = e[o];
                            if (c instanceof a) r.length && r[r.length - 1].minPrecedence > c.precedence && (r[r.length - 1].minPrecedence = c.precedence);
                            else if (c instanceof i) r.push(t = {
                                minPrecedence: 1 / 0,
                                openBraceIndex: o
                            });
                            else if (c instanceof s) {
                                var u = e[(t = r.pop()).openBraceIndex - 1],
                                    l = e[o + 1];
                                l instanceof a && !(l.precedence <= t.minPrecedence) || !(!(u instanceof a) || u.precedence < t.minPrecedence || u.precedence === t.minPrecedence && u.commutative) || (n.unshift(t.openBraceIndex), n.push(o), r.length && r[r.length - 1].minPrecedence > t.minPrecedence && (r[r.length - 1].minPrecedence = t.minPrecedence))
                            }
                        }
                        for (o = n.length; o--;) e.splice(n[o], 1);
                        return e
                    }

                    function k(e) {
                        if ("string" != typeof e) throw new TypeError("expression must be a string");
                        return (e = w(e)).filter((function(e) {
                            return e instanceof m
                        })).map((function(e) {
                            return e.exchange()
                        })).filter((function(e) {
                            return e
                        }))
                    }

                    function L(e) {
                        return 1 !== (e = k(e)).length ? null : e[0]
                    }

                    function S(e, t) {
                        return (e = k(e)).some((function(e) {
                            return t.includes((e || "").toUpperCase())
                        }))
                    }

                    function T(e) {
                        return e.join("")
                    }
                    return {
                        tokenize: w,
                        validate: function(e) {
                            for (var t = "init", n = "var", r = t, c = {
                                    warnings: [],
                                    errors: [],
                                    isEmpty: !0
                                }, u = [], l = 0; l < e.length; l++) {
                                if (!((p = e[l]) instanceof o)) {
                                    if (delete c.isEmpty, p.isIncomplete) {
                                        var d = {
                                            status: "incomplete",
                                            reason: "incomplete_token",
                                            offset: p._offset,
                                            token: p
                                        };
                                        if (p.incompleteSuggest && (d.recover = {
                                                append: p.incompleteSuggest()
                                            }), c.warnings.push(d), l !== e.length - 1) {
                                            d.status = "error";
                                            continue
                                        }
                                    }
                                    if (p instanceof m || p instanceof g) {
                                        if (r === n) {
                                            c.errors.push({
                                                status: "error",
                                                reason: "unexpected_token",
                                                offset: p._offset,
                                                token: p
                                            });
                                            continue
                                        }
                                        r = n
                                    } else if (p instanceof a) {
                                        if (r !== n) {
                                            c.errors.push({
                                                status: "error",
                                                reason: "unexpected_token",
                                                offset: p._offset,
                                                token: p
                                            });
                                            continue
                                        }
                                        r = "operator"
                                    } else if (p instanceof i) {
                                        if (r === n) {
                                            c.errors.push({
                                                status: "error",
                                                reason: "unexpected_token",
                                                offset: p._offset,
                                                token: p
                                            });
                                            continue
                                        }
                                        u.push(p), r = t
                                    } else if (p instanceof s) {
                                        if (r !== n) {
                                            c.errors.push({
                                                status: "error",
                                                reason: "unexpected_token",
                                                offset: p._offset,
                                                token: p
                                            });
                                            continue
                                        }
                                        u.pop() || c.errors.push({
                                            status: "error",
                                            reason: "unbalanced_brace",
                                            offset: p._offset,
                                            token: p,
                                            recover: {
                                                prepend: new i
                                            }
                                        }), r = n
                                    } else p instanceof y && c.errors.push({
                                        status: "error",
                                        reason: "unparsed_entity",
                                        offset: p._offset,
                                        token: p
                                    })
                                }
                            }
                            for (c.braceBalance = u.length, r !== n && c.warnings.push({
                                    status: "incomplete"
                                }); u.length;) {
                                var p;
                                d = {
                                    status: "incomplete",
                                    reason: "unbalanced_brace",
                                    offset: (p = u.pop())._offset,
                                    token: p
                                };
                                r === n && (d.recover = {
                                    append: new s
                                }), c.warnings.push(d)
                            }
                            return c.currentState = r, 0 === c.warnings.length && delete c.warnings, 0 === c.errors.length && delete c.errors, c
                        },
                        factorOutBraces: x,
                        normalizeTokens: function(e) {
                            for (var t = 0; t < e.length; t++) e[t].parse && e[t].parse();
                            return e
                        },
                        flip: function(e) {
                            var t = function(e) {
                                for (var t, n = 0, r = 1, c = 2, u = 3, l = n, p = 0, h = 0; h < e.length; h++) {
                                    var f = e[h];
                                    if (!(f instanceof o)) switch (l) {
                                        case n:
                                            if (!(f instanceof g && 1 == +f.value)) return !1;
                                            l = r;
                                            break;
                                        case r:
                                            if (!(l === r && f instanceof d)) return !1;
                                            l = c, t = h + 1;
                                            break;
                                        case c:
                                            if (f instanceof i) l = u, p = 1;
                                            else if (f instanceof a) return !1;
                                            break;
                                        case u:
                                            f instanceof i ? p++ : f instanceof s && --p <= 0 && (l = c)
                                    }
                                }
                                return e.slice(t)
                            }(e);
                            return x(t || [new g("1"), new d, new i].concat(e).concat(new s))
                        },
                        hasBatsSymbols: function(e) {
                            return S(e, ["BATS"])
                        },
                        hasEodSymbols: function(e) {
                            return (e = L(e)) && -1 !== e.toUpperCase().indexOf("_EOD")
                        },
                        hasChxjpySymbols: function(e) {
                            return S(e, ["CHXJPY"])
                        },
                        hasFreeDelaySymbols: function(e) {
                            return S(e, pro.getProductsByType(pro.PRODUCT_TYPES.exchange).map((function(e) {
                                return e.exchange.toUpperCase() + "_DLY"
                            })))
                        },
                        getExchange: L,
                        getExchanges: k,
                        isExchange: function(e, t) {
                            return !!(e = L(e)) && e.substring(0, t.length) === t
                        },
                        SymbolToken: m,
                        IncompleteSymbolToken: v,
                        NumberToken: g,
                        BinaryOperatorToken: a,
                        OpenBraceToken: i,
                        CloseBraceToken: s,
                        ticker: function(e) {
                            return new m(e).ticker()
                        },
                        shortName: function(e) {
                            if ("string" != typeof e) throw new TypeError("expression must be a string");
                            var t = x(E(w(e)));
                            return t.forEach((function(e) {
                                e instanceof m && e.exchange(null)
                            })), T(t)
                        },
                        normalize: function(e) {
                            if ("string" != typeof e) throw new TypeError("expression must be a string");
                            return T(x(E(w(e))))
                        }
                    }
                }();
            e.exports = n
        },
        375397: (e, t, n) => {
            "use strict";
            n.d(t, {
                WatchedValue: () => c
            });
            var r = n(805578),
                o = n(692558),
                i = n(728832);
            const s = (0,
                o.getLogger)("Common.WatchedValue");

            function a(e) {
                s.logError(`${e&&(e.stack||e.message)}`)
            }
            class c {
                constructor(...e) {
                    this._listeners = [], e.length > 0 && (this._value = e[0])
                }
                destroy() {
                    this.unsubscribe()
                }
                value() {
                    return this._owner ? this._owner._value : this._value
                }
                setValue(e, t) {
                    const n = this._owner ? this._owner : this;
                    if (n.writeLock) return;
                    const r = n._value === e || Number.isNaN(n._value) && Number.isNaN(e);
                    if (!t && r && n.hasOwnProperty("_value")) return;
                    n._value = e;
                    const o = n._listeners.slice();
                    let i = 0;
                    for (let t = 0; t < o.length; t++) {
                        o[t].once && (n._listeners.splice(t - i, 1), i++);
                        try {
                            o[t].cb(e)
                        } catch (e) {
                            a(e)
                        }
                    }
                }
                deleteValue() {
                    this.setValue(void 0)
                }
                subscribe(e, t) {
                    if ("function" != typeof e) throw new TypeError("callback must be a function");
                    const n = !!t && !!t.once,
                        r = !!t && !!t.callWithLast,
                        o = this._owner ? this._owner : this;
                    if (r && o.hasOwnProperty("_value")) {
                        try {
                            e(o._value)
                        } catch (e) {
                            a(e)
                        }
                        if (n) return
                    }
                    o._listeners.push({
                        cb: e,
                        owner: this,
                        once: !!t && !!t.once
                    })
                }
                unsubscribe(e) {
                    const t = this._owner ? this._owner : this;
                    void 0 === e && (e = null);
                    const n = t._listeners;
                    for (let r = n.length; r--;) n[r].owner !== this && t !== this || n[r].cb !== e && null !== e || n.splice(r, 1)
                }
                readonly() {
                    if (this._readonlyInstance) return this._readonlyInstance;
                    const e = {
                        subscribe: this.subscribe.bind(this),
                        unsubscribe: this.unsubscribe.bind(this),
                        value: this.value.bind(this),
                        when: this.when.bind(this),
                        ownership: this.ownership.bind(this),
                        spawnOwnership: this.spawnOwnership.bind(this),
                        weakReference: this.weakReference.bind(this),
                        spawn: e => this.spawn(e).readonly(),
                        destroy: this.destroy.bind(this)
                    };
                    return this._readonlyInstance = e, e
                }
                spawn(e) {
                    return new u(this._owner || this, e)
                }
                when(e) {
                    (0, i.callWhen)(this, (e => Boolean(e)), (() => {
                        try {
                            e(this.value())
                        } catch (e) {
                            a(e)
                        }
                    }))
                }
                assertNoSubscriptions() {
                    0
                }
                ownership() {
                    return (0, r.ownership)(this)
                }
                spawnOwnership() {
                    return (0, r.ownership)(this.spawn())
                }
                weakReference() {
                    return (0, r.weakReference)(this)
                }
            }
            class u extends c {
                constructor(e, t) {
                    super(), delete this._listeners, this._owner = e, this._onDestroy = t
                }
                destroy() {
                    var e;
                    try {
                        null === (e = this._onDestroy) || void 0 === e || e.call(this)
                    } catch (e) {
                        a(e)
                    }
                    super.destroy()
                }
                readonly() {
                    return super.readonly()
                }
            }
        },
        882782: (e, t, n) => {
            "use strict";
            n.d(t, {
                compareSymbols: () => a,
                encodeExtendedSymbolOrGetSimpleSymbolString: () => i
            });

            function r(e) {
                return "=" + JSON.stringify(o(e))
            }

            function o(e) {
                return Object.keys(e).sort().reduce(((t, n) => ("[object Object]" === Object.prototype.toString.call(e[n]) ? t[n] = o(e[n]) : t[n] = e[n], t)), {})
            }

            function i(e) {
                return Boolean(e.inputs) || function(e) {
                    return Boolean(e.replay)
                }(e) || e.session || e.adjustment || e["currency-id"] || e["unit-id"] ? r(e) : e.symbol
            }
            const s = ["symbol", "session", "unit-id", "currency-id", "adjustment", "backadjustment", "settlement-as-close"];

            function a(e, t) {
                return s.every((n => e[n] === t[n]))
            }
        },
        246125: (e, t, n) => {
            "use strict";
            n.d(t, {
                dateFormatFunctions: () => m,
                getDateFormatWithWeekday: () => g
            });
            var r = n(444372),
                o = n(39654),
                i = n(574313);
            const s = {
                    1: () => r.t(null, void 0, n(562310)),
                    2: () => r.t(null, void 0, n(302507)),
                    3: () => r.t(null, void 0, n(92767)),
                    4: () => r.t(null, void 0, n(227072)),
                    5: () => r.t(null, {
                        context: "short"
                    }, n(13132)),
                    6: () => r.t(null, void 0, n(800429)),
                    7: () => r.t(null, void 0, n(853786)),
                    8: () => r.t(null, void 0, n(546450)),
                    9: () => r.t(null, void 0, n(806816)),
                    10: () => r.t(null, void 0, n(912179)),
                    11: () => r.t(null, void 0, n(526899)),
                    12: () => r.t(null, void 0, n(532084))
                },
                a = (e, t) => (t ? e.getMonth() : e.getUTCMonth()) + 1,
                c = (e, t) => t ? e.getFullYear() : e.getUTCFullYear(),
                u = e => e.toLocaleDateString(window.language ? (0, o.getIsoLanguageCodeFromLanguage)(window.language) : void 0, {
                    weekday: "short",
                    timeZone: "UTC"
                }),
                l = (e, t) => (0, i.numberToStringWithLeadingZero)(((e, t) => t ? e.getDate() : e.getUTCDate())(e, t), 2),
                d = (e, t) => s[a(e, t)](),
                p = (e, t) => (0, i.numberToStringWithLeadingZero)(a(e, t), 2),
                h = (e, t) => (0, i.numberToStringWithLeadingZero)(c(e, t) % 100, 2),
                f = (e, t) => (0, i.numberToStringWithLeadingZero)(c(e, t), 4),
                m = {
                    "dd MMM 'yy": (e, t) => `${l(e,t)} ${d(e,t)} '${h(e,t)}`,
                    "MMM 'yy": (e, t) => `${d(e,t)} '${h(e,t)}`,
                    "MMM dd, yyyy": (e, t) => `${d(e,t)} ${l(e,t)}, ${f(e,t)}`,
                    "MMM yyyy": (e, t) => `${d(e,t)} ${f(e,t)}`,
                    "MMM dd": (e, t) => `${d(e,t)} ${l(e,t)}`,
                    "dd MMM": (e, t) => `${l(e,t)} ${d(e,t)}`,
                    "yyyy-MM-dd": (e, t) => `${f(e,t)}-${p(e,t)}-${l(e,t)}`,
                    "yy-MM-dd": (e, t) => `${h(e,t)}-${p(e,t)}-${l(e,t)}`,
                    "yy/MM/dd": (e, t) => `${h(e,t)}/${p(e,t)}/${l(e,t)}`,
                    "yyyy/MM/dd": (e, t) => `${f(e,t)}/${p(e,t)}/${l(e,t)}`,
                    "dd-MM-yyyy": (e, t) => `${l(e,t)}-${p(e,t)}-${f(e,t)}`,
                    "dd-MM-yy": (e, t) => `${l(e,t)}-${p(e,t)}-${h(e,t)}`,
                    "dd/MM/yy": (e, t) => `${l(e,t)}/${p(e,t)}/${h(e,t)}`,
                    "dd/MM/yyyy": (e, t) => `${l(e,t)}/${p(e,t)}/${f(e,t)}`,
                    "MM/dd/yy": (e, t) => `${p(e,t)}/${l(e,t)}/${h(e,t)}`,
                    "MM/dd/yyyy": (e, t) => `${p(e,t)}/${l(e,t)}/${f(e,t)}`
                };

            function g(e) {
                return "ja" === window.language ? (t, n) => `${m[e](t,n)} (${u(t)})` : (t, n) => `${u(t)} ${m[e](t,n)}`
            }
            Object.keys(m)
        },
        540519: (e, t, n) => {
            "use strict";
            new Set([3, 6, 7, 8, 9, 11]), new Set([1, 2])
        },
        69184: (e, t, n) => {
            "use strict";
            n.d(t, {
                getTimeFormatForInterval: () => o
            });
            var r = n(300484);

            function o(e, t) {
                if (e.isRange()) return function(e) {
                    return "12-hours" === e ? r.twelveHourMinuteNonZeroSecondFormat : r.hourMinuteNonZeroSecondFormat
                }(t);
                if (e.isTicks()) return r.hourMinuteSecondMillisecFormat;
                return e.isSeconds() || e.isTicks() ? function(e) {
                    return "12-hours" === e ? r.twelveHourMinuteSecondFormat : r.hourMinuteSecondFormat
                }(t) : function(e) {
                    return "12-hours" === e ? r.twelveHourMinuteFormat : r.hourMinuteFormat
                }(t)
            }
        },
        883427: (e, t, n) => {
            "use strict";
            async function r(e, t, r, o, i, s) {
                return (await Promise.all([n.e(37117), n.e(93703), n.e(53953), n.e(49481), n.e(6633), n.e(89259), n.e(41594), n.e(82321), n.e(9238), n.e(63529), n.e(11233)]).then(n.bind(n, 903714))).createTabLabelsImp(e, t, r, o, i, s)
            }
            n.d(t, {
                createTabLabels: () => r
            })
        },
        185162: (e, t, n) => {
            "use strict";
            n.d(t, {
                frameElementId: () => o
            });
            const r = window.initData.hashSettings || {},
                o = "string" == typeof r.frameElementId ? r.frameElementId : null
        },
        432059: (e, t, n) => {
            "use strict";
            n.d(t, {
                applyAlpha: () => i,
                applyTransparency: () => a,
                generateColor: () => o,
                resetTransparency: () => c
            });
            var r = n(724377);

            function o(e, t, n) {
                if (t = t || 0, !u(e)) return n ? (0, r.rgbaToString)((0, r.rgba)((0, r.parseRgb)(e), (0, r.normalizeAlphaComponent)(s(t)))) : e;
                const [o, i, a] = (0, r.parseRgb)(e), c = (0, r.normalizeAlphaComponent)(s(t));
                return (0, r.rgbaToString)([o, i, a, c])
            }

            function i(e, t, n) {
                const o = (0, r.tryParseRgba)(e);
                if (null === o) throw new Error(`Invalid color: ${e}`);
                const [i, s, a, c] = o, u = (0, r.normalizeAlphaComponent)(t * (n ? c : 1));
                return (0, r.rgbaToString)((0, r.rgba)([i, s, a], u))
            }

            function s(e) {
                if (e < 0 || e > 100) throw new Error("invalid transparency");
                return 1 - e / 100
            }

            function a(e, t) {
                if ("transparent" === e) return e;
                const n = (0, r.parseRgba)(e),
                    o = n[3];
                return (0, r.rgbaToString)((0, r.rgba)(n[0], n[1], n[2], s(t) * o))
            }

            function c(e) {
                return "transparent" === e ? e : u(e) ? e.slice(0, 7) : (0, r.rgbaToString)((0, r.rgba)((0, r.parseRgb)(e), (0, r.normalizeAlphaComponent)(1)))
            }

            function u(e) {
                return 0 === e.indexOf("#")
            }
        },
        881025: (e, t, n) => {
            "use strict";
            n.d(t, {
                forceLTRStr: () => c,
                isRtl: () => r,
                stripLTRMarks: () => a
            });
            n(64531);
            const r = () => "rtl" === window.document.dir,
                o = "‪",
                i = "‬",
                s = new RegExp("‎|‪|‫|‬", "g");

            function a(e) {
                return "" !== e && r() && null != e ? e.replace(s, "") : e
            }

            function c(e) {
                return "" !== e && r() && null != e ? o + e + i : e
            }
        },
        343823: (e, t, n) => {
            "use strict";
            var r;

            function o(e) {
                return !(!e || !Object.keys(e).length)
            }
            n.d(t, {
                    isProductDefined: () => o
                }),
                function(e) {
                    e[e.ProPlan = 1] = "ProPlan", e[e.NewsFeed = 3] = "NewsFeed", e[e.Exchange = 4] = "Exchange", e[e.Connection = 6] = "Connection", e[e.Coins = 8] = "Coins"
                }(r || (r = {}))
        },
        522977: (e, t, n) => {
            "use strict";

            function r() {
                try {
                    return JSON.parse(decodeURIComponent(location.hash.substring(1)))
                } catch (e) {
                    return {}
                }
            }
            n.d(t, {
                parseUrlHashParams: () => r
            })
        },
        486393: (e, t, n) => {
            const r = n(647793);
            e.exports = r, r(document).ajaxSend(((e, t, n) => {
                n.crossDomain && !n.forceLanguageHeader || (window.locale ? t.setRequestHeader("X-Language", window.locale) : console.warn("window.locale is not defined"))
            }))
        },
        81951: (e, t, n) => {
            "use strict";
            n.d(t, {
                getMiniTimeFrameOptions: () => a
            });
            var r = n(467332);
            const o = Date.now();

            function i(e) {
                const t = new Date(o);
                return t.setMonth(t.getMonth() - e), Math.trunc(t.valueOf() / 1e3)
            }

            function s(e) {
                const t = new Date(o);
                return t.setFullYear(t.getFullYear() - e), Math.trunc(t.valueOf() / 1e3)
            }

            function a(e) {
                const t = (0, r.getTimeFrames)();
                return [{ ...t[e ? "lastsession" : "1d"]
                }, { ...t["1m"],
                    targetResolution: "1D",
                    from: i(1)
                }, { ...t["3m"],
                    targetResolution: "1D",
                    from: i(3)
                }, { ...t["12m"],
                    from: s(1)
                }, { ...t["60m"],
                    targetResolution: "1M",
                    from: s(5)
                }, { ...t.all
                }]
            }
        },
        855016: (e, t, n) => {
            "use strict";
            n.d(t, {
                daysStringLiteral: () => o,
                monthsStringLiteral: () => s,
                stringAsResolution: () => c,
                weeksStringLiteral: () => i,
                yearsStringLiteral: () => a
            });
            var r = n(444372);
            const o = e => r.t(null, {
                    plural: "{str} days",
                    count: e,
                    replace: {
                        str: `${e}`
                    }
                }, n(862368)),
                i = e => r.t(null, {
                    plural: "{str} weeks",
                    count: e,
                    replace: {
                        str: `${e}`
                    }
                }, n(149306)),
                s = e => r.t(null, {
                    plural: "{str} months",
                    count: e,
                    replace: {
                        str: `${e}`
                    }
                }, n(520062)),
                a = e => r.t(null, {
                    plural: "{str} years",
                    count: e,
                    replace: {
                        str: `${e}`
                    }
                }, n(791549)),
                c = e => e
        },
        563360: (e, t, n) => {
            "use strict";
            n.d(t, {
                timeFrames: () => r
            });
            const r = (0, n(467332).getTimeFrames)()
        },
        79342: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                guid: () => o,
                randomHash: () => i,
                randomHashN: () => s
            });
            const r = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

            function o() {
                return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (e => {
                    const t = 16 * Math.random() | 0;
                    return ("x" === e ? t : 3 & t | 8).toString(16)
                }))
            }

            function i() {
                return s(12)
            }

            function s(e) {
                let t = "";
                for (let n = 0; n < e; ++n) {
                    const e = Math.floor(Math.random() * r.length);
                    t += r[e]
                }
                return t
            }
        },
        125388: (e, t, n) => {
            "use strict";

            function r(e, t) {
                const n = Object.create(Object.getPrototypeOf(e));
                for (const r of t) Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);
                return n
            }
            n.d(t, {
                pickFields: () => r
            })
        },
        228609: (e, t, n) => {
            "use strict";

            function r(e) {
                e.preventDefault()
            }
            n.d(t, {
                preventDefault: () => r,
                preventDefaultForContextMenu: () => i
            });
            const o = ["input:not([type])", 'input[type="text"]', 'input[type="email"]', 'input[type="password"]', 'input[type="search"]', 'input[type="number"]', 'input[type="url"]', "textarea", "a[href]", '*[contenteditable="true"]', "[data-allow-context-menu]"];

            function i(e) {
                const t = e.target;
                t && !t.closest(o.join(", ")) && e.preventDefault()
            }
        },
        282616: (e, t, n) => {
            "use strict";
            n.d(t, {
                handleTVLinksClick: () => s
            });
            var r = n(439563),
                o = n(248213),
                i = n(924225);

            function s() {
                document.addEventListener("click", (e => {
                    const t = e.target.closest(":link");
                    if (!(null == t ? void 0 : t.hostname) || !(0, i.isInternalHost)(t.hostname, "tradingview.com")) return;
                    const n = t.dataset.targetType || null;
                    ! function(e, t) {
                        const n = function() {
                                const e = window.initData.hashSettings;
                                if (Object.keys(e).length > 0) return (0, o.filterUtmInfo)(e);
                                const t = new URLSearchParams(location.href);
                                return {
                                    utm_campaign: t.get("utm_campaign") || void 0,
                                    utm_source: t.get("utm_source") || void 0
                                }
                            }(),
                            i = function(e) {
                                var t;
                                const n = (null === (t = location.ancestorOrigins) || void 0 === t ? void 0 : t[0]) || document.referrer;
                                return e.utm_source || function(e) {
                                    try {
                                        return new URL(e).host
                                    } catch (e) {
                                        return ""
                                    }
                                }(n)
                            }(n);
                        !async function(e) {
                            var t;
                            null === (t = await (0, r.getEmbedWidgetTracker)()) || void 0 === t || t.trackWidgetTVLinkClick(e)
                        }({
                            widget_type: a(n),
                            domain: i,
                            link: e,
                            target_type: t
                        })
                    }(t.href, n)
                }))
            }

            function a(e) {
                if (e.utm_campaign) return e.utm_campaign;
                const t = location.pathname;
                return t.includes("embed-widget") ? t.split("/")[2] : t
            }
        },
        108999: e => {
            e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 14" width="8" height="14"><path fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M2 2l4 5-4 5"/></svg>'
        }
    }
]);