diff --git a/.gitignore b/.gitignore
index a3c8b50..3bcf133 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,4 +38,1790 @@ Pine Scripts
PineScripts
# .vsix
-*.vsix
\ No newline at end of file
+*.vsix
+.venv/pyvenv.cfg
+.venv/bin/activate
+.venv/bin/activate.csh
+.venv/bin/activate.fish
+.venv/bin/Activate.ps1
+.venv/bin/normalizer
+.venv/bin/pip
+.venv/bin/pip3
+.venv/bin/pip3.12
+.venv/bin/playwright
+.venv/bin/python
+.venv/bin/python3
+.venv/bin/python3.12
+.venv/include/site/python3.12/greenlet/greenlet.h
+.venv/lib/python3.12/site-packages/typing_extensions.py
+.venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/METADATA
+.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/RECORD
+.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/REQUESTED
+.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS
+.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/LICENSE
+.venv/lib/python3.12/site-packages/bs4/__init__.py
+.venv/lib/python3.12/site-packages/bs4/_deprecation.py
+.venv/lib/python3.12/site-packages/bs4/_typing.py
+.venv/lib/python3.12/site-packages/bs4/_warnings.py
+.venv/lib/python3.12/site-packages/bs4/css.py
+.venv/lib/python3.12/site-packages/bs4/dammit.py
+.venv/lib/python3.12/site-packages/bs4/diagnose.py
+.venv/lib/python3.12/site-packages/bs4/element.py
+.venv/lib/python3.12/site-packages/bs4/exceptions.py
+.venv/lib/python3.12/site-packages/bs4/filter.py
+.venv/lib/python3.12/site-packages/bs4/formatter.py
+.venv/lib/python3.12/site-packages/bs4/py.typed
+.venv/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/_deprecation.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/_typing.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/_warnings.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/css.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/dammit.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/element.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/exceptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/filter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/builder/__init__.py
+.venv/lib/python3.12/site-packages/bs4/builder/_html5lib.py
+.venv/lib/python3.12/site-packages/bs4/builder/_htmlparser.py
+.venv/lib/python3.12/site-packages/bs4/builder/_lxml.py
+.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_html5lib.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_lxml.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__init__.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_css.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_dammit.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_element.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_filter.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_formatter.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_fuzz.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_html5lib.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_htmlparser.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_lxml.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_navigablestring.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_pageelement.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_soup.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_tag.py
+.venv/lib/python3.12/site-packages/bs4/tests/test_tree.py
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_element.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_filter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_formatter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_lxml.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tree.cpython-312.pyc
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase
+.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase
+.venv/lib/python3.12/site-packages/certifi/__init__.py
+.venv/lib/python3.12/site-packages/certifi/__main__.py
+.venv/lib/python3.12/site-packages/certifi/cacert.pem
+.venv/lib/python3.12/site-packages/certifi/core.py
+.venv/lib/python3.12/site-packages/certifi/py.typed
+.venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc
+.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/LICENSE
+.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/METADATA
+.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/RECORD
+.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/top_level.txt
+.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/charset_normalizer/__init__.py
+.venv/lib/python3.12/site-packages/charset_normalizer/__main__.py
+.venv/lib/python3.12/site-packages/charset_normalizer/api.py
+.venv/lib/python3.12/site-packages/charset_normalizer/cd.py
+.venv/lib/python3.12/site-packages/charset_normalizer/constant.py
+.venv/lib/python3.12/site-packages/charset_normalizer/legacy.py
+.venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-darwin.so
+.venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-darwin.so
+.venv/lib/python3.12/site-packages/charset_normalizer/md.py
+.venv/lib/python3.12/site-packages/charset_normalizer/models.py
+.venv/lib/python3.12/site-packages/charset_normalizer/py.typed
+.venv/lib/python3.12/site-packages/charset_normalizer/utils.py
+.venv/lib/python3.12/site-packages/charset_normalizer/version.py
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py
+.venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py
+.venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/entry_points.txt
+.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/LICENSE
+.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/METADATA
+.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/RECORD
+.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/top_level.txt
+.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/greenlet/__init__.py
+.venv/lib/python3.12/site-packages/greenlet/_greenlet.cpython-312-darwin.so
+.venv/lib/python3.12/site-packages/greenlet/CObjects.cpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_allocator.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_compiler_compat.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_cpython_add_pending.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_cpython_compat.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_exceptions.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_internal.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_refs.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_slp_switch.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet_thread_support.hpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet.cpp
+.venv/lib/python3.12/site-packages/greenlet/greenlet.h
+.venv/lib/python3.12/site-packages/greenlet/PyGreenlet.cpp
+.venv/lib/python3.12/site-packages/greenlet/PyGreenlet.hpp
+.venv/lib/python3.12/site-packages/greenlet/PyGreenletUnswitchable.cpp
+.venv/lib/python3.12/site-packages/greenlet/PyModule.cpp
+.venv/lib/python3.12/site-packages/greenlet/slp_platformselect.h
+.venv/lib/python3.12/site-packages/greenlet/TBrokenGreenlet.cpp
+.venv/lib/python3.12/site-packages/greenlet/TExceptionState.cpp
+.venv/lib/python3.12/site-packages/greenlet/TGreenlet.cpp
+.venv/lib/python3.12/site-packages/greenlet/TGreenlet.hpp
+.venv/lib/python3.12/site-packages/greenlet/TGreenletGlobals.cpp
+.venv/lib/python3.12/site-packages/greenlet/TMainGreenlet.cpp
+.venv/lib/python3.12/site-packages/greenlet/TPythonState.cpp
+.venv/lib/python3.12/site-packages/greenlet/TStackState.cpp
+.venv/lib/python3.12/site-packages/greenlet/TThreadState.hpp
+.venv/lib/python3.12/site-packages/greenlet/TThreadStateCreator.hpp
+.venv/lib/python3.12/site-packages/greenlet/TThreadStateDestroy.cpp
+.venv/lib/python3.12/site-packages/greenlet/TUserGreenlet.cpp
+.venv/lib/python3.12/site-packages/greenlet/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/platform/__init__.py
+.venv/lib/python3.12/site-packages/greenlet/platform/setup_switch_x64_masm.cmd
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_aarch64_gcc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_alpha_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_amd64_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm32_gcc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm32_ios.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_masm.asm
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_masm.obj
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_msvc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_csky_gcc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_loongarch64_linux.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_m68k_gcc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_mips_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_ppc_aix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_ppc_linux.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_ppc_macosx.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_ppc_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_ppc64_aix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_ppc64_linux.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_riscv_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_s390_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_sparc_sun_gcc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_x32_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_x64_masm.asm
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_x64_masm.obj
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_x64_msvc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_x86_msvc.h
+.venv/lib/python3.12/site-packages/greenlet/platform/switch_x86_unix.h
+.venv/lib/python3.12/site-packages/greenlet/platform/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__init__.py
+.venv/lib/python3.12/site-packages/greenlet/tests/_test_extension_cpp.cpp
+.venv/lib/python3.12/site-packages/greenlet/tests/_test_extension_cpp.cpython-312-darwin.so
+.venv/lib/python3.12/site-packages/greenlet/tests/_test_extension.c
+.venv/lib/python3.12/site-packages/greenlet/tests/_test_extension.cpython-312-darwin.so
+.venv/lib/python3.12/site-packages/greenlet/tests/fail_clearing_run_switches.py
+.venv/lib/python3.12/site-packages/greenlet/tests/fail_cpp_exception.py
+.venv/lib/python3.12/site-packages/greenlet/tests/fail_initialstub_already_started.py
+.venv/lib/python3.12/site-packages/greenlet/tests/fail_slp_switch.py
+.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_three_greenlets.py
+.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_three_greenlets2.py
+.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py
+.venv/lib/python3.12/site-packages/greenlet/tests/leakcheck.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_contextvars.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_cpp.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_extension_interface.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_gc.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_generator_nested.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_generator.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_greenlet_trash.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_greenlet.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_leaks.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_stack_saved.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_throw.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_tracing.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_version.py
+.venv/lib/python3.12/site-packages/greenlet/tests/test_weakref.py
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/fail_clearing_run_switches.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/fail_cpp_exception.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/fail_initialstub_already_started.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/fail_slp_switch.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/fail_switch_three_greenlets.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/fail_switch_three_greenlets2.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/fail_switch_two_greenlets.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/leakcheck.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_contextvars.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_cpp.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_extension_interface.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_gc.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_generator_nested.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_generator.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_greenlet_trash.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_greenlet.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_leaks.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_stack_saved.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_throw.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_tracing.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_weakref.cpython-312.pyc
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/AUTHORS
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/LICENSE
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/LICENSE.PSF
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/METADATA
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/RECORD
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/top_level.txt
+.venv/lib/python3.12/site-packages/greenlet-3.1.1.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/idna/__init__.py
+.venv/lib/python3.12/site-packages/idna/codec.py
+.venv/lib/python3.12/site-packages/idna/compat.py
+.venv/lib/python3.12/site-packages/idna/core.py
+.venv/lib/python3.12/site-packages/idna/idnadata.py
+.venv/lib/python3.12/site-packages/idna/intranges.py
+.venv/lib/python3.12/site-packages/idna/package_data.py
+.venv/lib/python3.12/site-packages/idna/py.typed
+.venv/lib/python3.12/site-packages/idna/uts46data.py
+.venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc
+.venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md
+.venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA
+.venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD
+.venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/pip/__init__.py
+.venv/lib/python3.12/site-packages/pip/__main__.py
+.venv/lib/python3.12/site-packages/pip/__pip-runner__.py
+.venv/lib/python3.12/site-packages/pip/py.typed
+.venv/lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/build_env.py
+.venv/lib/python3.12/site-packages/pip/_internal/cache.py
+.venv/lib/python3.12/site-packages/pip/_internal/configuration.py
+.venv/lib/python3.12/site-packages/pip/_internal/exceptions.py
+.venv/lib/python3.12/site-packages/pip/_internal/main.py
+.venv/lib/python3.12/site-packages/pip/_internal/pyproject.py
+.venv/lib/python3.12/site-packages/pip/_internal/self_outdated_check.py
+.venv/lib/python3.12/site-packages/pip/_internal/wheel_builder.py
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/command_context.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/index_command.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/main.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/parser.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/spinners.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/status_codes.py
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/index_command.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/cache.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/check.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/completion.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/configuration.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/debug.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/download.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/freeze.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/hash.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/help.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/index.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/inspect.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/install.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/list.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/search.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/show.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/uninstall.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/wheel.py
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/base.py
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/installed.py
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/index/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/index/collector.py
+.venv/lib/python3.12/site-packages/pip/_internal/index/package_finder.py
+.venv/lib/python3.12/site-packages/pip/_internal/index/sources.py
+.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/locations/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py
+.venv/lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py
+.venv/lib/python3.12/site-packages/pip/_internal/locations/base.py
+.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/_json.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/base.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/candidate.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/direct_url.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/format_control.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/index.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/installation_report.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/link.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/scheme.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/search_scope.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/target_python.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/wheel.py
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/auth.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/cache.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/download.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/session.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/utils.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/check.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/freeze.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_legacy.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_legacy.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py
+.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/req/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/req/constructors.py
+.venv/lib/python3.12/site-packages/pip/_internal/req/req_file.py
+.venv/lib/python3.12/site-packages/pip/_internal/req/req_install.py
+.venv/lib/python3.12/site-packages/pip/_internal/req/req_set.py
+.venv/lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py
+.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/base.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/_log.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/appdirs.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/compat.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/datetime.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/deprecation.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/egg_link.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/filetypes.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/glibc.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/hashes.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/logging.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/misc.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/packaging.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/retry.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/unpacking.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/urls.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/wheel.py
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/retry.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/__init__.py
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/git.py
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/subversion.py
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/typing_extensions.py
+.venv/lib/python3.12/site-packages/pip/_vendor/vendor.txt
+.venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/core.py
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/database.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/index.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/locators.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/manifest.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/markers.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/resources.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/t32.exe
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64-arm.exe
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64.exe
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/util.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/version.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/w32.exe
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64-arm.exe
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64.exe
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/wheel.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distro/__main__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distro/distro.py
+.venv/lib/python3.12/site-packages/pip/_vendor/distro/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/codec.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/compat.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/core.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/package_data.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_elffile.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_parser.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_tokenizer.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/metadata.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/tags.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/utils.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/version.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_parser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_tokenizer.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/metadata.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/licenses/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/licenses/_spdx.py
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/cmdline.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/console.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/style.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/token.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/util.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/bbcode.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/groff.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/html.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/img.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/irc.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/latex.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/other.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/rtf.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/svg.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal256.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/_mapping.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__version__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/adapters.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/api.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/auth.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/certs.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/compat.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/cookies.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/help.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/models.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/packages.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/structures.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/utils.py
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__main__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_extension.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_pick.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_stack.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_timer.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/abc.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/align.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/ansi.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/bar.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/box.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/cells.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/color.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/columns.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/console.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/containers.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/control.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/emoji.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/errors.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/filesize.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/json.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/layout.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/live_render.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/live.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/logging.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/markup.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/measure.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/padding.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/pager.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/palette.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/panel.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/pretty.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/progress.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/prompt.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/protocol.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/region.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/repr.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/rule.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/scope.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/screen.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/segment.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/status.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/style.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/styled.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/syntax.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/table.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/text.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/theme.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/themes.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/traceback.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/tree.py
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/_types.py
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_api.py
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_macos.py
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_windows.py
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/py.typed
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/request.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/response.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/appengine.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/securetransport.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/six.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/queue.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/AUTHORS.txt
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/entry_points.txt
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/LICENSE.txt
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/METADATA
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/RECORD
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/REQUESTED
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/top_level.txt
+.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/playwright/__init__.py
+.venv/lib/python3.12/site-packages/playwright/__main__.py
+.venv/lib/python3.12/site-packages/playwright/_repo_version.py
+.venv/lib/python3.12/site-packages/playwright/py.typed
+.venv/lib/python3.12/site-packages/playwright/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/__pycache__/__main__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/__pycache__/_repo_version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__init__.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_accessibility.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_api_structures.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_artifact.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_assertions.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_async_base.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_browser_context.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_browser_type.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_browser.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_cdp_session.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_clock.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_connection.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_console_message.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_dialog.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_download.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_driver.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_element_handle.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_errors.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_event_context_manager.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_fetch.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_file_chooser.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_frame.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_glob.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_greenlets.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_har_router.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_helper.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_impl_to_api_mapping.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_input.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_js_handle.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_json_pipe.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_local_utils.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_locator.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_map.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_network.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_object_factory.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_page.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_path_utils.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_playwright.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_selectors.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_set_input_files_helpers.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_str_utils.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_stream.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_sync_base.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_tracing.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_transport.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_video.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_waiter.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_web_error.py
+.venv/lib/python3.12/site-packages/playwright/_impl/_writable_stream.py
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_accessibility.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_api_structures.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_artifact.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_assertions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_async_base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_browser_context.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_browser_type.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_browser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_cdp_session.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_clock.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_console_message.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_dialog.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_download.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_driver.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_element_handle.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_errors.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_event_context_manager.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_fetch.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_file_chooser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_frame.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_glob.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_greenlets.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_har_router.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_helper.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_impl_to_api_mapping.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_input.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_js_handle.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_json_pipe.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_local_utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_locator.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_map.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_network.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_object_factory.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_page.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_path_utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_playwright.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_selectors.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_set_input_files_helpers.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_str_utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_stream.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_sync_base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_tracing.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_transport.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_video.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_waiter.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_web_error.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pycache__/_writable_stream.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pyinstaller/__init__.py
+.venv/lib/python3.12/site-packages/playwright/_impl/__pyinstaller/hook-playwright.async_api.py
+.venv/lib/python3.12/site-packages/playwright/_impl/__pyinstaller/hook-playwright.sync_api.py
+.venv/lib/python3.12/site-packages/playwright/_impl/__pyinstaller/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pyinstaller/__pycache__/hook-playwright.async_api.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/_impl/__pyinstaller/__pycache__/hook-playwright.sync_api.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/async_api/__init__.py
+.venv/lib/python3.12/site-packages/playwright/async_api/_context_manager.py
+.venv/lib/python3.12/site-packages/playwright/async_api/_generated.py
+.venv/lib/python3.12/site-packages/playwright/async_api/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/async_api/__pycache__/_context_manager.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/async_api/__pycache__/_generated.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/driver/LICENSE
+.venv/lib/python3.12/site-packages/playwright/driver/node
+.venv/lib/python3.12/site-packages/playwright/driver/README.md
+.venv/lib/python3.12/site-packages/playwright/driver/package/api.json
+.venv/lib/python3.12/site-packages/playwright/driver/package/browsers.json
+.venv/lib/python3.12/site-packages/playwright/driver/package/cli.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/index.d.ts
+.venv/lib/python3.12/site-packages/playwright/driver/package/index.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/index.mjs
+.venv/lib/python3.12/site-packages/playwright/driver/package/package.json
+.venv/lib/python3.12/site-packages/playwright/driver/package/protocol.yml
+.venv/lib/python3.12/site-packages/playwright/driver/package/README.md
+.venv/lib/python3.12/site-packages/playwright/driver/package/ThirdPartyNotices.txt
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/install_media_pack.ps1
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_chrome_beta_linux.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_chrome_beta_mac.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_chrome_beta_win.ps1
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_chrome_stable_linux.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_chrome_stable_mac.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_chrome_stable_win.ps1
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_beta_linux.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_beta_mac.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_beta_win.ps1
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_dev_linux.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_dev_mac.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_dev_win.ps1
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_stable_linux.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_stable_mac.sh
+.venv/lib/python3.12/site-packages/playwright/driver/package/bin/reinstall_msedge_stable_win.ps1
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/androidServerImpl.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/browserServerImpl.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/inprocess.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/inProcessFactory.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/outofprocess.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utilsBundle.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/zipBundle.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/zipBundleImpl.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/cli/driver.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/cli/program.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/cli/programWithTestStub.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/accessibility.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/android.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/api.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/artifact.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/browser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/browserContext.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/browserType.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/cdpSession.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/channelOwner.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/clientHelper.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/clientInstrumentation.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/clientStackTrace.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/clock.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/connection.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/consoleMessage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/coverage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/dialog.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/download.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/electron.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/elementHandle.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/errors.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/eventEmitter.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/events.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/fetch.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/fileChooser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/fileUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/frame.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/harRouter.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/input.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/jsHandle.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/jsonPipe.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/localUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/locator.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/network.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/page.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/platform.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/playwright.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/selectors.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/stream.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/timeoutSettings.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/tracing.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/types.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/video.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/waiter.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/webError.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/webSocket.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/worker.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/client/writableStream.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/generated/clockSource.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/generated/consoleApiSource.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/generated/injectedScriptSource.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/generated/pollingRecorderSource.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/generated/utilityScriptSource.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/generated/webSocketMockSource.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/protocol/debug.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/protocol/serializers.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/protocol/validator.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/protocol/validatorPrimitives.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/remote/playwrightConnection.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/remote/playwrightServer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/accessibility.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/artifact.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/browser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/browserContext.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/browserType.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/callLog.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/clock.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/console.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/cookieStore.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/debugController.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/debugger.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/deviceDescriptors.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/deviceDescriptorsSource.json
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dialog.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dom.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/download.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/errors.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/fetch.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/fileChooser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/fileUploadUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/formData.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/frames.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/frameSelectors.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/harBackend.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/helper.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/index.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/input.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/instrumentation.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/javascript.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/launchApp.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/localUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/macEditingCommands.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/network.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/page.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/pipeTransport.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/playwright.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/progress.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/protocolError.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/screenshotter.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/selectors.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/socksClientCertificatesInterceptor.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/socksInterceptor.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/storageScript.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/timeoutSettings.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/transport.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/types.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/usKeyboardLayout.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/android/android.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/android/backendAdb.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiBrowser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiChromium.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiConnection.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiExecutionContext.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiFirefox.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiInput.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiNetworkManager.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiOverCdp.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiPage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/bidiPdf.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/third_party/bidiDeserializer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/third_party/bidiKeyboard.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/third_party/bidiProtocol.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/third_party/bidiSerializer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/bidi/third_party/firefoxPrefs.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/appIcon.png
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/chromium.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/chromiumSwitches.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crAccessibility.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crBrowser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crConnection.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crCoverage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crDevTools.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crDragDrop.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crExecutionContext.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crInput.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crNetworkManager.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crPage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crPdf.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crProtocolHelper.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/crServiceWorker.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/defaultFontFamilies.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/chromium/videoRecorder.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/csharp.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/java.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/javascript.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/jsonl.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/language.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/languages.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/python.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/codegen/types.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/androidDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/artifactDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/browserContextDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/browserDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/browserTypeDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/cdpSessionDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/debugControllerDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/dialogDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/dispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/electronDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/elementHandlerDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/frameDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/jsHandleDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/jsonPipeDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/localUtilsDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/networkDispatchers.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/pageDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/playwrightDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/selectorsDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/streamDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/tracingDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/webSocketRouteDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/dispatchers/writableStreamDispatcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/electron/electron.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/electron/loader.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/ffAccessibility.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/ffBrowser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/ffConnection.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/ffExecutionContext.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/ffInput.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/ffNetworkManager.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/ffPage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/firefox/firefox.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/har/harRecorder.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/har/harTracer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/isomorphic/utilityScriptSerializers.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/chat.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/contextRecorder.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/recorderApp.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/recorderCollection.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/recorderFrontend.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/recorderRunner.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/recorderUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/recorder/throttledFile.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/registry/browserFetcher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/registry/dependencies.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/registry/index.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/registry/nativeDeps.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/registry/oopDownloadBrowserMain.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/trace/recorder/snapshotter.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/trace/recorder/snapshotterInjected.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/trace/recorder/tracing.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/trace/test/inMemorySnapshotter.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/trace/viewer/traceViewer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/ascii.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/comparators.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/crypto.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/debug.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/debugLogger.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/env.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/eventsHelper.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/expectUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/fileUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/happyEyeballs.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/hostPlatform.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/httpServer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/linuxUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/network.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/nodePlatform.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/pipeTransport.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/processLauncher.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/profiler.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/socksProxy.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/spawnAsync.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/task.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/userAgent.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/wsServer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/zipFile.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/zones.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/image_tools/colorUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/image_tools/compare.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/image_tools/imageChannel.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/utils/image_tools/stats.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/webkit.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkAccessibility.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkBrowser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkConnection.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkExecutionContext.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkInput.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkInterceptableRequest.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkPage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkProvisionalPage.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/server/webkit/wkWorkers.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/third_party/pixelmatch.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/ariaSnapshot.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/assert.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/colors.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/cssParser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/cssTokenizer.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/headers.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/locatorGenerators.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/locatorParser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/locatorUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/manualPromise.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/mimeType.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/multimap.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/rtti.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/selectorParser.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/semaphore.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/stackTrace.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/stringUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/time.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/timeoutRunner.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/traceUtils.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/types.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utils/isomorphic/urlMatch.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utilsBundleImpl/index.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/utilsBundleImpl/xdg-open
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/htmlReport/index.html
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/recorder/index.html
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/recorder/playwright-logo.svg
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/recorder/assets/index-eHBmevrY.css
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/recorder/assets/index-ELPgmkwA.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/index.CFOW-Ezb.css
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/index.CUq7VgrV.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/index.html
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/playwright-logo.svg
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/snapshot.html
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/sw.bundle.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/uiMode.BatfzHMG.css
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/uiMode.CHJSAD7F.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/uiMode.html
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js
+.venv/lib/python3.12/site-packages/playwright/driver/package/types/protocol.d.ts
+.venv/lib/python3.12/site-packages/playwright/driver/package/types/structs.d.ts
+.venv/lib/python3.12/site-packages/playwright/driver/package/types/types.d.ts
+.venv/lib/python3.12/site-packages/playwright/sync_api/__init__.py
+.venv/lib/python3.12/site-packages/playwright/sync_api/_context_manager.py
+.venv/lib/python3.12/site-packages/playwright/sync_api/_generated.py
+.venv/lib/python3.12/site-packages/playwright/sync_api/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/sync_api/__pycache__/_context_manager.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright/sync_api/__pycache__/_generated.cpython-312.pyc
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/entry_points.txt
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/LICENSE
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/METADATA
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/RECORD
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/REQUESTED
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/top_level.txt
+.venv/lib/python3.12/site-packages/playwright-1.51.0.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/pyee/__init__.py
+.venv/lib/python3.12/site-packages/pyee/asyncio.py
+.venv/lib/python3.12/site-packages/pyee/base.py
+.venv/lib/python3.12/site-packages/pyee/cls.py
+.venv/lib/python3.12/site-packages/pyee/executor.py
+.venv/lib/python3.12/site-packages/pyee/py.typed
+.venv/lib/python3.12/site-packages/pyee/trio.py
+.venv/lib/python3.12/site-packages/pyee/twisted.py
+.venv/lib/python3.12/site-packages/pyee/uplift.py
+.venv/lib/python3.12/site-packages/pyee/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee/__pycache__/asyncio.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee/__pycache__/base.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee/__pycache__/cls.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee/__pycache__/executor.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee/__pycache__/trio.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee/__pycache__/twisted.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee/__pycache__/uplift.cpython-312.pyc
+.venv/lib/python3.12/site-packages/pyee-12.1.1.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/pyee-12.1.1.dist-info/LICENSE
+.venv/lib/python3.12/site-packages/pyee-12.1.1.dist-info/METADATA
+.venv/lib/python3.12/site-packages/pyee-12.1.1.dist-info/RECORD
+.venv/lib/python3.12/site-packages/pyee-12.1.1.dist-info/top_level.txt
+.venv/lib/python3.12/site-packages/pyee-12.1.1.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/requests/__init__.py
+.venv/lib/python3.12/site-packages/requests/__version__.py
+.venv/lib/python3.12/site-packages/requests/_internal_utils.py
+.venv/lib/python3.12/site-packages/requests/adapters.py
+.venv/lib/python3.12/site-packages/requests/api.py
+.venv/lib/python3.12/site-packages/requests/auth.py
+.venv/lib/python3.12/site-packages/requests/certs.py
+.venv/lib/python3.12/site-packages/requests/compat.py
+.venv/lib/python3.12/site-packages/requests/cookies.py
+.venv/lib/python3.12/site-packages/requests/exceptions.py
+.venv/lib/python3.12/site-packages/requests/help.py
+.venv/lib/python3.12/site-packages/requests/hooks.py
+.venv/lib/python3.12/site-packages/requests/models.py
+.venv/lib/python3.12/site-packages/requests/packages.py
+.venv/lib/python3.12/site-packages/requests/sessions.py
+.venv/lib/python3.12/site-packages/requests/status_codes.py
+.venv/lib/python3.12/site-packages/requests/structures.py
+.venv/lib/python3.12/site-packages/requests/utils.py
+.venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc
+.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/LICENSE
+.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/METADATA
+.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/RECORD
+.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/REQUESTED
+.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/top_level.txt
+.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/soupsieve/__init__.py
+.venv/lib/python3.12/site-packages/soupsieve/__meta__.py
+.venv/lib/python3.12/site-packages/soupsieve/css_match.py
+.venv/lib/python3.12/site-packages/soupsieve/css_parser.py
+.venv/lib/python3.12/site-packages/soupsieve/css_types.py
+.venv/lib/python3.12/site-packages/soupsieve/pretty.py
+.venv/lib/python3.12/site-packages/soupsieve/py.typed
+.venv/lib/python3.12/site-packages/soupsieve/util.py
+.venv/lib/python3.12/site-packages/soupsieve/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/soupsieve/__pycache__/__meta__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_match.cpython-312.pyc
+.venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_parser.cpython-312.pyc
+.venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_types.cpython-312.pyc
+.venv/lib/python3.12/site-packages/soupsieve/__pycache__/pretty.cpython-312.pyc
+.venv/lib/python3.12/site-packages/soupsieve/__pycache__/util.cpython-312.pyc
+.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/METADATA
+.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/RECORD
+.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/licenses/LICENSE.md
+.venv/lib/python3.12/site-packages/typing_extensions-4.13.1.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/typing_extensions-4.13.1.dist-info/METADATA
+.venv/lib/python3.12/site-packages/typing_extensions-4.13.1.dist-info/RECORD
+.venv/lib/python3.12/site-packages/typing_extensions-4.13.1.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/typing_extensions-4.13.1.dist-info/licenses/LICENSE
+.venv/lib/python3.12/site-packages/urllib3/__init__.py
+.venv/lib/python3.12/site-packages/urllib3/_base_connection.py
+.venv/lib/python3.12/site-packages/urllib3/_collections.py
+.venv/lib/python3.12/site-packages/urllib3/_request_methods.py
+.venv/lib/python3.12/site-packages/urllib3/_version.py
+.venv/lib/python3.12/site-packages/urllib3/connection.py
+.venv/lib/python3.12/site-packages/urllib3/connectionpool.py
+.venv/lib/python3.12/site-packages/urllib3/exceptions.py
+.venv/lib/python3.12/site-packages/urllib3/fields.py
+.venv/lib/python3.12/site-packages/urllib3/filepost.py
+.venv/lib/python3.12/site-packages/urllib3/poolmanager.py
+.venv/lib/python3.12/site-packages/urllib3/py.typed
+.venv/lib/python3.12/site-packages/urllib3/response.py
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/socks.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__init__.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/connection.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/http2/__init__.py
+.venv/lib/python3.12/site-packages/urllib3/http2/connection.py
+.venv/lib/python3.12/site-packages/urllib3/http2/probe.py
+.venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/probe.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__init__.py
+.venv/lib/python3.12/site-packages/urllib3/util/connection.py
+.venv/lib/python3.12/site-packages/urllib3/util/proxy.py
+.venv/lib/python3.12/site-packages/urllib3/util/request.py
+.venv/lib/python3.12/site-packages/urllib3/util/response.py
+.venv/lib/python3.12/site-packages/urllib3/util/retry.py
+.venv/lib/python3.12/site-packages/urllib3/util/ssl_.py
+.venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py
+.venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py
+.venv/lib/python3.12/site-packages/urllib3/util/timeout.py
+.venv/lib/python3.12/site-packages/urllib3/util/url.py
+.venv/lib/python3.12/site-packages/urllib3/util/util.py
+.venv/lib/python3.12/site-packages/urllib3/util/wait.py
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc
+.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/INSTALLER
+.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/METADATA
+.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/RECORD
+.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/WHEEL
+.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/licenses/LICENSE.txt
diff --git a/pine-script-intellij-plugin/.gitignore b/pine-script-intellij-plugin/.gitignore
new file mode 100644
index 0000000..2bf8959
--- /dev/null
+++ b/pine-script-intellij-plugin/.gitignore
@@ -0,0 +1,31 @@
+# IntelliJ IDEA
+.idea/
+*.iml
+*.iws
+*.ipr
+out/
+
+# Gradle
+.gradle/
+build/
+
+# Java
+*.class
+*.jar
+*.war
+*.ear
+
+# Log files
+*.log
+
+# OS-specific files
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+
+# Ignore the .venv folder
+.venv
\ No newline at end of file
diff --git a/pine-script-intellij-plugin/BUILDING.md b/pine-script-intellij-plugin/BUILDING.md
new file mode 100644
index 0000000..340a785
--- /dev/null
+++ b/pine-script-intellij-plugin/BUILDING.md
@@ -0,0 +1,67 @@
+# Building the Pine Script JetBrains Plugin
+
+This document describes how to build the Pine Script plugin for JetBrains IDEs.
+
+## Prerequisites
+
+- Java JDK 17 or newer
+- Git
+
+## Building from Source
+
+1. Clone the repository:
+ ```bash
+ git clone https://github.com/yourusername/pine-script-intellij-plugin.git
+ cd pine-script-intellij-plugin
+ ```
+
+2. Build the plugin:
+ ```bash
+ ./gradlew buildPlugin
+ ```
+
+ This will generate the plugin ZIP file in the `build/distributions` directory.
+
+## Installing the Plugin from the ZIP File
+
+1. Open your JetBrains IDE (IntelliJ IDEA, WebStorm, etc.)
+2. Go to **Settings/Preferences → Plugins**
+3. Click on the gear icon and select **Install Plugin from Disk...**
+4. Select the ZIP file from `build/distributions`
+5. Restart your IDE
+
+## Development Workflow
+
+### Running the Plugin in Development Mode
+
+To run the plugin in a separate IntelliJ IDEA instance:
+
+```bash
+./gradlew runIde
+```
+
+This will start a new IntelliJ IDEA instance with the plugin installed.
+
+### Testing
+
+To run the tests:
+
+```bash
+./gradlew test
+```
+
+### Continuous Integration
+
+The project is set up to use GitHub Actions for CI. The workflow will build and test the plugin on every push.
+
+## Troubleshooting
+
+- **Problem**: Gradle fails to build
+ **Solution**: Make sure you have JDK 17 or newer installed and set as the project SDK in your IDE.
+
+- **Problem**: The plugin doesn't show up after installation
+ **Solution**: Make sure to restart your IDE after installing the plugin.
+
+## Documentation
+
+For more information about developing JetBrains plugins, see the [JetBrains Platform SDK Documentation](https://plugins.jetbrains.com/docs/intellij/welcome.html).
\ No newline at end of file
diff --git a/pine-script-intellij-plugin/README.md b/pine-script-intellij-plugin/README.md
new file mode 100644
index 0000000..4f0a2a5
--- /dev/null
+++ b/pine-script-intellij-plugin/README.md
@@ -0,0 +1,73 @@
+# Pine Script Plugin for JetBrains IDEs
+
+This plugin provides Pine Script language support for JetBrains IDEs (IntelliJ IDEA, WebStorm, PyCharm, etc.).
+
+## Features
+
+- Syntax highlighting for Pine Script files (`.pine`, `.ps`, `.pinescript`)
+- Code completion for built-in functions, variables, and methods
+- Parameter information for function calls
+- Color preview in editor
+- Documentation on hover
+- New Pine Script file templates (Indicator, Strategy, Library)
+
+## Installation
+
+### From JetBrains Marketplace
+
+1. Open your JetBrains IDE
+2. Go to Settings/Preferences → Plugins
+3. Click on "Browse repositories..."
+4. Search for "Pine Script"
+5. Install the plugin
+6. Restart your IDE
+
+### Manual Installation
+
+1. Download the plugin from [Releases](https://github.com/yourusername/pine-script-intellij-plugin/releases)
+2. Open your JetBrains IDE
+3. Go to Settings/Preferences → Plugins
+4. Click on the gear icon
+5. Select "Install Plugin from Disk..."
+6. Choose the downloaded ZIP file
+7. Restart your IDE
+
+## Usage
+
+### Creating New Pine Script Files
+
+1. Right-click in the Project window
+2. Select New → Pine Script File
+3. Choose the type of file (Indicator, Strategy, Library, or Empty)
+4. Enter the name of the file
+5. Click OK
+
+### Features
+
+- **Syntax Highlighting**: Pine Script keywords, functions, and variables are highlighted automatically.
+- **Code Completion**: Press Ctrl+Space to see completion suggestions as you type.
+- **Parameter Info**: Press Ctrl+P inside function parentheses to see parameter information.
+- **Documentation**: Hover over a function or keyword to see its documentation.
+- **Color Preview**: Hex colors and color.NAME values show a color preview in the editor gutter.
+
+## Building from Source
+
+```bash
+git clone https://github.com/yourusername/pine-script-intellij-plugin.git
+cd pine-script-intellij-plugin
+./gradlew buildPlugin
+```
+
+The plugin will be built in `build/distributions/`.
+
+## Contributing
+
+Contributions are welcome! Please feel free to submit a Pull Request.
+
+## License
+
+This plugin is released under the MIT License. See the [LICENSE](LICENSE) file for details.
+
+## Acknowledgements
+
+This plugin was inspired by the [Pine Script VS Code Plugin](https://github.com/FFriZ/Pine-Script-v5-VS-Code).
\ No newline at end of file
diff --git a/pine-script-intellij-plugin/bin/main/META-INF/filewatcher.xml b/pine-script-intellij-plugin/bin/main/META-INF/filewatcher.xml
new file mode 100644
index 0000000..16651ad
--- /dev/null
+++ b/pine-script-intellij-plugin/bin/main/META-INF/filewatcher.xml
@@ -0,0 +1,7 @@
+
Features:
+Features:
+Features:
+When a lead/high surrogate has been read from the input stream into the final + * {@link #zzBuffer} position, this will have a value of 1; otherwise, it will have a value of 0. + */ + private int zzFinalHighSurrogate = 0; + + /** Number of newlines encountered up to the start of the matched text. */ + @SuppressWarnings("unused") + private int yyline; + + /** Number of characters from the last newline up to the start of the matched text. */ + @SuppressWarnings("unused") + private int yycolumn; + + /** Number of characters up to the start of the matched text. */ + @SuppressWarnings("unused") + private long yychar; + + /** Whether the scanner is currently at the beginning of a line. */ + @SuppressWarnings("unused") + private boolean zzAtBOL = true; + + /** Whether the user-EOF-code has already been executed. */ + private boolean zzEOFDone; + + /* user code: */ + public void reset(CharSequence buffer, int start, int end, int initialState) { + this.zzBuffer = buffer.toString().toCharArray(); + this.zzCurrentPos = this.zzMarkedPos = this.zzStartRead = start; + this.zzEndRead = end; + this.zzAtEOF = false; + this.zzAtBOL = true; + yybegin(initialState); + } + + + /** + * Creates a new scanner + * + * @param in the java.io.Reader to read input from. + */ + _PineScriptLexer(java.io.Reader in) { + this.zzReader = in; + } + + + /** Returns the maximum size of the scanner buffer, which limits the size of tokens. */ + private int zzMaxBufferLen() { + return Integer.MAX_VALUE; + } + + /** Whether the scanner buffer can grow to accommodate a larger token. */ + private boolean zzCanGrow() { + return true; + } + + /** + * Translates raw input code points to DFA table row + */ + private static int zzCMap(int input) { + int offset = input & 255; + return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset]; + } + + /** + * Refills the input buffer. + * + * @return {@code false} iff there was new input. + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead - zzStartRead); + + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate && zzCanGrow()) { + /* if not, and it can grow: blow it up */ + char newBuffer[] = new char[Math.min(zzBuffer.length * 2, zzMaxBufferLen())]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + } + + /* fill the buffer with new input */ + int requested = zzBuffer.length - zzEndRead; + int numRead = zzReader.read(zzBuffer, zzEndRead, requested); + + /* not supposed to occur according to specification of java.io.Reader */ + if (numRead == 0) { + if (requested == 0) { + throw new java.io.EOFException("Scan buffer limit reached ["+zzBuffer.length+"]"); + } + else { + throw new java.io.IOException( + "Reader returned 0 characters. See JFlex examples/zero-reader for a workaround."); + } + } + if (numRead > 0) { + zzEndRead += numRead; + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + if (numRead == requested) { // We requested too few chars to encode a full Unicode character + --zzEndRead; + zzFinalHighSurrogate = 1; + } else { // There is room in the buffer for at least one more char + int c = zzReader.read(); // Expecting to read a paired low surrogate char + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char)c; + } + } + } + /* potentially more input available */ + return false; + } + + /* numRead < 0 ==> end of stream */ + return true; + } + + + /** + * Closes the input reader. + * + * @throws java.io.IOException if the reader could not be closed. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; // indicate end of file + zzEndRead = zzStartRead; // invalidate buffer + + if (zzReader != null) { + zzReader.close(); + } + } + + + /** + * Resets the scanner to read from a new input stream. + * + *
Does not close the old reader. + * + *
All internal variables are reset, the old input stream cannot be reused (internal + * buffer is discarded and lost). Lexical state is set to {@code ZZ_INITIAL}. + * + *
Internal scan buffer is resized down to its initial length, if it has grown. + * + * @param reader The new input stream. + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzEOFDone = false; + yyResetPosition(); + zzLexicalState = YYINITIAL; + int initBufferSize = Math.min(ZZ_BUFFERSIZE, zzMaxBufferLen()); + if (zzBuffer.length > initBufferSize) { + zzBuffer = new char[initBufferSize]; + } + } + + /** + * Resets the input position. + */ + private final void yyResetPosition() { + zzAtBOL = true; + zzAtEOF = false; + zzCurrentPos = 0; + zzMarkedPos = 0; + zzStartRead = 0; + zzEndRead = 0; + zzFinalHighSurrogate = 0; + yyline = 0; + yycolumn = 0; + yychar = 0L; + } + + + /** + * Returns whether the scanner has reached the end of the reader it reads from. + * + * @return whether the scanner has reached EOF. + */ + public final boolean yyatEOF() { + return zzAtEOF; + } + + + /** + * Returns the current lexical state. + * + * @return the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state. + * + * @param newState the new lexical state + */ + public final void yybegin(int newState) { + zzLexicalState = newState; + } + + + /** + * Returns the text matched by the current regular expression. + * + * @return the matched text. + */ + public final String yytext() { + return new String(zzBuffer, zzStartRead, zzMarkedPos-zzStartRead); + } + + + /** + * Returns the character at the given position from the matched text. + * + *
It is equivalent to {@code yytext().charAt(pos)}, but faster. + * + * @param position the position of the character to fetch. A value from 0 to {@code yylength()-1}. + * + * @return the character at {@code position}. + */ + public final char yycharat(int position) { + return zzBuffer[zzStartRead + position]; + } + + + /** + * How many characters were matched. + * + * @return the length of the matched text region. + */ + public final int yylength() { + return zzMarkedPos-zzStartRead; + } + + + /** + * Reports an error that occurred while scanning. + * + *
In a well-formed scanner (no or only correct usage of {@code yypushback(int)} and a + * match-all fallback rule) this method will only be called with things that + * "Can't Possibly Happen". + * + *
If this method is called, something is seriously wrong (e.g. a JFlex bug producing a faulty + * scanner etc.). + * + *
Usual syntax/scanner level error handling should be done in error fallback rules. + * + * @param errorCode the code of the error message to display. + */ + private static void zzScanError(int errorCode) { + String message; + try { + message = ZZ_ERROR_MSG[errorCode]; + } catch (ArrayIndexOutOfBoundsException e) { + message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; + } + + throw new Error(message); + } + + + /** + * Pushes the specified amount of characters back into the input stream. + * + *
They will be read again by then next call of the scanning method.
+ *
+ * @param number the number of characters to be read again. This number must not be greater than
+ * {@link #yylength()}.
+ */
+ public void yypushback(int number) {
+ if ( number > yylength() )
+ zzScanError(ZZ_PUSHBACK_2BIG);
+
+ zzMarkedPos -= number;
+ }
+
+
+ /**
+ * Contains user EOF-code, which will be executed exactly once,
+ * when the end of file is reached
+ */
+ private void zzDoEOF() {
+ if (!zzEOFDone) {
+ zzEOFDone = true;
+
+ }
+ }
+
+
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched, the end of input is encountered
+ * or an I/O-Error occurs.
+ *
+ * @return the next token.
+ * @exception java.io.IOException if any I/O-Error occurs.
+ */
+ public IElementType advance() throws java.io.IOException
+ {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char[] zzBufferL = zzBuffer;
+
+ int [] zzTransL = ZZ_TRANS;
+ int [] zzRowMapL = ZZ_ROWMAP;
+ int [] zzAttrL = ZZ_ATTRIBUTE;
+
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ }
+
+
+ zzForAction: {
+ while (true) {
+
+ if (zzCurrentPosL < zzEndReadL) {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ else if (zzAtEOF) {
+ zzInput = YYEOF;
+ break zzForAction;
+ }
+ else {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ boolean eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof) {
+ zzInput = YYEOF;
+ break zzForAction;
+ }
+ else {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ }
+ int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMap(zzInput) ];
+ if (zzNext == -1) break zzForAction;
+ zzState = zzNext;
+
+ zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ( (zzAttributes & 8) == 8 ) break zzForAction;
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ zzDoEOF();
+ return null;
+ }
+ else {
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 1:
+ { return TokenType.BAD_CHARACTER;
+ }
+ // fall through
+ case 22: break;
+ case 2:
+ { return TokenType.WHITE_SPACE;
+ }
+ // fall through
+ case 23: break;
+ case 3:
+ { return PineScriptTokenTypes.OPERATOR;
+ }
+ // fall through
+ case 24: break;
+ case 4:
+ { return PineScriptTokenTypes.LPAREN;
+ }
+ // fall through
+ case 25: break;
+ case 5:
+ { return PineScriptTokenTypes.RPAREN;
+ }
+ // fall through
+ case 26: break;
+ case 6:
+ { return PineScriptTokenTypes.COMMA;
+ }
+ // fall through
+ case 27: break;
+ case 7:
+ { return PineScriptTokenTypes.DOT;
+ }
+ // fall through
+ case 28: break;
+ case 8:
+ { return PineScriptTokenTypes.NUMBER;
+ }
+ // fall through
+ case 29: break;
+ case 9:
+ { return PineScriptTokenTypes.SEMICOLON;
+ }
+ // fall through
+ case 30: break;
+ case 10:
+ { return PineScriptTokenTypes.IDENTIFIER;
+ }
+ // fall through
+ case 31: break;
+ case 11:
+ { return PineScriptTokenTypes.LBRACKET;
+ }
+ // fall through
+ case 32: break;
+ case 12:
+ { return PineScriptTokenTypes.RBRACKET;
+ }
+ // fall through
+ case 33: break;
+ case 13:
+ { return PineScriptTokenTypes.LBRACE;
+ }
+ // fall through
+ case 34: break;
+ case 14:
+ { return PineScriptTokenTypes.RBRACE;
+ }
+ // fall through
+ case 35: break;
+ case 15:
+ { return PineScriptTokenTypes.STRING;
+ }
+ // fall through
+ case 36: break;
+ case 16:
+ { return PineScriptTokenTypes.COMMENT;
+ }
+ // fall through
+ case 37: break;
+ case 17:
+ { return PineScriptTokenTypes.FUNCTION;
+ }
+ // fall through
+ case 38: break;
+ case 18:
+ { return PineScriptTokenTypes.KEYWORD;
+ }
+ // fall through
+ case 39: break;
+ case 19:
+ { return PineScriptTokenTypes.NAMESPACE;
+ }
+ // fall through
+ case 40: break;
+ case 20:
+ { return PineScriptTokenTypes.TYPE;
+ }
+ // fall through
+ case 41: break;
+ case 21:
+ { return PineScriptTokenTypes.BUILT_IN_VARIABLE;
+ }
+ // fall through
+ case 42: break;
+ default:
+ zzScanError(ZZ_NO_MATCH);
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/pine-script-intellij-plugin/bin/main/com/pinescript/resources/schemes/PineScriptScheme.xml b/pine-script-intellij-plugin/bin/main/com/pinescript/resources/schemes/PineScriptScheme.xml
new file mode 100644
index 0000000..f2cc47b
--- /dev/null
+++ b/pine-script-intellij-plugin/bin/main/com/pinescript/resources/schemes/PineScriptScheme.xml
@@ -0,0 +1,5 @@
+
style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "areabr",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_areabr",
+ "fragment": "const_areabr",
+ "info": "style parameter in the plot function. Similar to area, except the gaps in the data are not filled.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "barmerge.gaps_off",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_barmerge.gaps_off",
+ "fragment": "const_barmerge.gaps_off",
+ "info": "style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "columns",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_columns",
+ "fragment": "const_columns",
+ "info": "style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "cross",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_cross",
+ "fragment": "const_cross",
+ "info": "style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "currency.AUD",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_currency.AUD",
+ "fragment": "const_currency.AUD",
+ "info": "style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "integer",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_integer",
+ "fragment": "const_integer",
+ "info": "style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "linebr",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_linebr",
+ "fragment": "const_linebr",
+ "info": "style parameter in the plot function. Similar to line, except the gaps in the data are not filled.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "location.abovebar",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_location.abovebar",
+ "fragment": "const_location.abovebar",
+ "info": "style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "strategy.cash",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#const_strategy.cash",
+ "fragment": "const_strategy.cash",
+ "info": "abs(x) \u2192 integer
abs(x) \u2192 const integer
abs(x) \u2192 float
abs(x) \u2192 const float
abs(x) \u2192 series
acos(x) \u2192 float
acos(x) \u2192 const float
acos(x) \u2192 series
alertcondition(condition, title, message) \u2192 void
alertcondition(close\u00a0>=\u00a0open,\u00a0title='Alert\u00a0on\u00a0Green\u00a0Bar',\u00a0message='Green\u00a0Bar!')
alma(series, length, offset, sigma) \u2192 series
plot(alma(close,\u00a09,\u00a00.85,\u00a06))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0much\u00a0less\u00a0efficient
pine_alma(series,\u00a0windowsize,\u00a0offset,\u00a0sigma)\u00a0=>
\u00a0\u00a0\u00a0\u00a0m\u00a0=\u00a0floor(offset\u00a0*\u00a0(windowsize\u00a0-\u00a01))
\u00a0\u00a0\u00a0\u00a0s\u00a0=\u00a0windowsize\u00a0/\u00a0sigma
\u00a0\u00a0\u00a0\u00a0norm\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0windowsize\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0weight\u00a0=\u00a0exp(-1\u00a0*\u00a0pow(i\u00a0-\u00a0m,\u00a02)\u00a0/\u00a0(2\u00a0*\u00a0pow(s,\u00a02)))
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0norm\u00a0:=\u00a0norm\u00a0+\u00a0weight
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0series[windowsize\u00a0-\u00a0i\u00a0-\u00a01]\u00a0*\u00a0weight
\u00a0\u00a0\u00a0\u00a0sum\u00a0/\u00a0norm
plot(pine_alma(close,\u00a09,\u00a00.85,\u00a06))
asin(x) \u2192 float
asin(x) \u2192 const float
asin(x) \u2192 series
atan(x) \u2192 float
atan(x) \u2192 const float
atan(x) \u2192 series
atr(length) \u2192 series
plot(atr(14))
//the\u00a0same\u00a0on\u00a0pine
pine_atr(length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0trueRange\u00a0=\u00a0na(high[1])?\u00a0high-low\u00a0:\u00a0max(max(high\u00a0-\u00a0low,\u00a0abs(high\u00a0-\u00a0close[1])),\u00a0abs(low\u00a0-\u00a0close[1]))
\u00a0\u00a0\u00a0\u00a0//true\u00a0range\u00a0can\u00a0be\u00a0also\u00a0calculated\u00a0with\u00a0tr(true)
\u00a0\u00a0\u00a0\u00a0rma(trueRange,\u00a0length)
plot(pine_atr(14))
barcolor(color, offset, editable, show_last, title) \u2192 void
barcolor(close\u00a0<\u00a0open\u00a0?\u00a0black\u00a0:\u00a0white)
barssince(condition) \u2192 series[integer]
//\u00a0get\u00a0number\u00a0of\u00a0bars\u00a0since\u00a0last\u00a0green\u00a0bar
barssince(close\u00a0>=\u00a0open)
bgcolor(color, transp, offset, editable, show_last, title) \u2192 void
bgcolor(close\u00a0<\u00a0open\u00a0?\u00a0red\u00a0:\u00a0green,\u00a0transp=70)
cci(source, length) \u2192 series
cog(source, length) \u2192 series
plot(cog(close,\u00a010))
//\u00a0the\u00a0same\u00a0on\u00a0pine
pine_cog(source,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a0sum(source,\u00a0length)
\u00a0\u00a0\u00a0\u00a0num\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0length\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0price\u00a0=\u00a0source[i]
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0num\u00a0:=\u00a0num\u00a0+\u00a0price\u00a0*\u00a0(i\u00a0+\u00a01)
\u00a0\u00a0\u00a0\u00a0-num\u00a0/\u00a0sum
plot(pine_cog(close,\u00a010))
color(color, transp) \u2192 color
color(red,\u00a050)
correlation(source_a, source_b, length) \u2192 series
cos(x) \u2192 float
cos(x) \u2192 const float
cos(x) \u2192 series
x-series is defined as having crossed over y-series if the value of x is greater than the value of y and the value of x was less than the value of y on the bar immediately preceding the current bar.crossover(x, y) \u2192 series[bool]
x.y.x-series is defined as having crossed over y-series if the value of x is greater than the value of y and the value of x was less than the value of y on the bar immediately preceding the current bar.",
+ "arguments": [
+ {
+ "argument": "x",
+ "type": "float"
+ },
+ {
+ "argument": "y",
+ "type": "float"
+ }
+ ],
+ "syntax": "crossover(x, y) \u2192 series[bool]",
+ "returnType": "series[bool]",
+ "returns": ""
+ },
+ {
+ "name": "crossunder()",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#fun_crossunder",
+ "fragment": "fun_crossunder",
+ "info": "x-series is defined as having crossed under y-series if the value of x is less than the value of y and the value of x was greater than the value of y on the bar immediately preceding the current bar.crossunder(x, y) \u2192 series[bool]
x.y.x-series is defined as having crossed under y-series if the value of x is less than the value of y and the value of x was greater than the value of y on the bar immediately preceding the current bar.",
+ "arguments": [
+ {
+ "argument": "x",
+ "type": "float"
+ },
+ {
+ "argument": "y",
+ "type": "float"
+ }
+ ],
+ "syntax": "crossunder(x, y) \u2192 series[bool]",
+ "returnType": "series[bool]",
+ "returns": ""
+ },
+ {
+ "name": "cum()",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#fun_cum",
+ "fragment": "fun_cum",
+ "info": "cum(x) \u2192 series
dev(source, length) \u2192 series
plot(dev(close,\u00a010))
//\u00a0the\u00a0same\u00a0on\u00a0pine
pine_dev(source,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0mean\u00a0=\u00a0sma(source,\u00a0length)
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0length\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0val\u00a0=\u00a0source[i]
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0abs(val\u00a0-\u00a0mean)
\u00a0\u00a0\u00a0\u00a0dev\u00a0=\u00a0sum/length
plot(pine_dev(close,\u00a010))
ema(source, length) \u2192 series
plot(ema(close,\u00a015))
//the\u00a0same\u00a0on\u00a0pine
pine_ema(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0alpha\u00a0=\u00a02\u00a0/\u00a0(length\u00a0+\u00a01)
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0na(sum[1])\u00a0?\u00a0sma(src,\u00a0length)\u00a0:\u00a0alpha\u00a0*\u00a0src\u00a0+\u00a0(1\u00a0-\u00a0alpha)\u00a0*\u00a0nz(sum[1])
plot(pine_ema(close,15))
exp(x) \u2192 float
exp(x) \u2192 const float
exp(x) \u2192 series
falling(source, length) \u2192 series[bool]
fill(hline1, hline2, color, transp, title, editable) \u2192 void
fill(plot1, plot2, color, transp, title, editable, show_last) \u2192 void
h1\u00a0=\u00a0hline(20)
h2\u00a0=\u00a0hline(10)
fill(h1,\u00a0h2)
p1\u00a0=\u00a0plot(open)
p2\u00a0=\u00a0plot(close)
fill(p1,\u00a0p2,\u00a0color=green)
heikinashi(symbol) \u2192 string
heikinashi_close\u00a0=\u00a0security(heikinashi(tickerid),\u00a0period,\u00a0close)
heikinashi_aapl_60_close\u00a0=\u00a0security(heikinashi(\"AAPL\"),\u00a0\"60\",\u00a0close)
highest(source, length) \u2192 series
highest(length) \u2192 series
highestbars(source, length) \u2192 series[integer]
highestbars(length) \u2192 series[integer]
hline(price, title, color, linestyle, linewidth, editable) \u2192 hline
hline(3.14,\u00a0title='Pi',\u00a0color=blue,\u00a0linestyle=dotted,\u00a0linewidth=2)
//\u00a0You\u00a0may\u00a0fill\u00a0the\u00a0background\u00a0between\u00a0any\u00a0two\u00a0hlines\u00a0with\u00a0a\u00a0fill()\u00a0function:
h1\u00a0=\u00a0hline(20)
h2\u00a0=\u00a0hline(10)
fill(h1,\u00a0h2)
iff(condition, then, _else) \u2192 bool
iff(condition, then, _else) \u2192 integer
iff(condition, then, _else) \u2192 float
iff(condition, then, _else) \u2192 color
iff(condition, then, _else) \u2192 series
iff(condition, then, _else) \u2192 series[integer]
iff(condition, then, _else) \u2192 series[color]
iff(condition, then, _else) \u2192 string
iff(condition, then, _else) \u2192 const bool
iff(condition, then, _else) \u2192 const integer
iff(condition, then, _else) \u2192 const float
iff(condition, then, _else) \u2192 const string
iff(condition, then, _else) \u2192 const color
iff(condition, then, _else) \u2192 series[bool]
_else argument if you do not need 'else' branch.//\u00a0Draw\u00a0circles\u00a0at\u00a0the\u00a0bars\u00a0where\u00a0open\u00a0crosses\u00a0close
s1\u00a0=\u00a0iff(cross(open,\u00a0close),\u00a0avg(open,close),\u00a0na)
plot(s1,\u00a0style=circles,\u00a0linewidth=4,\u00a0color=green)
input(defval, title, type, confirm) \u2192 bool
input(defval, title, type, minval, maxval, confirm, step, options) \u2192 integer
input(defval, title, type, minval, maxval, confirm, step, options) \u2192 float
input(defval, title, type, confirm, options) \u2192 string
input(defval, title, type) \u2192 series
b\u00a0=\u00a0input(title=\"On/Off\",\u00a0type=bool,\u00a0defval=true)
plot(b\u00a0?\u00a0open\u00a0:\u00a0na)
i\u00a0=\u00a0input(title=\"Offset\",\u00a0type=integer,\u00a0defval=7,\u00a0minval=-10,\u00a0maxval=10)
plot(offset(close,\u00a0i))
f\u00a0=\u00a0input(title=\"Angle\",\u00a0type=float,\u00a0defval=-0.5,\u00a0minval=-3.14,\u00a0maxval=3.14,\u00a0step=0.02)
plot(sin(f)\u00a0>\u00a00\u00a0?\u00a0close\u00a0:\u00a0open)
sym\u00a0=\u00a0input(title=\"Symbol\",\u00a0type=symbol,\u00a0defval=\"DELL\")
res\u00a0=\u00a0input(title=\"Resolution\",\u00a0type=resolution,\u00a0defval=\"60\")
plot(close,\u00a0color=red)
plot(security(sym,\u00a0res,\u00a0close),\u00a0color=green)
s\u00a0=\u00a0input(title=\"Session\",\u00a0defval=\"24x7\",\u00a0options=[\"24x7\",\u00a0\"0900-1300\",\u00a0\"1300-1700\",\u00a0\"1700-2100\"])
plot(time(period,\u00a0s))
src\u00a0=\u00a0input(title=\"Source\",\u00a0type=source,\u00a0defval=close)
plot(src)
kagi(symbol, source, reversal) \u2192 string
kagi(symbol, reversal) \u2192 string
kagi_tickerid\u00a0=\u00a0kagi(tickerid,\u00a03)
kagi_close\u00a0=\u00a0security(kagi_tickerid,\u00a0period,\u00a0close)
plot(kagi_close)
linebreak(symbol, source, number_of_lines) \u2192 string
linebreak(symbol, number_of_lines) \u2192 string
linebreak_tickerid\u00a0=\u00a0linebreak(tickerid,\u00a03)
linebreak_close\u00a0=\u00a0security(linebreak_tickerid,\u00a0period,\u00a0close)
plot(linebreak_close)
linreg(source, length, offset) \u2192 series
y such that e^y = xlog(x) \u2192 float
log(x) \u2192 const float
log(x) \u2192 series
y such that e^y = x",
+ "arguments": [],
+ "syntax": "log(x) \u2192 float",
+ "returnType": "float",
+ "returns": ""
+ },
+ {
+ "name": "log10()",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#fun_log10",
+ "fragment": "fun_log10",
+ "info": "y such that 10^y = xlog10(x) \u2192 float
log10(x) \u2192 const float
log10(x) \u2192 series
y such that 10^y = x",
+ "arguments": [],
+ "syntax": "log10(x) \u2192 float",
+ "returnType": "float",
+ "returns": ""
+ },
+ {
+ "name": "lowest()",
+ "url": "https://www.tradingview.com/pine-script-reference/v3/#fun_lowest",
+ "fragment": "fun_lowest",
+ "info": "lowest(source, length) \u2192 series
lowest(length) \u2192 series
lowestbars(source, length) \u2192 series[integer]
lowestbars(length) \u2192 series[integer]
macd(source, fastlen, slowlen, siglen) \u2192 [series, series, series]
//\u00a0Example\u00a01
study('MACD')
[macdLine,\u00a0signalLine,\u00a0histLine]\u00a0=\u00a0macd(close,\u00a012,\u00a026,\u00a09)
plot(macdLine,\u00a0color=blue)
plot(signalLine,\u00a0color=orange)
plot(histLine,\u00a0color=red,\u00a0style=histogram)
//\u00a0Example\u00a02
//\u00a0If\u00a0you\u00a0need\u00a0only\u00a0one\u00a0value,\u00a0use\u00a0placeholders\u00a0'_'\u00a0like\u00a0this:
study('MACD')
[_,\u00a0signalLine,\u00a0_]\u00a0=\u00a0macd(close,\u00a012,\u00a026,\u00a09)
plot(signalLine,\u00a0color=orange)
max(x, y) \u2192 const integer
max(x, y) \u2192 integer
max(x, y) \u2192 series[integer]
max(x, y) \u2192 const float
max(x, y) \u2192 float
max(x, y) \u2192 series
max(close,\u00a0open)
max(close,\u00a0max(open,\u00a042))
min(x, y) \u2192 const integer
min(x, y) \u2192 integer
min(x, y) \u2192 series[integer]
min(x, y) \u2192 const float
min(x, y) \u2192 float
min(x, y) \u2192 series
min(close,\u00a0open)
min(close,\u00a0min(open,\u00a042))
mom(source, length) \u2192 series
nz(x, y) \u2192 integer
nz(x, y) \u2192 float
nz(x, y) \u2192 color
nz(x, y) \u2192 bool
nz(x, y) \u2192 series[integer]
nz(x, y) \u2192 series[bool]
nz(x, y) \u2192 series[color]
nz(x, y) \u2192 series
nz(x) \u2192 color
nz(x) \u2192 bool
nz(x) \u2192 integer
nz(x) \u2192 float
nz(x) \u2192 series[integer]
nz(x) \u2192 series[bool]
nz(x) \u2192 series[color]
nz(x) \u2192 series
nz(sma(close,\u00a0100))
offset(source, offset) \u2192 series[bool]
offset(source, offset) \u2192 series[color]
offset(source, offset) \u2192 series[integer]
offset(source, offset) \u2192 series
percentile_linear_interpolation(source, length, percentage) \u2192 series
percentile_nearest_rank(source, length, percentage) \u2192 series
percentrank(source, length) \u2192 series
pivothigh(source, leftbars, rightbars) \u2192 series
pivothigh(leftbars, rightbars) \u2192 series
study(\"PivotHigh\",\u00a0overlay=true)
leftBars\u00a0=\u00a0input(2)
rightBars=input(2)
ph\u00a0=\u00a0pivothigh(leftBars,\u00a0rightBars)
plot(ph,\u00a0style=cross,\u00a0linewidth=3,\u00a0color=\u00a0red,\u00a0offset=-rightBars)
pivotlow(source, leftbars, rightbars) \u2192 series
pivotlow(leftbars, rightbars) \u2192 series
study(\"PivotLow\",\u00a0overlay=true)
leftBars\u00a0=\u00a0input(2)
rightBars=input(2)
pl\u00a0=\u00a0pivotlow(close,\u00a0leftBars,\u00a0rightBars)
plot(pl,\u00a0style=cross,\u00a0linewidth=3,\u00a0color=\u00a0blue,\u00a0offset=-rightBars)
plot(series, title, color, linewidth, style, trackprice, transp, histbase, offset, join, editable, show_last) \u2192 plot
plot(high+low,\u00a0title='Title',\u00a0color=#00ffaa,\u00a0linewidth=2,\u00a0style=area,\u00a0transp=70,\u00a0offset=15,\u00a0trackprice=true)
//\u00a0You\u00a0may\u00a0fill\u00a0the\u00a0background\u00a0between\u00a0any\u00a0two\u00a0plots\u00a0with\u00a0a\u00a0fill()\u00a0function:
p1\u00a0=\u00a0plot(open)
p2\u00a0=\u00a0plot(close)
fill(p1,\u00a0p2,\u00a0color=green)
plotarrow(series, title, colorup, colordown, transp, offset, minheight, maxheight, editable, show_last) \u2192 void
study(\"plotarrow\u00a0example\",\u00a0overlay=true)
codiff\u00a0=\u00a0close\u00a0-\u00a0open
plotarrow(codiff,\u00a0colorup=teal,\u00a0colordown=orange,\u00a0transp=40)
plotbar(open, high, low, close, title, color, editable, show_last) \u2192 void
plotbar(open,\u00a0high,\u00a0low,\u00a0close,\u00a0title='Title',\u00a0color\u00a0=\u00a0open\u00a0<\u00a0close\u00a0?\u00a0green\u00a0:\u00a0red)
plotcandle(open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor) \u2192 void
plotcandle(open,\u00a0high,\u00a0low,\u00a0close,\u00a0title='Title',\u00a0color\u00a0=\u00a0open\u00a0<\u00a0close\u00a0?\u00a0green\u00a0:\u00a0red,\u00a0wickcolor=black)
plotchar(series, title, char, location, color, transp, offset, text, textcolor, editable, size, show_last) \u2192 void
study('plotchar\u00a0example',\u00a0overlay=true)
data\u00a0=\u00a0close\u00a0>=\u00a0open
plotchar(data,\u00a0char='\u2744')
plotshape(series, title, style, location, color, transp, offset, text, textcolor, editable, size, show_last) \u2192 void
study('plotshape\u00a0example\u00a01',\u00a0overlay=true)
data\u00a0=\u00a0close\u00a0>=\u00a0open
plotshape(data,\u00a0style=shape.xcross)
pointfigure(symbol, source, style, param, reversal) \u2192 string
style is equal to 'ATR', or Box Size if style is equal to 'Traditional'.pnf_tickerid\u00a0=\u00a0pointfigure(tickerid,\u00a0\"hl\",\u00a0\"Traditional\",\u00a01,\u00a03)
pnf_close\u00a0=\u00a0security(pnf_tickerid,\u00a0period,\u00a0close)
plot(pnf_close)
renko(symbol, source, style, param) \u2192 string
renko(symbol, style, param) \u2192 string
style is equal to 'ATR', or Box Size if style is equal to 'Traditional'.renko_tickerid\u00a0=\u00a0renko(tickerid,\u00a0\"ATR\",\u00a010)
renko_close\u00a0=\u00a0security(renko_tickerid,\u00a0period,\u00a0close)
plot(renko_close)
rising(source, length) \u2192 series[bool]
rma(source, length) \u2192 series
plot(rma(close,\u00a015))
//the\u00a0same\u00a0on\u00a0pine
pine_rma(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0alpha\u00a0=\u00a0length
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0na(sum[1])\u00a0?\u00a0sma(src,\u00a0length)\u00a0:\u00a0(src\u00a0+\u00a0(alpha\u00a0-\u00a01)\u00a0*\u00a0nz(sum[1]))\u00a0/\u00a0alpha
plot(pine_rma(close,\u00a015))
roc(source, length) \u2192 series
rsi(x, y) \u2192 series
plot(rsi(close,\u00a07))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0less\u00a0efficient
pine_rsi(x,\u00a0y)\u00a0=>\u00a0
\u00a0\u00a0\u00a0\u00a0u\u00a0=\u00a0max(x\u00a0-\u00a0x[1],\u00a00)\u00a0//\u00a0upward\u00a0change
\u00a0\u00a0\u00a0\u00a0d\u00a0=\u00a0max(x[1]\u00a0-\u00a0x,\u00a00)\u00a0//\u00a0downward\u00a0change
\u00a0\u00a0\u00a0\u00a0rs\u00a0=\u00a0rma(u,\u00a0y)\u00a0/\u00a0rma(d,\u00a0y)
\u00a0\u00a0\u00a0\u00a0res\u00a0=\u00a0100\u00a0-\u00a0100\u00a0/\u00a0(1\u00a0+\u00a0rs)
\u00a0\u00a0\u00a0\u00a0res
plot(pine_rsi(close,\u00a07))
sar(start, inc, max) \u2192 series
plot(sar(0.2,\u00a00.2,\u00a0.2),\u00a0style=cross,\u00a0linewidth=3)
security(symbol, resolution, expression, gaps, lookahead) \u2192 series[integer]
security(symbol, resolution, expression, gaps, lookahead) \u2192 series
security(symbol, resolution, expression, gaps, lookahead) \u2192 series[bool]
security(symbol, resolution, expression, gaps, lookahead) \u2192 series[color]
s\u00a0=\u00a0security(\"MSFT\",\u00a0\"D\",\u00a0close)\u00a0//\u00a01\u00a0Day
plot(s)
expr\u00a0=\u00a0sma(close,\u00a010)
s1\u00a0=\u00a0security(\"AAPL\",\u00a0\"240\",\u00a0expr)\u00a0//\u00a0240\u00a0Minutes
plot(s1)
//\u00a0To\u00a0avoid\u00a0difference\u00a0in\u00a0calculation\u00a0on\u00a0history/realtime\u00a0you\u00a0can\u00a0request\u00a0not\u00a0latest\u00a0values\u00a0and\u00a0use\u00a0merge\u00a0strategy\u00a0flags\u00a0as\u00a0follows:
s2=security(tickerid,\u00a0\"D\",\u00a0close[1],\u00a0barmerge.gaps_off,\u00a0barmerge.lookahead_on)
plot(s2)
sign(x) \u2192 float
sign(x) \u2192 const float
sign(x) \u2192 series
sin(x) \u2192 float
sin(x) \u2192 const float
sin(x) \u2192 series
sma(source, length) \u2192 series
plot(sma(close,\u00a015))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0much\u00a0less\u00a0efficient
pine_sma(x,\u00a0y)\u00a0=>
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0y\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0x[i]\u00a0/\u00a0y
\u00a0\u00a0\u00a0\u00a0sum
plot(pine_sma(close,\u00a015))
sqrt(x) \u2192 float
sqrt(x) \u2192 const float
sqrt(x) \u2192 series
stdev(source, length) \u2192 series
plot(stdev(close,\u00a05))
//the\u00a0same\u00a0on\u00a0pine
isZero(val,\u00a0eps)\u00a0=>\u00a0abs(val)\u00a0<=\u00a0eps
SUM(fst,\u00a0snd)\u00a0=>
\u00a0\u00a0\u00a0\u00a0EPS\u00a0=\u00a01e-10
\u00a0\u00a0\u00a0\u00a0res\u00a0=\u00a0fst\u00a0+\u00a0snd
\u00a0\u00a0\u00a0\u00a0if\u00a0isZero(res,\u00a0EPS)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0res\u00a0:=\u00a00
\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0not\u00a0isZero(res,\u00a01e-4)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0res\u00a0:=\u00a0res
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a015
pine_stdev(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0avg\u00a0=\u00a0sma(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0sumOfSquareDeviations\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0length\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a0SUM(src[i],\u00a0-avg)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sumOfSquareDeviations\u00a0:=\u00a0sumOfSquareDeviations\u00a0+\u00a0sum\u00a0*\u00a0sum
\u00a0\u00a0\u00a0\u00a0stdev\u00a0=\u00a0sqrt(sumOfSquareDeviations\u00a0/\u00a0length)
plot(pine_stdev(close,\u00a05))
stoch(source, high, low, length) \u2192 series
strategy(title, shorttitle, overlay, precision, scale, pyramiding, calc_on_order_fills, calc_on_every_tick, max_bars_back, backtest_fill_limits_assumption, default_qty_type, default_qty_value, initial_capital, currency, slippage, commission_type, commission_value) \u2192 void
strategy(title='MyStrategy')
strategy(title=\"MyStrategy\",\u00a0shorttitle=\"MS\",\u00a0pyramiding\u00a0=\u00a010)
strategy.cancel(id, when) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0order\u00a0cancellation\u00a0example\")
conditionForBuy\u00a0=\u00a0open\u00a0>\u00a0high[1]
strategy.entry(\"long\",\u00a0true,\u00a01,\u00a0limit\u00a0=\u00a0low,\u00a0when\u00a0=\u00a0conditionForBuy)\u00a0//\u00a0enter\u00a0long\u00a0using\u00a0limit\u00a0order\u00a0at\u00a0low\u00a0price\u00a0of\u00a0current\u00a0bar\u00a0if\u00a0conditionForBuy\u00a0is\u00a0true
strategy.cancel(\"long\",\u00a0when\u00a0=\u00a0not\u00a0conditionForBuy)\u00a0//\u00a0cancel\u00a0the\u00a0entry\u00a0order\u00a0with\u00a0name\u00a0\"long\"\u00a0if\u00a0conditionForBuy\u00a0is\u00a0false
strategy.cancel_all(when) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0all\u00a0orders\u00a0cancellation\u00a0example\")
conditionForBuy1\u00a0=\u00a0open\u00a0>\u00a0high[1]
strategy.entry(\"long\u00a0entry\u00a01\",\u00a0true,\u00a01,\u00a0limit\u00a0=\u00a0low,\u00a0when\u00a0=\u00a0conditionForBuy1)\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0limit\u00a0if\u00a0conditionForBuy1\u00a0is\u00a0true
conditionForBuy2\u00a0=\u00a0conditionForBuy1\u00a0and\u00a0open[1]\u00a0>\u00a0high[2]
strategy.entry(\"long\u00a0entry\u00a02\",\u00a0true,\u00a01,\u00a0limit\u00a0=\u00a0lowest(low,\u00a02),\u00a0when\u00a0=\u00a0conditionForBuy2)\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0limit\u00a0if\u00a0conditionForBuy2\u00a0is\u00a0true
conditionForStopTrading\u00a0=\u00a0open\u00a0<\u00a0lowest(low,\u00a02)
strategy.cancel_all(conditionForStopTrading)\u00a0//\u00a0cancel\u00a0both\u00a0limit\u00a0orders\u00a0if\u00a0the\u00a0conditon\u00a0conditionForStopTrading\u00a0is\u00a0true
strategy.close(id, when) \u2192 void
strategy(\"closeEntry\u00a0Demo\",\u00a0overlay=false)
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.close(\"buy\",\u00a0when\u00a0=\u00a0open\u00a0<\u00a0close)
plot(strategy.position_size)
strategy.close_all(when) \u2192 void
strategy(\"closeAll\u00a0Demo\",\u00a0overlay=false)
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.close_all(when\u00a0=\u00a0open\u00a0<\u00a0close)
plot(strategy.position_size)
strategy.entry(id, long, qty, limit, stop, oca_name, oca_type, comment, when) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0gap\u00a0strategy\u00a0example\")
strategy.entry(\"enter\u00a0long\",\u00a0true,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0high[1])\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0great\u00a0then\u00a0previous\u00a0high
strategy.entry(\"enter\u00a0short\",\u00a0false,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0low[1])\u00a0//\u00a0enter\u00a0short\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0less\u00a0then\u00a0previous\u00a0low
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0strategy\u00a0exit\u00a0example\")
strategy.entry(\"long\",\u00a0true,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0high[1])\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0great\u00a0then\u00a0previous\u00a0high
strategy.exit(\"exit\",\u00a0\"long\",\u00a0profit\u00a0=\u00a010,\u00a0loss\u00a0=\u00a05)\u00a0//\u00a0generate\u00a0full\u00a0exit\u00a0bracket\u00a0(profit\u00a010\u00a0points,\u00a0loss\u00a05\u00a0points\u00a0per\u00a0contract)\u00a0from\u00a0entry\u00a0with\u00a0name\u00a0\"long\"
strategy.order(id, long, qty, limit, stop, oca_name, oca_type, comment, when) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0gap\u00a0strategy\u00a0example\")
strategy.order(\"buy\",\u00a0true,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0high[1])\u00a0//\u00a0buy\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0great\u00a0then\u00a0previous\u00a0high
strategy.order(\"sell\",\u00a0false,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0low[1])\u00a0//\u00a0sell\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0less\u00a0then\u00a0previous\u00a0low
strategy.risk.allow_entry_in(value) \u2192 void
strategy(\"risk.long_only\u00a0Demo\")
strategy.risk.allow_entry_in(strategy.direction.long)\u00a0//\u00a0There\u00a0will\u00a0be\u00a0no\u00a0short\u00a0entries,\u00a0only\u00a0exits\u00a0from\u00a0long.
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.entry(\"sell\",\u00a0false,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0close)
strategy.risk.max_cons_loss_days(count) \u2192 void
strategy(\"risk.max_cons_loss_days\u00a0Demo\u00a01\")
strategy.risk.max_cons_loss_days(3)\u00a0//\u00a0No\u00a0orders\u00a0will\u00a0be\u00a0placed\u00a0after\u00a03\u00a0days,\u00a0if\u00a0each\u00a0day\u00a0is\u00a0with\u00a0loss.
//\u00a0...
strategy.risk.max_drawdown(value, type) \u2192 void
strategy(\"risk.max_drawdown\u00a0Demo\u00a01\")
strategy.risk.max_drawdown(50,\u00a0strategy.percent_of_equity)\u00a0//\u00a0set\u00a0maximum\u00a0drawdown\u00a0to\u00a050%\u00a0of\u00a0maximum\u00a0equity
//\u00a0...\u00a0
strategy(\"risk.max_drawdown\u00a0Demo\u00a02\",\u00a0currency\u00a0=\u00a0EUR)
strategy.risk.max_drawdown(2000,\u00a0strategy.cash)\u00a0\u00a0//\u00a0set\u00a0maximum\u00a0drawdown\u00a0to\u00a02000\u00a0EUR\u00a0from\u00a0maximum\u00a0equity
//\u00a0...\u00a0
strategy.risk.max_intraday_filled_orders(count) \u2192 void
strategy(\"risk.max_intraday_filled_orders\u00a0Demo\")
strategy.risk.max_intraday_filled_orders(10)\u00a0//\u00a0After\u00a010\u00a0orders\u00a0are\u00a0filled,\u00a0no\u00a0more\u00a0strategy\u00a0orders\u00a0will\u00a0be\u00a0placed\u00a0(except\u00a0for\u00a0a\u00a0market\u00a0order\u00a0to\u00a0exit\u00a0current\u00a0open\u00a0market\u00a0position,\u00a0if\u00a0there\u00a0is\u00a0any).
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.entry(\"sell\",\u00a0false,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0close)
strategy.risk.max_intraday_loss(value, type) \u2192 void
strategy(\"risk.max_intraday_loss\u00a0Demo\u00a01\")
strategy.risk.max_intraday_loss(10,\u00a0strategy.percent_of_equity)\u00a0//\u00a0set\u00a0maximum\u00a0intraday\u00a0loss\u00a0to\u00a010%\u00a0of\u00a0maximum\u00a0intraday\u00a0equity
//\u00a0...\u00a0
strategy(\"risk.max_intraday_loss\u00a0Demo\u00a02\",\u00a0currency\u00a0=\u00a0EUR)
strategy.risk.max_intraday_loss(100,\u00a0strategy.cash)\u00a0//\u00a0set\u00a0maximum\u00a0intraday\u00a0loss\u00a0to\u00a0100\u00a0EUR\u00a0from\u00a0maximum\u00a0intraday\u00a0equity
//\u00a0...\u00a0
strategy.risk.max_position_size(contracts) \u2192 void
strategy(\"risk.max_position_size\u00a0Demo\",\u00a0default_qty_value\u00a0=\u00a0100)
strategy.risk.max_position_size(10)
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
plot(strategy.position_size)\u00a0\u00a0//\u00a0max\u00a0plot\u00a0value\u00a0will\u00a0be\u00a010
study(title, shorttitle, overlay, precision, scale, max_bars_back) \u2192 void
study(title='MyScriptStudy')
study(title=\"MyScriptStudy\",\u00a0shorttitle=\"MSS\",\u00a0precision=6,\u00a0overlay=true)
swma(x) \u2192 series
plot(swma(close))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0less\u00a0efficient
pine_swma(x)\u00a0=>
\u00a0\u00a0\u00a0\u00a0x[3]\u00a0*\u00a01\u00a0/\u00a06\u00a0+\u00a0x[2]\u00a0*\u00a02\u00a0/\u00a06\u00a0+\u00a0x[1]\u00a0*\u00a02\u00a0/\u00a06\u00a0+\u00a0x[0]\u00a0*\u00a01\u00a0/\u00a06
plot(pine_swma(close))
tan(x) \u2192 float
tan(x) \u2192 const float
tan(x) \u2192 series
tickerid(prefix, ticker, session, adjustment) \u2192 string
study(\"tickerid\u00a0fun\",\u00a0overlay=true)\u00a0
t\u00a0=\u00a0tickerid(syminfo.prefix,\u00a0ticker,\u00a0session.regular,\u00a0adjustment.splits)
t2\u00a0=\u00a0heikinashi(t)
c\u00a0=\u00a0security(t2,\u00a0period,\u00a0low,\u00a0true)
plot(c,\u00a0style=linebr)
time(resolution, session) \u2192 series
time(resolution) \u2192 series
//@version=3
study(\"Time\",\u00a0overlay=true)
//\u00a0Try\u00a0this\u00a0on\u00a0chart\u00a0AAPL,1
timeinrange(res,\u00a0sess)\u00a0=>\u00a0not\u00a0na(time(res,\u00a0sess))\u00a0?\u00a01\u00a0:\u00a00
plot(timeinrange(\"1\",\u00a0\"1300-1400\"),\u00a0color=red)
//\u00a0This\u00a0plots\u00a01.0\u00a0at\u00a0every\u00a0start\u00a0of\u00a010\u00a0minute\u00a0bar\u00a0on\u00a0a\u00a01\u00a0minute\u00a0chart:
newbar(res)\u00a0=>\u00a0change(time(res))\u00a0==\u00a00\u00a0?\u00a00\u00a0:\u00a01
plot(newbar(\"10\"))
//@version=3
study(\"Time\",\u00a0overlay=true)
t1\u00a0=\u00a0time(period,\u00a0\"0000-0000\")
bgcolor(t1\u00a0?\u00a0blue\u00a0:\u00a0na)
//@version=3
study(\"Time\u00a0-\u00a0days\",\u00a0overlay=true)
t1\u00a0=\u00a0time(period,\u00a0\"0000-0000:1234567\")
bgcolor(t1\u00a0?\u00a0green\u00a0:\u00a0na)
timestamp(year, month, day, hour, minute, second) \u2192 integer
timestamp(timezone, year, month, day, hour, minute, second) \u2192 integer
//@version=3
study(\"My\u00a0Script\")
plot(timestamp(2016,\u00a001,\u00a019,\u00a009,\u00a030),\u00a0linewidth=3,\u00a0color=green)
plot(timestamp(syminfo.timezone,\u00a02016,\u00a001,\u00a019,\u00a009,\u00a030),\u00a0color=blue)
plot(timestamp(2016,\u00a001,\u00a019,\u00a009,\u00a030,\u00a015),\u00a0color=yellow)
plot(timestamp(\"GMT+6\",\u00a02016,\u00a001,\u00a019,\u00a009,\u00a030,\u00a016))
tostring(x) \u2192 string
tostring(x, y) \u2192 string
tr(handle_na) \u2192 series
tsi(source, short_length, long_length) \u2192 series
valuewhen(condition, source, occurrence) \u2192 series
slow\u00a0=\u00a0sma(close,\u00a07)
fast\u00a0=\u00a0sma(close,\u00a014)
//\u00a0get\u00a0value\u00a0of\u00a0close\u00a0on\u00a0second\u00a0cross\u00a0occurrence
valuewhen(cross(slow,\u00a0fast),\u00a0close,\u00a01)
variance(source, length) \u2192 series
vwap(x) \u2192 series
vwma(source, length) \u2192 series
plot(vwma(close,\u00a015))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0less\u00a0efficient
pine_vwma(x,\u00a0y)\u00a0=>
\u00a0\u00a0\u00a0\u00a0sma(x\u00a0*\u00a0volume,\u00a0y)\u00a0/\u00a0sma(volume,\u00a0y)
plot(pine_vwma(close,\u00a015))
weekofyear(time) \u2192 series
wma(source, length) \u2192 series
plot(wma(close,\u00a015))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0much\u00a0less\u00a0efficient
pine_wma(x,\u00a0y)\u00a0=>
\u00a0\u00a0\u00a0\u00a0norm\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0y\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0weight\u00a0=\u00a0(y\u00a0-\u00a0i)\u00a0*\u00a0y
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0norm\u00a0:=\u00a0norm\u00a0+\u00a0weight
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0x[i]\u00a0*\u00a0weight
\u00a0\u00a0\u00a0\u00a0sum\u00a0/\u00a0norm
plot(pine_wma(close,\u00a015))
plot(n)
plot(n\u00a0>\u00a05000\u00a0?\u00a0close\u00a0:\u00a00)
n\u00a0<\u00a010\u00a0?\u00a0na\u00a0:\u00a0close\u00a0\u00a0\u00a0\u00a0//\u00a0CORRECT
close\u00a0==\u00a0na\u00a0?\u00a0close[1]\u00a0:\u00a0close\u00a0\u00a0\u00a0\u00a0//\u00a0INCORRECT!
na(close)\u00a0?\u00a0close[1]\u00a0:\u00a0close\u00a0\u00a0\u00a0\u00a0//\u00a0CORRECT
freq parameter of the alert() function.freq parameter of the alert() function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "alert.freq_once_per_bar",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_alert.freq_once_per_bar",
+ "fragment": "const_alert.freq_once_per_bar",
+ "info": "freq parameter of the alert() function.freq parameter of the alert() function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "alert.freq_once_per_bar_close",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_alert.freq_once_per_bar_close",
+ "fragment": "const_alert.freq_once_per_bar_close",
+ "info": "freq parameter of the alert() function.freq parameter of the alert() function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "barmerge.gaps_off",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_barmerge.gaps_off",
+ "fragment": "const_barmerge.gaps_off",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_areabr",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_areabr",
+ "fragment": "const_plot.style_areabr",
+ "info": "style parameter in the plot function. Similar to plot.style_area, except the gaps in the data are not filled.style parameter in the plot function. Similar to plot.style_area, except the gaps in the data are not filled.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_circles",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_circles",
+ "fragment": "const_plot.style_circles",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_columns",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_columns",
+ "fragment": "const_plot.style_columns",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_cross",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_cross",
+ "fragment": "const_plot.style_cross",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_histogram",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_histogram",
+ "fragment": "const_plot.style_histogram",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_line",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_line",
+ "fragment": "const_plot.style_line",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_linebr",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_linebr",
+ "fragment": "const_plot.style_linebr",
+ "info": "style parameter in the plot function. Similar to plot.style_line, except the gaps in the data are not filled.style parameter in the plot function. Similar to plot.style_line, except the gaps in the data are not filled.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_stepline",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_plot.style_stepline",
+ "fragment": "const_plot.style_stepline",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const integer",
+ "remarks": ""
+ },
+ {
+ "name": "position.bottom_center",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#const_position.bottom_center",
+ "fragment": "const_position.bottom_center",
+ "info": "abs(x) \u2192 integer
abs(x) \u2192 input integer
abs(x) \u2192 const integer
abs(x) \u2192 series[integer]
abs(x) \u2192 float
abs(x) \u2192 input float
abs(x) \u2192 const float
abs(x) \u2192 series[float]
acos(x) \u2192 float
acos(x) \u2192 input float
acos(x) \u2192 const float
acos(x) \u2192 series[float]
alert(message, freq) \u2192 void
//@version=4
study(\"`alert()`\u00a0example\",\u00a0\"\",\u00a0true)
ma\u00a0=\u00a0sma(close,\u00a014)
xUp\u00a0=\u00a0crossover(close,\u00a0ma)
if\u00a0xUp
\u00a0\u00a0\u00a0\u00a0//\u00a0Trigger\u00a0the\u00a0alert\u00a0the\u00a0first\u00a0time\u00a0a\u00a0cross\u00a0occurs\u00a0during\u00a0the\u00a0real-time\u00a0bar.
\u00a0\u00a0\u00a0\u00a0alert(\"Price\u00a0(\"\u00a0+\u00a0tostring(close)\u00a0+\u00a0\")\u00a0crossed\u00a0over\u00a0MA\u00a0(\"\u00a0+\u00a0tostring(ma)\u00a0+\u00a0\u00a0\").\",\u00a0alert.freq_once_per_bar)
plot(ma)
plotchar(xUp,\u00a0\"xUp\",\u00a0\"\u25b2\",\u00a0location.top,\u00a0size\u00a0=\u00a0size.tiny)
alertcondition(condition, title, message) \u2192 void
alertcondition(close\u00a0>=\u00a0open,\u00a0title='Alert\u00a0on\u00a0Green\u00a0Bar',\u00a0message='Green\u00a0Bar!')
alma(series, length, offset, sigma) \u2192 series[float]
alma(series, length, offset, sigma, floor) \u2192 series[float]
plot(alma(close,\u00a09,\u00a00.85,\u00a06))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0much\u00a0less\u00a0efficient
pine_alma(series,\u00a0windowsize,\u00a0offset,\u00a0sigma)\u00a0=>
\u00a0\u00a0\u00a0\u00a0m\u00a0=\u00a0offset\u00a0*\u00a0(windowsize\u00a0-\u00a01)
\u00a0\u00a0\u00a0\u00a0//m\u00a0=\u00a0floor(offset\u00a0*\u00a0(windowsize\u00a0-\u00a01))\u00a0//\u00a0Used\u00a0as\u00a0m\u00a0when\u00a0floor=true
\u00a0\u00a0\u00a0\u00a0s\u00a0=\u00a0windowsize\u00a0/\u00a0sigma
\u00a0\u00a0\u00a0\u00a0norm\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0windowsize\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0weight\u00a0=\u00a0exp(-1\u00a0*\u00a0pow(i\u00a0-\u00a0m,\u00a02)\u00a0/\u00a0(2\u00a0*\u00a0pow(s,\u00a02)))
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0norm\u00a0:=\u00a0norm\u00a0+\u00a0weight
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0series[windowsize\u00a0-\u00a0i\u00a0-\u00a01]\u00a0*\u00a0weight
\u00a0\u00a0\u00a0\u00a0sum\u00a0/\u00a0norm
plot(pine_alma(close,\u00a09,\u00a00.85,\u00a06))
array.avg(id) \u2192 series[float]
array.avg(id) \u2192 series[integer]
//@version=4
study(\"array.avg\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.avg(a))
array.clear(id) \u2192 void
//@version=4
study(\"array.clear\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
array.clear(a)
array.push(a,\u00a0close)
plot(array.get(a,0))
plot(array.size(a))
array.concat(id1, id2) \u2192 id1
//@version=4
study(\"array.concat\u00a0example\")
a\u00a0=\u00a0array.new_float(0,0)
b\u00a0=\u00a0array.new_float(0,0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a04
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0high[i])
\u00a0\u00a0\u00a0\u00a0array.push(b,\u00a0low[i])
c\u00a0=\u00a0array.concat(a,b)
plot(array.size(a))
plot(array.size(b))
plot(array.size(c))
array.copy(id) \u2192 float[]
array.copy(id) \u2192 int[]
array.copy(id) \u2192 color[]
array.copy(id) \u2192 bool[]
array.copy(id) \u2192 string[]
array.copy(id) \u2192 line[]
array.copy(id) \u2192 label[]
//@version=4
study(\"array.copy\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_float(length,\u00a0close)
b\u00a0=\u00a0array.copy(a)
a\u00a0:=\u00a0array.new_float(length,\u00a0open)
plot(array.sum(a)\u00a0/\u00a0length)
plot(array.sum(b)\u00a0/\u00a0length)
array.covariance(id1, id2) \u2192 series[float]
//@version=4
study(\"array.covariance\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
b\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0open[i])
plot(array.covariance(a,\u00a0b))
array.fill(id, value, index_from, index_to) \u2192 void
//@version=4
study(\"array.fill\u00a0example\")
a\u00a0=\u00a0array.new_float(10)
array.fill(a,\u00a0close)
plot(array.sum(a))
array.from(..args) \u2192 int[]
array.from(..args) \u2192 bool[]
array.from(..args) \u2192 color[]
array.from(..args) \u2192 float[]
array.from(..args) \u2192 line[]
array.from(..args) \u2192 label[]
array.from(..args) \u2192 box[]
array.from(..args) \u2192 table[]
array.from(..args) \u2192 string[]
//@version=4
study(\"array.from_example\",\u00a0overlay\u00a0=\u00a0false)
arr\u00a0=\u00a0array.from(\"Hello\",\u00a0\"World!\")\u00a0//\u00a0arr\u00a0(string[])\u00a0will\u00a0contain\u00a02\u00a0elements:\u00a0{Hello},\u00a0{World!}.
plot(close)
array.get(id, index) \u2192 series[float]
array.get(id, index) \u2192 series[int]
array.get(id, index) \u2192 series[color]
array.get(id, index) \u2192 series[bool]
array.get(id, index) \u2192 series[string]
array.get(id, index) \u2192 series[line]
array.get(id, index) \u2192 series[label]
//@version=4
study(\"array.get\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i]\u00a0-\u00a0open[i])
plot(array.get(a,\u00a09))
array.includes(id, value) \u2192 series[bool]
//@version=4
study(\"array.includes\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
p\u00a0=\u00a0close
if\u00a0array.includes(a,\u00a0high)
\u00a0\u00a0\u00a0\u00a0p\u00a0:=\u00a0open
plot(p)
array.indexof(id, value) \u2192 series[integer]
//@version=4
study(\"array.indexof\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
index\u00a0=\u00a0array.indexof(a,\u00a0high)
plot(index)
array.insert(id, index, value) \u2192 void
//@version=4
study(\"array.insert\u00a0example\")
a\u00a0=\u00a0array.new_float(5,\u00a0close)
array.insert(a,\u00a00,\u00a0open)
plot(array.get(a,\u00a05))
array.join(id, separator) \u2192 series[string]
//@version=4
study(\"array.join\u00a0example\")
a\u00a0=\u00a0array.new_float(5,\u00a05)
label.new(bar_index,\u00a0close,\u00a0array.join(a,\u00a0\",\"))
array.lastindexof(id, value) \u2192 series[integer]
//@version=4
study(\"array.lastindexof\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
index\u00a0=\u00a0array.lastindexof(a,\u00a0high)
plot(index)
array.max(id) \u2192 series[float]
array.max(id) \u2192 series[integer]
//@version=4
study(\"array.max\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.max(a))
array.median(id) \u2192 series[float]
array.median(id) \u2192 series[integer]
//@version=4
study(\"array.median\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.median(a))
array.min(id) \u2192 series[float]
array.min(id) \u2192 series[integer]
//@version=4
study(\"array.min\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.min(a))
array.mode(id) \u2192 series[float]
array.mode(id) \u2192 series[integer]
//@version=4
study(\"array.mode\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.mode(a))
array.new_bool(size, initial_value) \u2192 bool[]
//@version=4
study(\"array.new_bool\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_bool(length,\u00a0close\u00a0>\u00a0open)
plot(array.get(a,\u00a00)\u00a0?\u00a0close\u00a0:\u00a0open)
array.new_box(size, initial_value) \u2192 box[]
//@version=4
study(\"array.new_box\u00a0example\")
box[]\u00a0boxes\u00a0=\u00a0array.new_box()
array.push(boxes,\u00a0box.new(time,\u00a0close,\u00a0time+2,\u00a0low))
plot(1)
array.new_color(size, initial_value) \u2192 color[]
//@version=4
study(\"array.new_color\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_color(length,\u00a0color.red)
plot(close,\u00a0color\u00a0=\u00a0array.get(a,\u00a00))
array.new_float(size, initial_value) \u2192 float[]
//@version=4
study(\"array.new_float\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_float(length,\u00a0close)
plot(array.sum(a)\u00a0/\u00a0length)
array.new_int(size, initial_value) \u2192 int[]
//@version=4
study(\"array.new_int\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_int(length,\u00a0int(close))
plot(array.sum(a)\u00a0/\u00a0length)
array.new_label(size, initial_value) \u2192 label[]
//@version=4
study(\"array.new_label\u00a0example\")
var\u00a0a\u00a0=\u00a0array.new_label()
l\u00a0=\u00a0label.new(bar_index,\u00a0close,\u00a0\"some\u00a0text\")
array.push(a,\u00a0l)
if\u00a0close\u00a0>\u00a0close[1]\u00a0and\u00a0close[1]\u00a0>\u00a0close[2]
\u00a0\u00a0\u00a0\u00a0//\u00a0remove\u00a0all\u00a0labels
\u00a0\u00a0\u00a0\u00a0size\u00a0=\u00a0array.size(a)\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0size
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0lb\u00a0=\u00a0array.get(a,\u00a0i)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0label.delete(lb)
array.new_line(size, initial_value) \u2192 line[]
//@version=4
study(\"array.new_line\u00a0example\")
//\u00a0draw\u00a0last\u00a015\u00a0lines
var\u00a0a\u00a0=\u00a0array.new_line()
array.push(a,\u00a0line.new(bar_index\u00a0-\u00a01,\u00a0close[1],\u00a0bar_index,\u00a0close))
if\u00a0array.size(a)\u00a0>\u00a015
\u00a0\u00a0\u00a0\u00a0ln\u00a0=\u00a0array.shift(a)
\u00a0\u00a0\u00a0\u00a0line.delete(ln)
array.new_string(size, initial_value) \u2192 string[]
//@version=4
study(\"array.new_string\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_string(length,\u00a0\"text\")
label.new(bar_index,\u00a0close,\u00a0array.get(a,\u00a00))
array.new_table(size, initial_value) \u2192 table[]
study('table\u00a0array')
table[]\u00a0tables\u00a0=\u00a0array.new_table()
array.push(tables,\u00a0table.new(position\u00a0=\u00a0position.top_left,\u00a0rows\u00a0=\u00a01,\u00a0columns\u00a0=\u00a02,\u00a0bgcolor\u00a0=\u00a0color.yellow,\u00a0border_width=1))
plot(1)
array.pop(id) \u2192 series[float]
array.pop(id) \u2192 series[int]
array.pop(id) \u2192 series[color]
array.pop(id) \u2192 series[bool]
array.pop(id) \u2192 series[string]
array.pop(id) \u2192 series[line]
array.pop(id) \u2192 series[label]
//@version=4
study(\"array.pop\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
removedEl\u00a0=\u00a0array.pop(a)
plot(array.size(a))
plot(removedEl)
array.push(id, value) \u2192 void
//@version=4
study(\"array.push\u00a0example\")
a\u00a0=\u00a0array.new_float(5,\u00a00)
array.push(a,\u00a0open)
plot(array.get(a,\u00a05))
array.range(id) \u2192 series[float]
array.range(id) \u2192 series[integer]
//@version=4
study(\"array.range\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.range(a))
array.remove(id, index) \u2192 series[float]
array.remove(id, index) \u2192 series[int]
array.remove(id, index) \u2192 series[color]
array.remove(id, index) \u2192 series[bool]
array.remove(id, index) \u2192 series[string]
array.remove(id, index) \u2192 series[line]
array.remove(id, index) \u2192 series[label]
//@version=4
study(\"array.remove\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
removedEl\u00a0=\u00a0array.remove(a,\u00a00)
plot(array.size(a))
plot(removedEl)
array.reverse(id) \u2192 void
//@version=4
study(\"array.reverse\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.get(a,\u00a00))
array.reverse(a)
plot(array.get(a,\u00a00))
array.set(id, index, value) \u2192 void
//@version=4
study(\"array.set\u00a0example\")
a\u00a0=\u00a0array.new_float(10)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.set(a,\u00a0i,\u00a0close[i])
plot(array.sum(a)\u00a0/\u00a010)
array.shift(id) \u2192 series[float]
array.shift(id) \u2192 series[int]
array.shift(id) \u2192 series[color]
array.shift(id) \u2192 series[bool]
array.shift(id) \u2192 series[string]
array.shift(id) \u2192 series[line]
array.shift(id) \u2192 series[label]
//@version=4
study(\"array.shift\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
removedEl\u00a0=\u00a0array.shift(a)
plot(array.size(a))
plot(removedEl)
array.size(id) \u2192 series[integer]
//@version=4
study(\"array.size\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
//\u00a0note\u00a0that\u00a0changes\u00a0in\u00a0slice\u00a0also\u00a0modify\u00a0original\u00a0array
slice\u00a0=\u00a0array.slice(a,\u00a00,\u00a05)
array.push(slice,\u00a0open)
//\u00a0size\u00a0was\u00a0changed\u00a0in\u00a0slice\u00a0and\u00a0in\u00a0original\u00a0array
plot(array.size(a))
plot(array.size(slice))
array.slice(id, index_from, index_to) \u2192 array
//@version=4
study(\"array.slice\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
//\u00a0take\u00a0elements\u00a0from\u00a00\u00a0to\u00a04
//\u00a0*note\u00a0that\u00a0changes\u00a0in\u00a0slice\u00a0also\u00a0modify\u00a0original\u00a0array\u00a0
slice\u00a0=\u00a0array.slice(a,\u00a00,\u00a05)
plot(array.sum(a)\u00a0/\u00a010)
plot(array.sum(slice)\u00a0/\u00a05)
array.sort(id, order) \u2192 void
//@version=4
study(\"array.sort\u00a0example\")
a\u00a0=\u00a0array.new_float(0,0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a05
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0high[i])
array.sort(a,\u00a0order.descending)
if\u00a0barstate.islast
\u00a0\u00a0\u00a0\u00a0label.new(bar_index,\u00a0close,\u00a0tostring(a))
array.standardize(id) \u2192 float[]
array.standardize(id) \u2192 int[]
//@version=4
study(\"array.standardize\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
b\u00a0=\u00a0array.standardize(a)
plot(array.min(b))
plot(array.max(b))
array.stdev(id) \u2192 series[float]
array.stdev(id) \u2192 series[integer]
//@version=4
study(\"array.stdev\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.stdev(a))
array.sum(id) \u2192 series[float]
array.sum(id) \u2192 series[integer]
//@version=4
study(\"array.sum\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.sum(a))
array.unshift(id, value) \u2192 void
//@version=4
study(\"array.unshift\u00a0example\")
a\u00a0=\u00a0array.new_float(5,\u00a00)
array.unshift(a,\u00a0open)
plot(array.get(a,\u00a00))
array.variance(id) \u2192 series[float]
array.variance(id) \u2192 series[integer]
//@version=4
study(\"array.variance\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.variance(a))
asin(x) \u2192 float
asin(x) \u2192 input float
asin(x) \u2192 const float
asin(x) \u2192 series[float]
atan(x) \u2192 float
atan(x) \u2192 input float
atan(x) \u2192 const float
atan(x) \u2192 series[float]
atr(length) \u2192 series[float]
plot(atr(14))
//the\u00a0same\u00a0on\u00a0pine
pine_atr(length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0trueRange\u00a0=\u00a0na(high[1])?\u00a0high-low\u00a0:\u00a0max(max(high\u00a0-\u00a0low,\u00a0abs(high\u00a0-\u00a0close[1])),\u00a0abs(low\u00a0-\u00a0close[1]))
\u00a0\u00a0\u00a0\u00a0//true\u00a0range\u00a0can\u00a0be\u00a0also\u00a0calculated\u00a0with\u00a0tr(true)
\u00a0\u00a0\u00a0\u00a0rma(trueRange,\u00a0length)
plot(pine_atr(14))
barcolor(color, offset, editable, show_last, title) \u2192 void
barcolor(close\u00a0<\u00a0open\u00a0?\u00a0color.black\u00a0:\u00a0color.white)
barssince(condition) \u2192 series[integer]
//\u00a0get\u00a0number\u00a0of\u00a0bars\u00a0since\u00a0last\u00a0color.green\u00a0bar
barssince(close\u00a0>=\u00a0open)
bb(series, length, mult) \u2192 [series[float], series[float], series[float]]
//@version=4
study('My\u00a0Script')
[middle,\u00a0upper,\u00a0lower]\u00a0=\u00a0bb(close,\u00a05,\u00a04)
plot(middle,\u00a0color=color.yellow)
plot(upper,\u00a0color=color.yellow)
plot(lower,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_bb(src,\u00a0length,\u00a0mult)\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0basis\u00a0=\u00a0sma(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0float\u00a0dev\u00a0=\u00a0mult\u00a0*\u00a0stdev(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0[basis,\u00a0basis\u00a0+\u00a0dev,\u00a0basis\u00a0-\u00a0dev]
[pineMiddle,\u00a0pineUpper,\u00a0pineLower]\u00a0=\u00a0f_bb(close,\u00a05,\u00a04)
plot(pineMiddle)
plot(pineUpper)
plot(pineLower)
bbw(series, length, mult) \u2192 series[float]
//@version=4
study('My\u00a0Script')
plot(bbw(close,\u00a05,\u00a04),\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_bbw(src,\u00a0length,\u00a0mult)\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0basis\u00a0=\u00a0sma(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0float\u00a0dev\u00a0=\u00a0mult\u00a0*\u00a0stdev(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0((basis\u00a0+\u00a0dev)\u00a0-\u00a0(basis\u00a0-\u00a0dev))\u00a0/\u00a0basis
plot(f_bbw(close,\u00a05,\u00a04))
bgcolor(color, transp, offset, editable, show_last, title) \u2192 void
bgcolor(close\u00a0<\u00a0open\u00a0?\u00a0color.red\u00a0:\u00a0color.green,\u00a0transp=70)
box.delete(id) \u2192 void
box.get_bottom(id) \u2192 series[float]
box.get_left(id) \u2192 series[integer]
box.get_right(id) \u2192 series[integer]
box.get_top(id) \u2192 series[float]
box.new(left, top, right, bottom, border_color, border_width, border_style, extend, xloc, bgcolor) \u2192 series[box]
var\u00a0b\u00a0=\u00a0box.new(time,\u00a0open,\u00a0time\u00a0+\u00a060\u00a0*\u00a060\u00a0*\u00a024,\u00a0close,\u00a0xloc=xloc.bar_time,\u00a0border_style=line.style_dashed)
box.set_lefttop(b,\u00a0time,\u00a0100)
box.set_rightbottom(b,\u00a0time\u00a0+\u00a060\u00a0*\u00a060\u00a0*\u00a024,\u00a0500)
box.set_bgcolor(b,\u00a0color.green)
box.set_bgcolor(id, color) \u2192 void
box.set_border_color(id, color) \u2192 void
box.set_border_style(id, style) \u2192 void
box.set_border_width(id, width) \u2192 void
box.set_bottom(id, bottom) \u2192 void
box.set_extend(id, extend) \u2192 void
box.set_left(id, left) \u2192 void
box.set_lefttop(id, left, top) \u2192 void
box.set_right(id, right) \u2192 void
box.set_rightbottom(id, right, bottom) \u2192 void
box.set_top(id, top) \u2192 void
cci(source, length) \u2192 series[float]
change(source, length) \u2192 series[float]
change(source) \u2192 series[float]
cmo(series, length) \u2192 series[float]
study('My\u00a0Script')
plot(cmo(close,\u00a05),\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_cmo(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0mom\u00a0=\u00a0change(src)
\u00a0\u00a0\u00a0\u00a0float\u00a0sm1\u00a0=\u00a0sum((mom\u00a0>=\u00a00)\u00a0?\u00a0mom\u00a0:\u00a00.0,\u00a0length)
\u00a0\u00a0\u00a0\u00a0float\u00a0sm2\u00a0=\u00a0sum((mom\u00a0>=\u00a00)\u00a0?\u00a00.0\u00a0:\u00a0-mom,\u00a0length)
\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0100\u00a0*\u00a0(sm1\u00a0-\u00a0sm2)\u00a0/\u00a0(sm1\u00a0+\u00a0sm2)
plot(f_cmo(close,\u00a05))
cog(source, length) \u2192 series[float]
plot(cog(close,\u00a010))
//\u00a0the\u00a0same\u00a0on\u00a0pine
pine_cog(source,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a0sum(source,\u00a0length)
\u00a0\u00a0\u00a0\u00a0num\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0length\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0price\u00a0=\u00a0source[i]
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0num\u00a0:=\u00a0num\u00a0+\u00a0price\u00a0*\u00a0(i\u00a0+\u00a01)
\u00a0\u00a0\u00a0\u00a0-num\u00a0/\u00a0sum
plot(pine_cog(close,\u00a010))
color.b(color) \u2192 series[float]
color.b(color) \u2192 const float
color.b(color) \u2192 input float
color.b(color.blue)
color.from_gradient(value, bottom_value, top_value, bottom_color, top_color) \u2192 series[color]
color1\u00a0=\u00a0color.from_gradient(close,\u00a0high,\u00a0low,\u00a0color.yellow,\u00a0color.lime)
color2\u00a0=\u00a0color.from_gradient(rsi(close,\u00a07),\u00a00,\u00a0100,\u00a0color.rgb(255,\u00a00,\u00a00),\u00a0color.rgb(0,\u00a0255,\u00a00,\u00a050))
plot(close,\u00a0color=color1)
plot(rsi(close,7),\u00a0color=color2)
color.g(color) \u2192 series[float]
color.g(color) \u2192 const float
color.g(color) \u2192 input float
color.g(color.green)
color.new(color, transp) \u2192 const color
color.new(color, transp) \u2192 series[color]
color.new(color, transp) \u2192 input color
color.new(color.red,\u00a050)
color.r(color) \u2192 series[float]
color.r(color) \u2192 const float
color.r(color) \u2192 input float
color.r(color.red)
color.rgb(red, green, blue, transp) \u2192 series[color]
color.rgb(red, green, blue, transp) \u2192 const color
color.rgb(red, green, blue, transp) \u2192 input color
color.rgb(255,\u00a00,\u00a00,\u00a050)
color.t(color) \u2192 series[float]
color.t(color) \u2192 const float
color.t(color) \u2192 input float
color.t(color.new(color.red,\u00a050))
correlation(source_a, source_b, length) \u2192 series[float]
cos(x) \u2192 float
cos(x) \u2192 input float
cos(x) \u2192 const float
cos(x) \u2192 series[float]
x-series is defined as having crossed over y-series if the value of x is greater than the value of y and the value of x was less than the value of y on the bar immediately preceding the current bar.crossover(x, y) \u2192 series[bool]
x.y.x-series is defined as having crossed over y-series if the value of x is greater than the value of y and the value of x was less than the value of y on the bar immediately preceding the current bar.",
+ "arguments": [
+ {
+ "argument": "x",
+ "type": "float"
+ },
+ {
+ "argument": "y",
+ "type": "float"
+ }
+ ],
+ "syntax": "crossover(x, y) \u2192 series[bool]",
+ "returnType": "series[bool]",
+ "returns": ""
+ },
+ {
+ "name": "crossunder()",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#fun_crossunder",
+ "fragment": "fun_crossunder",
+ "info": "x-series is defined as having crossed under y-series if the value of x is less than the value of y and the value of x was greater than the value of y on the bar immediately preceding the current bar.crossunder(x, y) \u2192 series[bool]
x.y.x-series is defined as having crossed under y-series if the value of x is less than the value of y and the value of x was greater than the value of y on the bar immediately preceding the current bar.",
+ "arguments": [
+ {
+ "argument": "x",
+ "type": "float"
+ },
+ {
+ "argument": "y",
+ "type": "float"
+ }
+ ],
+ "syntax": "crossunder(x, y) \u2192 series[bool]",
+ "returnType": "series[bool]",
+ "returns": ""
+ },
+ {
+ "name": "cum()",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#fun_cum",
+ "fragment": "fun_cum",
+ "info": "cum(x) \u2192 series[float]
dayofmonth(time) \u2192 series[integer]
dayofmonth(time, timezone) \u2192 series[integer]
dayofweek(time) \u2192 series[integer]
dayofweek(time, timezone) \u2192 series[integer]
dev(source, length) \u2192 series[float]
plot(dev(close,\u00a010))
//\u00a0the\u00a0same\u00a0on\u00a0pine
pine_dev(source,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0mean\u00a0=\u00a0sma(source,\u00a0length)
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0length\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0val\u00a0=\u00a0source[i]
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0abs(val\u00a0-\u00a0mean)
\u00a0\u00a0\u00a0\u00a0dev\u00a0=\u00a0sum/length
plot(pine_dev(close,\u00a010))
dividends(ticker, field, gaps, lookahead, ignore_invalid_symbol) \u2192 series[float]
s1\u00a0=\u00a0dividends(\"NASDAQ:BELFA\")
plot(s1)
s2\u00a0=\u00a0dividends(\"NASDAQ:BELFA\",\u00a0dividends.net,\u00a0gaps=barmerge.gaps_on,\u00a0lookahead=barmerge.lookahead_on)
plot(s2)
dmi(diLength, adxSmoothing) \u2192 [series[float], series[float], series[float]]
study(title=\"Directional\u00a0Movement\u00a0Index\",\u00a0shorttitle=\"DMI\",\u00a0format=format.price,\u00a0precision=4)
len\u00a0=\u00a0input(17,\u00a0minval=1,\u00a0title=\"DI\u00a0Length\")
lensig\u00a0=\u00a0input(14,\u00a0title=\"ADX\u00a0Smoothing\",\u00a0minval=1,\u00a0maxval=50)
[diplus,\u00a0diminus,\u00a0adx]\u00a0=\u00a0dmi(len,\u00a0lensig)
plot(adx,\u00a0color=color.red,\u00a0title=\"ADX\")
plot(diplus,\u00a0color=color.blue,\u00a0title=\"+DI\")
plot(diminus,\u00a0color=color.orange,\u00a0title=\"-DI\")
earnings(ticker, field, gaps, lookahead, ignore_invalid_symbol) \u2192 series[float]
s1\u00a0=\u00a0earnings(\"NASDAQ:BELFA\")
plot(s1)
s2\u00a0=\u00a0earnings(\"NASDAQ:BELFA\",\u00a0earnings.actual,\u00a0gaps=barmerge.gaps_on,\u00a0lookahead=barmerge.lookahead_on)
plot(s2)
ema(source, length) \u2192 series[float]
plot(ema(close,\u00a015))
//the\u00a0same\u00a0on\u00a0pine
pine_ema(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0alpha\u00a0=\u00a02\u00a0/\u00a0(length\u00a0+\u00a01)
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0na(sum[1])\u00a0?\u00a0sma(src,\u00a0length)\u00a0:\u00a0alpha\u00a0*\u00a0src\u00a0+\u00a0(1\u00a0-\u00a0alpha)\u00a0*\u00a0nz(sum[1])
plot(pine_ema(close,15))
exp(x) \u2192 float
exp(x) \u2192 input float
exp(x) \u2192 const float
exp(x) \u2192 series[float]
falling(source, length) \u2192 series[bool]
fill(hline1, hline2, color, transp, title, editable, fillgaps) \u2192 void
fill(plot1, plot2, color, transp, title, editable, show_last, fillgaps) \u2192 void
h1\u00a0=\u00a0hline(20)
h2\u00a0=\u00a0hline(10)
fill(h1,\u00a0h2)
p1\u00a0=\u00a0plot(open)
p2\u00a0=\u00a0plot(close)
fill(p1,\u00a0p2,\u00a0color=color.green)
financial(symbol, financial_id, period, gaps, ignore_invalid_symbol) \u2192 series[float]
f\u00a0=\u00a0financial(\"NASDAQ:MSFT\",\u00a0\"ACCOUNTS_PAYABLE\",\u00a0\"FY\")
plot(f)
heikinashi(symbol) \u2192 string
heikinashi_close\u00a0=\u00a0security(heikinashi(syminfo.tickerid),\u00a0timeframe.period,\u00a0close)
heikinashi_aapl_60_close\u00a0=\u00a0security(heikinashi(\"AAPL\"),\u00a0\"60\",\u00a0close)
highest(source, length) \u2192 series[float]
highest(length) \u2192 series[float]
highestbars(source, length) \u2192 series[integer]
highestbars(length) \u2192 series[integer]
hline(price, title, color, linestyle, linewidth, editable) \u2192 hline
hline(3.14,\u00a0title='Pi',\u00a0color=color.blue,\u00a0linestyle=hline.style_dotted,\u00a0linewidth=2)
//\u00a0You\u00a0may\u00a0fill\u00a0the\u00a0background\u00a0between\u00a0any\u00a0two\u00a0hlines\u00a0with\u00a0a\u00a0fill()\u00a0function:
h1\u00a0=\u00a0hline(20)
h2\u00a0=\u00a0hline(10)
fill(h1,\u00a0h2)
hma(source, length) \u2192 series[float]
study(\"Hull\u00a0Moving\u00a0Average\")
src\u00a0=\u00a0input(defval=close,\u00a0type=input.source,\u00a0title=\"Source\")
length\u00a0=\u00a0input(defval=9,\u00a0type=input.integer,\u00a0title=\"Length\")
hmaBuildIn\u00a0=\u00a0hma(src,\u00a0length)
plot(hmaBuildIn,\u00a0title=\"Hull\u00a0MA\",\u00a0color=#674EA7)
hour(time) \u2192 series[integer]
hour(time, timezone) \u2192 series[integer]
iff(condition, then, _else) \u2192 bool
iff(condition, then, _else) \u2192 integer
iff(condition, then, _else) \u2192 float
iff(condition, then, _else) \u2192 color
iff(condition, then, _else) \u2192 series[float]
iff(condition, then, _else) \u2192 series[integer]
iff(condition, then, _else) \u2192 series[color]
iff(condition, then, _else) \u2192 string
iff(condition, then, _else) \u2192 input bool
iff(condition, then, _else) \u2192 input integer
iff(condition, then, _else) \u2192 input float
iff(condition, then, _else) \u2192 input string
iff(condition, then, _else) \u2192 input color
iff(condition, then, _else) \u2192 const bool
iff(condition, then, _else) \u2192 const integer
iff(condition, then, _else) \u2192 const float
iff(condition, then, _else) \u2192 const string
iff(condition, then, _else) \u2192 const color
iff(condition, then, _else) \u2192 series[bool]
iff(condition, then, _else) \u2192 series[string]
iff(condition, then, _else) \u2192 series[line]
iff(condition, then, _else) \u2192 series[label]
iff(condition, then, _else) \u2192 series[table]
iff(condition, then, _else) \u2192 series[box]
iff(condition, then, _else) \u2192 array[<array_type>]
_else argument if you do not need 'else' branch.//\u00a0Draw\u00a0circles\u00a0at\u00a0the\u00a0bars\u00a0where\u00a0open\u00a0crosses\u00a0close
s1\u00a0=\u00a0iff(cross(open,\u00a0close),\u00a0avg(open,close),\u00a0na)
plot(s1,\u00a0style=plot.style_circles,\u00a0linewidth=4,\u00a0color=color.green)
input(defval, title, type, confirm, tooltip, inline, group) \u2192 input bool
input(defval, title, type, confirm, tooltip, inline, group) \u2192 input color
input(defval, title, type, minval, maxval, confirm, step, options, tooltip, inline, group) \u2192 input integer
input(defval, title, type, minval, maxval, confirm, step, options, tooltip, inline, group) \u2192 input float
input(defval, title, type, confirm, options, tooltip, inline, group) \u2192 input string
input(defval, title, type, inline, group, tooltip) \u2192 series[float]
b\u00a0=\u00a0input(title=\"On/Off\",\u00a0type=input.bool,\u00a0defval=true)
plot(b\u00a0?\u00a0open\u00a0:\u00a0na)
i\u00a0=\u00a0input(title=\"Offset\",\u00a0type=input.integer,\u00a0defval=7,\u00a0minval=-10,\u00a0maxval=10)
plot(offset(close,\u00a0i))
f\u00a0=\u00a0input(title=\"Angle\",\u00a0type=input.float,\u00a0defval=-0.5,\u00a0minval=-3.14,\u00a0maxval=3.14,\u00a0step=0.02)
plot(sin(f)\u00a0>\u00a00\u00a0?\u00a0close\u00a0:\u00a0open)
sym\u00a0=\u00a0input(title=\"Symbol\",\u00a0type=input.symbol,\u00a0defval=\"DELL\")
res\u00a0=\u00a0input(title=\"Resolution\",\u00a0type=input.resolution,\u00a0defval=\"60\")
c\u00a0=\u00a0input(title=\"Plot\u00a0Color\",\u00a0type=input.color,\u00a0defval=color.red)
plot(close,\u00a0color=c)
plot(security(sym,\u00a0res,\u00a0close),\u00a0color=color.green)
s\u00a0=\u00a0input(title=\"Session\",\u00a0defval=\"24x7\",\u00a0options=[\"24x7\",\u00a0\"0900-1300\",\u00a0\"1300-1700\",\u00a0\"1700-2100\"])
plot(time(timeframe.period,\u00a0s))
src\u00a0=\u00a0input(title=\"Source\",\u00a0type=input.source,\u00a0defval=close)
plot(src)
date1\u00a0=\u00a0input(title=\"Date\",\u00a0type=input.time,\u00a0defval=timestamp(\"20\u00a0Feb\u00a02020\u00a000:00\u00a0+0300\"))
plot(date1)
date2\u00a0=\u00a0input(title=\"Date\",\u00a0type=input.time,\u00a0defval=timestamp(\"2020-02-20T00:00+03:00\"))
plot(date2)
kagi(symbol, reversal) \u2192 string
kagi_tickerid\u00a0=\u00a0kagi(syminfo.tickerid,\u00a03)
kagi_close\u00a0=\u00a0security(kagi_tickerid,\u00a0timeframe.period,\u00a0close)
plot(kagi_close)
kc(series, length, mult) \u2192 [series[float], series[float], series[float]]
kc(series, length, mult, useTrueRange) \u2192 [series[float], series[float], series[float]]
//@version=4
study('My\u00a0Script')
[middle,\u00a0upper,\u00a0lower]\u00a0=\u00a0kc(close,\u00a05,\u00a04)
plot(middle,\u00a0color=color.yellow)
plot(upper,\u00a0color=color.yellow)
plot(lower,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_kc(src,\u00a0length,\u00a0mult,\u00a0useTrueRange)\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0basis\u00a0=\u00a0ema(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0float\u00a0range\u00a0=\u00a0(useTrueRange)\u00a0?\u00a0tr\u00a0:\u00a0(high\u00a0-\u00a0low)
\u00a0\u00a0\u00a0\u00a0float\u00a0rangeEma\u00a0=\u00a0ema(range,\u00a0length)
\u00a0\u00a0\u00a0\u00a0[basis,\u00a0basis\u00a0+\u00a0rangeEma\u00a0*\u00a0mult,\u00a0basis\u00a0-\u00a0rangeEma\u00a0*\u00a0mult]
\u00a0\u00a0\u00a0\u00a0
[pineMiddle,\u00a0pineUpper,\u00a0pineLower]\u00a0=\u00a0f_kc(close,\u00a05,\u00a04,\u00a0true)
plot(pineMiddle)
plot(pineUpper)
plot(pineLower)
kcw(series, length, mult) \u2192 series[float]
kcw(series, length, mult, useTrueRange) \u2192 series[float]
//@version=4
study('My\u00a0Script')
plot(kcw(close,\u00a05,\u00a04),\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_kcw(src,\u00a0length,\u00a0mult,\u00a0useTrueRange)\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0basis\u00a0=\u00a0ema(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0float\u00a0range\u00a0=\u00a0(useTrueRange)\u00a0?\u00a0tr\u00a0:\u00a0(high\u00a0-\u00a0low)
\u00a0\u00a0\u00a0\u00a0float\u00a0rangeEma\u00a0=\u00a0ema(range,\u00a0length)
\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0((basis\u00a0+\u00a0rangeEma\u00a0*\u00a0mult)\u00a0-\u00a0(basis\u00a0-\u00a0rangeEma\u00a0*\u00a0mult))\u00a0/\u00a0basis
plot(f_kcw(close,\u00a05,\u00a04,\u00a0true))
label.delete(id) \u2192 void
label.get_text(id) \u2192 series[string]
my_label\u00a0=\u00a0label.new(time,\u00a0open,\u00a0text=\"Open\u00a0bar\u00a0text\",\u00a0xloc=xloc.bar_time)
a\u00a0=\u00a0label.get_text(my_label)
label.new(time,\u00a0close,\u00a0text\u00a0=\u00a0a\u00a0+\u00a0\"\u00a0new\",\u00a0xloc=xloc.bar_time)
label.get_x(id) \u2192 series[integer]
my_label\u00a0=\u00a0label.new(time,\u00a0open,\u00a0text=\"Open\u00a0bar\u00a0text\",\u00a0xloc=xloc.bar_time)
a\u00a0=\u00a0label.get_x(my_label)
plot(time\u00a0-\u00a0label.get_x(my_label))\u00a0//draws\u00a0zero\u00a0plot
label.get_y(id) \u2192 series[float]
label.new(x, y, text, xloc, yloc, color, style, textcolor, size, textalign, tooltip) \u2192 series[label]
var\u00a0label1\u00a0=\u00a0label.new(bar_index,\u00a0low,\u00a0text=\"Hello,\u00a0world!\",\u00a0style=label.style_circle)
label.set_x(label1,\u00a00)
label.set_xloc(label1,\u00a0time,\u00a0xloc.bar_time)
label.set_color(label1,\u00a0color.red)
label.set_size(label1,\u00a0size.large)
label.set_color(id, color) \u2192 void
label.set_size(id, size) \u2192 void
label.set_style(id, style) \u2192 void
label.set_text(id, text) \u2192 void
label.set_textalign(id, textalign) \u2192 void
label.set_textcolor(id, textcolor) \u2192 void
label.set_tooltip(id, tooltip) \u2192 void
label.set_x(id, x) \u2192 void
label.set_xloc(id, x, xloc) \u2192 void
label.set_xy(id, x, y) \u2192 void
label.set_y(id, y) \u2192 void
label.set_yloc(id, yloc) \u2192 void
line.delete(id) \u2192 void
line.get_price(id, x) \u2192 series[float]
//@version=4
study(\"GetPrice\",\u00a0overlay=true)
var\u00a0line\u00a0l\u00a0=\u00a0na
if\u00a0bar_index\u00a0==\u00a010
\u00a0\u00a0\u00a0\u00a0l\u00a0:=\u00a0line.new(0,\u00a0high[5],\u00a0bar_index,\u00a0high)
plot(line.get_price(l,\u00a0bar_index),\u00a0color=color.green)
line.get_x1(id) \u2192 series[integer]
my_line\u00a0=\u00a0line.new(time,\u00a0open,\u00a0time\u00a0+\u00a060\u00a0*\u00a060\u00a0*\u00a024,\u00a0close,\u00a0xloc=xloc.bar_time)
a\u00a0=\u00a0line.get_x1(my_line)
plot(time\u00a0-\u00a0line.get_x1(my_line))\u00a0//draws\u00a0zero\u00a0plot
line.get_x2(id) \u2192 series[integer]
line.get_y1(id) \u2192 series[float]
line.get_y2(id) \u2192 series[float]
line.new(x1, y1, x2, y2, xloc, extend, color, style, width) \u2192 series[line]
var\u00a0line1\u00a0=\u00a0line.new(0,\u00a0low,\u00a0bar_index,\u00a0high,\u00a0extend=extend.right)
var\u00a0line2\u00a0=\u00a0line.new(time,\u00a0open,\u00a0time\u00a0+\u00a060\u00a0*\u00a060\u00a0*\u00a024,\u00a0close,\u00a0xloc=xloc.bar_time,\u00a0style=line.style_dashed)
line.set_x2(line1,\u00a00)
line.set_xloc(line1,\u00a0time,\u00a0time\u00a0+\u00a060\u00a0*\u00a060\u00a0*\u00a024,\u00a0xloc.bar_time)
line.set_color(line2,\u00a0color.green)
line.set_width(line2,\u00a05)
line.set_color(id, color) \u2192 void
line.set_extend(id, extend) \u2192 void
line.set_style(id, style) \u2192 void
line.set_width(id, width) \u2192 void
line.set_x1(id, x) \u2192 void
line.set_x2(id, x) \u2192 void
line.set_xloc(id, x1, x2, xloc) \u2192 void
line.set_xy1(id, x, y) \u2192 void
line.set_xy2(id, x, y) \u2192 void
line.set_y1(id, y) \u2192 void
line.set_y2(id, y) \u2192 void
linebreak(symbol, number_of_lines) \u2192 string
linebreak_tickerid\u00a0=\u00a0linebreak(syminfo.tickerid,\u00a03)
linebreak_close\u00a0=\u00a0security(linebreak_tickerid,\u00a0timeframe.period,\u00a0close)
plot(linebreak_close)
linreg(source, length, offset) \u2192 series[float]
y such that e^y = xlog(x) \u2192 float
log(x) \u2192 input float
log(x) \u2192 const float
log(x) \u2192 series[float]
y such that e^y = x",
+ "arguments": [],
+ "syntax": "log(x) \u2192 float",
+ "returnType": "float",
+ "returns": ""
+ },
+ {
+ "name": "log10()",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#fun_log10",
+ "fragment": "fun_log10",
+ "info": "y such that 10^y = xlog10(x) \u2192 float
log10(x) \u2192 input float
log10(x) \u2192 const float
log10(x) \u2192 series[float]
y such that 10^y = x",
+ "arguments": [],
+ "syntax": "log10(x) \u2192 float",
+ "returnType": "float",
+ "returns": ""
+ },
+ {
+ "name": "lowest()",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#fun_lowest",
+ "fragment": "fun_lowest",
+ "info": "lowest(source, length) \u2192 series[float]
lowest(length) \u2192 series[float]
lowestbars(source, length) \u2192 series[integer]
lowestbars(length) \u2192 series[integer]
macd(source, fastlen, slowlen, siglen) \u2192 [series[float], series[float], series[float]]
//\u00a0Example\u00a01
study('MACD')
[macdLine,\u00a0signalLine,\u00a0histLine]\u00a0=\u00a0macd(close,\u00a012,\u00a026,\u00a09)
plot(macdLine,\u00a0color=color.blue)
plot(signalLine,\u00a0color=color.orange)
plot(histLine,\u00a0color=color.red,\u00a0style=plot.style_histogram)
//\u00a0Example\u00a02
//\u00a0If\u00a0you\u00a0need\u00a0only\u00a0one\u00a0value,\u00a0use\u00a0placeholders\u00a0'_'\u00a0like\u00a0this:
study('MACD')
[_,\u00a0signalLine,\u00a0_]\u00a0=\u00a0macd(close,\u00a012,\u00a026,\u00a09)
plot(signalLine,\u00a0color=color.orange)
max(x1, x2, ...) -> const integer
max(x1, x2, ...) -> input integer
max(x1, x2, ...) -> integer
max(x1, x2, ...) -> series[integer]
max(x1, x2, ...) -> const float
max(x1, x2, ...) -> input float
max(x1, x2, ...) -> float
max(x1, x2, ...) -> series[float]
max(close,\u00a0open)
max(close,\u00a0max(open,\u00a042))
max_bars_back(var, num) \u2192 void
//@version=4
study('My\u00a0Script')
close_()\u00a0=>\u00a0close
depth()\u00a0=>\u00a0400
d\u00a0=\u00a0depth()
v\u00a0=\u00a0close_()
max_bars_back(v,\u00a0500)
out\u00a0=\u00a0if\u00a0bar_index\u00a0>\u00a00
\u00a0\u00a0\u00a0\u00a0v[d]
else
\u00a0\u00a0\u00a0\u00a0v
plot(out)
median(source, length) \u2192 series[float]
median(source, length) \u2192 series[integer]
mfi(series, length) \u2192 series[float]
//@version=4
study('My\u00a0Script')
plot(mfi(close,\u00a05),\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_mfi(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0upper\u00a0=\u00a0sum(volume\u00a0*\u00a0(change(src)\u00a0<=\u00a00.0\u00a0?\u00a00.0\u00a0:\u00a0src),\u00a0length)
\u00a0\u00a0\u00a0\u00a0float\u00a0lower\u00a0=\u00a0sum(volume\u00a0*\u00a0(change(src)\u00a0>=\u00a00.0\u00a0?\u00a00.0\u00a0:\u00a0src),\u00a0length)
\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0if\u00a0na(lower)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0float\u00a0res\u00a0=\u00a0na
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0res
\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0rsi(upper,\u00a0lower)
plot(f_mfi(close,\u00a05))
min(x1, x2, ...) -> const integer
min(x1, x2, ...) -> input integer
min(x1, x2, ...) -> integer
min(x1, x2, ...) -> series[integer]
min(x1, x2, ...) -> const float
min(x1, x2, ...) -> input float
min(x1, x2, ...) -> float
min(x1, x2, ...) -> series[float]
min(close,\u00a0open)
min(close,\u00a0min(open,\u00a042))
minute(time) \u2192 series[integer]
minute(time, timezone) \u2192 series[integer]
mode(source, length) \u2192 series[float]
mode(source, length) \u2192 series[integer]
mom(source, length) \u2192 series[float]
month(time) \u2192 series[integer]
month(time, timezone) \u2192 series[integer]
nz(x, y) \u2192 integer
nz(x, y) \u2192 float
nz(x, y) \u2192 color
nz(x, y) \u2192 bool
nz(x, y) \u2192 series[integer]
nz(x, y) \u2192 series[float]
nz(x, y) \u2192 series[color]
nz(x, y) \u2192 series[bool]
nz(x) \u2192 integer
nz(x) \u2192 float
nz(x) \u2192 color
nz(x) \u2192 bool
nz(x) \u2192 series[integer]
nz(x) \u2192 series[float]
nz(x) \u2192 series[color]
nz(x) \u2192 series[bool]
nz(sma(close,\u00a0100))
offset(source, offset) \u2192 series[bool]
offset(source, offset) \u2192 series[color]
offset(source, offset) \u2192 series[integer]
offset(source, offset) \u2192 series[float]
percentile_linear_interpolation(source, length, percentage) \u2192 series[float]
percentile_nearest_rank(source, length, percentage) \u2192 series[float]
percentrank(source, length) \u2192 series[float]
pivothigh(source, leftbars, rightbars) \u2192 series[float]
pivothigh(leftbars, rightbars) \u2192 series[float]
study(\"PivotHigh\",\u00a0overlay=true)
leftBars\u00a0=\u00a0input(2)
rightBars=input(2)
ph\u00a0=\u00a0pivothigh(leftBars,\u00a0rightBars)
plot(ph,\u00a0style=plot.style_cross,\u00a0linewidth=3,\u00a0color=\u00a0color.red,\u00a0offset=-rightBars)
pivotlow(source, leftbars, rightbars) \u2192 series[float]
pivotlow(leftbars, rightbars) \u2192 series[float]
study(\"PivotLow\",\u00a0overlay=true)
leftBars\u00a0=\u00a0input(2)
rightBars=input(2)
pl\u00a0=\u00a0pivotlow(close,\u00a0leftBars,\u00a0rightBars)
plot(pl,\u00a0style=plot.style_cross,\u00a0linewidth=3,\u00a0color=\u00a0color.blue,\u00a0offset=-rightBars)
plot(series, title, color, linewidth, style, trackprice, transp, histbase, offset, join, editable, show_last, display) \u2192 plot
plot(high+low,\u00a0title='Title',\u00a0color=#00ffaa,\u00a0linewidth=2,\u00a0style=plot.style_area,\u00a0transp=70,\u00a0offset=15,\u00a0trackprice=true)
//\u00a0You\u00a0may\u00a0fill\u00a0the\u00a0background\u00a0between\u00a0any\u00a0two\u00a0plots\u00a0with\u00a0a\u00a0fill()\u00a0function:
p1\u00a0=\u00a0plot(open)
p2\u00a0=\u00a0plot(close)
fill(p1,\u00a0p2,\u00a0color=color.green)
plotarrow(series, title, colorup, colordown, transp, offset, minheight, maxheight, editable, show_last, display) \u2192 void
study(\"plotarrow\u00a0example\",\u00a0overlay=true)
codiff\u00a0=\u00a0close\u00a0-\u00a0open
plotarrow(codiff,\u00a0colorup=color.teal,\u00a0colordown=color.orange,\u00a0transp=40)
plotbar(open, high, low, close, title, color, editable, show_last, display) \u2192 void
plotbar(open,\u00a0high,\u00a0low,\u00a0close,\u00a0title='Title',\u00a0color\u00a0=\u00a0open\u00a0<\u00a0close\u00a0?\u00a0color.green\u00a0:\u00a0color.red)
plotcandle(open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor, display) \u2192 void
plotcandle(open,\u00a0high,\u00a0low,\u00a0close,\u00a0title='Title',\u00a0color\u00a0=\u00a0open\u00a0<\u00a0close\u00a0?\u00a0color.green\u00a0:\u00a0color.red,\u00a0wickcolor=color.black)
plotchar(series, title, char, location, color, transp, offset, text, textcolor, editable, size, show_last, display) \u2192 void
study('plotchar\u00a0example',\u00a0overlay=true)
data\u00a0=\u00a0close\u00a0>=\u00a0open
plotchar(data,\u00a0char='\u2744')
plotshape(series, title, style, location, color, transp, offset, text, textcolor, editable, size, show_last, display) \u2192 void
study('plotshape\u00a0example\u00a01',\u00a0overlay=true)
data\u00a0=\u00a0close\u00a0>=\u00a0open
plotshape(data,\u00a0style=shape.xcross)
pointfigure(symbol, source, style, param, reversal) \u2192 string
style is equal to 'ATR', or Box Size if style is equal to 'Traditional'.pnf_tickerid\u00a0=\u00a0pointfigure(syminfo.tickerid,\u00a0\"hl\",\u00a0\"Traditional\",\u00a01,\u00a03)
pnf_close\u00a0=\u00a0security(pnf_tickerid,\u00a0timeframe.period,\u00a0close)
plot(pnf_close)
pow(base, exponent) \u2192 float
pow(base, exponent) \u2192 input float
pow(base, exponent) \u2192 const float
pow(base, exponent) \u2192 series[float]
pow(close,\u00a02)
quandl(ticker, gaps, index, ignore_invalid_symbol) \u2192 series[float]
f\u00a0=\u00a0quandl(\"CFTC/SB_FO_ALL\",\u00a0barmerge.gaps_off,\u00a00)
plot(f)
random(min, max, seed) \u2192 series[float]
range(source, length) \u2192 series[float]
range(source, length) \u2192 series[integer]
renko(symbol, style, param) \u2192 string
style is equal to 'ATR', or Box Size if style is equal to 'Traditional'.renko_tickerid\u00a0=\u00a0renko(syminfo.tickerid,\u00a0\"ATR\",\u00a010)
renko_close\u00a0=\u00a0security(renko_tickerid,\u00a0timeframe.period,\u00a0close)
plot(renko_close)
rising(source, length) \u2192 series[bool]
rma(source, length) \u2192 series[float]
plot(rma(close,\u00a015))
//the\u00a0same\u00a0on\u00a0pine
pine_rma(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0alpha\u00a0=\u00a01/length
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0na(sum[1])\u00a0?\u00a0sma(src,\u00a0length)\u00a0:\u00a0alpha\u00a0*\u00a0src\u00a0+\u00a0(1\u00a0-\u00a0alpha)\u00a0*\u00a0nz(sum[1])
plot(pine_rma(close,\u00a015))
roc(source, length) \u2192 series[float]
round(x) \u2192 integer
round(x) \u2192 input integer
round(x) \u2192 const integer
round(x) \u2192 series[integer]
round(number, precision) \u2192 float
round(number, precision) \u2192 input float
round(number, precision) \u2192 const float
round(number, precision) \u2192 series[float]
round_to_mintick(x) \u2192 float
round_to_mintick(x) \u2192 series[float]
rsi(x, y) \u2192 series[float]
plot(rsi(close,\u00a07))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0less\u00a0efficient
pine_rsi(x,\u00a0y)\u00a0=>\u00a0
\u00a0\u00a0\u00a0\u00a0u\u00a0=\u00a0max(x\u00a0-\u00a0x[1],\u00a00)\u00a0//\u00a0upward\u00a0change
\u00a0\u00a0\u00a0\u00a0d\u00a0=\u00a0max(x[1]\u00a0-\u00a0x,\u00a00)\u00a0//\u00a0downward\u00a0change
\u00a0\u00a0\u00a0\u00a0rs\u00a0=\u00a0rma(u,\u00a0y)\u00a0/\u00a0rma(d,\u00a0y)
\u00a0\u00a0\u00a0\u00a0res\u00a0=\u00a0100\u00a0-\u00a0100\u00a0/\u00a0(1\u00a0+\u00a0rs)
\u00a0\u00a0\u00a0\u00a0res
plot(pine_rsi(close,\u00a07))
sar(start, inc, max) \u2192 series[float]
plot(sar(0.02,\u00a00.02,\u00a00.2),\u00a0style=plot.style_cross,\u00a0linewidth=3)
//\u00a0The\u00a0same\u00a0on\u00a0Pine
pine_sar(start,\u00a0inc,\u00a0max)\u00a0=>
\u00a0\u00a0\u00a0\u00a0var\u00a0float\u00a0result\u00a0=\u00a0na
\u00a0\u00a0\u00a0\u00a0var\u00a0float\u00a0maxMin\u00a0=\u00a0na
\u00a0\u00a0\u00a0\u00a0var\u00a0float\u00a0acceleration\u00a0=\u00a0na
\u00a0\u00a0\u00a0\u00a0var\u00a0bool\u00a0isBelow\u00a0=\u00a0na
\u00a0\u00a0\u00a0\u00a0bool\u00a0isFirstTrendBar\u00a0=\u00a0false
\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0if\u00a0bar_index\u00a0==\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0close\u00a0>\u00a0close[1]
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isBelow\u00a0:=\u00a0true
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maxMin\u00a0:=\u00a0high
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0low[1]
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isBelow\u00a0:=\u00a0false
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maxMin\u00a0:=\u00a0low
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0high[1]
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isFirstTrendBar\u00a0:=\u00a0true
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0acceleration\u00a0:=\u00a0start
\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0result\u00a0+\u00a0acceleration\u00a0*\u00a0(maxMin\u00a0-\u00a0result)
\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0if\u00a0isBelow
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0result\u00a0>\u00a0low
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isFirstTrendBar\u00a0:=\u00a0true
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isBelow\u00a0:=\u00a0false
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0max(high,\u00a0maxMin)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maxMin\u00a0:=\u00a0low
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0acceleration\u00a0:=\u00a0start
\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0result\u00a0<\u00a0high
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isFirstTrendBar\u00a0:=\u00a0true
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isBelow\u00a0:=\u00a0true
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0min(low,\u00a0maxMin)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maxMin\u00a0:=\u00a0high
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0acceleration\u00a0:=\u00a0start
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0if\u00a0not\u00a0isFirstTrendBar
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0isBelow
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0high\u00a0>\u00a0maxMin
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maxMin\u00a0:=\u00a0high
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0acceleration\u00a0:=\u00a0min(acceleration\u00a0+\u00a0inc,\u00a0max)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0low\u00a0<\u00a0maxMin
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maxMin\u00a0:=\u00a0low
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0acceleration\u00a0:=\u00a0min(acceleration\u00a0+\u00a0inc,\u00a0max)
\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0if\u00a0isBelow
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0min(result,\u00a0low[1])
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0bar_index\u00a0>\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0min(result,\u00a0low[2])
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0max(result,\u00a0high[1])
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0bar_index\u00a0>\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0:=\u00a0max(result,\u00a0high[2])
\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0result
\u00a0\u00a0\u00a0\u00a0
plot(pine_sar(0.02,\u00a00.02,\u00a00.2),\u00a0style=plot.style_cross,\u00a0linewidth=3)
second(time) \u2192 series[integer]
second(time, timezone) \u2192 series[integer]
security(symbol, resolution, expression, gaps, lookahead, ignore_invalid_symbol) \u2192 series[float]
security(symbol, resolution, expression, gaps, lookahead, ignore_invalid_symbol) \u2192 series[integer]
security(symbol, resolution, expression, gaps, lookahead, ignore_invalid_symbol) \u2192 series[bool]
security(symbol, resolution, expression, gaps, lookahead, ignore_invalid_symbol) \u2192 series[color]
security(symbol, resolution, expression, gaps, lookahead, ignore_invalid_symbol) \u2192 <arg_expr_type>
s\u00a0=\u00a0security(\"MSFT\",\u00a0\"D\",\u00a0close)\u00a0//\u00a01\u00a0Day
plot(s)
expr\u00a0=\u00a0sma(close,\u00a010)
s1\u00a0=\u00a0security(\"AAPL\",\u00a0\"240\",\u00a0expr)\u00a0//\u00a0240\u00a0Minutes
plot(s1)
//\u00a0To\u00a0avoid\u00a0difference\u00a0in\u00a0calculation\u00a0on\u00a0history/realtime\u00a0you\u00a0can\u00a0request\u00a0not\u00a0latest\u00a0values\u00a0and\u00a0use\u00a0merge\u00a0strategy\u00a0flags\u00a0as\u00a0follows:
s2=security(syminfo.tickerid,\u00a0\"D\",\u00a0close[1],\u00a0barmerge.gaps_off,\u00a0barmerge.lookahead_on)
plot(s2)
f()\u00a0=>\u00a0[open,\u00a0high]
[o,\u00a0h]\u00a0=\u00a0security(syminfo.tickerid,\u00a0\"D\",\u00a0f())
[l,\u00a0c]\u00a0=\u00a0security(syminfo.tickerid,\u00a0\"D\",\u00a0[low,\u00a0close])
plot((o\u00a0+\u00a0h\u00a0+\u00a0l\u00a0+\u00a0c)\u00a0/\u00a04)
sign(x) \u2192 float
sign(x) \u2192 input float
sign(x) \u2192 const float
sign(x) \u2192 series[float]
sin(x) \u2192 float
sin(x) \u2192 input float
sin(x) \u2192 const float
sin(x) \u2192 series[float]
sma(source, length) \u2192 series[float]
plot(sma(close,\u00a015))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0much\u00a0less\u00a0efficient
pine_sma(x,\u00a0y)\u00a0=>
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0y\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0x[i]\u00a0/\u00a0y
\u00a0\u00a0\u00a0\u00a0sum
plot(pine_sma(close,\u00a015))
splits(ticker, field, gaps, lookahead, ignore_invalid_symbol) \u2192 series[float]
s1\u00a0=\u00a0splits(\"NASDAQ:BELFA\",\u00a0splits.denominator)
plot(s1)
s2\u00a0=\u00a0splits(\"NASDAQ:BELFA\",\u00a0splits.denominator,\u00a0gaps=barmerge.gaps_on,\u00a0lookahead=barmerge.lookahead_on)
plot(s2)
sqrt(x) \u2192 float
sqrt(x) \u2192 input float
sqrt(x) \u2192 const float
sqrt(x) \u2192 series[float]
stdev(source, length) \u2192 series[float]
plot(stdev(close,\u00a05))
//the\u00a0same\u00a0on\u00a0pine
isZero(val,\u00a0eps)\u00a0=>\u00a0abs(val)\u00a0<=\u00a0eps
SUM(fst,\u00a0snd)\u00a0=>
\u00a0\u00a0\u00a0\u00a0EPS\u00a0=\u00a01e-10
\u00a0\u00a0\u00a0\u00a0res\u00a0=\u00a0fst\u00a0+\u00a0snd
\u00a0\u00a0\u00a0\u00a0if\u00a0isZero(res,\u00a0EPS)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0res\u00a0:=\u00a00
\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0not\u00a0isZero(res,\u00a01e-4)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0res\u00a0:=\u00a0res
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a015
pine_stdev(src,\u00a0length)\u00a0=>
\u00a0\u00a0\u00a0\u00a0avg\u00a0=\u00a0sma(src,\u00a0length)
\u00a0\u00a0\u00a0\u00a0sumOfSquareDeviations\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0length\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a0SUM(src[i],\u00a0-avg)
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sumOfSquareDeviations\u00a0:=\u00a0sumOfSquareDeviations\u00a0+\u00a0sum\u00a0*\u00a0sum
\u00a0\u00a0\u00a0\u00a0stdev\u00a0=\u00a0sqrt(sumOfSquareDeviations\u00a0/\u00a0length)
plot(pine_stdev(close,\u00a05))
stoch(source, high, low, length) \u2192 series[float]
str.format(formatString, arg0, arg1, ...) -> string
str.format(formatString, arg0, arg1, ...) -> series[string]
//\u00a0The\u00a0format\u00a0specifier\u00a0inside\u00a0the\u00a0curly\u00a0braces\u00a0accepts\u00a0certain\u00a0modifiers:
//\u00a0-\u00a0Specify\u00a0the\u00a0number\u00a0of\u00a0decimals\u00a0to\u00a0display:
str.format(\"{0,number,#.#}\",\u00a01.34)\u00a0//\u00a0returns:\u00a01.3
//\u00a0-\u00a0Round\u00a0a\u00a0float\u00a0value\u00a0to\u00a0an\u00a0integer:
str.format(\"{0,number,integer}\",\u00a01.34)\u00a0//\u00a0returns:\u00a01
//\u00a0-\u00a0Display\u00a0a\u00a0number\u00a0in\u00a0currency:
str.format(\"{0,number,currency}\",\u00a01.34)\u00a0//\u00a0returns:\u00a0$1.34
//\u00a0-\u00a0Display\u00a0a\u00a0number\u00a0as\u00a0a\u00a0percentage:
str.format(\"{0,number,percent}\",\u00a00.5)\u00a0//\u00a0returns:\u00a050%
//\u00a0EXAMPLES\u00a0WITH\u00a0SEVERAL\u00a0ARGUMENTS
//\u00a0returns:\u00a0Number\u00a01\u00a0is\u00a0not\u00a0equal\u00a0to\u00a04
str.format(\"Number\u00a0{0}\u00a0is\u00a0not\u00a0{1}\u00a0to\u00a0{2}\",\u00a01,\u00a0\"equal\",\u00a04)
//\u00a0returns:\u00a01.34\u00a0!=\u00a01.3
str.format(\"{0}\u00a0!=\u00a0{0,\u00a0number,\u00a0#.#}\",\u00a01.34)
//\u00a0returns:\u00a01\u00a0is\u00a0equal\u00a0to\u00a01,\u00a0but\u00a02\u00a0is\u00a0equal\u00a0to\u00a02
str.format(\"{0,\u00a0number,\u00a0integer}\u00a0is\u00a0equal\u00a0to\u00a01,\u00a0but\u00a0{1,\u00a0number,\u00a0integer}\u00a0is\u00a0equal\u00a0to\u00a02\",\u00a01.34,\u00a01.52)
//\u00a0returns:\u00a0The\u00a0cash\u00a0turnover\u00a0amounted\u00a0to\u00a0$1,340,000.00
str.format(\"The\u00a0cash\u00a0turnover\u00a0amounted\u00a0to\u00a0{0,\u00a0number,\u00a0currency}\",\u00a01340000)
//\u00a0returns:\u00a0Expected\u00a0return\u00a0is\u00a010%\u00a0-\u00a020%
str.format(\"Expected\u00a0return\u00a0is\u00a0{0,\u00a0number,\u00a0percent}\u00a0-\u00a0{1,\u00a0number,\u00a0percent}\",\u00a00.1,\u00a00.2)
str.length(string) \u2192 const integer
str.length(string) \u2192 integer
str.length(string) \u2192 series[integer]
str.replace_all(source, target, replacement) \u2192 string
str.replace_all(source, target, replacement) \u2192 series[string]
str.split(string, separator) \u2192 string[]
strategy(title, shorttitle, overlay, format, precision, scale, pyramiding, calc_on_order_fills, calc_on_every_tick, max_bars_back, backtest_fill_limits_assumption, default_qty_type, default_qty_value, initial_capital, currency, max_lines_count, max_labels_count, slippage, commission_type, commission_value, process_orders_on_close, close_entries_rule, margin_long, margin_short, max_boxes_count, explicit_plot_zorder) \u2192 void
true, generates an additional attempt to execute orders after a bar closes and strategy calculations are completed. If the orders are market orders, the broker emulator executes them before the next bar's open. If the orders are conditional on price, they will only be filled if the price conditions are met. This option is useful if you wish to close positions on the current bar. The default value is 'false'.false.currency. Optional. The default is 100000.strategy(title='MyStrategy')
strategy(title=\"MyStrategy\",\u00a0shorttitle=\"MS\",\u00a0pyramiding\u00a0=\u00a010)
strategy.cancel(id, when) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0order\u00a0cancellation\u00a0example\")
conditionForBuy\u00a0=\u00a0open\u00a0>\u00a0high[1]
strategy.entry(\"long\",\u00a0true,\u00a01,\u00a0limit\u00a0=\u00a0low,\u00a0when\u00a0=\u00a0conditionForBuy)\u00a0//\u00a0enter\u00a0long\u00a0using\u00a0limit\u00a0order\u00a0at\u00a0low\u00a0price\u00a0of\u00a0current\u00a0bar\u00a0if\u00a0conditionForBuy\u00a0is\u00a0true
strategy.cancel(\"long\",\u00a0when\u00a0=\u00a0not\u00a0conditionForBuy)\u00a0//\u00a0cancel\u00a0the\u00a0entry\u00a0order\u00a0with\u00a0name\u00a0\"long\"\u00a0if\u00a0conditionForBuy\u00a0is\u00a0false
strategy.cancel_all(when) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0all\u00a0orders\u00a0cancellation\u00a0example\")
conditionForBuy1\u00a0=\u00a0open\u00a0>\u00a0high[1]
strategy.entry(\"long\u00a0entry\u00a01\",\u00a0true,\u00a01,\u00a0limit\u00a0=\u00a0low,\u00a0when\u00a0=\u00a0conditionForBuy1)\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0limit\u00a0if\u00a0conditionForBuy1\u00a0is\u00a0true
conditionForBuy2\u00a0=\u00a0conditionForBuy1\u00a0and\u00a0open[1]\u00a0>\u00a0high[2]
strategy.entry(\"long\u00a0entry\u00a02\",\u00a0true,\u00a01,\u00a0limit\u00a0=\u00a0lowest(low,\u00a02),\u00a0when\u00a0=\u00a0conditionForBuy2)\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0limit\u00a0if\u00a0conditionForBuy2\u00a0is\u00a0true
conditionForStopTrading\u00a0=\u00a0open\u00a0<\u00a0lowest(low,\u00a02)
strategy.cancel_all(conditionForStopTrading)\u00a0//\u00a0cancel\u00a0both\u00a0limit\u00a0orders\u00a0if\u00a0the\u00a0conditon\u00a0conditionForStopTrading\u00a0is\u00a0true
strategy.close(id, when, comment, qty, qty_percent, alert_message) \u2192 void
strategy(\"closeEntry\u00a0Demo\",\u00a0overlay=false)
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.close(\"buy\",\u00a0when\u00a0=\u00a0open\u00a0<\u00a0close,\u00a0qty_percent\u00a0=\u00a050,\u00a0comment\u00a0=\u00a0\"close\u00a0buy\u00a0entry\u00a0for\u00a050%\")
plot(strategy.position_size)
strategy.close_all(when, comment, alert_message) \u2192 void
strategy(\"closeAll\u00a0Demo\",\u00a0overlay=false)
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.close_all(when\u00a0=\u00a0open\u00a0<\u00a0close,\u00a0comment\u00a0=\u00a0\"close\u00a0all\u00a0entries\")
plot(strategy.position_size)
strategy.entry(id, long, qty, limit, stop, oca_name, oca_type, comment, when, alert_message) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0gap\u00a0strategy\u00a0example\")
strategy.entry(\"enter\u00a0long\",\u00a0true,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0high[1])\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0great\u00a0then\u00a0previous\u00a0high
strategy.entry(\"enter\u00a0short\",\u00a0false,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0low[1])\u00a0//\u00a0enter\u00a0short\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0less\u00a0then\u00a0previous\u00a0low
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0strategy\u00a0exit\u00a0example\")
strategy.entry(\"long\",\u00a0true,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0high[1])\u00a0//\u00a0enter\u00a0long\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0great\u00a0then\u00a0previous\u00a0high
strategy.exit(\"exit\",\u00a0\"long\",\u00a0profit\u00a0=\u00a010,\u00a0loss\u00a0=\u00a05)\u00a0//\u00a0generate\u00a0full\u00a0exit\u00a0bracket\u00a0(profit\u00a010\u00a0points,\u00a0loss\u00a05\u00a0points\u00a0per\u00a0contract)\u00a0from\u00a0entry\u00a0with\u00a0name\u00a0\"long\"
strategy.order(id, long, qty, limit, stop, oca_name, oca_type, comment, when, alert_message) \u2192 void
strategy(title\u00a0=\u00a0\"simple\u00a0gap\u00a0strategy\u00a0example\")
strategy.order(\"buy\",\u00a0true,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0high[1])\u00a0//\u00a0buy\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0great\u00a0then\u00a0previous\u00a0high
strategy.order(\"sell\",\u00a0false,\u00a01,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0low[1])\u00a0//\u00a0sell\u00a0by\u00a0market\u00a0if\u00a0current\u00a0open\u00a0less\u00a0then\u00a0previous\u00a0low
strategy.risk.allow_entry_in(value) \u2192 void
strategy(\"risk.long_only\u00a0Demo\")
strategy.risk.allow_entry_in(strategy.direction.long)\u00a0//\u00a0There\u00a0will\u00a0be\u00a0no\u00a0short\u00a0entries,\u00a0only\u00a0exits\u00a0from\u00a0long.
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.entry(\"sell\",\u00a0false,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0close)
strategy.risk.max_cons_loss_days(count, alert_message) \u2192 void
strategy(\"risk.max_cons_loss_days\u00a0Demo\u00a01\")
strategy.risk.max_cons_loss_days(3)\u00a0//\u00a0No\u00a0orders\u00a0will\u00a0be\u00a0placed\u00a0after\u00a03\u00a0days,\u00a0if\u00a0each\u00a0day\u00a0is\u00a0with\u00a0loss.
//\u00a0...
strategy.risk.max_drawdown(value, type, alert_message) \u2192 void
strategy(\"risk.max_drawdown\u00a0Demo\u00a01\")
strategy.risk.max_drawdown(50,\u00a0strategy.percent_of_equity)\u00a0//\u00a0set\u00a0maximum\u00a0drawdown\u00a0to\u00a050%\u00a0of\u00a0maximum\u00a0equity
//\u00a0...\u00a0
strategy(\"risk.max_drawdown\u00a0Demo\u00a02\",\u00a0currency\u00a0=\u00a0EUR)
strategy.risk.max_drawdown(2000,\u00a0strategy.cash)\u00a0\u00a0//\u00a0set\u00a0maximum\u00a0drawdown\u00a0to\u00a02000\u00a0EUR\u00a0from\u00a0maximum\u00a0equity
//\u00a0...\u00a0
strategy.risk.max_intraday_filled_orders(count, alert_message) \u2192 void
strategy(\"risk.max_intraday_filled_orders\u00a0Demo\")
strategy.risk.max_intraday_filled_orders(10)\u00a0//\u00a0After\u00a010\u00a0orders\u00a0are\u00a0filled,\u00a0no\u00a0more\u00a0strategy\u00a0orders\u00a0will\u00a0be\u00a0placed\u00a0(except\u00a0for\u00a0a\u00a0market\u00a0order\u00a0to\u00a0exit\u00a0current\u00a0open\u00a0market\u00a0position,\u00a0if\u00a0there\u00a0is\u00a0any).
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
strategy.entry(\"sell\",\u00a0false,\u00a0when\u00a0=\u00a0open\u00a0<\u00a0close)
strategy.risk.max_intraday_loss(value, type, alert_message) \u2192 void
strategy(\"risk.max_intraday_loss\u00a0Demo\u00a01\")
strategy.risk.max_intraday_loss(10,\u00a0strategy.percent_of_equity)\u00a0//\u00a0set\u00a0maximum\u00a0intraday\u00a0loss\u00a0to\u00a010%\u00a0of\u00a0maximum\u00a0intraday\u00a0equity
//\u00a0...\u00a0
strategy(\"risk.max_intraday_loss\u00a0Demo\u00a02\",\u00a0currency\u00a0=\u00a0EUR)
strategy.risk.max_intraday_loss(100,\u00a0strategy.cash)\u00a0//\u00a0set\u00a0maximum\u00a0intraday\u00a0loss\u00a0to\u00a0100\u00a0EUR\u00a0from\u00a0maximum\u00a0intraday\u00a0equity
//\u00a0...\u00a0
strategy.risk.max_position_size(contracts) \u2192 void
strategy(\"risk.max_position_size\u00a0Demo\",\u00a0default_qty_value\u00a0=\u00a0100)
strategy.risk.max_position_size(10)
strategy.entry(\"buy\",\u00a0true,\u00a0when\u00a0=\u00a0open\u00a0>\u00a0close)
plot(strategy.position_size)\u00a0\u00a0//\u00a0max\u00a0plot\u00a0value\u00a0will\u00a0be\u00a010
study(title, shorttitle, overlay, format, precision, scale, max_bars_back, max_lines_count, max_labels_count, resolution, resolution_gaps, max_boxes_count, explicit_plot_zorder) \u2192 void
false.study(title='MyScriptStudy')
study(title=\"MyScriptStudy\",\u00a0shorttitle=\"MSS\",\u00a0precision=6,\u00a0overlay=true)
supertrend(factor, atrPeriod) \u2192 [series[float], series[float]]
//@version=4
study(\"Supertrend\",\u00a0overlay=true)
mult\u00a0=\u00a0input(type=input.float,\u00a0defval=4)
len\u00a0=\u00a0input(type=input.integer,\u00a0defval=14)
[superTrend,\u00a0dir]\u00a0=\u00a0supertrend(mult,\u00a0len)
colResistance\u00a0=\u00a0dir\u00a0==\u00a01\u00a0and\u00a0dir\u00a0==\u00a0dir[1]\u00a0?\u00a0color.new(color.red,\u00a00)\u00a0:\u00a0color.new(color.red,\u00a0100)
colSupport\u00a0=\u00a0dir\u00a0==\u00a0-1\u00a0and\u00a0dir\u00a0==\u00a0dir[1]\u00a0?\u00a0color.new(color.green,\u00a00)\u00a0:\u00a0color.new(color.green,\u00a0100)
plot(superTrend,\u00a0color\u00a0=\u00a0colResistance,\u00a0linewidth=2)
plot(superTrend,\u00a0color\u00a0=\u00a0colSupport,\u00a0linewidth=2)
swma(x) \u2192 series[float]
plot(swma(close))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0less\u00a0efficient
pine_swma(x)\u00a0=>
\u00a0\u00a0\u00a0\u00a0x[3]\u00a0*\u00a01\u00a0/\u00a06\u00a0+\u00a0x[2]\u00a0*\u00a02\u00a0/\u00a06\u00a0+\u00a0x[1]\u00a0*\u00a02\u00a0/\u00a06\u00a0+\u00a0x[0]\u00a0*\u00a01\u00a0/\u00a06
plot(pine_swma(close))
table.cell(table_id, column, row, text, width, height, text_color, text_halign, text_valign, text_size, bgcolor) \u2192 void
table.cell_set_bgcolor(table_id, column, row, bgcolor) \u2192 void
table.cell_set_height(table_id, column, row, height) \u2192 void
table.cell_set_text(table_id, column, row, text) \u2192 void
//@version=4
study(\"TABLE\u00a0example\")
var\u00a0tLog\u00a0=\u00a0table.new(position\u00a0=\u00a0position.top_left,\u00a0rows\u00a0=\u00a01,\u00a0columns\u00a0=\u00a02,\u00a0bgcolor\u00a0=\u00a0color.yellow,\u00a0border_width=1)
table.cell(tLog,\u00a0row\u00a0=\u00a00,\u00a0column\u00a0=\u00a00,\u00a0text\u00a0=\u00a0\"sometext\",\u00a0text_color\u00a0=\u00a0color.blue)
table.cell_set_text(tLog,\u00a0row\u00a0=\u00a00,\u00a0column\u00a0=\u00a00,\u00a0text\u00a0=\u00a0\"sometext\")
table.cell_set_text_color(table_id, column, row, text_color) \u2192 void
table.cell_set_text_halign(table_id, column, row, text_halign) \u2192 void
table.cell_set_text_size(table_id, column, row, text_size) \u2192 void
table.cell_set_text_valign(table_id, column, row, text_valign) \u2192 void
table.cell_set_width(table_id, column, row, width) \u2192 void
table.clear(table_id, start_column, start_row, end_column, end_row) \u2192 void
//@version=4
study(\"A\u00a0donut\",\u00a0overlay=true)
if\u00a0barstate.islast
\u00a0\u00a0\u00a0\u00a0colNum\u00a0=\u00a08,\u00a0rowNum\u00a0=\u00a08
\u00a0\u00a0\u00a0\u00a0padding\u00a0=\u00a0\"\u25ef\"
\u00a0\u00a0\u00a0\u00a0donutTable\u00a0=\u00a0table.new(position.middle_right,\u00a0colNum,\u00a0rowNum)
\u00a0\u00a0\u00a0\u00a0for\u00a0c\u00a0=\u00a00\u00a0to\u00a0colNum\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for\u00a0r\u00a0=\u00a00\u00a0to\u00a0rowNum\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0table.cell(donutTable,\u00a0c,\u00a0r,\u00a0text=padding,\u00a0bgcolor=#face6e,\u00a0text_color=color.new(color.black,\u00a0100))
\u00a0\u00a0\u00a0\u00a0table.clear(donutTable,\u00a02,\u00a02,\u00a05,\u00a05)
table.delete(table_id) \u2192 void
//@version=4
study(\"table.delete\u00a0example\")
var\u00a0testTable\u00a0=\u00a0table.new(position\u00a0=\u00a0position.top_right,\u00a0columns\u00a0=\u00a02,\u00a0rows\u00a0=\u00a01,\u00a0bgcolor\u00a0=\u00a0color.yellow,\u00a0border_width\u00a0=\u00a01)
if\u00a0barstate.islast
\u00a0\u00a0\u00a0\u00a0table.cell(table_id\u00a0=\u00a0testTable,\u00a0column\u00a0=\u00a00,\u00a0row\u00a0=\u00a00,\u00a0text\u00a0=\u00a0\"Open\u00a0is\u00a0\"\u00a0+\u00a0tostring(open))
\u00a0\u00a0\u00a0\u00a0table.cell(table_id\u00a0=\u00a0testTable,\u00a0column\u00a0=\u00a01,\u00a0row\u00a0=\u00a00,\u00a0text\u00a0=\u00a0\"Close\u00a0is\u00a0\"\u00a0+\u00a0tostring(close),\u00a0bgcolor=color.teal)
if\u00a0barstate.isrealtime
\u00a0\u00a0\u00a0\u00a0table.delete(testTable)
table.new(position, columns, rows, bgcolor, frame_color, frame_width, border_color, border_width) \u2192 series[table]
//@version=4
study(\"table.new\u00a0example\")
var\u00a0testTable\u00a0=\u00a0table.new(position\u00a0=\u00a0position.top_right,\u00a0columns\u00a0=\u00a02,\u00a0rows\u00a0=\u00a01,\u00a0bgcolor\u00a0=\u00a0color.yellow,\u00a0border_width\u00a0=\u00a01)
if\u00a0barstate.islast
\u00a0\u00a0\u00a0\u00a0table.cell(table_id\u00a0=\u00a0testTable,\u00a0column\u00a0=\u00a00,\u00a0row\u00a0=\u00a00,\u00a0text\u00a0=\u00a0\"Open\u00a0is\u00a0\"\u00a0+\u00a0tostring(open))
\u00a0\u00a0\u00a0\u00a0table.cell(table_id\u00a0=\u00a0testTable,\u00a0column\u00a0=\u00a01,\u00a0row\u00a0=\u00a00,\u00a0text\u00a0=\u00a0\"Close\u00a0is\u00a0\"\u00a0+\u00a0tostring(close),\u00a0bgcolor=color.teal)
table.set_bgcolor(table_id, bgcolor) \u2192 void
table.set_border_color(table_id, border_color) \u2192 void
table.set_border_width(table_id, border_width) \u2192 void
table.set_frame_color(table_id, frame_color) \u2192 void
table.set_frame_width(table_id, frame_width) \u2192 void
table.set_position(table_id, position) \u2192 void
tan(x) \u2192 float
tan(x) \u2192 input float
tan(x) \u2192 const float
tan(x) \u2192 series[float]
tickerid(prefix, ticker, session, adjustment) \u2192 string
study(\"tickerid\u00a0fun\",\u00a0overlay=true)\u00a0
t\u00a0=\u00a0tickerid(syminfo.prefix,\u00a0syminfo.ticker,\u00a0session.regular,\u00a0adjustment.splits)
t2\u00a0=\u00a0heikinashi(t)
c\u00a0=\u00a0security(t2,\u00a0timeframe.period,\u00a0low,\u00a0true)
plot(c,\u00a0style=plot.style_linebr)
time(resolution, session, timezone) \u2192 series[integer]
time(resolution, session) \u2192 series[integer]
time(resolution) \u2192 series[integer]
session argument. Can only be used when a session is specified. Optional. The default is syminfo.timezone. Can be specified in GMT notation (e.g. \"GMT-5\") or as an IANA time zone database name (e.g. \"America/New_York\").//@version=4
study(\"Time\",\u00a0overlay=true)
//\u00a0Try\u00a0this\u00a0on\u00a0chart\u00a0AAPL,1
timeinrange(res,\u00a0sess)\u00a0=>\u00a0not\u00a0na(time(res,\u00a0sess,\u00a0\"America/New_York\"))\u00a0?\u00a01\u00a0:\u00a00
plot(timeinrange(\"1\",\u00a0\"1300-1400\"),\u00a0color=color.red)
//\u00a0This\u00a0plots\u00a01.0\u00a0at\u00a0every\u00a0start\u00a0of\u00a010\u00a0minute\u00a0bar\u00a0on\u00a0a\u00a01\u00a0minute\u00a0chart:
newbar(res)\u00a0=>\u00a0change(time(res))\u00a0==\u00a00\u00a0?\u00a00\u00a0:\u00a01
plot(newbar(\"10\"))
//@version=4
study(\"Time\",\u00a0overlay=true)
t1\u00a0=\u00a0time(timeframe.period,\u00a0\"0000-0000\")
bgcolor(t1\u00a0?\u00a0color.blue\u00a0:\u00a0na)
//@version=4
study(\"Time\u00a0-\u00a0days\",\u00a0overlay=true)
t1\u00a0=\u00a0time(timeframe.period,\u00a0\"0000-0000:1234567\")
bgcolor(t1\u00a0?\u00a0color.green\u00a0:\u00a0na)
time_close(resolution, session, timezone) \u2192 series[integer]
time_close(resolution, session) \u2192 series[integer]
time_close(resolution) \u2192 series[integer]
session argument. Can only be used when a session is specified. Optional. The default is syminfo.timezone. Can be specified in GMT notation (e.g. \"GMT-5\") or as an IANA time zone database name (e.g. \"America/New_York\").//@version=4
study(\"Time\",\u00a0overlay=true)
t1\u00a0=\u00a0time_close(timeframe.period,\u00a0\"1200-1300\",\u00a0\"America/New_York\")
bgcolor(t1\u00a0?\u00a0color.blue\u00a0:\u00a0na)
timestamp(dateString) \u2192 const integer
timestamp(year, month, day, hour, minute, second) \u2192 integer
timestamp(timezone, year, month, day, hour, minute, second) \u2192 integer
timestamp(year, month, day, hour, minute, second) \u2192 series[integer]
timestamp(timezone, year, month, day, hour, minute, second) \u2192 series[integer]
//@version=4
study(\"My\u00a0Script\")
plot(timestamp(2016,\u00a001,\u00a019,\u00a009,\u00a030),\u00a0linewidth=3,\u00a0color=color.green)
plot(timestamp(syminfo.timezone,\u00a02016,\u00a001,\u00a019,\u00a009,\u00a030),\u00a0color=color.blue)
plot(timestamp(2016,\u00a001,\u00a019,\u00a009,\u00a030),\u00a0color=color.yellow)
plot(timestamp(\"GMT+6\",\u00a02016,\u00a001,\u00a019,\u00a009,\u00a030))
plot(timestamp(2019,\u00a006,\u00a019,\u00a009,\u00a030,\u00a015),\u00a0color=color.lime)
plot(timestamp(\"GMT+3\",\u00a02019,\u00a006,\u00a019,\u00a009,\u00a030,\u00a015),\u00a0color=color.fuchsia)
plot(timestamp(\"Feb\u00a001\u00a02020\u00a022:10:05\"))
plot(timestamp(\"2011-10-10T14:48:00\"))
plot(timestamp(\"04\u00a0Dec\u00a01995\u00a000:12:00\u00a0GMT+5\"))
todegrees(radians) \u2192 series[float]
tonumber(x) \u2192 series[float]
toradians(degrees) \u2192 series[float]
tostring(x) \u2192 series[string]
tostring(x, y) \u2192 series[string]
tostring(x) \u2192 string
tostring(x, y) \u2192 string
tr(handle_na) \u2192 series[float]
tsi(source, short_length, long_length) \u2192 series[float]
valuewhen(condition, source, occurrence) \u2192 series[float]
valuewhen(condition, source, occurrence) \u2192 series[integer]
slow\u00a0=\u00a0sma(close,\u00a07)
fast\u00a0=\u00a0sma(close,\u00a014)
//\u00a0get\u00a0value\u00a0of\u00a0close\u00a0on\u00a0second\u00a0cross\u00a0occurrence
valuewhen(cross(slow,\u00a0fast),\u00a0close,\u00a01)
variance(source, length) \u2192 series[float]
vwap(x) \u2192 series[float]
vwma(source, length) \u2192 series[float]
plot(vwma(close,\u00a015))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0less\u00a0efficient
pine_vwma(x,\u00a0y)\u00a0=>
\u00a0\u00a0\u00a0\u00a0sma(x\u00a0*\u00a0volume,\u00a0y)\u00a0/\u00a0sma(volume,\u00a0y)
plot(pine_vwma(close,\u00a015))
weekofyear(time) \u2192 series[integer]
weekofyear(time, timezone) \u2192 series[integer]
wma(source, length) \u2192 series[float]
plot(wma(close,\u00a015))
//\u00a0same\u00a0on\u00a0pine,\u00a0but\u00a0much\u00a0less\u00a0efficient
pine_wma(x,\u00a0y)\u00a0=>
\u00a0\u00a0\u00a0\u00a0norm\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0sum\u00a0=\u00a00.0
\u00a0\u00a0\u00a0\u00a0for\u00a0i\u00a0=\u00a00\u00a0to\u00a0y\u00a0-\u00a01
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0weight\u00a0=\u00a0(y\u00a0-\u00a0i)\u00a0*\u00a0y
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0norm\u00a0:=\u00a0norm\u00a0+\u00a0weight
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sum\u00a0:=\u00a0sum\u00a0+\u00a0x[i]\u00a0*\u00a0weight
\u00a0\u00a0\u00a0\u00a0sum\u00a0/\u00a0norm
plot(pine_wma(close,\u00a015))
wpr(length) \u2192 series[float]
//@version=4
study(\"Williams\u00a0%R\",\u00a0shorttitle=\"%R\",\u00a0format=format.price,\u00a0precision=2)
plot(wpr(14),\u00a0title=\"%R\",\u00a0color=#ff6d00,\u00a0transp=0)
year(time) \u2192 series[integer]
year(time, timezone) \u2192 series[integer]
plot(bar_index)
plot(bar_index\u00a0>\u00a05000\u00a0?\u00a0close\u00a0:\u00a00)
study('My\u00a0Script')
plot(iii,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_iii()\u00a0=>
\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0(2\u00a0*\u00a0close\u00a0-\u00a0high\u00a0-\u00a0low)\u00a0/\u00a0((high\u00a0-\u00a0low)\u00a0*\u00a0volume)
plot(f_iii())
bar_index\u00a0<\u00a010\u00a0?\u00a0na\u00a0:\u00a0close\u00a0\u00a0\u00a0\u00a0//\u00a0CORRECT
close\u00a0==\u00a0na\u00a0?\u00a0close[1]\u00a0:\u00a0close\u00a0\u00a0\u00a0\u00a0//\u00a0INCORRECT!
na(close)\u00a0?\u00a0close[1]\u00a0:\u00a0close\u00a0\u00a0\u00a0\u00a0//\u00a0CORRECT
//@version=4
study('My\u00a0Script')
plot(nvi,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_nvi()\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0nvi\u00a0=\u00a01.0
\u00a0\u00a0\u00a0\u00a0float\u00a0prevNvi\u00a0=\u00a0(nz(nvi[1],\u00a00.0)\u00a0==\u00a00.0)\u00a0\u00a0?\u00a01.0:\u00a0nvi[1]
\u00a0\u00a0\u00a0\u00a0if\u00a0nz(close,\u00a00.0)\u00a0==\u00a00.0\u00a0or\u00a0nz(close[1],\u00a00.0)\u00a0==\u00a00.0
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nvi\u00a0:=\u00a0prevNvi
\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nvi\u00a0:=\u00a0(volume\u00a0<\u00a0nz(volume[1],\u00a00.0))\u00a0?\u00a0prevNvi\u00a0+\u00a0((close\u00a0-\u00a0close[1])\u00a0/\u00a0close[1])\u00a0*\u00a0prevNvi\u00a0:\u00a0prevNvi
\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0nvi
plot(f_nvi())
study('My\u00a0Script')
plot(obv,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_obv()\u00a0=>
\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0cum(sign(change(close))\u00a0*\u00a0volume)
plot(f_obv())
//@version=4
study('My\u00a0Script')
plot(pvi,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_pvi()\u00a0=>
\u00a0\u00a0\u00a0\u00a0float\u00a0pvi\u00a0=\u00a01.0
\u00a0\u00a0\u00a0\u00a0float\u00a0prevPvi\u00a0=\u00a0(nz(pvi[1],\u00a00.0)\u00a0==\u00a00.0)\u00a0\u00a0?\u00a01.0:\u00a0pvi[1]
\u00a0\u00a0\u00a0\u00a0if\u00a0nz(close,\u00a00.0)\u00a0==\u00a00.0\u00a0or\u00a0nz(close[1],\u00a00.0)\u00a0==\u00a00.0
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pvi\u00a0:=\u00a0prevPvi
\u00a0\u00a0\u00a0\u00a0else
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pvi\u00a0:=\u00a0(volume\u00a0>\u00a0nz(volume[1],\u00a00.0))\u00a0?\u00a0prevPvi\u00a0+\u00a0((close\u00a0-\u00a0close[1])\u00a0/\u00a0close[1])\u00a0*\u00a0prevPvi\u00a0:\u00a0prevPvi
\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0pvi
plot(f_pvi())
study('My\u00a0Script')
plot(pvt,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_pvt()\u00a0=>
\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0cum((change(close)\u00a0/\u00a0close[1])\u00a0*\u00a0volume)
plot(f_pvt())
If\u00a0current\u00a0chart\u00a0symbol\u00a0is\u00a0'BATS:MSFT'\u00a0then\u00a0syminfo.prefix\u00a0is\u00a0'BATS'.
For\u00a0example\u00a0if\u00a0current\u00a0chart\u00a0ticker\u00a0is\u00a0'CLM2014',\u00a0would\u00a0return\u00a0'CL'.
dayofmonth(time) can be lower by 1 than the date of the trading day, because the bar for the current day actually opens one day prior.dayofmonth(time) can be lower by 1 than the date of the trading day, because the bar for the current day actually opens one day prior."
+ ]
+ },
+ {
+ "name": "time_close",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#var_time_close",
+ "fragment": "var_time_close",
+ "info": "time, which would return the timestamp for Sunday at 17:00 for the Monday daily bar, time_tradingday will return the timestamp for Monday, 00:00.time_tradingday returns the trading day of the last day inside the bar (e.g. on 1W, it will return the last trading day of the week).time, which would return the timestamp for Sunday at 17:00 for the Monday daily bar, time_tradingday will return the timestamp for Monday, 00:00.",
+ "When used on timeframes higher than 1D, time_tradingday returns the trading day of the last day inside the bar (e.g. on 1W, it will return the last trading day of the week)."
+ ]
+ },
+ {
+ "name": "timeframe.isdaily",
+ "url": "https://www.tradingview.com/pine-script-reference/v4/#var_timeframe.isdaily",
+ "fragment": "var_timeframe.isdaily",
+ "info": "study('My\u00a0Script')
plot(wad,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_wad()\u00a0=>
\u00a0\u00a0\u00a0\u00a0trueHigh\u00a0=\u00a0max(high,\u00a0close[1])
\u00a0\u00a0\u00a0\u00a0trueLow\u00a0=\u00a0min(low,\u00a0close[1])
\u00a0\u00a0\u00a0\u00a0mom\u00a0=\u00a0change(close)
\u00a0\u00a0\u00a0\u00a0gain\u00a0=\u00a0(mom\u00a0>\u00a00)\u00a0?\u00a0close\u00a0-\u00a0trueLow\u00a0:\u00a0(mom\u00a0<\u00a00)\u00a0?\u00a0close\u00a0-\u00a0trueHigh\u00a0:\u00a00
\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0cum(gain)
plot(f_wad())
study('My\u00a0Script')
plot(wvad,\u00a0color=color.yellow)
//\u00a0the\u00a0same\u00a0on\u00a0pine
f_wvad()\u00a0=>
\u00a0\u00a0\u00a0\u00a0return\u00a0=\u00a0(close\u00a0-\u00a0open)\u00a0/\u00a0(high\u00a0-\u00a0low)\u00a0*\u00a0volume
plot(f_wvad())
freq parameter of the alert() function.freq parameter of the alert() function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "alert.freq_once_per_bar",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_alert.freq_once_per_bar",
+ "fragment": "const_alert.freq_once_per_bar",
+ "info": "freq parameter of the alert() function.freq parameter of the alert() function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "alert.freq_once_per_bar_close",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_alert.freq_once_per_bar_close",
+ "fragment": "const_alert.freq_once_per_bar_close",
+ "info": "freq parameter of the alert() function.freq parameter of the alert() function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "backadjustment.inherit",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_backadjustment.inherit",
+ "fragment": "const_backadjustment.inherit",
+ "info": "backadjustment parameter in ticker.new and ticker.modify functions.backadjustment parameter in ticker.new and ticker.modify functions.",
+ "type": "const backadjustment",
+ "remarks": ""
+ },
+ {
+ "name": "backadjustment.off",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_backadjustment.off",
+ "fragment": "const_backadjustment.off",
+ "info": "backadjustment parameter in ticker.new and ticker.modify functions.backadjustment parameter in ticker.new and ticker.modify functions.",
+ "type": "const backadjustment",
+ "remarks": ""
+ },
+ {
+ "name": "backadjustment.on",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_backadjustment.on",
+ "fragment": "const_backadjustment.on",
+ "info": "backadjustment parameter in ticker.new and ticker.modify functions.backadjustment parameter in ticker.new and ticker.modify functions.",
+ "type": "const backadjustment",
+ "remarks": ""
+ },
+ {
+ "name": "barmerge.gaps_off",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_barmerge.gaps_off",
+ "fragment": "const_barmerge.gaps_off",
+ "info": "display parameter of plot*() and input*() functions. Displays plotted or input values in all possible locations.",
+ "type": "const plot_simple_display",
+ "remarks": ""
+ },
+ {
+ "name": "display.data_window",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_display.data_window",
+ "fragment": "const_display.data_window",
+ "info": "display parameter of plot*() and input*() functions. Displays plotted or input values in the Data Window, a menu accessible from the chart's right sidebar.",
+ "type": "const plot_display",
+ "remarks": ""
+ },
+ {
+ "name": "display.none",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_display.none",
+ "fragment": "const_display.none",
+ "info": "display parameter of plot*() and input*() functions. plot*() functions using this will not display their plotted values anywhere. However, alert template messages and fill functions can still use the values, and they will appear in exported chart data. input*() functions using this constant will only display their values within the script's settings.display parameter of plot*() and input*() functions. plot*() functions using this will not display their plotted values anywhere. However, alert template messages and fill functions can still use the values, and they will appear in exported chart data. input*() functions using this constant will only display their values within the script's settings.",
+ "type": "const plot_simple_display",
+ "remarks": ""
+ },
+ {
+ "name": "display.pane",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_display.pane",
+ "fragment": "const_display.pane",
+ "info": "display parameter of plot*() functions. Displays plotted values in the chart pane used by the script.",
+ "type": "const plot_display",
+ "remarks": ""
+ },
+ {
+ "name": "display.price_scale",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_display.price_scale",
+ "fragment": "const_display.price_scale",
+ "info": "display parameter of plot*() functions. Displays the plot\u2019s label and value on the price scale if the chart's settings allow it.",
+ "type": "const plot_display",
+ "remarks": ""
+ },
+ {
+ "name": "display.status_line",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_display.status_line",
+ "fragment": "const_display.status_line",
+ "info": "display parameter of plot*() and input*() functions. Displays plotted or input values in the status line next to the script's name on the chart if the chart's settings allow it.display parameter of plot*() and input*() functions. Displays plotted or input values in the status line next to the script's name on the chart if the chart's settings allow it.",
+ "type": "const plot_display",
+ "remarks": ""
+ },
+ {
+ "name": "dividends.gross",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_dividends.gross",
+ "fragment": "const_dividends.gross",
+ "info": "plot*() call uses this format option, the function's precision parameter will not affect the result.style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_areabr",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_areabr",
+ "fragment": "const_plot.style_areabr",
+ "info": "style parameter in the plot function. Similar to plot.style_area, except the gaps in the data are not filled.style parameter in the plot function. Similar to plot.style_area, except the gaps in the data are not filled.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_circles",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_circles",
+ "fragment": "const_plot.style_circles",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_columns",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_columns",
+ "fragment": "const_plot.style_columns",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_cross",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_cross",
+ "fragment": "const_plot.style_cross",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_histogram",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_histogram",
+ "fragment": "const_plot.style_histogram",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_line",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_line",
+ "fragment": "const_plot.style_line",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_linebr",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_linebr",
+ "fragment": "const_plot.style_linebr",
+ "info": "style parameter in the plot function. Similar to plot.style_line, except the gaps in the data are not filled.style parameter in the plot function. Similar to plot.style_line, except the gaps in the data are not filled.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_stepline",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_stepline",
+ "fragment": "const_plot.style_stepline",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_stepline_diamond",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_stepline_diamond",
+ "fragment": "const_plot.style_stepline_diamond",
+ "info": "style parameter in the plot function. Similar to plot.style_stepline, except the data changes are also marked with the Diamond shapes.style parameter in the plot function. Similar to plot.style_stepline, except the data changes are also marked with the Diamond shapes.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "plot.style_steplinebr",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_plot.style_steplinebr",
+ "fragment": "const_plot.style_steplinebr",
+ "info": "style parameter in the plot function.style parameter in the plot function.",
+ "type": "const plot_style",
+ "remarks": ""
+ },
+ {
+ "name": "position.bottom_center",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_position.bottom_center",
+ "fragment": "const_position.bottom_center",
+ "info": "settlement_as_close parameter in ticker.new and ticker.modify functions.settlement_as_close parameter in ticker.new and ticker.modify functions.",
+ "type": "const settlement",
+ "remarks": ""
+ },
+ {
+ "name": "settlement_as_close.off",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_settlement_as_close.off",
+ "fragment": "const_settlement_as_close.off",
+ "info": "settlement_as_close parameter in ticker.new and ticker.modify functions.settlement_as_close parameter in ticker.new and ticker.modify functions.",
+ "type": "const settlement",
+ "remarks": ""
+ },
+ {
+ "name": "settlement_as_close.on",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_settlement_as_close.on",
+ "fragment": "const_settlement_as_close.on",
+ "info": "settlement_as_close parameter in ticker.new and ticker.modify functions.settlement_as_close parameter in ticker.new and ticker.modify functions.",
+ "type": "const settlement",
+ "remarks": ""
+ },
+ {
+ "name": "shape.arrowdown",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.arrowdown",
+ "fragment": "const_shape.arrowdown",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.arrowup",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.arrowup",
+ "fragment": "const_shape.arrowup",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.circle",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.circle",
+ "fragment": "const_shape.circle",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.cross",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.cross",
+ "fragment": "const_shape.cross",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.diamond",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.diamond",
+ "fragment": "const_shape.diamond",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.flag",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.flag",
+ "fragment": "const_shape.flag",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.labeldown",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.labeldown",
+ "fragment": "const_shape.labeldown",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.labelup",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.labelup",
+ "fragment": "const_shape.labelup",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.square",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.square",
+ "fragment": "const_shape.square",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.triangledown",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.triangledown",
+ "fragment": "const_shape.triangledown",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.triangleup",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.triangleup",
+ "fragment": "const_shape.triangleup",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "shape.xcross",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_shape.xcross",
+ "fragment": "const_shape.xcross",
+ "info": "",
+ "description": "Shape style for plotshape function.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "size.auto",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_size.auto",
+ "fragment": "const_size.auto",
+ "info": "default_qty_type parameter in the strategy declaration statement. It is only relevant when no value is used for the \u2018qty\u2019 parameter in strategy.entry or strategy.order function calls. It specifies that an amount of cash in the strategy.account_currency will be used to enter trades.//@version=5
strategy(\"strategy.cash\",\u00a0overlay\u00a0=\u00a0true,\u00a0default_qty_value\u00a0=\u00a050,\u00a0default_qty_type\u00a0=\u00a0strategy.cash,\u00a0initial_capital\u00a0=\u00a01000000)
if\u00a0bar_index\u00a0==\u00a00
\u00a0\u00a0\u00a0\u00a0//\u00a0As\u00a0\u2018qty\u2019\u00a0is\u00a0not\u00a0defined,\u00a0the\u00a0previously\u00a0defined\u00a0values\u00a0for\u00a0the\u00a0`default_qty_type`\u00a0and\u00a0`default_qty_value`\u00a0parameters\u00a0are\u00a0used\u00a0to\u00a0enter\u00a0trades,\u00a0namely\u00a050\u00a0units\u00a0of\u00a0cash\u00a0in\u00a0the\u00a0currency\u00a0of\u00a0`strategy.account_currency`.
\u00a0\u00a0\u00a0\u00a0//\u00a0`qty`\u00a0is\u00a0calculated\u00a0as\u00a0(default_qty_value)/(close\u00a0price).\u00a0If\u00a0current\u00a0price\u00a0is\u00a0$5,\u00a0then\u00a0qty\u00a0=\u00a050/5\u00a0=\u00a010.
\u00a0\u00a0\u00a0\u00a0strategy.entry(\"EN\",\u00a0strategy.long)
if\u00a0bar_index\u00a0==\u00a02
\u00a0\u00a0\u00a0\u00a0strategy.close(\"EN\")
default_qty_type parameter in the strategy declaration statement. It is only relevant when no value is used for the \u2018qty\u2019 parameter in strategy.entry or strategy.order function calls. It specifies that an amount of cash in the strategy.account_currency will be used to enter trades.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "strategy.commission.cash_per_contract",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_strategy.commission.cash_per_contract",
+ "fragment": "const_strategy.commission.cash_per_contract",
+ "info": "default_qty_type parameter in the strategy declaration statement. It is only relevant when no value is used for the \u2018qty\u2019 parameter in strategy.entry or strategy.order function calls. It specifies that a number of contracts/shares/lots will be used to enter trades.//@version=5
strategy(\"strategy.fixed\",\u00a0overlay\u00a0=\u00a0true,\u00a0default_qty_value\u00a0=\u00a050,\u00a0default_qty_type\u00a0=\u00a0strategy.fixed,\u00a0initial_capital\u00a0=\u00a01000000)
if\u00a0bar_index\u00a0==\u00a00
\u00a0\u00a0\u00a0\u00a0//\u00a0As\u00a0\u2018qty\u2019\u00a0is\u00a0not\u00a0defined,\u00a0the\u00a0previously\u00a0defined\u00a0values\u00a0for\u00a0the\u00a0`default_qty_type`\u00a0and\u00a0`default_qty_value`\u00a0parameters\u00a0are\u00a0used\u00a0to\u00a0enter\u00a0trades,\u00a0namely\u00a050\u00a0contracts.
\u00a0\u00a0\u00a0\u00a0//\u00a0qty\u00a0=\u00a050
\u00a0\u00a0\u00a0\u00a0strategy.entry(\"EN\",\u00a0strategy.long)
if\u00a0bar_index\u00a0==\u00a02
\u00a0\u00a0\u00a0\u00a0strategy.close(\"EN\")
default_qty_type parameter in the strategy declaration statement. It is only relevant when no value is used for the \u2018qty\u2019 parameter in strategy.entry or strategy.order function calls. It specifies that a number of contracts/shares/lots will be used to enter trades.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "strategy.long",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_strategy.long",
+ "fragment": "const_strategy.long",
+ "info": "direction parameter of the strategy.entry and strategy.order commands. It specifies that the command creates a buy order.direction parameter of the strategy.entry and strategy.order commands. It specifies that the command creates a buy order.",
+ "type": "const strategy_direction",
+ "remarks": ""
+ },
+ {
+ "name": "strategy.oca.cancel",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_strategy.oca.cancel",
+ "fragment": "const_strategy.oca.cancel",
+ "info": "oca_type parameter of the strategy.entry and strategy.order commands. It specifies that the strategy cancels the unfilled order when another order with the same oca_name and oca_type executes.oca_* arguments, the strategy cannot fully or partially cancel either one.oca_type parameter of the strategy.entry and strategy.order commands. It specifies that the strategy cancels the unfilled order when another order with the same oca_name and oca_type executes.",
+ "type": "const string",
+ "remarks": [
+ "Strategies cannot cancel or reduce pending orders from an OCA group if they execute on the same tick. For example, if the market price triggers two stop orders from strategy.order calls with the same oca_* arguments, the strategy cannot fully or partially cancel either one."
+ ]
+ },
+ {
+ "name": "strategy.oca.none",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_strategy.oca.none",
+ "fragment": "const_strategy.oca.none",
+ "info": "oca_type parameter of the strategy.entry and strategy.order commands. It specifies that the order executes independently of all other orders, including those with the same oca_name.oca_type parameter of the strategy.entry and strategy.order commands. It specifies that the order executes independently of all other orders, including those with the same oca_name.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "strategy.oca.reduce",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_strategy.oca.reduce",
+ "fragment": "const_strategy.oca.reduce",
+ "info": "oca_type parameter of the strategy.entry and strategy.order commands. It specifies that when another order with the same oca_name and oca_type executes, the strategy reduces the unfilled order by that order's size. If the unfilled order's size reaches 0 after reduction, it is the same as canceling the order entirely.oca_* arguments, the strategy cannot fully or partially cancel either one.oca_type parameter of the strategy.entry and strategy.order commands. It specifies that when another order with the same oca_name and oca_type executes, the strategy reduces the unfilled order by that order's size. If the unfilled order's size reaches 0 after reduction, it is the same as canceling the order entirely.",
+ "type": "const string",
+ "remarks": [
+ "Strategies cannot cancel or reduce pending orders from an OCA group if they execute on the same tick. For example, if the market price triggers two stop orders from strategy.order calls with the same oca_* arguments, the strategy cannot fully or partially cancel either one.",
+ "Orders from strategy.exit automatically use this OCA type, and they belong to the same OCA group by default."
+ ]
+ },
+ {
+ "name": "strategy.percent_of_equity",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_strategy.percent_of_equity",
+ "fragment": "const_strategy.percent_of_equity",
+ "info": "default_qty_type parameter in the strategy declaration statement. It is only relevant when no value is used for the \u2018qty\u2019 parameter in strategy.entry or strategy.order function calls. It specifies that a percentage (0-100) of equity will be used to enter trades.//@version=5
strategy(\"strategy.percent_of_equity\",\u00a0overlay\u00a0=\u00a0false,\u00a0default_qty_value\u00a0=\u00a0100,\u00a0default_qty_type\u00a0=\u00a0strategy.percent_of_equity,\u00a0initial_capital\u00a0=\u00a01000000)
//\u00a0As\u00a0\u2018qty\u2019\u00a0is\u00a0not\u00a0defined,\u00a0the\u00a0previously\u00a0defined\u00a0values\u00a0for\u00a0the\u00a0`default_qty_type`\u00a0and\u00a0`default_qty_value`\u00a0parameters\u00a0are\u00a0used\u00a0to\u00a0enter\u00a0trades,\u00a0namely\u00a0100%\u00a0of\u00a0available\u00a0equity.
if\u00a0bar_index\u00a0==\u00a00
\u00a0\u00a0\u00a0\u00a0strategy.entry(\"EN\",\u00a0strategy.long)
if\u00a0bar_index\u00a0==\u00a02
\u00a0\u00a0\u00a0\u00a0strategy.close(\"EN\")
plot(strategy.equity)
\u00a0//\u00a0The\u00a0\u2018qty\u2019\u00a0parameter\u00a0is\u00a0set\u00a0to\u00a010.\u00a0Entering\u00a0position\u00a0with\u00a0fixed\u00a0size\u00a0of\u00a010\u00a0contracts\u00a0and\u00a0entry\u00a0market\u00a0price\u00a0=\u00a0(10\u00a0*\u00a0close).
if\u00a0bar_index\u00a0==\u00a04
\u00a0\u00a0\u00a0\u00a0strategy.entry(\"EN\",\u00a0strategy.long,\u00a0qty\u00a0=\u00a010)
if\u00a0bar_index\u00a0==\u00a06
\u00a0\u00a0\u00a0\u00a0strategy.close(\"EN\")
default_qty_type parameter in the strategy declaration statement. It is only relevant when no value is used for the \u2018qty\u2019 parameter in strategy.entry or strategy.order function calls. It specifies that a percentage (0-100) of equity will be used to enter trades.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "strategy.short",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_strategy.short",
+ "fragment": "const_strategy.short",
+ "info": "direction parameter of the strategy.entry and strategy.order commands. It specifies that the command creates a sell order.direction parameter of the strategy.entry and strategy.order commands. It specifies that the command creates a sell order.",
+ "type": "const strategy_direction",
+ "remarks": ""
+ },
+ {
+ "name": "text.align_bottom",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_text.align_bottom",
+ "fragment": "const_text.align_bottom",
+ "info": "xloc = xloc.bar_index, the drawing object treats each x-coordinate as a bar_index value.xloc = xloc.bar_index, the drawing object treats each x-coordinate as a bar_index value.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "xloc.bar_time",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_xloc.bar_time",
+ "fragment": "const_xloc.bar_time",
+ "info": "xloc = xloc.bar_time, the drawing object treats each x-coordinate as a UNIX timestamp, expressed in milliseconds.xloc = xloc.bar_time, the drawing object treats each x-coordinate as a UNIX timestamp, expressed in milliseconds.",
+ "type": "const string",
+ "remarks": ""
+ },
+ {
+ "name": "yloc.abovebar",
+ "url": "https://www.tradingview.com/pine-script-reference/v5/#const_yloc.abovebar",
+ "fragment": "const_yloc.abovebar",
+ "info": "alert(message, freq) \u2192 void
//@version=5
indicator(\"`alert()`\u00a0example\",\u00a0\"\",\u00a0true)
ma\u00a0=\u00a0ta.sma(close,\u00a014)
xUp\u00a0=\u00a0ta.crossover(close,\u00a0ma)
if\u00a0xUp
\u00a0\u00a0\u00a0\u00a0//\u00a0Trigger\u00a0the\u00a0alert\u00a0the\u00a0first\u00a0time\u00a0a\u00a0cross\u00a0occurs\u00a0during\u00a0the\u00a0real-time\u00a0bar.
\u00a0\u00a0\u00a0\u00a0alert(\"Price\u00a0(\"\u00a0+\u00a0str.tostring(close)\u00a0+\u00a0\")\u00a0crossed\u00a0over\u00a0MA\u00a0(\"\u00a0+\u00a0str.tostring(ma)\u00a0+\u00a0\u00a0\").\",\u00a0alert.freq_once_per_bar)
plot(ma)
plotchar(xUp,\u00a0\"xUp\",\u00a0\"\u25b2\",\u00a0location.top,\u00a0size\u00a0=\u00a0size.tiny)
alertcondition(condition, title, message) \u2192 void
//@version=5
indicator(\"alertcondition\",\u00a0overlay=true)
alertcondition(close\u00a0>=\u00a0open,\u00a0title='Alert\u00a0on\u00a0Green\u00a0Bar',\u00a0message='Green\u00a0Bar!')
array.abs(id) \u2192 array<float>
array.abs(id) \u2192 array<int>
array.avg(id) \u2192 series float
array.avg(id) \u2192 series int
//@version=5
indicator(\"array.avg\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.avg(a))
array.binary_search(id, val) \u2192 series int
//@version=5
indicator(\"array.binary_search\")
a\u00a0=\u00a0array.from(5,\u00a0-2,\u00a00,\u00a09,\u00a01)
array.sort(a)\u00a0//\u00a0[-2,\u00a00,\u00a01,\u00a05,\u00a09]
position\u00a0=\u00a0array.binary_search(a,\u00a00)\u00a0//\u00a01
plot(position)
array.binary_search_leftmost(id, val) \u2192 series int
//@version=5
indicator(\"array.binary_search_leftmost\")
a\u00a0=\u00a0array.from(5,\u00a0-2,\u00a00,\u00a09,\u00a01)
array.sort(a)\u00a0//\u00a0[-2,\u00a00,\u00a01,\u00a05,\u00a09]
position\u00a0=\u00a0array.binary_search_leftmost(a,\u00a03)\u00a0//\u00a02
plot(position)
//@version=5
indicator(\"array.binary_search_leftmost,\u00a0repetitive\u00a0elements\")
a\u00a0=\u00a0array.from(4,\u00a05,\u00a05,\u00a05)
//\u00a0Returns\u00a0the\u00a0index\u00a0of\u00a0the\u00a0first\u00a0instance.
position\u00a0=\u00a0array.binary_search_leftmost(a,\u00a05)\u00a0
plot(position)\u00a0//\u00a0Plots\u00a01
array.binary_search_rightmost(id, val) \u2192 series int
//@version=5
indicator(\"array.binary_search_rightmost\")
a\u00a0=\u00a0array.from(5,\u00a0-2,\u00a00,\u00a09,\u00a01)
array.sort(a)\u00a0//\u00a0[-2,\u00a00,\u00a01,\u00a05,\u00a09]
position\u00a0=\u00a0array.binary_search_rightmost(a,\u00a03)\u00a0//\u00a03
plot(position)
//@version=5
indicator(\"array.binary_search_rightmost,\u00a0repetitive\u00a0elements\")
a\u00a0=\u00a0array.from(4,\u00a05,\u00a05,\u00a05)
//\u00a0Returns\u00a0the\u00a0index\u00a0of\u00a0the\u00a0last\u00a0instance.
position\u00a0=\u00a0array.binary_search_rightmost(a,\u00a05)\u00a0
plot(position)\u00a0//\u00a0Plots\u00a03
array.clear(id) \u2192 void
//@version=5
indicator(\"array.clear\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
array.clear(a)
array.push(a,\u00a0close)
plot(array.get(a,0))
plot(array.size(a))
array.concat(id1, id2) \u2192 array<type>
//@version=5
indicator(\"array.concat\u00a0example\")
a\u00a0=\u00a0array.new_float(0,0)
b\u00a0=\u00a0array.new_float(0,0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a04
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0high[i])
\u00a0\u00a0\u00a0\u00a0array.push(b,\u00a0low[i])
c\u00a0=\u00a0array.concat(a,b)
plot(array.size(a))
plot(array.size(b))
plot(array.size(c))
array.copy(id) \u2192 array<type>
//@version=5
indicator(\"array.copy\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_float(length,\u00a0close)
b\u00a0=\u00a0array.copy(a)
a\u00a0:=\u00a0array.new_float(length,\u00a0open)
plot(array.sum(a)\u00a0/\u00a0length)
plot(array.sum(b)\u00a0/\u00a0length)
array.covariance(id1, id2, biased) \u2192 series float
//@version=5
indicator(\"array.covariance\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
b\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
\u00a0\u00a0\u00a0\u00a0array.push(b,\u00a0open[i])
plot(array.covariance(a,\u00a0b))
biased is true, function will calculate using a biased estimate of the entire population, if false - unbiased estimate of a sample.id array are true, false otherwise.",
+ "arguments": [
+ {
+ "argument": "id",
+ "type": "arrayarray.fill(id, value, index_from, index_to) \u2192 void
//@version=5
indicator(\"array.fill\u00a0example\")
a\u00a0=\u00a0array.new_float(10)
array.fill(a,\u00a0close)
plot(array.sum(a))
array.first(id) \u2192 series <type>
//@version=5
indicator(\"array.first\u00a0example\")
arr\u00a0=\u00a0array.new_int(3,\u00a010)
plot(array.first(arr))
array.from(arg0, arg1, ...) \u2192 array<series enum>
array.from(arg0, arg1, ...) \u2192 array<type>
array.from(arg0, arg1, ...) \u2192 array<label>
array.from(arg0, arg1, ...) \u2192 array<line>
array.from(arg0, arg1, ...) \u2192 array<box>
array.from(arg0, arg1, ...) \u2192 array<table>
array.from(arg0, arg1, ...) \u2192 array<linefill>
array.from(arg0, arg1, ...) \u2192 array<string>
array.from(arg0, arg1, ...) \u2192 array<color>
array.from(arg0, arg1, ...) \u2192 array<int>
array.from(arg0, arg1, ...) \u2192 array<float>
array.from(arg0, arg1, ...) \u2192 array<bool>
//@version=5
indicator(\"array.from_example\",\u00a0overlay\u00a0=\u00a0false)
arr\u00a0=\u00a0array.from(\"Hello\",\u00a0\"World!\")\u00a0//\u00a0arr\u00a0(array<string>)\u00a0will\u00a0contain\u00a02\u00a0elements:\u00a0{Hello},\u00a0{World!}.
plot(close)
array.get(id, index) \u2192 series <type>
//@version=5
indicator(\"array.get\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i]\u00a0-\u00a0open[i])
plot(array.get(a,\u00a09))
array.includes(id, value) \u2192 series bool
//@version=5
indicator(\"array.includes\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
p\u00a0=\u00a0close
if\u00a0array.includes(a,\u00a0high)
\u00a0\u00a0\u00a0\u00a0p\u00a0:=\u00a0open
plot(p)
array.indexof(id, value) \u2192 series int
//@version=5
indicator(\"array.indexof\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
index\u00a0=\u00a0array.indexof(a,\u00a0high)
plot(index)
array.insert(id, index, value) \u2192 void
//@version=5
indicator(\"array.insert\u00a0example\")
a\u00a0=\u00a0array.new_float(5,\u00a0close)
array.insert(a,\u00a00,\u00a0open)
plot(array.get(a,\u00a05))
array.join(id, separator) \u2192 series string
//@version=5
indicator(\"array.join\u00a0example\")
a\u00a0=\u00a0array.new_float(5,\u00a05)
label.new(bar_index,\u00a0close,\u00a0array.join(a,\u00a0\",\"))
array.last(id) \u2192 series <type>
//@version=5
indicator(\"array.last\u00a0example\")
arr\u00a0=\u00a0array.new_int(3,\u00a010)
plot(array.last(arr))
array.lastindexof(id, value) \u2192 series int
//@version=5
indicator(\"array.lastindexof\u00a0example\")
a\u00a0=\u00a0array.new_float(5,high)
index\u00a0=\u00a0array.lastindexof(a,\u00a0high)
plot(index)
array.max(id) \u2192 series float
array.max(id) \u2192 series int
array.max(id, nth) \u2192 series float
array.max(id, nth) \u2192 series int
//@version=5
indicator(\"array.max\")
a\u00a0=\u00a0array.from(5,\u00a0-2,\u00a00,\u00a09,\u00a01)
thirdHighest\u00a0=\u00a0array.max(a,\u00a02)\u00a0//\u00a01
plot(thirdHighest)
array.median(id) \u2192 series float
array.median(id) \u2192 series int
//@version=5
indicator(\"array.median\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.median(a))
array.min(id) \u2192 series float
array.min(id) \u2192 series int
array.min(id, nth) \u2192 series float
array.min(id, nth) \u2192 series int
//@version=5
indicator(\"array.min\")
a\u00a0=\u00a0array.from(5,\u00a0-2,\u00a00,\u00a09,\u00a01)
secondLowest\u00a0=\u00a0array.min(a,\u00a01)\u00a0//\u00a00
plot(secondLowest)
array.mode(id) \u2192 series float
array.mode(id) \u2192 series int
//@version=5
indicator(\"array.mode\u00a0example\")
a\u00a0=\u00a0array.new_float(0)
for\u00a0i\u00a0=\u00a00\u00a0to\u00a09
\u00a0\u00a0\u00a0\u00a0array.push(a,\u00a0close[i])
plot(array.mode(a))
id array. If none exists, returns the smallest value instead.array.new_bool(size, initial_value) \u2192 array<bool>
//@version=5
indicator(\"array.new_bool\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_bool(length,\u00a0close\u00a0>\u00a0open)
plot(array.get(a,\u00a00)\u00a0?\u00a0close\u00a0:\u00a0open)
array.new_box(size, initial_value) \u2192 array<box>
//@version=5
indicator(\"array.new_box\u00a0example\")
boxes\u00a0=\u00a0array.new_box()
array.push(boxes,\u00a0box.new(time,\u00a0close,\u00a0time+2,\u00a0low,\u00a0xloc=xloc.bar_time))
plot(1)
array.new_color(size, initial_value) \u2192 array<color>
//@version=5
indicator(\"array.new_color\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_color(length,\u00a0color.red)
plot(close,\u00a0color\u00a0=\u00a0array.get(a,\u00a00))
array.new_float(size, initial_value) \u2192 array<float>
//@version=5
indicator(\"array.new_float\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_float(length,\u00a0close)
plot(array.sum(a)\u00a0/\u00a0length)
array.new_int(size, initial_value) \u2192 array<int>
//@version=5
indicator(\"array.new_int\u00a0example\")
length\u00a0=\u00a05
a\u00a0=\u00a0array.new_int(length,\u00a0int(close))
plot(array.sum(a)\u00a0/\u00a0length)
array.new_label(size, initial_value) \u2192 array<label>
//@version=5
indicator(\"array.new_label\u00a0example\",\u00a0overlay\u00a0=\u00a0true,\u00a0max_labels_count\u00a0=\u00a0500)
//@variable\u00a0The\u00a0number\u00a0of\u00a0labels\u00a0to\u00a0show\u00a0on\u00a0the\u00a0chart.
int\u00a0labelCount\u00a0=\u00a0input.int(50,\u00a0\"Labels\u00a0to\u00a0show\",\u00a01,\u00a0500)
//@variable\u00a0An\u00a0array\u00a0of\u00a0`label`\u00a0objects.
var\u00a0array<label>\u00a0labelArray\u00a0=\u00a0array.new_label()
//@variable\u00a0A\u00a0`chart.point`\u00a0for\u00a0the\u00a0new\u00a0label.
labelPoint\u00a0=\u00a0chart.point.from_index(bar_index,\u00a0close)
//@variable\u00a0The\u00a0text\u00a0in\u00a0the\u00a0new\u00a0label.
string\u00a0labelText\u00a0=\u00a0na
//@variable\u00a0The\u00a0color\u00a0of\u00a0the\u00a0new\u00a0label.
color\u00a0labelColor\u00a0=\u00a0na
//@variable\u00a0The\u00a0style\u00a0of\u00a0the\u00a0new\u00a0label.
string\u00a0labelStyle\u00a0=\u00a0na
//\u00a0Set\u00a0the\u00a0label\u00a0attributes\u00a0for\u00a0rising\u00a0bars.
if\u00a0close\u00a0>\u00a0open
\u00a0\u00a0\u00a0\u00a0labelText\u00a0\u00a0:=\u00a0\"Rising\"
\u00a0\u00a0\u00a0\u00a0labelColor\u00a0:=\u00a0color.green
\u00a0\u00a0\u00a0\u00a0labelStyle\u00a0:=\u00a0label.style_label_down
//\u00a0Set\u00a0the\u00a0label\u00a0attributes\u00a0for\u00a0falling\u00a0bars.
else\u00a0if\u00a0close\u00a0<\u00a0open
\u00a0\u00a0\u00a0\u00a0labelText\u00a0\u00a0:=\u00a0\"Falling\"
\u00a0\u00a0\u00a0\u00a0labelColor\u00a0:=\u00a0color.red
\u00a0\u00a0\u00a0\u00a0labelStyle\u00a0:=\u00a0label.style_label_up
//\u00a0Add\u00a0a\u00a0new\u00a0label\u00a0to\u00a0the\u00a0`labelArray`\u00a0when\u00a0the\u00a0chart\u00a0bar\u00a0closed\u00a0at\u00a0a\u00a0new\u00a0value.
if\u00a0close\u00a0!=\u00a0open
\u00a0\u00a0\u00a0\u00a0labelArray.push(label.new(labelPoint,\u00a0labelText,\u00a0color\u00a0=\u00a0labelColor,\u00a0style\u00a0=\u00a0labelStyle))
//\u00a0Remove\u00a0the\u00a0first\u00a0element\u00a0and\u00a0delete\u00a0its\u00a0label\u00a0when\u00a0the\u00a0size\u00a0of\u00a0the\u00a0`labelArray`\u00a0exceeds\u00a0the\u00a0`labelCount`.
if\u00a0labelArray.size()\u00a0>\u00a0labelCount
\u00a0\u00a0\u00a0\u00a0label.delete(labelArray.shift())