Repository: shotgunsoftware/python-api Branch: master Commit: 921114c50dc6 Files: 84 Total size: 2.3 MB Directory structure: gitextract_6psy39k2/ ├── .coveragerc ├── .flake8 ├── .gitattributes ├── .gitignore ├── .pre-commit-config.yaml ├── HISTORY.rst ├── LICENSE ├── README.md ├── SECURITY.md ├── azure-pipelines-templates/ │ ├── run-tests.yml │ └── type_checking.yml ├── azure-pipelines.yml ├── developer/ │ └── README.md ├── docs/ │ ├── advanced/ │ │ ├── iron_python.rst │ │ └── packaging.rst │ ├── advanced.rst │ ├── authentication.rst │ ├── changelog.rst │ ├── cookbook/ │ │ ├── attachments.rst │ │ ├── examples/ │ │ │ ├── ami_handler.rst │ │ │ ├── ami_version_packager.rst │ │ │ ├── basic_create_shot.rst │ │ │ ├── basic_create_shot_task_template.rst │ │ │ ├── basic_create_version_link_shot.rst │ │ │ ├── basic_delete_shot.rst │ │ │ ├── basic_find_shot.rst │ │ │ ├── basic_sg_instance.rst │ │ │ ├── basic_update_shot.rst │ │ │ ├── basic_upload_thumbnail_version.rst │ │ │ └── svn_integration.rst │ │ ├── smart_cut_fields.rst │ │ ├── tasks/ │ │ │ ├── split_tasks.rst │ │ │ ├── task_dependencies.rst │ │ │ └── updating_tasks.rst │ │ ├── tasks.rst │ │ ├── tutorials.rst │ │ └── usage_tips.rst │ ├── cookbook.rst │ ├── index.rst │ ├── installation.rst │ └── reference.rst ├── setup.py ├── shotgun_api3/ │ ├── __init__.py │ ├── lib/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── __init__.py │ │ ├── certifi/ │ │ │ ├── __init__.py │ │ │ ├── __main__.py │ │ │ ├── cacert.pem │ │ │ ├── core.py │ │ │ └── py.typed │ │ ├── httplib2/ │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── cacerts.txt │ │ │ ├── certs.py │ │ │ ├── error.py │ │ │ ├── iri2uri.py │ │ │ └── socks.py │ │ ├── mockgun/ │ │ │ ├── __init__.py │ │ │ ├── errors.py │ │ │ ├── mockgun.py │ │ │ └── schema.py │ │ ├── pyparsing.py │ │ ├── requirements.txt │ │ └── sgtimezone.py │ ├── py.typed │ └── shotgun.py ├── software_credits ├── tests/ │ ├── __init__.py │ ├── base.py │ ├── empty.txt │ ├── example_config │ ├── mockgun/ │ │ ├── schema.pickle │ │ └── schema_entity.pickle │ ├── requirements.txt │ ├── run_appveyor.bat │ ├── test_api.py │ ├── test_api_long.py │ ├── test_client.py │ ├── test_config_file │ ├── test_mockgun.py │ ├── test_proxy.py │ └── test_unit.py └── update_httplib2.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .coveragerc ================================================ # Copyright (c) 2018 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. # # coverage.py configuration (https://pypi.org/project/coverage/) # [run] source=shotgun_api3 omit= shotgun_api3/lib/httplib2/* shotgun_api3/lib/certifi/* shotgun_api3/lib/pyparsing.py ================================================ FILE: .flake8 ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. [flake8] max-line-length = 120 exclude = shotgun_api3/lib/httplib2/*,tests/httplib2test.py ================================================ FILE: .gitattributes ================================================ # Handle line endings automatically for files detected as text # and leave all files detected as binary untouched. * text=auto # Force the following filetypes to have unix eols, so Windows does not break them *.pickle text eol=lf ================================================ FILE: .gitignore ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. #python specific *.pyc ## generic files to ignore *~ *.lock *.DS_Store *.swp *.out *.bak # test related tests/config .coverage .cache .travis-solo htmlcov test-output.xml coverage.xml # setup related build dist shotgun_api3.egg-info /%1 ================================================ FILE: .pre-commit-config.yaml ================================================ # Copyright (c) 2024, Shotgun Software Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # - Neither the name of the Shotgun Software Inc nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Styles the code properly # Exclude Third Pary components exclude: "shotgun_api3/lib/.*" # List of super useful formatters. repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: check-ast - id: check-case-conflict - id: check-executables-have-shebangs - id: check-merge-conflict - id: end-of-file-fixer - id: requirements-txt-fixer - id: trailing-whitespace - repo: https://github.com/psf/black rev: 26.1.0 hooks: - id: black ================================================ FILE: HISTORY.rst ================================================ ********************************************* Flow Production Tracking Python API Changelog ********************************************* Here you can see the full list of changes between each Python API release. v3.10.1 (2026 Feb 10) ===================== - Update bundled certifi to version 2026.1.4. v3.10.0 (2026 Feb 3) ==================== - Add support for Python 3.13. v3.9.2 (2025 Dec 10) ==================== - Add ``export_page`` method to Shotgun class. - Documentation has been updated to reflect this addition. v3.9.1 (2025 Nov 25) ==================== - Removed the deprecated ``CACertsHTTPSConnection`` class, which was no longer needed after dropping Python 2 support. - Added basic type annotations throughout the package to improve IDE support and code completion. Note: Some typing improvements are still in progress and will be refined in future releases. Special thanks to @chadrik for this contribution! - Introduced a new environment variable ``SHOTGUN_ALLOW_OLD_PYTHON`` to temporarily bypass Python version warnings for users still on Python 3.7 or 3.8. While this provides flexibility during transition, we strongly recommend upgrading to Python 3.9 or newer for continued support and security updates. - Enhanced payload optimization for entity dictionaries, making it more flexible and preventing potential issues when working with special fields like ``type`` and ``url``. - Updated attachment documentation with detailed information about the ``relative_path`` field and its usage. - Python versions older than 3.9 are now deprecated. A runtime warning will be displayed during initialization if you're using Python 3.7 or 3.8. Please plan to upgrade to Python 3.9 or newer as these older versions will not be supported in future releases. v3.9.0 (2025 Sep 10) ==================== - Removed Python 2 code. - Removed the six module. Note: if your code depends on the six library previously included in this package, you will need to update it, as it is no longer supported. v3.8.5 (2025 Jul 31) ==================== - We don't want to retry on general exceptions (e.g. timeout or remote disconnection) because we might send a resource modification request (create, batch create, etc) and we can end up duplicating things. v3.8.4 (2025 Jun 11) ==================== - Replace ``utcfromtimestamp`` to prevent breaking changes in Python 3.12. v3.8.3 (2025 May 22) ==================== - Add improvements to Mockgun. Ensure string comparison are case insensitive. Ignore duplicate entities when ``multi_entity_update_mode`` is added. Support for ``None`` in mockgun when using ordering. Thank you rlessardrodeofx, slingshotsys, and MHendricks for your contributions. - Minor fixes on unit tests and documentation. v3.8.2 (2025 Mar 11) ==================== - Prevent flaky disconnection when uploading thumbnails on publish. There's a flaky disconnection when the publisher uploads the thumbnail to the server. The most common errors were: ``Connection closed by peer`` and ``URLopen error EOF occurred in violation of protocol ssl.c:1006``. v3.8.1 (2025 Feb 25) ==================== - Upgrade certifi to 2024.12.14. - Apply black 25.1.0 formatting to the source code. - Update Software Credits v3.8.0 (2025 Feb 7) =================== - Extend the payload optimizations to the ``in`` and ``not_in`` filters and the ``update`` method. - The payload optimization is now enabled by default. It can be disabled with the ``SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION`` environment variable. v3.7.0 (2024 Dec 9) =================== - Remove unnecessary data in the payload when combining related queries before sending it to the server. This would improve overall performance decreasing network latency and server processing. See documentation for more information. v3.6.2 (2024 Aug 13) ==================== - Remove Ticket entity reference and prepare this to run in CI. - Condition auth for Jenkins environment. - Update certifi to 2024.7.4. - FIRST PHASE Python2 removing. v3.6.1 (2024 Jun 6) =================== - Adds multi_entity_update_modes support to mockgun ``update()`` and ``batch()`` methods. - Implements a retry strategy only when encountering an URLError or SSLEOFError. - Fixes the issue with deleting prefix and suffix for ``display_name`` variable at the moment of upload for a local install. - Clarifies the use of ``_build_opener`` in ``download_attachment()``. v3.6.0 (2024 May 1) =================== - Drop support for Python 2.7 - certifi version changed to 2024.2.2 - Documentation update v3.5.1 (2024 Apr 3) =================== - Documentation: Revert to Shotgun in the API Reference headers to keep consistency with the API methods - Mockgun: fix entity data type - Mockgun: add support for ``add_user_agent`` and ``set_session_uuid`` methods v3.5.0 (2024 Mar 26) ==================== - Rebranding component for Flow Production Tracking v3.4.2 (2024 Feb 6) =================== - Add support for Python 3.11 v3.4.1 (2024 Jan 29) ==================== - Flaky Tests - Documentation: Fix issue regarding "in" filter prototype - Documentation: Travis badge image is no working anymore - Documentation: Add ``user_subscription_read`` and ``user_subscription_create`` methods - Update Python Certifi license block - Add methods for the user_subscriptions API end points - Retry ShotGrid request also on error 504 - Retry S3 uploads on error 500 - Comment typing annotation breaks Python 2 compatibility - Add field type ``entity_type`` to mockgun v3.4.0 (2023 Sep 22) ==================== - Started support for Python 3.10 for CI. - Add documentation for PublishedFiles preset filters. - Upgrade httplib2 to 0.22.0. - Update licensing. - Updates Autodesk URLs. - Fix flaky tests. v3.3.6 (2023 Aug 29) ==================== - Update docs for entity fields. - Fix typo. - Fix incorrect hint. - Reformat code examples to prevent text overflow. - Bump certifi from 2020.06.20 to 2022.12.7 in /shotgun_api3/lib. - Skip SG-MIM entities. - Replace shotgunsoftware references. - Deprecation of Python 2. - Security upgrade certifi to latest version 2023.07.22. v3.3.5 (2023 Jan 5) ==================== - Add "Setting Up Your Environment with the Python API" to Python Docs (python-api docs). - [Python API Documentation] Update Python version requirements. - Rename Shotgun to Shotgrid in every about text like tk-multi-demo git repository. - Rename Shotgun servers to ShotGrid servers in the documentation. v3.3.4 (2022 June 9) ==================== - Adds Retries on 503 Errors when uploading to S3. - Updates AMI Documentation to Support Python 3. - Adds Python 3.9 coverage in Azure Pipeline CI tests. - Fixes git protocol for the installation. v3.3.3 (2021 December 1) ========================== - Replaces shotgunsoftware urls with Autodesk Knowledge Network and ShotGrid Developer Documentation pages. v3.3.2 (2021 September 27) ========================== - Updates version of httplib2. v3.3.1 (2021 July 12) ===================== - Implements retries with incremental backoff on 502 errors. v3.3.0 (2021 Jun 7) =================== - Updates documentation and error messages to mention ShotGrid. v3.2.6 (2020 Nov 24) ===================== - Now includes ``certifi`` and defaults to using the certificates provided with that module. v3.2.4 (2020 May 25) ===================== - Updates httplib2 to v0.18.0. v3.2.3 (2020 Apr 21) ===================== - Fixes an import bug in httplib2 by using the `forked repository `_. v3.2.2 (2019 Dec 11) ===================== - Upgrades packaged six module to 1.13.0 - Adds ``platform`` and ``normalize_platform`` to sgsix module to provide unified platform value across Python 2/3 - Changes httplib import procedure to emulate direct import of the module - Adds test to ensure httplib2 is importable as expected v3.2.1 (2019 Oct 29) ===================== - Returns a specific error from ``share_thumbnail`` when the source thumbnail is a 'transient' thumbnail. v3.2.0 (2019 Sept 23) ===================== - Adds a new ``project_entity`` parameter to ``schema_field_update`` that allows to modify field visibility for a given project. v3.1.2 (2019 Sept 17) ===================== - Adds an optional `localized` property on the Shotgun object which allows to retrieve localized display names on methods ``schema_entity_read()``, ``schema_field_read()``, and ``schema_read()``. v3.1.1 (2019 August 29) ======================= - Fixes a regression on Python 2.7.0-2.7.9 on Windows with the mimetypes module. v3.1.0 (2019 July 29) ===================== - Adds support for Python 3.7 v3.0.41 (2019 June 28) ====================== - Adds an optional sleep between retries specified via the `SHOTGUN_API_RETRY_INTERVAL` environment variable, or by setting `sg.config.rpc_attempt_interval`. v3.0.40 (2019 March 13) ======================= - Updates encoding method to use shutil when uploading, to avoid memory and overflow errors when reading large files. (contributed by @eestrada) v3.0.39 (2019 February 20) ========================== - Ensures the certificates packaged with the API and those specified via the `SHOTGUN_API_CACERTS` environment variable are used when uploading a file. v3.0.38 (2019 February 7) ========================= - Upgrades the version of ``httplib2`` to ``0.12.0``, which fixes SNI issues. Note this version contains a more recent list of certificate authorities. If you are running Shotgun locally and have signed your https certificate with an outdated certificate authority, the Shotgun connection will be rejected. v3.0.37 (2018 July 19) ====================== - Proper support added for unicode and utf-8 string paths given to upload methods, and a sane error is raised when an unusable string encoding is used. - Adds support for querying preferences from Shotgun via the new preferences_read method. - Under-the-hood changes to add support for direct to s3 uploads to Shotgun. This change should be transparent to users. v3.0.36 (2018 April 3) ====================== - Fixes an error where ``connect=False`` during ``__init__`` would still connect to Shotgun. - Adds support for ``SHOTGUN_API_CACERTS`` when uploading and downloading files. - Properly handles failed downloads due to malware scanning. v3.0.35 (2017 December 8) ========================= - Add exception UserCredentialsNotAllowedForSSOAuthenticationFault. Triggered when attempting to initiate a connection with a username/password pair on an SSO-enabled Shotgun site. v3.0.34 (2017 September 18) =========================== - Optimized pagination strategy for Shotgun 7.4+ - Switched from a hard-coded value of 500 for "records_per_page" to a server-defined value. We will be experimenting with higher values with the goal of increasing performance for large result sets. v3.0.33 (2017 July 18) ====================== - Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` or :meth:`upload_filmstrip_thumbnail` before calling out to the server. - Multiple enhancements and bugfixes to Mockgun - Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying SG hierarchy. - Introduces a :meth:`following` query method, that accepts a user entity and optionally an entity type and/or project. v3.0.32 (2016 Sep 22) ===================== - Optimized import speed of the API on Python 2.7. - Integrated the latest fixes to the ``mimetypes`` module. - Added ``nav_expand()`` method as an experimental, internal method for querying SG hierarchy. - Ported all documentation to sphinx. See http://developer.shotgridsoftware.com/python-api. - Moved Changelog to dedicated HISTORY file. v3.0.31 (2016 May 18) ===================== - Add optional ``additional_filter_presets`` argument to :meth:`find` and :meth:`find_one` v3.0.30 (2016 Apr 25) ===================== - Add option to use add/remove/set modes when updating multi-entity fields. - Add explicit file handler close to download_attachment. - Add basic :meth:`find` ordering support to mockgun. - Allow for product specific authorization parameters. v3.0.29 (2016 Mar 7) ==================== - Reverted the change to the default field names for image uploading. v3.0.28 (2016 Mar 3) ==================== - Refactored nested classing of ``sgtimezone`` library to allow for serializable timestamps. v3.0.27 (2016 Feb 18) ===================== - Make sure HTTP proxy authentication works with the ``@`` character in a password. - Make sure sudo authentication test works with Shotgun versions after v6.3.10. - Smarter uploading of thumbnails and filmstrips with the :meth:`upload` method. - Improve Travis build integration of the Python-API to run the full suite of API tests instead of just the unit and client tests. v3.0.26 (2016 Feb 1) ==================== - Updating testing framework to use environment variables inconjunction with existing ``example_config`` file so that commits and pull requests are automatically run on travis-ci. - Fix to prevent stripping out case-sensitivity of a URL if the user passes their credentials to ``config.server`` as an authorization header. v3.0.25 (2016 Jan 12) ===================== - Add handling for Python versions incompatible with SHA-2 (see `this blog post `_). - Add ``SHOTGUN_FORCE_CERTIFICATE_VALIDATION`` environment variable to prevent disabling certficate validation when SHA-2 validation is not available. - Add SSL info to user-agent header. v3.0.24 (2016 Jan 08) ===================== - Not released. v3.0.23 (2015 Oct 26) ===================== - Fix for `python bug #23371 `_ on Windows loading mimetypes module (thanks `@patrickwolf `_). - Fix for tests on older versions of python. - Sanitize authentication values before raising error. v3.0.22 (2015 Sept 9) ===================== - Added method :meth:`text_search` which allows an API client to access the Shotgun global search and auto completer. - Added method :meth:`activity_stream_read` which allows an API client to access the activity stream for a given Shotgun entity. - Added method :meth:`note_thread_read` which allows an API client to download an entire Note conversation, including Replies and Attachments, using a single API call. - Added an experimental ``mockgun`` module which can be used to emulate the Shotgun API, for example inside unit test rigs. - [minor] Improved docstrings. v3.0.21 (2015 Aug 13) ===================== - Update bundled ``httplib2`` module to latest v0.9.1 - fixes some bugs v3.0.20 (2015 Jun 10) ===================== - Add authentication support for Shotgun servers with two-factor authentication turned on. v3.0.19 (2015 Mar 25) ===================== - Add ability to authenticate with Shotgun using ``session_token``. - Add :meth:`get_session_token` method for obtaining token to authenticate with. - Add new ``AuthenticationFault`` exception type to indicate when server communication has failed due to authentication reasons. - Add support for ``SHOTGUN_API_CACERTS`` environment variable to provide location of external SSL certificates file. - Fixes and updates to various tests. v3.0.18 (2015 Mar 13) ===================== - Add ability to query the per-project visibility status for entities, fields and statuses. (requires Shotgun server >= v5.4.4) v3.0.17 (2014 Jul 10) ===================== - Add ability to update ``last_accessed_by_current_user`` on Project. - Add workaround for `bug #9291 in Python 2.7 `_ affecting mimetypes library on Windows. - Add platform and Python version to user-agent (eg. ``shotgun-json (3.0.17); Python 2.7 (Mac)``) v3.0.16 (2014 May 23) ===================== - Add flag to ignore entities from archived Projects. - Add support for differentiating between zero and ``None`` for number fields. - Add ability to act as a different user. v3.0.15 (2014 Mar 6) ==================== - Fixed bug which allowed a value of ``None`` for password parameter in :meth:`authenticate_human_user` - Add :meth:`follow`, :meth:`unfollow` and :meth:`followers` methods. - Add ability to login as HumanUser. - Ensure that webm/mp4 mime types are always available. - Updated link to video tour in README. - Fixes and updates to various tests. v3.0.14 (2013 Jun 26) ===================== - added: additional tests for thumbnails. - added: support for downloading from s3 in :meth:`download_attachment`. Accepts an Attachment entity dict as a parameter (is still backwards compatible with passing in an Attachment id). - added: optional ``file_path`` parameter to :meth:`download_attachment` to write data directly to disk instead of loading into memory. (thanks to Adam Goforth `@aag `_) v3.0.13 (2013 Apr 11) ===================== - fixed: #20856 :meth:`authenticate_human_user` login was sticky and would be used for permissions and logging. v3.0.12 (2013 Feb 22) ===================== *no tag* - added: #18171 New ``ca_certs`` argument to the :class:`Shotgun` constructor to specify the certificates to use in SSL validation. - added: ``setup.py`` doesn't compress the installed ``.egg`` file which makes the ``cacerts.txt`` file accessible. v3.0.11 (2013 Jan 31) ===================== - added: nested filter syntax (see :ref:`filter_syntax`) v3.0.10 (2013 Jan 25) ===================== - added: :meth:`add_user_agent()` and :meth:`reset_user_agent` methods to allow client code to add strings to track. - added: Changed default ``user-agent`` to include API version. - updated: advanced summarize filter support. - fixed: #19830 :meth:`share_thumbnail` errors when source has no thumbnail. v3.0.9 (2012 Dec 05) ==================== - added: :meth:`share_thumbnail` method to share the same thumbnail record and media between entities. - added: proxy handling to methods that transfer binary data (ie. :meth:`upload`, :meth:`upload_thumbnail`, etc.). - updated: default logging level to WARN. - updated: documentation for :meth:`summarize()` method, previously released but without documentation. - fixed: unicode strings not always being encoded correctly. - fixed: :meth:`create()` generates error when ``return_fields`` is None. - fixed: clearing thumbnail by setting ``image`` value to ``None`` not working as expected. - fixed: some html entities being returned sanitized via API. - improved: ``simplejson`` fallback now uses relative imports to match other bundled packages. - improved: various error messages are now clearer and more informative. - installation is now ``pip`` compatible. v3.0.9.beta2 (2012 Mar 19) ========================== - use relative imports for included libraries when using Python v2.5 or later. - replace sideband request for ``image`` (thumbnail) field with native support (requires Shotgun server >= v3.3.0. Request will still work on older versions but fallback to slow sideband method). - allow setting ``image`` and ``filmstrip_thumbnail`` in data dict on :meth:`create` and :meth:`update` (thanks `@hughmacdonald `_). - fixed bug causing ``Attachment.tag_list`` to be set to ``"None"`` (str) for uploads. v3.0.9.beta1 (2012 Feb 23) ========================== - added support for access to WorkDayRules (requires Shotgun server >= v3.2.0). - added support for filmstrip thumbnails (requires Shotgun server >= v3.1.0). - fixed :meth:`download_attachment` pointing to incorrect url. - fixed some issues with module import paths. v3.0.8 (2011 Oct 7) =================== - now uses JSON as a transport rather than XML-RPC. This provides as much as a 40% speed boost. - added the :meth:`summarize` method. - refactored single file into package. - tests added (Thanks to Aaron Morton `@amorton `_). - return all strings as ascii for backwards compatibility, added ``ensure_ascii`` parameter to enable returning unicode. v3.0.7 (2011 Apr 04) ==================== - fix: :meth:`update()` method should return a ``dict`` object not a ``list``. v3.0.6 (2010 Jan 25) ==================== - optimization: don't request ``paging_info`` unless required (and server support is available). v3.0.5 (2010 Dec 20) ==================== - officially remove support for old ``api3_preview`` controller. - :meth:`find`: allow requesting a specific page of results instead of returning them all at once. - add support for ``session_uuid`` parameter for communicating with a web browser session. v3.0.4 (2010 Nov 22) ==================== - fix for issue where :meth:`create` method was returning list type instead of dictionary. - support new style classes (thanks to Alex Schworer `@schworer `_). v3.0.3 (2010 Nov 12) ==================== - add support for local files. Injects convenience info into returned hash for local file links. - add support for authentication through http proxy server. v3.0.2 (2010 Aug 27) ==================== - add :meth:`revive` method to revive deleted entities. v3.0.1 (2010 May 10) ==================== - :meth:`find`: default sorting to ascending, if not set (instead of requiring ascending/descending). - :meth:`upload` and :meth:`upload_thumbnail`: pass auth info through. v3.0 (2010 May 5) ================= - non-beta! - add :meth:`batch` method to do multiple :meth:`create`, :meth:`update`, and :meth:`delete` operations in one request to the server (requires Shotgun server to be v1.13.0 or higher). v3.0b8 (2010 Feb 19) ==================== - fix python gotcha about using lists / dictionaries as defaults (`see this page for more info `_). - add :meth:`schema_read` method. v3.0b7 (2009 Nov 30) ==================== - add additional retries for connection errors and a catch for broken pipe exceptions. v3.0b6 (2009 Oct 20) ==================== - add support for ``HTTP/1.1 keepalive``, which greatly improves performance for multiple requests. - add more helpful error if server entered is not ``http`` or ``https`` - add support assigning tags to file uploads (for Shotgun version >= 1.10.6). v3.0b5 (2009 Sept 29) ===================== - fixed deprecation warnings to raise ``Exception`` class for python 2.5. v3.0b4 (2009 July 3) ==================== - made :meth:`upload` and :meth:`upload_thumbnail` methods more backwards compatible. - changes to :meth:`find_one`: now defaults to no ``filter_operator``. v3.0b3 (2009 June 24) ===================== - fixed :meth:`upload` and :meth:`upload_thumbnail` methods. - added :meth:`download_attachment` method. - added ``schema_*`` methods for accessing entities and fields. - added support for http proxy servers. - added ``__version__`` string. - removed ``RECORDS_PER_PAGE`` global (can just set ``records_per_page`` on the Shotgun object after initializing it). - removed ``api_ver`` from the constructor, as this class is only designed to work with API v3. ================================================ FILE: LICENSE ================================================ Copyright (c) 2009-2011, Shotgun Software Inc All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Shotgun Software Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Portions of code (xml-rpc client libs from standard python distro): Copyright (c) 1999-2002 by Secret Labs AB Copyright (c) 1999-2002 by Fredrik Lundh By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ================================================ FILE: README.md ================================================ [![Supported Python versions: 3.9, 3.10, 3.11, 3.13](https://img.shields.io/badge/Python-3.9_|_3.10_|_3.11_|_3.13-blue?logo=python&logoColor=f5f5f5)](https://www.python.org/ "Supported Python versions") [![Reference Documentation](http://img.shields.io/badge/Reference-documentation-blue.svg?logo=wikibooks&logoColor=f5f5f5)](http://developer.shotgridsoftware.com/python-api) [![Build Status](https://dev.azure.com/shotgun-ecosystem/Python%20API/_apis/build/status/shotgunsoftware.python-api?branchName=master)](https://dev.azure.com/shotgun-ecosystem/Python%20API/_build/latest?definitionId=108&branchName=master) [![Coverage Status](https://codecov.io/gh/shotgunsoftware/python-api/branch/master/graph/badge.svg)](https://codecov.io/gh/shotgunsoftware/python-api) # Flow Production Tracking Python API Autodesk provides a simple Python-based API for accessing Flow Production Tracking and integrating with other tools. This is the official API that is maintained by Autodesk (https://www.autodesk.com/support) The latest version can always be found at http://github.com/shotgunsoftware/python-api ## Documentation Tutorials and detailed documentation about the Python API are available at http://developer.shotgridsoftware.com/python-api. Some useful direct links: * [Installing](http://developer.shotgridsoftware.com/python-api/installation.html) * [Tutorials](http://developer.shotgridsoftware.com/python-api/cookbook/tutorials.html) * [API Reference](http://developer.shotgridsoftware.com/python-api/reference.html) * [Data Types](http://developer.shotgridsoftware.com/python-api/reference.html#data-types) * [Filter Syntax](http://developer.shotgridsoftware.com/python-api/reference.html#filter-syntax) ## Changelog You can see the [full history of the Python API on the documentation site](http://developer.shotgridsoftware.com/python-api/changelog.html). ## Tests Integration and unit tests are provided. - All tests require: - [pytest](https://docs.pytest.org/) and related plugins - (Note: Running `pip install -r tests/requirements.txt` will install all required packages) - A `tests/config` file (you can copy an example from `tests/example_config`). - Tests can be run individually like this: `pytest tests/test_client.py` - To run all tests: `pytest` - To run tests with coverage: `pytest --cov shotgun_api3 --cov-report html` - `test_client` and `test_unit` use mock server interaction and do not require a Flow Production Tracking instance to be available (no modifications to `tests/config` are necessary). - `test_api` and `test_api_long` *do* require a Flow Production Tracking instance, with a script key available for the tests. The server and script user values must be supplied in the `tests/config` file. The tests will add test data to your server based on information in your config. This data will be manipulated by the tests, and should not be used for other purposes. ================================================ FILE: SECURITY.md ================================================ # Security Policy ## Security At Autodesk, we know that the security of your data is critical to your studio’s operation. As the industry shifts to the cloud, Flow Production Tracking knows that security and service models are more important than ever. The confidentiality, integrity, and availability of your content is at the top of our priority list. Not only do we have a team of Flow Production Tracking engineers dedicated to platform security and performance, we are also backed by Autodesk’s security team, also invests heavily in the security for broad range of industries and customers. We constantly reassess, develop, and improve our risk management program because we know that the landscape of security is ever-changing. If you believe you have found a security vulnerability in any Flow Production Tracking-owned repository, please report it to us as described below. ## Reporting Security Issues **Please do not report security vulnerabilities through public GitHub issues.** Instead, please report them by sending a message to [Autodesk Trust Center](https://www.autodesk.com/trust/contact-us). Please include as much information as you can provide such as locations, configurations, reproduction steps, exploit code, impact, etc. ## Additional Information Please check out the [Flow Production Tracking Security White Paper](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html). ================================================ FILE: azure-pipelines-templates/run-tests.yml ================================================ # ----------------------------------------------------------------------------- # Copyright (c) 2009-2021, Shotgun Software Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # - Neither the name of the Shotgun Software Inc nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. parameters: # Using the most formal way of defining parameters so we don't define a # default value for mandatory parameters. This way, CI will fail if we forget # to pass it when invoking the template. - name: codecov_download_url type: string - name: os_name type: string - name: python_version type: string - name: vm_image type: string jobs: - job: displayName: "${{ parameters.os_name }} - Python ${{ parameters.python_version }}" pool: vmImage: ${{ parameters.vm_image }} variables: group: sg-credentials # These are the steps that will be executed inside each job. steps: # Specifies which version of Python we want to use. # TODO: We should provide `githubToken` if we want to download a python release. # Otherwise we may hit the GitHub anonymous download limit. - task: UsePythonVersion@0 inputs: versionSpec: ${{ parameters.python_version }} # Install all dependencies needed for running the tests. This command is good # for all OSes - task: Bash@3 displayName: Install dependencies inputs: targetType: inline script: | set -e python -m pip install --upgrade pip python -m pip install --upgrade setuptools wheel python -m pip install --upgrade --requirement tests/requirements.txt # Need to use the "python -m" prefix to make Windows happy. # The {{}} syntax is meant for the the pre-processor of Azure pipeline. Every statement inside # a {{}} block will be evaluated and substituted before the file is parsed to create the jobs. # So here we're inserting an extra step if the template is being invoked for Windows. - ${{ if eq(parameters.os_name, 'Windows') }}: # On Windows, we need to update the certificates, the cert store is missing the newer one # from Amazon like some clients experienced a while back. Who would have thought Microsoft # would have been out of date! ;) - powershell: | $cert_url = "https://www.amazontrust.com/repository/SFSRootCAG2.cer" $cert_file = New-TemporaryFile Invoke-WebRequest -Uri $cert_url -UseBasicParsing -OutFile $cert_file.FullName Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\LocalMachine\Root displayName: Updating OS Certificates # Runs the tests and generates both test report and code coverage - task: Bash@3 displayName: Running tests inputs: targetType: inline script: | set -e cp ./tests/example_config ./tests/config python -m pytest \ --cov \ --cov-report xml:coverage.xml \ --durations=0 \ --nunit-xml=test-results.xml \ --verbose \ env: # Tell Pytest that we're running in a CI environment CI: 1 # Pass the values needed to authenticate with the Flow Production Tracking site and create some entities. # Remember, on a pull request from a client or on forked repos, those variables # will be empty! SG_SERVER_URL: $(ci_site) SG_SCRIPT_NAME: $(ci_site_script_name) SG_API_KEY: $(ci_site_script_key) # The unit tests manipulate the user and project during the tests, which can cause collisions, # so sandbox each build variant. # Ideally, we would use the agent name here. The problem is that the agent name is in a build # variable, so we can't edit it's value through a ${{replace(a,b,c)}} expression, which are evaluated before # build variables are available. Because of this, we need to find another way to generate a # unique login. So instead, we'll use the the name of the platform and the python version, # which should make it unique. SG_HUMAN_LOGIN: $(python_api_human_login)-${{ parameters.os_name }}-${{ parameters.python_version }} # This will give a user name like 'something macOS 2.7' SG_HUMAN_NAME: $(python_api_human_name) ${{ parameters.os_name }} ${{ parameters.python_version }} SG_HUMAN_PASSWORD: $(python_api_human_password) # So, first, we need to make sure that two builds running at the same time do not manipulate # the same entities, so we're sandboxing build nodes based on their name. SG_PROJECT_NAME: Python API CI - $(Agent.Name) # The entities created and then reused between tests assume that the same user is always # manipulating them. Because different builds will be assigned different agents and therefore # different projects, it means each project needs to have an entity specific to a given user. # Again, this would have been a lot simpler if we could simply have had a login based on the # agent name, but alas, the agent name has a space in it which needs to be replaced to something # else and string substitution can't be made on build variables, only template parameters. SG_ASSET_CODE: CI-$(python_api_human_login)-${{ parameters.os_name }}-${{ parameters.python_version }} SG_VERSION_CODE: CI-$(python_api_human_login)-${{ parameters.os_name }}-${{ parameters.python_version }} SG_SHOT_CODE: CI-$(python_api_human_login)-${{ parameters.os_name }}-${{ parameters.python_version }} SG_TASK_CONTENT: CI-$(python_api_human_login)-${{ parameters.os_name }}-${{ parameters.python_version }} SG_PLAYLIST_CODE: CI-$(python_api_human_login)-${{ parameters.os_name }}-${{ parameters.python_version }} # Explicit call to PublishTestResults@2 and PublishCodeCoverageResults@2 here # instead of relying on pytest-azurepipelines because pytest-azurepipelines # does not seem to be maintained anymore and is still using earlier versions # of the PublishTestResults and PublishCodeCoverageResults Azure Pipelines # jobs. - task: PublishTestResults@2 displayName: Publish test results inputs: failTaskOnFailureToPublishResults: true failTaskOnMissingResultsFile: true testResultsFiles: test-results.xml testResultsFormat: NUnit testRunTitle: "${{ parameters.os_name }} - Python ${{ parameters.python_version }}" condition: succeededOrFailed() - task: PublishCodeCoverageResults@2 displayName: Publish code coverage inputs: summaryFileLocation: coverage.xml failIfCoverageEmpty: true - task: Bash@3 displayName: Uploading coverage to Codecov.io inputs: targetType: inline script: | set -e curl --remote-name --silent "${{ parameters.codecov_download_url }}" chmod +x codecov ./codecov \ --file coverage.xml \ --flags "${{ parameters.os_name }}" \ --flags "Python-${{ parameters.python_version }}" \ --name "Tested on ${{ parameters.os_name }} with Python ${{ parameters.python_version }}" \ ================================================ FILE: azure-pipelines-templates/type_checking.yml ================================================ # Copyright (c) 2025, Shotgun Software Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # - Neither the name of the Shotgun Software Inc nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. jobs: - job: type_checking displayName: Type Checking (beta) pool: vmImage: 'ubuntu-latest' steps: - task: UsePythonVersion@0 inputs: versionSpec: 3.9 addToPath: True architecture: 'x64' - script: | pip install --upgrade pip setuptools wheel pip install --upgrade mypy displayName: Install dependencies # Placeholder to future static type checking. For now we just run mypy and skip all known errors. - bash: mypy shotgun_api3/shotgun.py --follow-imports skip --pretty --no-strict-optional --disable-error-code arg-type --disable-error-code assignment --disable-error-code return --disable-error-code return-value --disable-error-code attr-defined displayName: Run type checking ================================================ FILE: azure-pipelines.yml ================================================ # ----------------------------------------------------------------------------- # Copyright (c) 2009-2021, Shotgun Software Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # - Neither the name of the Shotgun Software Inc nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. resources: repositories: - repository: templates type: github name: shotgunsoftware/tk-ci-tools ref: refs/heads/master endpoint: shotgunsoftware # Despite using the "tk-" prefix, tk-ci-tools is not a Toolkit only tool. # We use it to avoid duplicating and maintaining CI pipeline code. # We've stored some variables in Azure. They contain credentials # and are encrypted. They are also not available to clients. # This statement says which variable groups this repo requires. # We have two: one that can be shared by all repos that use CI # and another that is used just by the Python API, which creates # HumanUser's and as such need a password, which we can't # hardcode in the .yml files. variables: - group: sg-credentials # We want builds to trigger for 3 reasons: # - The master branch sees new commits # - Each PR should get rebuilt when commits are added to it. trigger: branches: include: - master pr: branches: include: - "*" parameters: - name: python_versions type: object default: - '3.9' - '3.10' - '3.11' - '3.13' - name: os_versions type: object default: - name: Linux vm_image: ubuntu-latest codecov_download_url: https://uploader.codecov.io/latest/linux/codecov - name: macOS vm_image: macOS-latest codecov_download_url: https://uploader.codecov.io/v0.7.3/macos/codecov # macOS & codecov note: # In Nov 2024 (SG-36700), we pinned macOS to codecov v0.7.3 because the # macOS-latest Azure Pipelines agent is Intel (x86_64), but Codecov # started shipping arm64-only binaries. # When we will change the macOs image to a arm64 arch, we can use the # "latest" version again. - name: Windows vm_image: windows-latest codecov_download_url: https://uploader.codecov.io/latest/windows/codecov.exe # This here is the list of jobs we want to run for our build. # Jobs run in parallel. jobs: - template: build-pipeline.yml@templates parameters: # Python API does not follow the exact same Python version lifecycle than # Toolkit. So we prefer to control the test execution here instead. has_unit_tests: false has_ui_resources: false - template: azure-pipelines-templates/type_checking.yml - ${{ each os_version in parameters.os_versions }}: - ${{ each python_version in parameters.python_versions }}: - template: azure-pipelines-templates/run-tests.yml parameters: codecov_download_url: ${{ os_version.codecov_download_url }} os_name: ${{ os_version.name }} python_version: ${{ python_version }} vm_image: ${{ os_version.vm_image }} ================================================ FILE: developer/README.md ================================================ # Updating HTTPLib2 The API comes with a copy of the `httplib2` inside the `shotgun_api3/lib` folder. To update the copy to a more recent version of the API, you can run the `update_httplib2.py` script at the root of this repository like this: python update_httplib2.py vX.Y.Z where `vX.Y.Z` is a release found on `httplib2`'s [release page](https://github.com/httplib2/httplib2/releases). # Release process ## Packaging up new release 1) Update the Changelog in the `HISTORY.rst` file - Add bullet points for any changes that have happened since the previous release. This may include changes you did not make so look at the commit history and make sure we don't miss anything. If you notice something was done that wasn't added to the changelog, hunt down that engineer and make them feel guilty for not doing so. This is a required step in making changes to the API. - Try and match the language of previous change log messages. We want to keep a consistent voice. - Make sure the date of the release matches today. We try and keep this TBD until we're ready to do a release so it's easy to catch that it needs to be updated. - Make sure the version number is filled out and correct. We follow semantic versioning. 2) Ensure any changes or additions to public methods are documented - Ensure that doc strings are updated in the code itself to work with Sphinx and are correctly formatted. - Examples are always good especially if this a new feature or method. - Think about a new user to the API trying to figure out how to use the features you're documenting. 3) Update the version value in `python-api/setup.py` to match the version you are packaging. This controls what version users will get when installing via pip. 4) Update the `__version__` value in `shotgun_api3/shotgun.py` to the version you're releasing. This identifies the current version within the API itself. 5) Commit these changes in master with a commit message like `packaging for the vx.x.x release`. 6) Create a tag based off of the master branch called `vx.x.x` to match the version number you're releasing. 7) Push master and your tag to Github. 8) Update the Releases page with your new release. - The release should already be there from your tag but if not, create a new one. - Add more detailed information regarding the changes in this release. This is a great place to add examples, and reasons for the change! ## Letting the world know Post a message in the [Pipeline Community channel](https://community.shotgridsoftware.com/c/pipeline). ## Prepare for the Next Dev Cycle 1) Update the `__version__` value in `shotgun_api3/shotgun.py` to the next version number with `.dev` appended to it. For example, `v3.0.24.dev` 2) Add a new section to the Changelog in the `HISTORY.rst` file with the next version number and a TBD date ``` **v3.0.24 - TBD** + TBD ``` 3) Commit the changes to master with a commit message like `Bump version to v3.0.24.dev` 4) Push master to Github ================================================ FILE: docs/advanced/iron_python.rst ================================================ ********** IronPython ********** We do not test against IronPython and cannot be sure that we won't introduce breaking changes or that we will be compatible with future releases of IronPython. While we don't officially support IronPython, we certainly will do our best to figure out any issues that come up while using it and how to avoid them. Legacy Information ------------------ This following information is provided for historical purposes only. As of July 9, 2015 you can look at this fork of the repo to see what changes were needed as of that date to make things work. The original fork was as of v3.0.20 of the API. Big thanks to our awesome clients Pixomondo for making their work public and letting us refer to it: https://github.com/Pixomondo/python-api/tree/v3.0.20.ipy v3.0.20 can be used with IronPython with a little bit of added work: - The Python API uses the zlib module to handle decompressing the gzipped response from the server. There's no built-in zlib module in IronPython, but there's a potential solution from Jeff Hardy at https://bitbucket.org/jdhardy/ironpythonzlib/src/. And the blog post about it here http://blog.jdhardy.ca/2008/12/solving-zlib-problem-ironpythonzlib.html - If you encounter ``LookupError: unknown encoding: idna``, you can force utf-8 by changing iri2uri.py ~ln 71 from ``authority = authority.encode('idna')`` to ``authority = authority.encode('utf-8')`` - If you encounter an SSL error such as ``SSL3_READ_BYTES:sslv3 alert handshake failure``, then the lower level SSL library backing python's network infrastructure is attempting to connect to our servers via SSLv3, which is no longer supported. You can use the code from this gist to force the SSL connections to use a specific protocol. The forked repo linked above has an example of how to do that to force the use of TLSv1. ================================================ FILE: docs/advanced/packaging.rst ================================================ .. _packaging: ################################################ Packaging an application with py2app (or py2exe) ################################################ You can create standalone applications with Python scripts by using `py2app `_ on OS X or `py2exe `_ on Windows. This is often done to more easily distribute applications that have a GUI based on toolkits like Tk, Qt or others. There are caveats you need to be aware of when creating such an app. ******************************** HTTPS Validation and cacerts.txt ******************************** When creating the connection to Flow Production Tracking, a file is used to validate the Flow Production Tracking certificate. This file is located at ``shotgun_api3/lib/httplib2/cacerts.txt``. Because this file is not a Python file imported by your application, py2app will not know to include it in your package, it will need to be explicitly specified in your ``setup.py`` file (edit the path based on the location where your ``shotgun_api3`` package is located):: DATA_FILES = [ ('shotgun_api3', ['/shotgun/src/python-api/shotgun_api3/lib/httplib2/cacerts.txt']) ] Once you create your py2app package its contents should include two files (among others) in the following structure:: ./Contents/Resources/shotgun_api3/cacerts.txt ./Contents/Resources/my_script.py Where in ``my_script.py`` you can access the ``cacerts.txt`` file using a relative path to pass it into the Flow Production Tracking connection's constructor:: ca_certs = os.path.join(os.path.dirname(__file__), 'shotgun_api3', 'cacerts.txt') sg = shotgun_api3.Shotgun('https://my-site.shotgrid.autodesk.com', 'script_name', 'script_key', ca_certs=ca_certs) The process for py2exe should be similar. ================================================ FILE: docs/advanced.rst ================================================ .. _advanced_topics: ############### Advanced Topics ############### Below are some more advanced topics regarding usage of the Python API. If you would like to see something that's missing here, please feel free to contact support at https://www.autodesk.com/support with your suggestions and we'll get it added! .. toctree:: :maxdepth: 1 advanced/packaging advanced/iron_python changelog ================================================ FILE: docs/authentication.rst ================================================ ############## Authentication ############## In order to communicate with your server via the API, you must provide valid authentication credentials. The API allows you to authenticate with user-based, or script-based credentials. ************************* User-based Authentication ************************* When authenticating as a user, you provide your normal login and password when instantiating your :class:`shotgun_api3.Shotgun` object. The actions performed by this instance will be limited to your permission level just as they are in the web application. :: sg = shotgun_api3.Shotgun("https://my-site.shotgrid.autodesk.com", login="rhendriks", password="c0mPre$Hi0n") *************************** Script-based Authentication *************************** In order to authenticate as a script, your script must be :ref:`registered with Flow Production Tracking and have a valid API key `. When creating your :class:`shotgun_api3.Shotgun` object, provide the ``script_name`` and ``api_key``.:: sg = shotgun_api3.Shotgun("https://my-site.shotgrid.autodesk.com", script_name="compress", api_key="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") .. note:: When using script-based authentication, we **strongly** recommend you register each script separately with Flow Production Tracking and have individual API keys for each. This allows you to track down each of your scripts and the actions they are performing much more accurately in the event logs. .. _setting_up_shotgrid: Adding Script Users =================== If you'll be using script-based authentication, you need to create a Script entity in Flow Production Tracking. To create a new key, click the + button on the "Scripts" page in the Admin section and give your script a useful name. It's a good idea to add any other relevant information that be be helpful to your other friendly Flow Production Tracking users such as a description of what the script does that is using this key, the email address of the maintainer, etc.: .. image:: images/scripts_page.png Once you save your new Script entity, Flow Production Tracking will automatically generate an application key which will act as the script's password. The key will look something like this: ``0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef``. Why have different application keys for different scripts? ========================================================== We recommend you create a new Script entity (and application key) for each script that is using script-based authentication so you can accurately log what scripts are doing what in case one of them causes problems. This will also allow you to better see what scripts are performing what actions in the EventLog. We've found that even though you may *think* you'll probably never need to know, the extra 2 minutes of setup now can prevent hours of headache in the future. Event Logging ============= By default, events generated by scripts using an script-based authentication are logged in Flow Production Tracking's event log. You can turn this off by un-checking the "Generate Events" checkbox either in the script detail page or from the main Scripts admin page in Flow Production Tracking. .. note:: Turning off event logging will also prevent any email notifications from being triggered by your scripts since the email notifier relies on the event log to find events to notify for. Scripts using user-based authentication will generate events similarly to if you were performing the same actions in the Flow Production Tracking web application, though there is some additional metadata stored in the ``EventLogEntry`` that identifies the event as created from a script acting on behalf of the user. Why would you want to turn event logging off for scripts? --------------------------------------------------------- It is an optimization that is not used often, but some users have integration scripts that are pushing data into Flow Production Tracking just for reference, like publishes from their asset management system. This publish data is never changed later, so the data itself has the entire history, and the events would just clutter the event log. The event log can grow very large. So if you have no need to audit the history of what your script does, and it's generating an large amount of event log entries, you may find it's not necessary to create these events. *********** Permissions *********** Users and scripts are both bound by the restrictions of their permission role in Flow Production Tracking. The permission role is assigned by the **Permission Role** field for each entity type. For Scripts, the default permission role is "API Admin User" which allows full access to create, update, and delete entities and fields, including editing the "date created" audit field and creating event log entries. If you have other permission roles for ApiUsers, you can set the default role that will be assigned when a new script is created, in your Flow Production Tracking site preferences. When using user-based authentication in your script, it will be bound by the permission role assigned to you in Flow Production Tracking. For example, if you don't have access to edit the status field on Shots, your script won't be able to either. Attempting to perform actions that are prohibited by permissions will raise an appropriate exception. .. seealso:: `Permissions Documentation `_ ================================================ FILE: docs/changelog.rst ================================================ .. currentmodule:: shotgun_api3.shotgun.Shotgun .. include:: ../HISTORY.rst ================================================ FILE: docs/cookbook/attachments.rst ================================================ .. _attachments: ################################ Details About Working With Files ################################ The Flow Production Tracking web application stores Files as Attachment entities. You can see these on a Files page, or a Files tab on a detail page, for example. You can access Attachments via the API to create and modify uploaded files, url links, and local files, and link them to other entities (Shots, Versions, etc). This entity works a lot like other entity types within Flow Production Tracking with a few exceptions which are detailed below. .. note:: If you are simply looking for information about how to upload and link things in Flow Production Tracking, this doc is not for you. Instead look at the :meth:`~shotgun_api3.Shotgun.upload` and :meth:`~shotgun_api3.Shotgun.upload_thumbnail` methods. This doc describes the detailed structure of the Attachment entities that represent files in Flow Production Tracking and how to interact with them. If that sounds cool too, then read on! .. versionadded:: 3.0.3 ***************** Default structure ***************** The following is a list of the default fields that Flow Production Tracking creates for Attachments. Your server instance may look slightly different depending on your own customizations. Many of these fields are optional and some are automatically filled in. These exceptions are listed below in the descriptions of each field. - **description** (:obj:`str`): Optional field to provide descriptive text about the file. - **this_file** (:obj:`dict`): The actual file reference. Within the dictionary is a ``link_type`` key which designates the Attachment as an uploaded file, a url link, or a local file. There are additional keys returned for :ref:`local_files`. You cannot modify this field after you have created an Attachment. See below for examples of this field. - **filename** (:obj:`str`): For uploaded files only. This is automatically assigned when the file is uploaded and stores the filename of the file. - **file_size** (:obj:`int`): For uploaded files only. This is automatically assigned when the file is uploaded and stores the size of the file in bytes. - **id** (:obj:`int`): The internal Flow Production Tracking id for this Attachment entity. - **attachment_links** (:obj:`list`): A list of entity dictionaries used for linking Attachments to multiple entities. - **open_notes** (:obj:`list`): A List of Note entities linked to the current Attachment that have a status that does not equal 'clsd'. *Read-only* - **open_notes_count** (:obj:`int`): An integer count of the list of Note entities linked to the current Attachment that have a status that does not equal 'clsd'. *(Read-only)* - **project** (:obj:`dict`): *(Required)* The Project entity that this Attachment belongs to. This must be assigned when creating an Attachment. - **attachment_reference_links** (:obj:`list`): Similar to ``attachment_links`` but used specifically for linking files to multiple entities as reference. - **sg_status_list** (:obj:`str`): Status value returned as the short code. - **tag_list** (:obj:`list`): List of tags (as strings) that are currently assigned to the Attachment. - **image** (:obj:`str`): The url location of the thumbnail image assigned to this Attachment. For uploads, Flow Production Tracking automatically tries to create a thumbnail from the file. See :ref:`interpreting_image_field_strings`. Alternatively, you can assign your own thumbnail to an Attachment using the :meth:`~shotgun_api3.Shotgun.upload_thumbnail` method. - **sg_type** (:obj:`str`): An optional field for designating different types of Attachments - **processing_status** (:obj:`str`): Reflects the status of the attachment (File entity). When processing the thumbnail, this field is set to ‘Thumbnail Pending’. File type structures (``this_file``) ==================================== Depending on the type of file the Attachment entity is representing, the value of ``this_file`` will vary. - **Uploads** Designated by ``link_type: 'upload'``, this represents a file that was uploaded to Flow Production Tracking. Uploading files to Flow Production Tracking can be done using the :meth:`~shotgun_api3.Shotgun.upload` method. You cannot create an Attachment with an uploaded file directly. :: {'content_type': 'image/jpeg', 'link_type': 'upload', 'name': 'western1FULL.jpg', 'url': 'https://my-site.shotgrid.autodesk.com/file_serve/attachment/538'} - **Web links** Designated by ``link_type: 'web'``, this is represents a url link. Examples include an ``http://`` link to another server or a custom protocol used to launch a local application like ``rvlink://`` or ``cinesync://`` :: {'content_type': None, 'link_type': 'web', 'name': 'Join GUN12158', 'url': 'cinesync://session/GUN12158'} - **Local Files** Designated by ``link_type: 'local'``, this is represents a local file link. Additional keys are provided in order to give access to the relative path information on other platforms. .. seealso:: :ref:`local_files` :: { 'content_type': 'video/quicktime', 'link_type': 'local', 'local_path': '/Users/kp/Movies/testing/test_movie_002.mov', 'local_path_linux': '/home/users/macusers/kp/Movies/testing/test_movie_002.mov', 'local_path_mac': '/Users/kp/Movies/testing/test_movie_002.mov', 'local_path_windows': 'M:\\macusers\\kp\\Movies\\testing\\test_movie_002.mov', 'local_storage': { 'id': 1, 'name': 'Dailies Directories', 'type': 'LocalStorage', }, 'name': 'my_test_movie.mov', 'relative_path': 'testing/test_movie_002.mov', 'url': 'file:///Users/kp/Movies/testing/test_movie_002.mov', } ******************** Creating Attachments ******************** Web Links ========= :: myurl = { 'url': 'http://apple.com/itunes', 'name': 'Apple: iTunes' } data = { 'this_file': myurl, 'project': {'type':'Project','id':64} } result = sg.create('Attachment', data) Uploads ======= Uploads cannot be created directly on Attachments. Instead, you need to use the :meth:`~shotgun_api3.Shotgun.upload` method. Make sure to have retries for file uploads. Failures when uploading will occasionally happen. When it does, immediately retrying to upload usually works. Local Files =========== See :ref:`creating_local_files`. ******************** Updating Attachments ******************** You cannot modify the ``this_file`` field after you create an Attachment. If you need to provide a different file, you will have to create a new Attachment entity. Otherwise, the process for updating Attachments is exactly like updating other entity types in Flow Production Tracking and is the same for all Attachment types. See :meth:`~shotgun_api3.Shotgun.update` for more info. ******************** Deleting Attachments ******************** The process of deleting an Attachment is just like other entities in Flow Production Tracking. See :meth:`~shotgun_api3.Shotgun.delete` for more info. .. _local_files: ***************************** Working With Local File Types ***************************** We added support for linking to local files in the UI in Flow Production Tracking Server v2.1. This doc covers how to work with these local file links using the API. Requirements ============ - Python API v3.0.3+ - Flow Production Tracking Server v2.1.10+ Structure of Local File Values ============================== There is a key in the dictionary that represents file/link fields called ``link_type`` which can be one of ``local``, ``upload``, ``web``. This is used to determine what type of link the field value contains. For local files this value is always ``local`` and there are additional keys that are available: - **content_type** (:obj:`str`): The mime-type of the associated local file. This is assigned automatically using a best-guess based on the file extension. You can override this by setting this explicitly. - **link_type** (:obj:`str`) *read-only*: Always 'local' for local files. - **name** (:obj:`str`): the display name of the local file. This is set to the filename by default but can be overridden by setting this explicitly. - **local_path** (:obj:`str`): The full path to the file on the current platform. The Python API tries to determine the platform it is currently running on and then copies the value from the corresponding key above to this field for convenience. - **local_path_linux** (:obj:`str`) *read-only*: Full path to file on Linux as defined by the LocalStorage (or ``None`` if no Linux path is set) - **local_path_mac** (:obj:`str`) *read-only*: Full path to file on Mac OS X as defined by the LocalStorage (or ``None`` if no Mac path is set) - **local_path_windows** (:obj:`str`) *read-only*: Full path to file on Windows as defined by the LocalStorage (or ``None`` if no Windows path is set) - **local_storage** (:obj:`dict`) *read-only*: A dictionary representing which LocalStorage entity is applied for this local file link. - **relative_path** (:obj:`str`) *read-only*: The path to the file relative to the ``local_storage`` root. - **url** (:obj:`str`) *read-only*: A file URI (``file://``) path provided for convenience pointing to the value in the ``local_path`` Reading Local File Fields ========================= :: fields = ['sg_uploaded_movie'] result = sg.find('Version', [['id', 'is', 123]], fields) Returns:: { 'id': 123, 'sg_uploaded_movie': { 'content_type': None, 'link_type': 'local', 'local_path': '/Users/kp/Movies/testing/test_movie_001_.mov', 'local_path_linux': '/home/users/macusers/kp/Movies/testing/test_movie_001_.mov', 'local_path_mac': '/Users/kp/Movies/testing/test_movie_001_.mov', 'local_path_windows': 'M:\\macusers\\kp\\Movies\\testing\\test_movie_001_.mov', 'local_storage': { 'id': 1, 'name': 'Dailies Directories', 'type': 'LocalStorage', }, 'relative_path': 'testing/test_movie_001_.mov', 'name': 'my_test_movie.mov', 'url': 'file:///Users/kp/Movies/testing/test_movie_001_.mov', }, 'type': 'Version', } .. note:: When viewing results that include file/link fields with local file link values, all of the keys will be returned regardless of whether there are values in them. So in the above example, if there was no Windows path set for the local storage, ``local_path_windows`` would be ``None``. .. _creating_local_files: Creating & Updating Local file Fields ===================================== When setting a file/link field value to a local file, only the ``local_path`` is mandatory. Flow Production Tracking will automatically select the appropriate matching local storage for your file based on the path. You can optionally specify the ``name`` and ``content_type`` fields if you wish to override their defaults. Any other keys that are provided will be ignored. * **content_type** :obj:`str`: Optionally set the mime-type of the associated local file. This is assigned automatically using a best-guess based on the file extension. * **name** :obj:`str`: Optional display name of the local file. This is set to the filename by default. * **local_path** :obj:`str`: The full local path to the file. Flow Production Tracking will find the ``LocalStorage`` that has the most specific match to this path and automatically assign that LocalStorage to the file. Alternative to ``relative_path`` * **local_storage** :obj:`dict`: The reference to an existing ``LocalStorage``. Must contain ``type: LocalStorage`` plus either an ``id`` or a ``name`` * **relative_path** :obj:`str`: The path to the file relative ``local_storage`` root. Requires ``local_storage`` Only accepting slash ``/`` separated path. Does not accept Windows path. Alternative to ``local_path`` Example 1: Using ``local_path`` ------------------------------- :: result = sg.update( 'Version', 123, { 'sg_uploaded_movie': { 'local_path': '/Users/kp/Movies/testing/test_movie_002.mov', 'name': 'Better Movie', } ) Returns:: { 'id':123, 'sg_uploaded_movie': { 'content_type': 'video/quicktime', 'link_type': 'local', 'name': 'my_test_movie.mov', 'local_path': '/Users/kp/Movies/testing/test_movie_002.mov' 'local_path_linux': '/home/users/macusers/kp/Movies/testing/test_movie_002.mov' 'local_path_mac': '/Users/kp/Movies/testing/test_movie_002.mov' 'local_path_windows': 'M:\\macusers\kp\Movies\testing\test_movie_002.mov' 'local_storage': { 'id': 1, 'name': 'Dailies Directories', 'type': 'LocalStorage' }, 'relative_path': 'testing/test_movie_002.mov', 'url': 'file:///Users/kp/Movies/testing/test_movie_002.mov', }, 'type': 'Version', } The ``content_type`` was assigned a best-guess value based on the file extension. Flow Production Tracking selected the most appropriate specific LocalStorage match and assigned it to local_storage automatically. Example 2: Using ``relative_path`` ---------------------------------- :: result = sg.update( 'Version', 123, { 'sg_uploaded_movie': { 'local_storage': { 'type': 'LocalStorage', 'name': 'Dailies Directories', }, 'relative_path': 'testing/test_movie_002.mov', } ) Returns:: { 'id':123, 'sg_uploaded_movie': { 'content_type': 'video/quicktime', 'link_type': 'local', 'name': 'my_test_movie.mov', 'local_path': '/Users/kp/Movies/testing/test_movie_002.mov', 'local_path_linux': '/home/users/macusers/kp/Movies/testing/test_movie_002.mov', 'local_path_mac': '/Users/kp/Movies/testing/test_movie_002.mov', 'local_path_windows': 'M:\\macusers\kp\Movies\testing\test_movie_002.mov', 'local_storage': { 'id': 1, 'name': 'Dailies Directories', 'type': 'LocalStorage' }, 'relative_path': 'testing/test_movie_002.mov', 'url': 'file:///Users/kp/Movies/testing/test_movie_002.mov' }, 'type': 'Version', } Un-setting local file field values ================================== Removing a a local file field value is simple. Just set the value to ``None``:: data = {'sg_uploaded_movie': None} result = sg.update('Version', 123, data) Returns:: {'id':123, 'sg_uploaded_movie': None, 'type': 'Version'}] ================================================ FILE: docs/cookbook/examples/ami_handler.rst ================================================ .. _ami_handler: ############################### Handling Action Menu Item Calls ############################### This is an example ActionMenu Python class to handle the ``GET`` request sent from an ActionMenuItem. It doesn't manage dispatching custom protocols but rather takes the arguments from any ``GET`` data and parses them into the easily accessible and correctly typed instance variables for your Python scripts. Available as a Gist at https://gist.github.com/3253287 .. seealso:: Our `support site has more information about Action Menu Items `_. ************ GET vs. POST ************ Action Menu Items that open a url via `http` or `https` to another web server send their data via ``POST``. If you're using a custom protocol the data is sent via ``GET``. .. note:: Browsers limit the length of a ``GET`` request. If you exceed this limit by attempting to select a lot of rows and launch your custom protocol, you may encounter "Failed to load resource" errors in your console. .. seealso:: This `Stack Overflow article "What is the maximum length of a URL in different browsers?" `_ :: #!/usr/bin/env python # encoding: utf-8 # --------------------------------------------------------------------------------------------- # Description # --------------------------------------------------------------------------------------------- """ The values sent by the Action Menu Item are in the form of a GET request that is similar to the format: myCoolProtocol://doSomethingCool?user_id=24&user_login=shotgun&title=All%20Versions&... In a more human-readable state that would translate to something like this: { 'project_name': 'Demo Project', 'user_id': '24', 'title': 'All Versions', 'user_login': 'shotgun', 'sort_column': 'created_at', 'entity_type': 'Version', 'cols': 'created_at', 'ids': '5,2', 'selected_ids': '2,5', 'sort_direction': 'desc', 'project_id': '4', 'session_uuid': 'd8592bd6-fc41-11e1-b2c5-000c297a5f50', 'column_display_names': [ 'Version Name', 'Thumbnail', 'Link', 'Artist', 'Description', 'Status', 'Path to frames', 'QT', 'Date Created' ] } This simple class parses the url into easy to access types variables from the parameters, action, and protocol sections of the url. This example url myCoolProtocol://doSomethingCool?user_id=123&user_login=miled&title=All%20Versions&... would be parsed like this: (string) protocol: myCoolProtocol (string) action: doSomethingCool (dict) params: user_id=123&user_login=miled&title=All%20Versions&... The parameters variable will be returned as a dictionary of string key/value pairs. Here's how to instantiate: sa = ShotgunAction(sys.argv[1]) # sys.argv[1] sa.params['user_login'] # returns 'miled' sa.params['user_id'] # returns 123 sa.protocol # returns 'myCoolProtocol' """ # --------------------------------------------------------------------------------------------- # Imports # --------------------------------------------------------------------------------------------- import sys, os import logging as logger # --------------------------------------------------------------------------------------------- # Variables # --------------------------------------------------------------------------------------------- # location to write logfile for this script # logging is a bit of overkill for this class, but can still be useful. logfile = os.path.dirname(sys.argv[0]) + "/shotgun_action.log" # ---------------------------------------------- # Generic ShotgunAction Exception Class # ---------------------------------------------- class ShotgunActionException(Exception): pass # ---------------------------------------------- # ShotgunAction Class to manage ActionMenuItem call # ---------------------------------------------- class ShotgunAction: def __init__(self, url): self.logger = self._init_log(logfile) self.url = url self.protocol, self.action, self.params = self._parse_url() # entity type that the page was displaying self.entity_type = self.params["entity_type"] # Project info (if the ActionMenuItem was launched from a page not belonging # to a Project (Global Page, My Page, etc.), this will be blank if "project_id" in self.params: self.project = { "id": int(self.params["project_id"]), "name": self.params["project_name"], } else: self.project = None # Internal column names currently displayed on the page self.columns = self.params["cols"] # Human readable names of the columns currently displayed on the page self.column_display_names = self.params["column_display_names"] # All ids of the entities returned by the query (not just those visible on the page) self.ids = [] if len(self.params["ids"]) > 0: ids = self.params["ids"].split(",") self.ids = [int(id) for id in ids] # All ids of the entities returned by the query in filter format ready # to use in a find() query self.ids_filter = self._convert_ids_to_filter(self.ids) # ids of entities that were currently selected self.selected_ids = [] if len(self.params["selected_ids"]) > 0: sids = self.params["selected_ids"].split(",") self.selected_ids = [int(id) for id in sids] # All selected ids of the entities returned by the query in filter format ready # to use in a find() query self.selected_ids_filter = self._convert_ids_to_filter(self.selected_ids) # sort values for the page # (we don't allow no sort anymore, but not sure if there's legacy here) if "sort_column" in self.params: self.sort = { "column": self.params["sort_column"], "direction": self.params["sort_direction"], } else: self.sort = None # title of the page self.title = self.params["title"] # user info who launched the ActionMenuItem self.user = {"id": self.params["user_id"], "login": self.params["user_login"]} # session_uuid self.session_uuid = self.params["session_uuid"] # ---------------------------------------------- # Set up logging # ---------------------------------------------- def _init_log(self, filename="shotgun_action.log"): try: logger.basicConfig( level=logger.DEBUG, format="%(asctime)s %(levelname)-8s %(message)s", datefmt="%Y-%b-%d %H:%M:%S", filename=filename, filemode="w+", ) except IOError as e: raise ShotgunActionException("Unable to open logfile for writing: %s" % e) logger.info("ShotgunAction logging started.") return logger # ---------------------------------------------- # Parse ActionMenuItem call into protocol, action and params # ---------------------------------------------- def _parse_url(self): logger.info("Parsing full url received: %s" % self.url) # get the protocol used protocol, path = self.url.split(":", 1) logger.info("protocol: %s" % protocol) # extract the action action, params = path.split("?", 1) action = action.strip("/") logger.info("action: %s" % action) # extract the parameters # 'column_display_names' and 'cols' occurs once for each column displayed so we store it as a list params = params.split("&") p = {"column_display_names": [], "cols": []} for arg in params: key, value = map(urllib.parse.unquote, arg.split("=", 1)) if key == "column_display_names" or key == "cols": p[key].append(value) else: p[key] = value params = p logger.info("params: %s" % params) return (protocol, action, params) # ---------------------------------------------- # Convert IDs to filter format to us in find() queries # ---------------------------------------------- def _convert_ids_to_filter(self, ids): filter = [] for id in ids: filter.append(["id", "is", id]) logger.debug("parsed ids into: %s" % filter) return filter # ---------------------------------------------- # Main Block # ---------------------------------------------- if __name__ == "__main__": try: sa = ShotgunAction(sys.argv[1]) logger.info("ShotgunAction: Firing... %s" % (sys.argv[1])) except IndexError as e: raise ShotgunActionException("Missing GET arguments") logger.info("ShotgunAction process finished.") ================================================ FILE: docs/cookbook/examples/ami_version_packager.rst ================================================ .. _ami_version_packager: ######################################################## Using an ActionMenuItem to Package Versions for a Client ######################################################## This is an example script to demonstrate how you can use an ActionMenuItem to launch a local script to package up files for a client. It performs the following: - Downloads Attachments from a specified field for all selected entities. - Creates an archive. - Copies the archive to a specified directory. It is intended to be used in conjunction with the script dicussed in :ref:`ami_handler`. :: #!/usr/bin/env python # encoding: utf-8 """ version_packager.py This example script is meant to be run from an ActionMenuItem in Flow Production Tracking. The menu item uses a custom protocol in order to launch this script, and is followed by the action 'package4client'. So the full url would be something like launchme://package4client?.... See: https://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html It uses the example ActionMenu Python class also located in our docs for parsing the ActionMenuItem POST variables. For more information about it and accessing the variables in the ActionMenuItem POST request, See: http://developer.shotgridsoftware.com/python-api/examples/ami_handler The purpose of this script is to download attachment files from Flow Production Tracking, create an archive of them and copy them to a specified directory. You can invoke it with the following minimal example to connect to Flow Production Tracking, download any file that exists in the specified field ('sg_qt') for each selected_id passed from the ActionMenu. Then it will create a single archive of the files and move it to the specified directory ('/path/where/i/want/to/put/the/archive/'). The archive is named with the Project Name, timestamp, and user login who ran the ActionMenuItem ('Demo_Project_2010-04-29-172210_kp.tar.gz'): sa = ShotgunAction(sys.argv[1]) sg = shotgun_connect() if sa.action == 'package4client': r = packageFilesForClient('sg_qt','/path/where/i/want/to/put/the/archive/') """ # --------------------------------------------------------------------------------------------- # Imports # --------------------------------------------------------------------------------------------- import sys, os import logging as logger import subprocess import re from datetime import datetime from shotgun_api3 import Shotgun from shotgun_action import ShotgunAction from pprint import pprint # --------------------------------------------------------------------------------------------- # Variables # --------------------------------------------------------------------------------------------- # Flow Production Tracking server auth info shotgun_conf = { 'url':'https://my-site.shotgrid.autodesk.com', 'name':'YOUR_SCRIPT_NAME_HERE', 'key':'YOUR_SCRIPT_KEY_HERE' } # location to write logfile for this script logfile = os.path.dirname(sys.argv[0])+"/version_packager.log" # temporary directory to download movie files to and create thumbnail files in file_dir = os.path.dirname(sys.argv[0])+"/tmp" # compress command # tar czf /home/user/backup_www.tar.gz -C / var/www/html compress_cmd = "tar czf %s -C / %s" # ---------------------------------------------- # Generic Flow Production Tracking Exception Class # ---------------------------------------------- class ShotgunException(Exception): pass # ---------------------------------------------- # Set up logging # ---------------------------------------------- def init_log(filename="version_packager.log"): try: logger.basicConfig(level=logger.DEBUG, format='%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%b-%d %H:%M:%s', filename=filename, filemode='w+') except IOError, e: raise ShotgunException ("Unable to open logfile for writing: %s" % e) logger.info("Version Packager logging started.") return logger # ---------------------------------------------- # Extract Attachment id from entity field # ---------------------------------------------- def extract_attachment_id(attachment): # extract the Attachment id from the url location attachment_id = attachment['url'].rsplit('/',1)[1] try: attachment_id = int(attachment_id) except: # not an integer. return None # raise ShotgunException("invalid Attachment id returned. Expected an integer: %s "% attachment_id) return attachment_id # ---------------------------------------------- # Download Movie to Disk # ---------------------------------------------- def download_attachment_to_disk(attachment,destination_filename): attachment_id = extract_attachment_id(attachment) if type(attachment_id) != int: return None # download the attachment file from Flow Production Tracking and write it to local disk logger.info("Downloading Attachment #%s" % (attachment_id)) stream = sg.download_attachment(attachment_id) try: file = open(destination_filename, 'w') file.write(stream) file.close() logger.info("Downloaded attachment %s" % (destination_filename)) return True except e: raise ShotgunException("unable to write attachment to disk: %s"% e) # ---------------------------------------------- # Compress files # ---------------------------------------------- def compress_files(files,destination_filename): destination_filename += ".tar.gz" files = [path.lstrip("/") for path in files] squish_me = compress_cmd % (destination_filename, " ".join(files) ) logger.info("Compressing %s files..." % len(files)) logger.info("Running command: %s" % squish_me) try: output = subprocess.Popen(squish_me, shell=True, stdout=subprocess.PIPE).stdout.read() logger.info('tar/gzip command returned: %s' % output) except e: raise ShotgunException("unable compress files: %s"% e) logger.info("compressed files to: %s" % destination_filename) return destination_filename # ---------------------------------------------- # Remove downloaded files # ---------------------------------------------- def remove_downloaded_files(files): remove_me = 'rm %s' % ( " ".join(files) ) logger.info("Removing %s files..." % len(files)) logger.info("Running command: %s" % remove_me) try: output = subprocess.Popen(remove_me, shell=True, stdout=subprocess.PIPE).stdout.read() logger.info('rm command returned: %s' % output) logger.info("removed downloaded files") return True except e: logger.error("unable remove files: %s"% e) return False # ---------------------------------------------- # Copy files # ---------------------------------------------- def copy_files(files,destination_directory): if type(files) == list: files = " ".join(files) copy_me_args = "%s %s" % (files, destination_directory) logger.info("Running command: mv %s" % copy_me_args) try: result = subprocess.Popen("mv " + copy_me_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 0 = success, 1 = recoverable issues if result.returncode > 0: response = result.stderr.read() logger.error("Copy failed: %s"% response) raise ShotgunException("Copy failed: %s"% response) except OSError, e: raise ShotgunException("unable copy files: %s"% e) logger.info("copied files to: %s" % destination_directory) return destination_directory def packageFilesForClient(file_field,destination_dir): # get entities matching the selected ids logger.info("Querying Shotgun for %s %ss" % (len(sa.selected_ids_filter), sa.params['entity_type'])) entities = sg.find(sa.params['entity_type'],sa.selected_ids_filter,['id','code',file_field],filter_operator='any') # download the attachments for each entity, zip them, and copy to destination directory files = [] for e in entities: if not e[file_field]: logger.info("%s #%s: No file exists. Skippinsa." % (sa.params['entity_type'], e['id'])) else: logger.info("%s #%s: %s" % (sa.params['entity_type'], e['id'], e[file_field])) path_to_file = file_dir+"/"+re.sub(r"\s+", '_', e[file_field]['name']) result = download_attachment_to_disk(e[file_field], path_to_file ) # only include attachments. urls won't return true if result: files.append(path_to_file) # compress files # create a nice valid destination filename project_name = '' if 'project_name' in sa.params: project_name = re.sub(r"\s+", '_', sa.params['project_name'])+'_' dest_filename = project_name+datetime.today().strftime('%Y-%m-%d-%H%M%S')+"_"+sa.params['user_login'] archive = compress_files(files,file_dir+"/"+dest_filename) # now that we have the archive, remove the downloads r = remove_downloaded_files(files) # copy to directory result = copy_files([archive],destination_dir) return True # ---------------------------------------------- # Main Block # ---------------------------------------------- if __name__ == "__main__": init_log(logfile) try: sa = ShotgunAction(sys.argv[1]) logger.info("Firing... %s" % (sys.argv[1]) ) except IndexError, e: raise ShotgunException("Missing POST arguments") sg = Shotgun(shotgun_conf['url'], shotgun_conf['name'], shotgun_conf['key'],convert_datetimes_to_utc=convert_tz) if sa.action == 'package4client': result = packageFilesForClient('sg_qt','/Users/kp/Documents/shotgun/dev/api/files/') else: raise ShotgunException("Unknown action... :%s" % sa.action) print("\nVersion Packager done!") ================================================ FILE: docs/cookbook/examples/basic_create_shot.rst ================================================ .. _example_create_shot: Create A Shot ============= Building the data and calling :meth:`~shotgun_api3.Shotgun.create` ------------------------------------------------------------------ To create a Shot, you need to provide the following values: - ``project`` is a link to the Project the Shot belongs to. It should be a dictionary like ``{"type": "Project", "id": 123}`` where ``id`` is the ``id`` of the Project. - ``code`` (this is the field that stores the name Shot) - optionally any other info you want to provide Example:: data = { 'project': {"type":"Project","id": 4}, 'code': '100_010', 'description': 'Open on a beautiful field with fuzzy bunnies', 'sg_status_list': 'ip' } result = sg.create('Shot', data) This will create a new Shot named "100_010" in the Project "Gunslinger" (which has an ``id`` of 4). - ``data`` is a list of key/value pairs where the key is the column name to update and the value is the the value to set. - ``sg`` is the Flow Production Tracking API instance you created in :ref:`example_sg_instance`. - ``create()`` is the :meth:`shotgun_api3.Shotgun.create` API method we are calling. We pass in the entity type we're searching for and the data we're setting. .. rubric:: Result The variable ``result`` now contains a dictionary hash with the Shot information you created.:: { 'code': '100_010', 'description': 'Open on a beautiful field with fuzzy bunnies', 'id': 40435, 'project': {'id': 4, 'name': 'Demo Project', 'type': 'Project'}, 'sg_status_list': 'ip', 'type': 'Shot' } In addition, Flow Production Tracking has returned the ``id`` that it has assigned to the Shot, as well as a ``type`` value. ``type`` is provided for convenience simply to help you identify what entity type this dictionary represents. It does not correspond to any field in Flow Production Tracking. Flow Production Tracking will *always* return the ``id`` and ``type`` keys in the dictionary when there are results representing an entity. The Complete Example for creating a Shot ---------------------------------------- :: #!/usr/bin/env python # -------------------------------------- # Imports # -------------------------------------- import shotgun_api3 from pprint import pprint # useful for debugging # -------------------------------------- # Globals # -------------------------------------- # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' # -------------------------------------- # Main # -------------------------------------- if __name__ == '__main__': sg = shotgun_api3.Shotgun(SERVER_PATH, SCRIPT_NAME, SCRIPT_KEY) # -------------------------------------- # Create a Shot with data # -------------------------------------- data = { 'project': {"type":"Project","id": 4}, 'code': '100_010', 'description': 'Open on a beautiful field with fuzzy bunnies', 'sg_status_list': 'ip' } result = sg.create('Shot', data) pprint(result) print("The id of the {} is {}.".format(result['type'], result['id'])) And here is the output:: {'code': '100_010', 'description': 'Open on a beautiful field with fuzzy bunnies', 'id': 40435, 'project': {'id': 4, 'name': 'Demo Project', 'type': 'Project'}, 'sg_status_list': 'ip', 'type': 'Shot'} The id of the Shot is 40435. ================================================ FILE: docs/cookbook/examples/basic_create_shot_task_template.rst ================================================ Create a Shot with a Task Template ================================== Creating a new Shot with a Task Template is just like linking it to another entity, but Flow Production Tracking will apply the Task Template in the background and create the appropriate Tasks on the Shot for you. Find the Task Template ---------------------- First we need to find the Task Template we're going to apply. We'll assume you know the name of the Task Template you want to use. :: filters = [['code','is', '3D Shot Template' ]] template = sg.find_one('TaskTemplate', filters) The Resulting Task Template --------------------------- Assuming the task template was found, we will now have something like this in our ``template`` variable:: {'type': 'TaskTemplate', 'id': 12} Create the Shot --------------- Now we can create the Shot with the link to the ``TaskTemplate`` to apply. :: data = {'project': {'type': 'Project','id': 4}, 'code': '100_010', 'description': 'dark shot with wicked cool ninjas', 'task_template': template } result = sg.create('Shot', data) This will create a new Shot named "100_010" linked to the TaskTemplate "3D Shot Template" and Flow Production Tracking will then create the Tasks defined in the template and link them to the Shot you just created. - ``data`` is a list of key/value pairs where the key is the column name to update and the value is the value. - ``project`` and `code` are required - ``description`` is just a text field that you might want to update as well - ``task_template`` is another entity column where we set the Task Template which has the Tasks we wish to create by default on this Shot. We found the specific template we wanted to assign in the previous block by searching Create Shot Result ------------------ The variable ``result`` now contains the dictionary of the new Shot that was created. :: { 'code': '010_010', 'description': 'dark shot with wicked cool ninjas', 'id': 2345, 'project': {'id': 4, 'name': 'Gunslinger', 'type': 'Project'}, 'task_template': {'id': 12, 'name': '3D Shot Template', 'type': 'TaskTemplate'}, 'type': 'Shot' } If we now search for the Tasks linked to the Shot, we'll find the Tasks that match our ``TaskTemplate``:: tasks = sg.find('Task', filters=[['entity', 'is', result]]) .. note:: You can use an entity dictionary that was returned from the API in a filter as we have done above. Flow Production Tracking will only look at the ``id`` and ``type`` keys and will ignore the rest. This is a handy way to pass around entity dictionaries without having to reformat them. Now the ``tasks`` variable contains the following:: [{'id': 3253, 'type': 'Task'}, {'id': 3254, 'type': 'Task'}, {'id': 3255, 'type': 'Task'}, {'id': 3256, 'type': 'Task'}, {'id': 3257, 'type': 'Task'}] ================================================ FILE: docs/cookbook/examples/basic_create_version_link_shot.rst ================================================ Create a Version Linked to a Shot ================================= You've just created a sweet new Version of your shot. Now you want to update Flow Production Tracking and create a new ``Version`` entity linked to the Shot. Find the Shot ------------- First we need to find the Shot since we'll need to know know its ``id`` in order to link our Version to it. :: filters = [ ['project', 'is', {'type': 'Project', 'id': 4}], ['code', 'is', '100_010'] ] shot = sg.find_one('Shot', filters) Find the Task ------------- Now we find the Task that the Version relates to, again so we can use the ``id`` to link it to the Version we're creating. For this search we'll use the Shot ``id`` (which we have now in the ``shot`` variable from the previous search) and the Task Name, which maps to the ``content`` field. :: filters = [ ['project', 'is', {'type': 'Project', 'id': 4}], ['entity', 'is',{'type':'Shot', 'id': shot['id']}], ['content', 'is', 'Animation'] ] task = sg.find_one('Task', filters) .. note:: Linking a Task to the Version is good practice. By doing so it is easy for users to see at what stage a particular Version was created, and opens up other possibilities for tracking in Flow Production Tracking. We highly recommend doing this whenever possible. Create the Version ------------------ Now we can create the Version with the link to the Shot and the Task:: data = { 'project': {'type': 'Project','id': 4}, 'code': '100_010_anim_v1', 'description': 'first pass at opening shot with bunnies', 'sg_path_to_frames': '/v1/gun/s100/010/frames/anim/100_010_animv1_jack.#.jpg', 'sg_status_list': 'rev', 'entity': {'type': 'Shot', 'id': shot['id']}, 'sg_task': {'type': 'Task', 'id': task['id']}, 'user': {'type': 'HumanUser', 'id': 165} } result = sg.create('Version', data) This will create a new Version named '100_010_anim_v1' linked to the 'Animation' Task for Shot '100_010' in the Project 'Gunslinger'. - ``data`` is a list of key/value pairs where the key is the column name to update and the value is the value to set. - ``project`` and ``code`` are required - ``description`` and ``sg_path_to_frames`` are just text fields that you might want to update as well - ``sg_status_list`` is the status column for the Version. Here we are setting it to "rev" (Pending Review) so that it will get reviewed in the next dailies session and people will "ooh" and "aaah". - ``entity`` is where we link this version to the Shot. Entity columns are always handled with this format. You must provide the entity ``type`` and its ``id``. - ``sg_task`` is another entity link field specifically for the Version's Task link. This uses the same entity format as the Shot link, but pointing to the Task entity this time. - ``user`` is another entity column where we set the artist responsible for this masterpiece. In this example, I know the 'id' that corresponds to this user, but if you don't know the id you can look it up by searching on any of the fields, similar to what we did for the Shot above, like:: filters = [['login', 'is', 'jschmoe']] user = sg.find('HumanUser', filters) The ``result`` variable now contains the ``id`` of the new Version that was created:: 214 Upload a movie for review in Screening Room ------------------------------------------- If Screening Room's transcoding feature is enabled on your site (hosted sites have this by default), then you can use the :meth:`~shotgun_api3.Shotgun.upload` method to upload a QuickTime movie, PDF, still image, etc. to the ``sg_uploaded_movie`` field on a Version. Once the movie is uploaded, it will automatically be queued for transcoding. When transcoding is complete, the Version will be playable in the Screening Room app, or in the Overlay player by clicking on the Play button that will appear on the Version's thumbnail. .. note:: Transcoding also generates a thumbnail and filmstrip thumbnail automatically. ================================================ FILE: docs/cookbook/examples/basic_delete_shot.rst ================================================ Delete A Shot ============= Calling :meth:`~shotgun_api3.Shotgun.delete` -------------------------------------------- Deleting an entity in Flow Production Tracking is pretty straight-forward. No extraneous steps required.:: result = sg.delete("Shot", 40435) Delete Shot Result ------------------ If the Shot was deleted successfully ``result`` will contain:: True The Complete Example for deleting a Shot ---------------------------------------- :: #!/usr/bin/env python # -------------------------------------- # Imports # -------------------------------------- import shotgun_api3 from pprint import pprint # useful for debugging # -------------------------------------- # Globals # -------------------------------------- # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' # -------------------------------------- # Main # -------------------------------------- if __name__ == '__main__': sg = shotgun_api3.Shotgun(SERVER_PATH, SCRIPT_NAME, SCRIPT_KEY) # -------------------------------------- # Delete a Shot by id # -------------------------------------- result = sg.delete("Shot", 40435) pprint(result) And here is the output:: True ================================================ FILE: docs/cookbook/examples/basic_find_shot.rst ================================================ .. _example_find_shot: Find a Shot =========== Building the Query ------------------ We are going to assume we know the 'id' of the Shot we're looking for in this example.:: filters = [['id', 'is', 40435]] result = sg.find_one('Shot', filters) Pretty simple right? Well here's a little more insight into what's going on. - ``filters`` is an list of filter conditions. In this example we are filtering for Shots where the ``id`` column is **40435**. - ``sg`` is the Flow Production Tracking API instance. - ``find_one()`` is the :meth:`~shotgun_api3.Shotgun.find_one` API method we are calling. We provide it with the entity type we're searching for and our filters. Seeing the Result ----------------- So what does this return? The variable result now contains:: {'type': 'Shot','id': 40435} By default, :meth:`~shotgun_api3.Shotgun.find_one` returns a single dictionary object with the ``type`` and ``id`` fields. So in this example, we found a Shot matching that id, and Flow Production Tracking returned it as a dictionary object with ``type`` and ``id`` keys . How do we know that result contains the Shot dictionary object? You can trust us... but just to be sure, the :mod:`pprint` (PrettyPrint) module from the Python standard library is a really good tool to help with debugging. It will print out objects in a nicely formatted way that makes things easier to read. So we'll add that to the import section of our script.:: import shotgun_api3 from pprint import pprint # useful for debugging The Complete Example for finding a Shot --------------------------------------- :: #!/usr/bin/env python # -------------------------------------- # Imports # -------------------------------------- import shotgun_api3 from pprint import pprint # useful for debugging # -------------------------------------- # Globals # -------------------------------------- # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' # -------------------------------------- # Main # -------------------------------------- if __name__ == '__main__': sg = shotgun_api3.Shotgun(SERVER_PATH, SCRIPT_NAME, SCRIPT_KEY) # -------------------------------------- # Find a Shot by id # -------------------------------------- filters = [['id', 'is', 40435]] result = sg.find_one('Shot', filters) pprint(result) And here is the output:: {'type': 'Shot','id': 40435} ================================================ FILE: docs/cookbook/examples/basic_sg_instance.rst ================================================ .. _example_sg_instance: Create a Flow Production Tracking API instance ============================================== This example shows you how to establish your initial connection to Flow Production Tracking using script-based authentication. ``sg`` represents your Flow Production Tracking API instance. Be sure you've read :ref:`Setting Up Flow Production Tracking for API Access `. :: import pprint # Useful for debugging import shotgun_api3 SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' sg = shotgun_api3.Shotgun(SERVER_PATH, SCRIPT_NAME, SCRIPT_KEY) # Just for demo purposes, this will print out property and method names available on the # sg connection object pprint.pprint([symbol for symbol in sorted(dir(sg)) if not symbol.startswith('_')]) For further information on what you can do with this Flow Production Tracking object you can read the :ref:`API reference `. ================================================ FILE: docs/cookbook/examples/basic_update_shot.rst ================================================ Update A Shot ============= Building the data and calling :meth:`~shotgun_api3.Shotgun.update` ------------------------------------------------------------------ To update a Shot, you need to provide the ``id`` of the Shot and a list of fields you want to update.:: data = { 'description': 'Open on a beautiful field with fuzzy bunnies', 'sg_status_list': 'ip' } result = sg.update('Shot', 40435, data) This will update the ``description`` and the ``sg_status_list`` fields for the Shot with ``id`` of **40435**. - ``data`` is a list of key/value pairs where the key is the field name to update and the value to update it to. - ``sg`` is the Flow Production Tracking API instance. - ``update()`` is the :meth:`shotgun_api3.Shotgun.update` API method we are calling. We provide it with the entity type we're updating, the ``id`` of the entity, and the data we're updating it with. Result ------ The variable ``result`` now contains the Shot object that with the updated values.:: { 'description': 'Opening establishing shot with titles and fuzzy bunnies', 'sg_status_list': 'ip', 'type': 'Shot', 'id': 40435 } In addition, Flow Production Tracking has returned the ``id`` for the Shot, as well as a ``type`` value. ``type`` is provided for convenience simply to help you identify what entity type this dictionary represents. It does not correspond to any field in Flow Production Tracking. Flow Production Tracking will *always* return the ``id`` and ``type`` keys in the dictionary when there are results representing an entity. The Complete Example for updating a Shot ---------------------------------------- :: #!/usr/bin/env python # -------------------------------------- # Imports # -------------------------------------- import shotgun_api3 from pprint import pprint # useful for debugging # -------------------------------------- # Globals # -------------------------------------- # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' # -------------------------------------- # Main # -------------------------------------- if __name__ == '__main__': sg = shotgun_api3.Shotgun(SERVER_PATH, SCRIPT_NAME, SCRIPT_KEY) # -------------------------------------- # Update Shot with data # -------------------------------------- data = { 'description': 'Open on a beautiful field with fuzzy bunnies', 'sg_status_list': 'ip' } result = sg.update('Shot', 40435, data) pprint(result) And here is the output:: {'description': 'Opening establishing shot with titles and fuzzy bunnies', 'id': 40435, 'sg_status_list': 'ip', 'type': 'Shot'} ================================================ FILE: docs/cookbook/examples/basic_upload_thumbnail_version.rst ================================================ Upload a Thumbnail for a Version ================================ So you've created a new Version of a Shot, and you've updated Flow Production Tracking, but now you want to upload a beauty frame to display as the thumbnail for your Version. We'll assume you already have the image made (located on your machine at ``/v1/gun/s100/010/beauties/anim/100_010_animv1.jpg``) . And since you've just created your Version in Flow Production Tracking, you know its ``id`` is **214**. .. note:: If you upload a movie file or image to the ``sg_uploaded_movie`` field and you have transcoding enabled on your server (the default for hosted sites), a thumbnail will be generated automatically as well as a filmstrip thumbnail (if possible). This is a basic example of how to manually provide or replace a thumbnail image. Upload the Image using :meth:`~shotgun_api3.Shotgun.upload_thumbnail` --------------------------------------------------------------------- :: sg.upload_thumbnail("Version", 214, "/v1/gun/s100/010/beauties/anim/100_010_animv1.jpg") Flow Production Tracking will take care of resizing the thumbnail for you. If something does go wrong, an exception will be thrown and you'll see the error details. .. note:: The result returned by :meth:`~shotgun_api3.Shotgun.upload_thumbnail` is an integer representing the id of a special ``Attachment`` entity in Flow Production Tracking. Working with Attachments is beyond the scope of this example. :) ================================================ FILE: docs/cookbook/examples/svn_integration.rst ================================================ .. _svn_integration: ############################ Subversion (SVN) Integration ############################ Integrating Flow Production Tracking with Subversion consists of two basic parts: - Setup a post-commit hook in Subversion. - Create a Flow Production Tracking API script to create the Revision in Flow Production Tracking. This script will be called by the post-commit hook. **************** Post-Commit Hook **************** To setup the post-commit hook: - Locate the ``post-commit.tmpl`` file, which is found inside the ``hooks`` folder in your repository directory. This is a template script that has lots of useful comments and can serve as a starting point for the real thing. - Create your very own executable script, and save it in the same ``hooks`` folder, name it ``post-commit``, and give it executable permission. - In your ``post-commit`` script, invoke your Flow Production Tracking API script. If this is entirely new to you, we highly suggest reading up on the topic. O'Reilly has `a free online guide for Subversion 1.5 and 1.6 `_ Here's an example of a post-commit hook that we've made for Subversion 1.6 using an executable Unix shell script. The last line invokes "shotgun_api_script.py" which is our Python script that will do all the heavy lifting. Lines 4 thru 8 queue up some objects that we'll use later on. .. code-block:: sh :linenos: #!/bin/sh # POST-COMMIT HOOK REPOS="$1" REV="$2" export AUTHOR="$(svnlook author $REPOS --revision $REV)" export COMMENT="$(svnlook log $REPOS --revision $REV)" /Absolute/path/to/shotgun_api_script.py Explanation of selected lines ============================= - lines ``4-5``: After the commit, Subversion leaves us two string objects in the environment: ``REPOS`` and ``REV`` (the repository path and the revision number, respectively). - lines ``7-8``: Here we use the shell command ``export`` to create two more string objects in the environment: ``AUTHOR`` and ``COMMENT``. To get each value, we use the ``svnlook`` command with our ``REPOS`` and ``REV`` values, first with the ``author``, and then with ``log`` subcommand. These are actually the first two original lines of code - everything else to this point was pre-written already in the ``post-commit.tmpl`` file. nice :) - line ``10``: This is the absolute path to our Flow Production Tracking API Script. *********************************** Flow Production Tracking API Script *********************************** This script will create the Revision and populate it with some metadata using the Flow Production Tracking Python API. It will create our Revision in Flow Production Tracking along with the author, comment, and because we use Trac (a web-based interface for Subversion), it will also populate a URL field with a clickable link to the Revision. .. code-block:: python :linenos: #!/usr/bin/env python # --------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------- # Imports # --------------------------------------------------------------------------------------------- import sys from shotgun_api3_preview import Shotgun import os # --------------------------------------------------------------------------------------------- # Globals - update all of these values to those of your studio # --------------------------------------------------------------------------------------------- SERVER_PATH = 'https ://my-site.shotgrid.autodesk.com' # or http: SCRIPT_USER = 'script_name' SCRIPT_KEY = '3333333333333333333333333333333333333333' REVISIONS_PATH = 'https ://serveraddress/trac/changeset/' # or other web-based UI PROJECT = {'type':'Project', 'id':27} # --------------------------------------------------------------------------------------------- # Main # --------------------------------------------------------------------------------------------- if __name__ == '__main__': sg = Shotgun(SERVER_PATH, SCRIPT_USER, SCRIPT_KEY) # Set Python variables from the environment objects revision_code = os.environ['REV'] repository = os.environ['REPOS'] description = os.environ['COMMENT'] author = os.environ['AUTHOR'] # Set the Trac path for this specific revision revision_url = REVISIONS_PATH + revision_code # Validate that author is a valid Flow Production Tracking HumanUser result = sg.find_one("HumanUser", [['login', 'is', author]]) if result: # Create Revision url = {'content_type':'http_url', 'url':revision_url, 'name':'Trac'} parameters = {'project':PROJECT, 'code':str(revision_code), 'description':description, 'attachment':url, 'created_by':{"type":"HumanUser", "id":result['id']} } revision = sg.create("Revision", parameters) print("created Revision #"+str(revision_code)) # Send error message if valid HumanUser is not found else: print("Unable to find a valid Flow Production Tracking User with login: {}, Revision not created in Flow Production Tracking.".format(author)) Explanation of selected lines: ============================== - line ``14``: This should be the URL to your instance of Flow Production Tracking. - lines ``15-16``: Make sure you get these values from the "Scripts" page in the Admin section of the Flow Production Tracking web application. If you're not sure how to do this, check out :ref:`authentication`. - line ``17``: This is the address of Trac, our web-based interface that we use with Subversion. You may use a different interface, or none at all, so feel free to adjust this line or ignore it as your case may be. - line ``18``: Every Revision in Flow Production Tracking must have a Project, which is passed to the API as a dictionary with two keys, the ``type`` and the ``id``. Of course the ``type`` value will always remain ``Project`` (case sensitive), but the ``id`` will change by Project. To find out the ``id`` of your Project, go to the Projects page in the Flow Production Tracking web application, locate the Project where you want your Revisions created, and then locate its ``id`` field (which you may need to display - if you don't see it, right click on any column header then select "Insert Column" > "Id"). Note that for this example we assume that all Revisions in this Subversion repository will belong to the same Project. - lines ``28-31``: Grab the values from the objects that were left for us in the environment. - line ``34``: Add the Revision number to complete the path of our Trac url. - line ``37``: Make sure that a valid User exists in Flow Production Tracking. In our example, we assume that our Users' Flow Production Tracking logins match their Subversion names. If the user exists in Flow Production Tracking, that user's ``id`` will be returned as ``result['id']``, which we will need later on in line 46. - lines ``40-48``: Use all the meta data we've gathered to create a Revision in Flow Production Tracking. If none of these lines make any sense, check out more on the :meth:`~shotgun_api3.Shotgun.create` method here. Line 41 deserves special mention: notice that we define a dictionary called ``url`` that has three important keys: ``content_type``, ``url``, and ``name``, and we then pass this in as the value for the ``attachment`` field when we create the Revision. If you're even in doubt, double check the syntax and requirements for the different field types here. *************** Troubleshooting *************** My post-commit script is simply not running. I can run it manually, but commits are not triggering it. ====================================================================================================== Make sure that the script is has explicitly been made executable and that all users who will invoke it have appropriate permissions for the script and that folders going back to root. My Flow Production Tracking API script is not getting called by the post-commit hook. ===================================================================================== Make sure that the script is called using its absolute path. ================================================ FILE: docs/cookbook/smart_cut_fields.rst ================================================ .. _smart_cut_fields: ################ Smart Cut Fields ################ .. warning:: Smart Cut Fields should be considered deprecated. ShotGrid v7.0, introduced a new version of cut support. `Read the Cut Support Documentation here `_. If you want to work with 'smart' cut fields through the API, your script should use a corresponding 'raw' fields for all updates. The 'smart_cut_fields' are primarily for display in the UI, the real data is stored in a set of 'raw' fields that have different names. ************ Smart Fields ************ In the UI these fields attempt to calculate values based on data entered into the various fields. These fields can be queried via the API using the find() method, but not updated. Note that we are deprecating this feature and recommend creating your own cut fields from scratch, which will not contain any calculations which have proven to be too magical at times. - ``smart_cut_duration`` - ``smart_cut_in`` - ``smart_cut_out`` - ``smart_cut_summary_display`` * - ``smart_cut_duration_display`` * - ``smart_head_duration`` - ``smart_head_in`` - ``smart_head_out`` - ``smart_tail_duration`` - ``smart_tail_in`` - ``smart_tail_out`` - ``smart_working_duration`` * .. note:: \* these are special summary fields that have no corresponding "raw" field. ********** Raw Fields ********** These are the "raw" fields that can be queried and updated through the API: - ``cut_duration`` - ``cut_in`` - ``cut_out`` - ``head_duration`` - ``head_in`` - ``head_out`` - ``tail_duration`` - ``tail_in`` - ``tail_out`` ================================================ FILE: docs/cookbook/tasks/split_tasks.rst ================================================ .. _split_tasks: ########### Split Tasks ########### Split tasks can be created and edited via the API but must comply to some rules. Before going further, a good understanding of :ref:`how Flow Production Tracking handles task dates is useful `. ******** Overview ******** The Task entity has a field called ``splits`` which is a list of dictionaries. Each dictionary in the list has two string keys, ``start`` and ``end``, who's values are strings representing dates in the ``YYYY-mm-dd`` format. :: [{'start': '2012-12-11', 'end': '2012-12-12'}, {'start': '2012-12-18', 'end': '2012-12-19'}] - Splits should be ordered from eldest to newest. - There should be gaps between each split. - Gaps are defined as at least one working day. Non-workdays such as weekends and holidays are not gaps. If there are multiple splits but there between two or more splits there is no gap, an error will be raised. For example:: >>> sg.update('Task', 2088, {'splits':[{'start':'2012-12-10', 'end':'2012-12-11'}, {'start':'2012-12-12', 'end':'2012-12-14'}, {'start':'2012-12-19', 'end':'2012-12-20'}]}) Traceback (most recent call last): File "", line 1, in File "/shotgun/src/python-api/shotgun_api3/shotgun.py", line 600, in update record = self._call_rpc("update", params) File "/shotgun/src/python-api/shotgun_api3/shotgun.py", line 1239, in _call_rpc self._response_errors(response) File "/shotgun/src/python-api/shotgun_api3/shotgun.py", line 1435, in _response_errors "Unknown Error")) shotgun_api3.shotgun.Fault: API update() CRUD ERROR #5: Update failed for [Task.splits]: (task.rb) The start date in split segment 2 is only one calendar day away from the end date of the previous segment. There must be calendar days between split segments. Alternately, a split value can be set to ``None`` to remove splits (you can also use an empty list). This will preserve the ``start_date`` and ``due_date`` values but recalculate the ``duration`` value while appropriately considering all workday rules in effect. ******************************************************** How Do Splits Influence Dates And Dates Influence Splits ******************************************************** - If splits are specified the supplied ``start_date``, ``due_date`` and ``duration`` fields will be ignored. - The ``start_date`` will be inferred from the earliest split. - The ``due_date`` will be inferred from the last split. - If the ``start_date`` is changed on a task that has splits the first split will be moved to start on the new ``start_date`` and all further splits will be moved while maintaining gap lengths between splits and respecting workday rules. - If the ``due_date`` is changed on a task that has splits the last split will be moved to end on the new ``due_date`` and all prior splits will be moved while maintaining gap lengths between splits and respecting workday rules. - If the ``duration`` is changed two scenarios are possible - In the case of a longer duration, additional days will be added to the end of the last split - In the case of a shorter duration splits, starting with the latest ones, will be either removed or shortened until the new duration is met. Examples for splitting Tasks ============================ Throughout the following examples, each successive one will build on the previous. start_date, due_date and duration being ignored ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sg.update('Task', 2088, { 'start_date': '2012-12-06', 'due_date': '2012-12-23', 'duration': 3600, 'splits': [ {'start': '2012-12-11', 'end': '2012-12-12'}, {'start': '2012-12-18', 'end': '2012-12-19'} ] }) # Task = { # 'start_date': '2012-12-11', # 'due_date': '2012-12-19', # 'duration': 2400, # 'splits': [ # {'start': '2012-12-11', 'end': '2012-12-12'}, # {'start': '2012-12-18', 'end': '2012-12-19'} # ] # } Result: .. image:: /images/split_tasks_1.png Moving the start_date of a split task ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sg.update('Task', 2088, { 'start_date': '2012-12-10' }) # Task = { # 'start_date': '2012-12-10', # 'due_date': '2012-12-18', # 'splits': [ # {'start': '2012-12-10', 'end': '2012-12-11'}, # {'start': '2012-12-14', 'end': '2012-12-18'} # ] # } Result: .. image:: /images/split_tasks_2.png Moving the due_date of a split task ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sg.update('Task', 2088, { 'due_date': '2012-12-19' }) # Task = { # 'start_date': '2012-12-10', # 'due_date': '2012-12-19', # 'splits': [ # {'start': '2012-12-10', 'end': '2012-12-11'}, # {'start': '2012-12-14', 'end': '2012-12-19'} # ] # } Result: .. image:: /images/split_tasks_3.png Setting a longer duration ~~~~~~~~~~~~~~~~~~~~~~~~~ :: sg.update('Task', 2088, { 'duration': 4200 }) # Task = { # 'start_date': '2012-12-10', # 'due_date': '2012-12-21', # 'duration': 4200, # 'splits': [ # {'start': '2012-12-10', 'end': '2012-12-11'}, # {'start': '2012-12-14', 'end': '2012-12-21'} # ] # } Result: .. image:: /images/split_tasks_4.png Setting a shorter duration ~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sg.update('Task', 2088, { 'duration': 2400 }) # Task = { # 'start_date': '2012-12-10', # 'due_date': '2012-12-18', # 'duration': 2400, # 'splits': [ # {'start': '2012-12-10', 'end': '2012-12-11'}, # {'start': '2012-12-14', 'end': '2012-12-18'} # ] # } Result: .. image:: /images/split_tasks_5.png Another example of shorter duration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We won't be using the previous result for this example but rather, the following: .. image:: /images/split_tasks_6.png who's duration we will shorten past the last split. :: sg.update('Task', 2088, { 'duration': 1800 }) # Task = { # 'start_date': '2012-12-10', # 'due_date': '2012-12-18', # 'duration': 2400, # 'splits': [ # {'start': '2012-12-10', 'end': '2012-12-11'}, # {'start': '2012-12-14', 'end': '2012-12-18'} # ] # } Result: .. image:: /images/split_tasks_7.png Setting the due_date in a gap ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When a due date is set in a gap later splits are removed and the day of the due date is considered a day when work will be done. For this example let's assume as a starting point the result of the 5th example: .. image:: /images/split_tasks_8.png :: sg.update('Task', 2088, { 'due_date': '2012-12-13' }) # Task = { # 'start_date': '2012-12-10', # 'due_date': '2012-12-13', # 'duration': 1800, # 'splits': [ # {'start': '2012-12-10', 'end': '2012-12-11'}, # {'start': '2012-12-13', 'end': '2012-12-13'} # ] # } Result: .. image:: /images/split_tasks_9.png ================================================ FILE: docs/cookbook/tasks/task_dependencies.rst ================================================ .. _task_dependencies: ################# Task Dependencies ################# Task dependencies work the same way in the API as they do in the UI. You can filter and sort on any of the fields. For information about Task Dependencies in Flow Production Tracking, check out the `main documentation page on our support site `_ ************ Create Tasks ************ Let's create a couple of Tasks and create dependencies between them. First we'll create a "Layout" Task for our Shot:: data = { 'project': {'type':'Project', 'id':65}, 'content': 'Layout', 'start_date': '2010-04-28', 'due_date': '2010-05-05', 'entity': {'type':'Shot', 'id':860} } result = sg.create(Task, data) Returns:: {'content': 'Layout', 'due_date': '2010-05-05', 'entity': {'id': 860, 'name': 'bunny_010_0010', 'type': 'Shot'}, 'id': 556, 'project': {'id': 65, 'name': 'Demo Animation Project', 'type': 'Project'}, 'start_date': '2010-04-28', 'type': 'Task'} Now let's create an "Anm" Task for our Shot:: data = { 'project': {'type':'Project', 'id':65}, 'content': 'Anm', 'start_date': '2010-05-06', 'due_date': '2010-05-12', 'entity': {'type':'Shot', 'id':860} } result = sg.create(Task, data) Returns:: {'content': 'Anm', 'due_date': '2010-05-12', 'entity': {'id': 860, 'name': 'bunny_010_0010', 'type': 'Shot'}, 'id': 557, 'project': {'id': 65, 'name': 'Demo Animation Project', 'type': 'Project'}, 'start_date': '2010-05-06, 'type': 'Task'} ******************* Create A Dependency ******************* Tasks each have an ``upstream_tasks`` field and a ``downstream_tasks`` field. Each field is a list ``[]`` type and can contain zero, one, or multiple Task entity dictionaries representing the dependent Tasks. There are four dependency types from which you can choose: ``finish-to-start-next-day``, ``start-to-finish-next-day``, ``start-to-start``, ``finish-to-finish``. If no dependency type is provided the default ``finish-to-start-next-day`` will be used. Here is how to create a dependency between our "Layout" and "Anm" Tasks:: # make 'Layout' an upstream Task to 'Anm'. (aka, make 'Anm' dependent on 'Layout') with finish-to-start-next-day dependency type data = { 'upstream_tasks':[{'type':'Task','id':556, 'dependency_type': 'finish-to-start-next-day'}] } result = sg.update('Task', 557, data) Returns:: [{'id': 557, 'type': 'Task', 'upstream_tasks': [{'id': 556, 'name': 'Layout', 'type': 'Task'}]}] This will also automatically update the `downstream_tasks` field on 'Layout' to include the 'Anm' Task. *********************** Query Task Dependencies *********************** Task Dependencies each have a ``dependent_task_id`` and a ``task_id`` fields. They correspond to ``upstream_task`` and ``downstream_task`` ids of the dependency accordingly. Here is how to get a TaskDependency using a ``dependent_task_id`` and a ``task_id`` fields:: filters = [["dependent_task_id", "is", 72], ["task_id", "is", 75]] result = sg.find_one('TaskDependency', filters) Returns:: {'type': 'TaskDependency', 'id': 128} **************************** Updating the Dependency type **************************** When updating the dependency type for the existing dependencies, update the ``dependency_type`` field of the TaskDependency directly:: result = sg.update('TaskDependency', 128, {'dependency_type': 'start-to-start'}) Returns:: {'dependency_type': 'start-to-start', 'type': 'TaskDependency', 'id': 128} ********************************** Query Tasks with Dependency Fields ********************************** So now lets look at the Tasks we've created and their dependency-related fields:: filters = [ ['entity', 'is', {'type':'Shot', 'id':860}] ] fields = [ 'content', 'start_date', 'due_date', 'upstream_tasks', 'downstream_tasks', 'dependency_violation', 'pinned' ] result = sg.find("Task", filters, fields) Returns:: [{'content': 'Layout', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'Anm', 'id': 557}], 'due_date': '2010-05-05', 'id': 556, 'pinned': False, 'start_date': '2010-04-28', 'type': 'Task', 'upstream_tasks': []}, {'content': 'Anm', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'FX', 'id': 558}], 'due_date': '2010-05-12', 'id': 557, 'pinned': False, 'start_date': '2010-05-06', 'type': 'Task', 'upstream_tasks': [{'type': 'Task', 'name': 'Layout', 'id': 556}]}, ... *Note that we have also created additional Tasks for this Shot but we're going to focus on these first two for simplicity.* ***************************************************************** Updating the End Date on a Task with Downstream Task Dependencies ***************************************************************** If we update the ``due_date`` field on our "Layout" Task, we'll see that the "Anm" Task dates will automatically get pushed back to keep the dependency satisfied:: result = sg.update('Task', 556, {'due_date': '2010-05-07'}) Returns:: [{'due_date': '2010-05-07', 'type': 'Task', 'id': 556}] Our Tasks now look like this (notice the new dates on the "Anm" Task):: [{'content': 'Layout', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'Anm', 'id': 557}], 'due_date': '2010-05-07', 'id': 556, 'pinned': False, 'start_date': '2010-04-28', 'type': 'Task', 'upstream_tasks': []}, {'content': 'Anm', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'FX', 'id': 558}], 'due_date': '2010-05-14', 'id': 557, 'pinned': False, 'start_date': '2010-05-10', 'type': 'Task', 'upstream_tasks': [{'type': 'Task', 'name': 'Layout', 'id': 556}]}, ... ********************************************************** Creating a Dependency Violation by pushing up a Start Date ********************************************************** Task Dependencies can work nicely if you are pushing out an end date for a Task as it will just recalculate the dates for all of the dependent Tasks. But what if we push up the Start Date of our "Anm" Task to start before our "Layout" Task is scheduled to end? :: result = sg.update('Task', 557, {'start_date': '2010-05-06'}) Returns:: [{'type': 'Task', 'start_date': '2010-05-06', 'id': 557}] Our Tasks now look like this:: [{'content': 'Layout', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'Anm', 'id': 557}], 'due_date': '2010-05-07', 'id': 556, 'pinned': False, 'start_date': '2010-04-28', 'type': 'Task', 'upstream_tasks': []}, {'content': 'Anm', 'dependency_violation': True, 'downstream_tasks': [{'type': 'Task', 'name': 'FX', 'id': 558}], 'due_date': '2010-05-12', 'id': 557, 'pinned': True, 'start_date': '2010-05-06', 'type': 'Task', 'upstream_tasks': [{'type': 'Task', 'name': 'Layout', 'id': 556}]}, ... Because the "Anm" Task ``start_date`` depends on the ``due_date`` of the "Layout" Task, this change creates a dependency violation. The update succeeds, but Flow Production Tracking has also set the ``dependency_violation`` field to ``True`` and has also updated the ``pinned`` field to ``True``. The ``pinned`` field simply means that if the upstream Task(s) are moved, the "Anm" Task will no longer get moved with it. The dependency is still there (in ``upstream_tasks``) but the Task is now "pinned" to those dates until the Dependency Violation is resolved. *********************************************************** Resolving a Dependency Violation by updating the Start Date *********************************************************** We don't want that violation there. Let's revert that change so the Start Date for "Anm" is after the End Date of "Layout":: result = sg.update('Task', 557, {'start_date': '2010-05-10'}) Returns:: [{'type': 'Task', 'start_date': '2010-05-10', 'id': 557}] Our Tasks now look like this:: [{'content': 'Layout', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'Anm', 'id': 557}], 'due_date': '2010-05-07', 'id': 556, 'pinned': False, 'start_date': '2010-04-28', 'type': 'Task', 'upstream_tasks': []}, {'content': 'Anm', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'FX', 'id': 558}], 'due_date': '2010-05-14', 'id': 557, 'pinned': True, 'start_date': '2010-05-10', 'type': 'Task', 'upstream_tasks': [{'type': 'Task', 'name': 'Layout', 'id': 556}]}, ... The ``dependency_violation`` field has now been set back to ``False`` since there is no longer a violation. But notice that the ``pinned`` field is still ``True``. We will have to manually update that if we want the Task to travel with its dependencies again:: result = sg.update('Task', 557, {'pinned': False}) Returns:: [{'pinned': False, 'type': 'Task', 'id': 557}] Our Tasks now look like this:: [{'content': 'Layout', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'Anm', 'id': 557}], 'due_date': '2010-05-07', 'id': 556, 'pinned': False, 'start_date': '2010-04-28', 'type': 'Task', 'upstream_tasks': []}, {'content': 'Anm', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'FX', 'id': 558}], 'due_date': '2010-05-14', 'id': 557, 'pinned': False, 'start_date': '2010-05-10', 'type': 'Task', 'upstream_tasks': [{'type': 'Task', 'name': 'Layout', 'id': 556}]}, ... Looks great. But that's an annoying manual process. What if we want to just reset a Task so that it automatically gets updated so that the Start Date is after its dependent Tasks? ******************************************************************* Updating the ``pinned`` field on a Task with a Dependency Violation ******************************************************************* Let's go back a couple of steps to where our "Anm" Task had a Dependency Violation because we had moved the Start Date up before the "Layout" Task End Date. Remember that the ``pinned`` field was also ``True``. If we simply update the ``pinned`` field to be ``False``, Flow Production Tracking will also automatically update the Task dates to satisfy the upstream dependencies and reset the ``dependency_violation`` value to ``False``:: result = sg.update('Task', 557, {'pinned': False}) Returns:: [{'pinned': False, 'type': 'Task', 'id': 557}] Our Tasks now look like this:: [{'content': 'Layout', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'Anm', 'id': 557}], 'due_date': '2010-05-07', 'id': 556, 'pinned': False, 'start_date': '2010-04-28', 'type': 'Task', 'upstream_tasks': []}, {'content': 'Anm', 'dependency_violation': False, 'downstream_tasks': [{'type': 'Task', 'name': 'FX', 'id': 558}], 'due_date': '2010-05-14', 'id': 557, 'pinned': False, 'start_date': '2010-05-10', 'type': 'Task', 'upstream_tasks': [{'type': 'Task', 'name': 'Layout', 'id': 556}]}, ... Notice by updating ``pinned`` to ``False``, Flow Production Tracking also updated the ``start_date`` and ``due_date`` fields of our "Anm" Task so it will satisfy the upstream Task dependencies. And since that succeeded, the ``dependency_violation`` field has also been set to ``False`` ******************************************* ``dependency_violation`` field is read-only ******************************************* The ``dependency_violation`` field is the only dependency-related field that is read-only. Trying to modify it will generate a Fault:: result = sg.update('Task', 557, {'dependency_violation': False}) Returns:: # -------------------------------------------------------------------------------- # XMLRPC Fault 103: # API update() Task.dependency_violation is read only: # {"value"=>false, "field_name"=>"dependency_violation"} # -------------------------------------------------------------------------------- # Traceback (most recent call last): # ... ================================================ FILE: docs/cookbook/tasks/updating_tasks.rst ================================================ .. _updating_tasks: ######################################################## Updating Task Dates: How Flow Production Tracking Thinks ######################################################## When updating Task dates in an API update() request, there is no specified order to the values that are passed in. Flow Production Tracking also does automatic calculation of the``start_date``,``due_date``, and ``duration`` fields for convenience. In order to clarify how updates are handled by Flow Production Tracking we are providing some general rules below and examples of what will happen when you make updates to your Tasks. ************** General Rules ************** - Updating the ``start_date`` automatically updates the ``due_date`` (``duration`` remains constant) - Updating the ``due_date`` automatically updates the ``duration`` (``start_date`` remains constant) - Updating the ``duration`` automatically updates the ``due_date`` (``start_date`` remains constant) - When updating Task values, Flow Production Tracking sets schedule fields (``milestone``, ``duration``, ``start_date``, ``due_date``) after all other fields, because the Project and Task Assignees affect schedule calculations. - If ``start_date`` and ``due_date`` are both set, ``duration`` is ignored (``duration`` can often be wrong since it's easy to calculate scheduling incorrectly). - If both ``start_date`` and ``due_date`` are provided, Flow Production Tracking sets ``start_date`` before ``due_date``. - Set ``milestone`` before other schedule fields (because ``start_date``, ``due_date``, and ``duration`` get lost if ``milestone`` is not set to ``False`` first) - If ``milestone`` is being set to ``True``, ``duration`` is ignored. - If ``milestone`` is set to ``True`` and ``start_date`` and ``due_date`` are also being set to conflicting values, an Exception is raised. - If ``due_date`` and ``duration`` are set together (without ``start_date``), ``duration`` is set first, then ``due_date`` (otherwise setting ``duration`` will change ``due_date`` after it is set). *************************** Examples for updating Tasks *************************** The following examples show what the resulting Task object will look like after being run on the initial Task object listed under the header of each section. The ``duration`` values in the following examples assume your Flow Production Tracking instance is set to 10-hour work days. If your server is configured with a different setting, the ``duration`` values will vary. .. note:: The ``duration`` field stores ``duration`` values in minutes ---- .. rubric:: Universal Regardless of current values on the Task, this behavior rules:: Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} **Update start_date and due_date** ``duration`` is ignored if also provided. It is instead set automatically as (``due_date`` - ``start_date``) :: sg.update ('Task', 123, {'start_date':'2011-05-25', 'due_date':'2011-05-30', 'duration':1200}) # Task = {'start_date': '2011-05-25', 'due_date': '2011-05-30', 'duration': 2400, 'id':123} - ``start_date`` is updated. - ``due_date`` is updated. - ``duration`` is calculated as (``due_date`` - ``start_date``) .. note:: The value provided in the update() is ignored (and in this case was also incorrect). **Update start_date and duration** :: sg.update ('Task', 123, {'start_date':'2011-05-25', 'duration':3600}) # Task = {'start_date': '2011-05-25', 'due_date': '2011-06-01', 'duration': 3600, 'id':123} - ``start_date`` is updated. - ``duration`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). **Update due_date and duration** :: sg.update ('Task', 123, {'due_date': '2011-05-20', 'duration':3600}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-20', 'duration': 600, 'id':123} - ``duration`` is updated. - ``due_date`` is updated. - ``duration`` is calculated as (``due_date`` - ``start_date``) .. note:: This means the ``duration`` provided is overwritten. ---- .. rubric:: Task has start_date only If the Task only has a ``start_date`` value and has no other date values, this is how updates will behave. :: Task = {'start_date': '2011-05-20', 'due_date': None, 'duration': None, 'id':123} **Update start_date** :: sg.update ('Task', 123, {'start_date':'2011-05-25'}) # Task = {'start_date': '2011-05-25', 'due_date': None, 'duration': None, 'id':123} - Only ``start_date`` is updated. **Update due_date** :: sg.update ('Task', 123, {'due_date':'2011-05-25'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). **Update duration** :: sg.update ('Task', 123, {'duration':2400}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} - ``duration`` is updated. - ``due_date`` is set to (``start_date`` + ``duration``) ---- .. rubric:: Task has due_date only If the Task only has a ``due_date`` value and has no other date values, this is how updates will behave. :: # Task = {'start_date': None, 'due_date': '2011-05-25', 'duration': None, 'id':123} **Update start_date** :: sg.update ('Task', 123, {'start_date':'2011-05-20'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} - ``start_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). **Update due_date** :: sg.update ('Task', 123, {'due_date':'2011-05-20'}) # Task = {'start_date': None, 'due_date': '2011-05-20', 'duration': None, 'id':123} - only ``due_date`` is updated. **Update duration** :: sg.update ('Task', 123, {'duration':2400}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} - ``duration`` is updated. - ``start_date`` is set to (``due_date`` - ``duration``) ---- .. rubric:: Task has duration only If the Task only has a ``duration`` value and has no other date values, this is how updates will behave. :: # Task = {'start_date': None, 'due_date': None, 'duration': 2400, 'id':123} **Update start_date** :: sg.update ('Task', 123, {'start_date':'2011-05-20'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). **Update due_date** :: sg.update ('Task', 123, {'due_date':'2011-05-25'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} - ``due_date`` is updated. - ``start_date`` is updated to (``due_date`` - ``duration``) **Update duration** :: sg.update ('Task', 123, {'duration':3600}) # Task = {'start_date': None, 'due_date': None, 'duration': 3600, 'id':123} - only ``duration`` is updated. ---- .. rubric:: Task has start_date and due_date If the Task has ``start_date`` and ``due_date`` values but has no ``duration``, this is how updates will behave. :: # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': None, 'id':123} **Update start_date** :: sg.update ('Task', 123, {'start_date':'2011-05-25'}) # Task = {'start_date': '2011-05-25', 'due_date': '2011-05-25', 'duration': 600, 'id':123} - ``start_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). **Update due_date** :: sg.update ('Task', 123, {'due_date':'2011-05-30'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-30', 'duration': 4200, 'id':123} - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``) **Update duration** :: sg.update ('Task', 123, {'duration':3600}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-27', 'duration': 3600, 'id':123} - ``duration`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``) ---- .. rubric:: Task has start_date and duration If the Task has ``start_date`` and ``duration`` values but has no ``due_date``, this is how updates will behave. :: # Task = {'start_date': '2011-05-20', 'due_date': None, 'duration': 2400, 'id':123} **Update start_date** :: sg.update ('Task', 123, {'start_date':'2011-05-25'}) # Task = {'start_date': '2011-05-25', 'due_date': '2011-05-30', 'duration': 2400, 'id':123} - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` +``duration``). **Update due_date** :: sg.update ('Task', 123, {'due_date':'2011-05-30'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-30', 'duration': 4200, 'id':123} - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). **Update duration** :: sg.update ('Task', 123, {'duration':3600}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-27', 'duration': 3600, 'id':123} - ``duration`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``) ---- .. rubric:: Task has due_date and duration If the Task has ``due_date`` and ``duration`` values but has no ``start_date``, this is how updates will behave. :: # Task = {'start_date': None, 'due_date': '2011-05-25', 'duration': 2400, 'id':123} **Update start_date** :: sg.update ('Task', 123, {'start_date':'2011-05-25'}) # Task = {'start_date': '2011-05-25', 'due_date': '2011-05-30', 'duration': 2400, 'id':123} - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). **Update due_date** :: sg.update ('Task', 123, {'due_date':'2011-05-30'}) # Task = {'start_date': '2011-05-25', 'due_date': '2011-05-30', 'duration': 2400, 'id':123} - ``due_date`` is updated. - ``start_date`` is updated to (``due_date`` - ``duration``). **Update duration** :: sg.update ('Task', 123, {'duration':3600}) # Task = {'start_date': '2011-05-18', 'due_date': '2011-05-25', 'duration': 3600, 'id':123} - ``duration`` is updated. - ``start_date`` is updated to (``due_date`` - ``duration``) ---- .. rubric:: Task has start_date ,due_date, and duration If the Task has ``start_date``, ``due_date``, and ``duration``, this is how updates will behave. :: # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} **Update start_date** :: sg.update ('Task', 123, {'start_date':'2011-05-25'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-30', 'duration': 2400, 'id':123} - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). **Update due_date** :: sg.update ('Task', 123, {'due_date':'2011-05-30'}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-30', 'duration': 4200, 'id':123} - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``) **Update duration** :: sg.update ('Task', 123, {'duration':3600}) # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-27', 'duration': 3600, 'id':123} - ``duration`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``) ================================================ FILE: docs/cookbook/tasks.rst ================================================ ################## Working With Tasks ################## Tasks have various special functionality available in the UI that can also be queried and manipulated through the API. The sections below cover these topics. .. toctree:: :maxdepth: 2 tasks/updating_tasks tasks/task_dependencies tasks/split_tasks ================================================ FILE: docs/cookbook/tutorials.rst ================================================ ######## Examples ######## Here's a list of various simple tutorials to walk through that should provide you with a good base understanding of how to use the Flow Production Tracking API and what you can do with it. ***** Basic ***** .. toctree:: :maxdepth: 1 examples/basic_sg_instance examples/basic_create_shot examples/basic_find_shot examples/basic_update_shot examples/basic_delete_shot examples/basic_create_shot_task_template examples/basic_create_version_link_shot examples/basic_upload_thumbnail_version ******** Advanced ******** .. toctree:: :maxdepth: 1 examples/ami_handler examples/ami_version_packager examples/svn_integration ================================================ FILE: docs/cookbook/usage_tips.rst ================================================ ############## API Usage Tips ############## Below is a list of helpful tips when using the Flow Production Tracking API3. We have tried to make the API very simple to use with predictable results while remaining a powerful tool to integrate with your pipeline. However, there's always a couple of things that crop up that our users might not be aware of. Those are the types of things you'll find below. We'll be adding to this document over time as new questions come up from our users that exhibit these types of cases. ********* Importing ********* We strongly recommend you import the entire `shotgun_api3` module instead of just importing the :class:`shotgun_api3.Shotgun` class from the module. There is other important functionality that is managed at the module level which may not work as expected if you only import the :class:`shotgun_api3.Shotgun` object. Do:: import shotgun_api3 Don't:: from shotgun_api3 import Shotgun *************** Multi-threading *************** The Flow Production Tracking API is not thread-safe. If you want to do threading we strongly suggest that you use one connection object per thread and not share the connection. .. _entity-fields: ************* Entity Fields ************* When you do a :meth:`~shotgun_api3.Shotgun.find` or a :meth:`~shotgun_api3.Shotgun.create` call that returns a field of type **entity** or **multi-entity** (for example the 'Assets' column on Shot), the entities are returned in a standard dictionary:: {'type': 'Asset', 'name': 'redBall', 'id': 1} For each entity returned, you will get a ``type``, ``name``, and ``id`` key. This does not mean there are fields named ``type`` and ``name`` on the Asset. These are only used to provide a consistent way to represent entities returned via the API. - ``type``: the entity type (CamelCase) - ``name``: the display name of the entity. For most entity types this is the value of the ``code`` field but not always. For example, on the Ticket and Delivery entities the ``name`` key would contain the value of the ``title`` field. .. _custom_entities: ************** CustomEntities ************** Entity types are always referenced by their original names. So if you enable CustomEntity01 and call it **Widget**. When you access it via the API, you'll still use CustomEntity01 as the ``entity_type``. If you want to be able to remember what all of your CustomEntities represent in a way where you don't need to go look it up all the time when you're writing a new script, we'd suggest creating a mapping table or something similar and dumping it in a shared module that your studio uses. Something like the following:: # studio_globals.py entity_type_map = { 'Widget': 'CustomEntity01', 'Foobar': 'CustomEntity02', 'Baz': 'CustomNonProjectEntity01, } # or even simpler, you could use a global like this ENTITY_WIDGET = 'CustomEntity01' ENTITY_FOOBAR = 'CustomEntity02' ENTITY_BAZ = 'CustomNonProjectEntity01' Then when you're writing scripts, you don't need to worry about remembering which Custom Entity "Foobars" are, you just use your global:: import shotgun_api3 import studio_globals sg = shotgun_api3.Shotgun('https://my-site.shotgrid.autodesk.com', 'script_name', '0123456789abcdef0123456789abcdef0123456') result = sg.find(studio_globals.ENTITY_WIDGET, filters=[['sg_status_list', 'is', 'ip']], fields=['code', 'sg_shot']) .. _connection_entities: ****************** ConnectionEntities ****************** Connection entities exist behind the scenes for any many-to-many relationship. Most of the time you won't need to pay any attention to them. But in some cases, you may need to track information on the instance of one entity's relationship to another. For example, when viewing a list of Versions on a Playlist, the Sort Order (``sg_sort_order``) field is an example of a field that resides on the connection entity between Playlists and Versions. This connection entity is appropriately called `PlaylistVersionConnection`. Because any Version can exist in multiple Playlists, the sort order isn't specific to the Version, it's specific to each _instance_ of the Version in a Playlist. These instances are tracked using connection entities in Shtogun and are accessible just like any other entity type in Flow Production Tracking. To find information about your Versions in the Playlist "Director Review" (let's say it has an ``id`` of 4). We'd run a query like so:: filters = [['playlist', 'is', {'type':'Playlist', 'id':4}]] fields = ['playlist.Playlist.code', 'sg_sort_order', 'version.Version.code', 'version.Version.user', 'version.Version.entity'] order=[{'column':'sg_sort_order','direction':'asc'}] result = sg.find('PlaylistVersionConnection', filters, fields, order) Which returns the following:: [{'id': 28, 'playlist.Playlist.code': 'Director Review', 'sg_sort_order': 1.0, 'type': 'PlaylistVersionConnection', 'version.Version.code': 'bunny_020_0010_comp_v003', 'version.Version.entity': {'id': 880, 'name': 'bunny_020_0010', 'type': 'Shot'}, 'version.Version.user': {'id': 19, 'name': 'Artist 1', 'type': 'HumanUser'}}, {'id': 29, 'playlist.Playlist.code': 'Director Review', 'sg_sort_order': 2.0, 'type': 'PlaylistVersionConnection', 'version.Version.code': 'bunny_020_0020_comp_v003', 'version.Version.entity': {'id': 881, 'name': 'bunny_020_0020', 'type': 'Shot'}, 'version.Version.user': {'id': 12, 'name': 'Artist 8', 'type': 'HumanUser'}}, {'id': 30, 'playlist.Playlist.code': 'Director Review', 'sg_sort_order': 3.0, 'type': 'PlaylistVersionConnection', 'version.Version.code': 'bunny_020_0030_comp_v003', 'version.Version.entity': {'id': 882, 'name': 'bunny_020_0030', 'type': 'Shot'}, 'version.Version.user': {'id': 33, 'name': 'Admin 5', 'type': 'HumanUser'}}, {'id': 31, 'playlist.Playlist.code': 'Director Review', 'sg_sort_order': 4.0, 'type': 'PlaylistVersionConnection', 'version.Version.code': 'bunny_020_0040_comp_v003', 'version.Version.entity': {'id': 883, 'name': 'bunny_020_0040', 'type': 'Shot'}, 'version.Version.user': {'id': 18, 'name': 'Artist 2', 'type': 'HumanUser'}}, {'id': 32, 'playlist.Playlist.code': 'Director Review', 'sg_sort_order': 5.0, 'type': 'PlaylistVersionConnection', 'version.Version.code': 'bunny_020_0050_comp_v003', 'version.Version.entity': {'id': 884, 'name': 'bunny_020_0050', 'type': 'Shot'}, 'version.Version.user': {'id': 15, 'name': 'Artist 5', 'type': 'HumanUser'}}] - ``version`` is the Version record for this connection instance. - ``playlist`` is the Playlist record for this connection instance. - ``sg_sort_order`` is the sort order field on the connection instance. We can pull in field values from the linked Playlist and Version entities using dot notation like ``version.Version.code``. The syntax is ``fieldname.EntityType.fieldname``. In this example, ``PlaylistVersionConnection`` has a field named ``version``. That field contains a ``Version`` entity. The field we are interested on the Version is ``code``. Put those together with our f riend the dot and we have ``version.Version.code``. ************************************************************ Flow Production Tracking UI fields not available via the API ************************************************************ Summary type fields like Query Fields and Pipeline Step summary fields are currently only available via the UI. Some other fields may not work as expected through the API because they are "display only" fields made available for convenience and are only available in the browser UI. HumanUser ========= - ``name``: This is a UI-only field that is a combination of the ``firstname`` + ``' '`` + ``lastname``. Shot ==== **Smart Cut Fields**: These fields are available only in the browser UI. You can read more about smart cut fields and the API in the :ref:`Smart Cut Fields doc `:: smart_cut_in smart_cut_out smart_cut_duration smart_cut_summary_display smart_duration_summary_display smart_head_in smart_head_out smart_head_duration smart_tail_in smart_tail_out smart_tail_duration smart_working_duration Pipeline Step summary fields on entities ======================================== The Pipeline Step summary fields on entities that have Tasks aren't currently available via the API and are calculated on the client side in the UI. These fields are like ``step_0``, or ``step_13``. Note that the Pipeline Step entity itself is available via the API as the entity type ``Step``. Query Fields ============ Query fields are also summary fields like Pipeline Steps, the query is run from the client side UI and therefore is not currently supported in the API. ************ Audit Fields ************ You can set the ``created_by`` and ``created_at`` fields via the API at creation time. This is often useful for when you're importing or migrating data from another source and want to keep the history in tact. However, you cannot set the ``updated_by`` and ``updated_at`` fields. These are automatically set whenever an entity is created or updated. .. _logging: ***************************** Logging Messages from the API ***************************** The API uses standard python logging but does not define a handler. To see the logging output in stdout, define a streamhandler in your script:: import logging import shotgun_api3 as shotgun logging.basicConfig(level=logging.DEBUG) To write logging output from the Flow Production Tracking API to a file, define a file handler in your script:: import logging import shotgun_api3 as shotgun logging.basicConfig(level=logging.DEBUG, filename='/path/to/your/log') To suppress the logging output from the API in a script which uses logging, set the level of the Flow Production Tracking logger to a higher level:: import logging import shotgun_api3 as shotgun sg_log = logging.getLogger('shotgun_api3') sg_log.setLevel(logging.ERROR) ************* Optimizations ************* .. _combining-related-queries: Combining Related Queries ========================= Reducing round-trips for data via the API can significantly improve the speed of your application. Much like "Bubble Fields" / "Field Hopping" in the UI, we can poll Flow Production Tracking for data on the fields of entities linked to our main query, both as a part of the query parameters as well as in the data returned. Starting with a simple and common example, many queries require knowing what project your data is associated with. Without using "field hopping" in an API call, you would first get the project and then use that data for your follow up query, like so:: # Get the project project_name = 'Big Buck Bunny' sg_project = sg.find("Project", [['name', 'is', project_name]]) # Use project result to get associated shots sg_shots = sg.find("Shot", [['project', 'is', sg_project]], ['code']) With "field hopping" you can combine these queries into:: # Get all shots on 'Big Buck Bunny' project project_name = 'Big Buck Bunny' sg_shots = sg.find("Shot", [['project.Project.name', 'is', project_name]], ['code']) As you can see above, the syntax is to use "``.``" dot notation, joining field names to entity types in a chain. In this example we start with the field ``project`` on the ``Shot`` entity, then specify we're looking for the "name" field on the Project entity by specifying ``Project.name``. Now that we've demonstrated querying using dot notation, let's take a look at returning linked data by adding the status of each Sequence entity associated with each Shot in our previous query:: # Get shot codes and sequence status all in one query project_name = 'Big Buck Bunny' sg_shots = sg.find("Shot", [['project.Project.name', 'is', project_name]], ['code', 'sg_sequence.Sequence.sg_status_list']) The previous examples use the :meth:`~shotgun_api3.Shotgun.find` method. However, it's also applicable to the :meth:`~shotgun_api3.Shotgun.create` method. .. note:: Due to performance concerns with deep linking, we only support using dot notation chains for single-entity relationships. This means that if you try to pull data through a multi-entity field you will not get the desired result. ================================================ FILE: docs/cookbook.rst ================================================ ************ API Cookbook ************ Here we have a collection of useful information you can use for reference when writing your API scripts. From usage tips and gotchas to deeper examples of working with entities like Tasks and Files, there's a lot of example code in here for you to play with. .. rubric:: Usage Tips These are some best-practices and good guidelines to follow when developing your scripts. You'll also find some gotchas you can avoid. .. toctree:: :maxdepth: 2 cookbook/usage_tips .. rubric:: Examples Some basic example scripts that we walk you through from beginning to end. Feel free to copy and paste any of these into your own scripts. .. toctree:: :maxdepth: 3 cookbook/tutorials .. rubric:: Working With Files You'll probably be doing some work with files at your studio. This is a deep dive into some of the inners of how Flow Production Tracking handles files (also called Attachments) and the different ways to link to them. .. toctree:: :maxdepth: 2 cookbook/attachments .. rubric:: Working With Tasks Scheduling is a complex beast. Flow Production Tracking can handle lots of different types of functionality around scheduling like split tasks, dependencies, and more. These docs walk you through the details of how Flow Production Tracking thinks when it's handling Task changes and how you can make your scripts do what you need to do. .. toctree:: :maxdepth: 2 cookbook/tasks .. rubric:: Smart Cut Fields Smart Cut Fields are deprecated in favor of the `new cut support added in ShotGrid v7.0 `_. This documentation remains only to support studios who may not have upgraded to the new cut support features. .. toctree:: :maxdepth: 2 cookbook/smart_cut_fields ================================================ FILE: docs/index.rst ================================================ ########################################### Flow Production Tracking Python API library ########################################### Release |version|. (:ref:`Installation `) .. image:: https://img.shields.io/badge/shotgun-api-blue.svg Flow Production Tracking (FPTR) provides a simple Python-based API for accessing FPTR and integrating with other tools. The Flow Production Tracking API3, also known as "Python API", allows users to integrate their tools with Flow Production Tracking very easily. Using this simple but powerful python module, you can quickly get your scripts integrated with Flow Production Tracking's CRUD-based API. Because the needs of every studio can prove to be very different, we don't include a lot of "automation" or "smarts" in our API. We have kept it pretty low-level and leave most of those decisions to you. The API is powerful enough you can write your own "smarts" in a wrapper on top of the of the FPTR API3. .. _pythonoverviewvideo: Overview Video of Setting Up Your Environment with the Python API ================================================================= .. raw:: html In addition to basic metadata, the API contains methods for managing media including thumbnails, filmstrip thumbnails, images, uploaded, and both locally and remotely linked media like Quicktimes, etc. **Example**:: sg = shotgun_api3.Shotgun("https://my-site.shotgrid.autodesk.com", login="rhendriks", password="c0mPre$Hi0n") sg.find("Shot", filters=[["sg_status_list", "is", "ip"]], fields=["code", "sg_status_list"]) **Output**:: [{'code': 'bunny_020_0170', 'id': 896, 'sg_sequence': {'id': 5, 'name': 'bunny_020', 'type': 'Sequence'}, 'sg_status_list': 'ip', 'type': 'Shot'}, {'code': 'bunny_020_0200', 'id': 899, 'sg_sequence': {'id': 5, 'name': 'bunny_020', 'type': 'Sequence'}, 'sg_status_list': 'ip', 'type': 'Shot'}, {'code': 'bunny_030_0080', 'id': 907, 'sg_sequence': {'id': 6, 'name': 'bunny_030', 'type': 'Sequence'}, 'sg_status_list': 'ip', 'type': 'Shot'}] ********** User Guide ********** .. toctree:: :maxdepth: 2 installation authentication reference cookbook advanced Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ================================================ FILE: docs/installation.rst ================================================ ############ Installation ############ ******************** Minimum Requirements ******************** .. note:: Some features of the API are only supported by more recent versions of the Flow Production Tracking server. These features are added to the Python API in a backwards compatible way so that existing scripts will continue to function as expected. Accessing a method that is not supported for your version of Flow Production Tracking will raise an appropriate exception. In general, we attempt to document these where possible. Python versions =============== The Python API library supports the following Python versions: `3.9`, `3.10`, `3.11`, and `3.13`. We recommend using Python 3.13. .. important:: Python versions older than 3.9 are no longer supported as of March 2025 and compatibility will be discontinued after March 2026. ****************************** Installing into ``PYTHONPATH`` ****************************** You can `download the latest release from Github `_ or `clone the repo `_ to your local filesystem. You'll need to save it somewhere your local Python installation can find it. .. seealso:: For more information on ``PYTHONPATH`` and using modules in Python, see http://docs.python.org/tutorial/modules.html .. note:: :ref:`Visit the introduction to the Python API ` to see an overview video of Setting Up Your Environment with the Python API. *********************** Installing with ``pip`` *********************** Installing the Master Branch From Github ======================================== If you wish to install the current master, use the following command:: pip install git+https://github.com/shotgunsoftware/python-api.git .. note:: The master branch contains the latest revisions and while largely considered "stable" it is not an official packaged release. Installing A specific Version From Github ========================================= To install a specific version of the package from Github, run the following command. This example installs the v3.0.26 tag, replace the version tag with the one you want:: pip install git+https://github.com/shotgunsoftware/python-api.git@v3.0.26 ``requirements.txt`` ~~~~~~~~~~~~~~~~~~~~ If you're using pip with `requirements.txt`, add the following line:: git+https://github.com/shotgunsoftware/python-api.git **************************** Installing with ``setup.py`` **************************** From a local copy of the repository, you can run ``python setup.py install`` to copy the package inside your python ``site-packages``. Note that while ``setuptools`` will complain about syntax errors when installing the library, the library is fully functional. ================================================ FILE: docs/reference.rst ================================================ .. currentmodule:: shotgun_api3 .. _apireference: ############# API Reference ############# ***************************** ``shotgun`` Module Attributes ***************************** The :mod:`~shotgun_api3.shotgun` module is a container for the :class:`~shotgun.Shotgun` class. There are a couple of useful attributes to note. .. automodule:: shotgun_api3.shotgun :members: LOG :private-members: :special-members: *************** Shotgun() *************** .. autoclass:: Shotgun :show-inheritance: *************** Shotgun Methods *************** The majority of functionality is contained within the :class:`~shotgun_api3.Shotgun` class. The documentation for all of the methods you'll need in your scripts lives in here. .. rubric:: Connection & Authentication .. autosummary:: :nosignatures: Shotgun.connect Shotgun.close Shotgun.authenticate_human_user Shotgun.get_session_token Shotgun.add_user_agent Shotgun.reset_user_agent Shotgun.set_session_uuid Shotgun.info .. rubric:: CRUD Methods .. autosummary:: :nosignatures: Shotgun.create Shotgun.find Shotgun.find_one Shotgun.update Shotgun.delete Shotgun.revive Shotgun.batch Shotgun.summarize Shotgun.note_thread_read Shotgun.text_search Shotgun.update_project_last_accessed Shotgun.work_schedule_read Shotgun.work_schedule_update Shotgun.preferences_read Shotgun.export_page .. rubric:: Working With Files .. autosummary:: :nosignatures: Shotgun.upload Shotgun.upload_thumbnail Shotgun.upload_filmstrip_thumbnail Shotgun.download_attachment Shotgun.get_attachment_download_url Shotgun.share_thumbnail .. rubric:: Activity Stream .. autosummary:: :nosignatures: Shotgun.activity_stream_read Shotgun.follow Shotgun.unfollow Shotgun.followers Shotgun.following .. rubric:: Working with the Shotgun Schema and Preferences .. autosummary:: :nosignatures: Shotgun.schema_entity_read Shotgun.schema_field_read Shotgun.schema_field_create Shotgun.schema_field_update Shotgun.schema_field_delete Shotgun.schema_read Shotgun.schema Shotgun.entity_types Connection & Authentication =========================== These methods are used for connecting and authenticating with your Flow Production Tracking server. Most of this is done automatically when you instantiate your instance. But if you need finer-grain control, these methods are available. .. automethod:: Shotgun.connect .. automethod:: Shotgun.close .. automethod:: Shotgun.authenticate_human_user .. automethod:: Shotgun.get_session_token .. automethod:: Shotgun.get_auth_cookie_handler .. automethod:: Shotgun.add_user_agent .. automethod:: Shotgun.reset_user_agent .. automethod:: Shotgun.set_session_uuid .. automethod:: Shotgun.info Subscription Management ======================= These methods are used for reading and assigning user subscriptions. .. automethod:: Shotgun.user_subscriptions_read .. automethod:: Shotgun.user_subscriptions_create CRUD Methods ============ These are the main methods for creating, reading, updating, and deleting information. There are also some specialized convenience methods for accessing particular types of information. .. automethod:: Shotgun.create .. automethod:: Shotgun.find .. automethod:: Shotgun.find_one .. automethod:: Shotgun.update .. automethod:: Shotgun.delete .. automethod:: Shotgun.revive .. automethod:: Shotgun.batch .. automethod:: Shotgun.summarize .. automethod:: Shotgun.note_thread_read .. automethod:: Shotgun.text_search .. automethod:: Shotgun.update_project_last_accessed .. automethod:: Shotgun.work_schedule_read .. automethod:: Shotgun.work_schedule_update .. automethod:: Shotgun.preferences_read .. automethod:: Shotgun.export_page Working With Files ================== Methods that handle uploading and downloading files including thumbnails. .. seealso:: :ref:`attachments` .. automethod:: Shotgun.upload .. automethod:: Shotgun.upload_thumbnail .. automethod:: Shotgun.upload_filmstrip_thumbnail .. automethod:: Shotgun.download_attachment .. automethod:: Shotgun.get_attachment_download_url .. automethod:: Shotgun.share_thumbnail Activity Stream =============== Methods that relate to the activity stream and following of entities in Flow Production Tracking. .. automethod:: Shotgun.activity_stream_read .. automethod:: Shotgun.follow .. automethod:: Shotgun.unfollow .. automethod:: Shotgun.followers .. automethod:: Shotgun.following Working with the Shotgun Schema =============================== Methods allow you to introspect and modify the Shotgun schema. .. automethod:: Shotgun.schema_entity_read .. automethod:: Shotgun.schema_field_read .. automethod:: Shotgun.schema_field_create .. automethod:: Shotgun.schema_field_update .. automethod:: Shotgun.schema_field_delete .. automethod:: Shotgun.schema_read .. automethod:: Shotgun.schema .. automethod:: Shotgun.entity_types ********** Exceptions ********** These are the various exceptions that the Flow Production Tracking API will raise. .. autoclass:: shotgun_api3.ShotgunError :show-inheritance: :inherited-members: :members: .. autoclass:: shotgun_api3.ShotgunFileDownloadError :show-inheritance: :inherited-members: :members: .. autoclass:: shotgun_api3.Fault :show-inheritance: :inherited-members: :members: .. autoclass:: shotgun_api3.AuthenticationFault :show-inheritance: :inherited-members: :members: .. autoclass:: shotgun_api3.MissingTwoFactorAuthenticationFault :show-inheritance: :inherited-members: :members: .. _filter_syntax: ************* Filter Syntax ************* Basic Filters ============= Filters are represented as a list of conditions that will be combined using the supplied filter_operator (``any`` or ``all``). Each condition follows the basic simple form:: [, , ] Basic Example ------------- Using the default filter_operator ``"all"``, the following filters will return all Shots whose status is "ip" AND is linked to Asset #9:: filters = [ ["sg_status_list", "is", "ip"], ["assets", "is", {"type": "Asset", "id": 9}] ] result = sg.find("Shot", filters) Complex Filters =============== .. versionadded::3.0.11 Complex filters can be a dictionary that represents a complex sub-condition of the form:: {"filter_operator": "any", "filters": []} Complex Example --------------- Using the default filter_operator ``"all"``, the following filters will return all Shots whose status is "ip" AND is linked to either Asset #9 OR Asset #23:: filters = [ ["sg_status_list", "is", "ip"], { "filter_operator": "any", "filters": [ ["assets", "is", {"type": "Asset", "id": 9}], ["assets", "is", {"type": "Asset", "id": 23}] ] } ] result = sg.find("Shot", filters) Operators and Arguments ======================= :: Operator Arguments -------- --------- 'is' [field_value] | None 'is_not' [field_value] | None 'less_than' [field_value] | None 'greater_than' [field_value] | None 'contains' [field_value] | None 'not_contains' [field_value] | None 'starts_with' [string] 'ends_with' [string] 'between' [[field_value] | None, [field_value] | None] 'not_between' [[field_value] | None, [field_value] | None] 'in_last' [[int], 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'] # note that brackets are not literal (eg. ['start_date', 'in_last', 1, 'DAY']) 'in_next' [[int], 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'] # note that brackets are not literal (eg. ['start_date', 'in_next', 1, 'DAY']) 'in' [[field_value], ...] # Array of field values 'type_is' [string] | None # Shotgun entity type 'type_is_not' [string] | None # Shotgun entity type 'in_calendar_day' [int] # Offset (e.g. 0 = today, 1 = tomorrow, # -1 = yesterday) 'in_calendar_week' [int] # Offset (e.g. 0 = this week, 1 = next week, # -1 = last week) 'in_calendar_month' [int] # Offset (e.g. 0 = this month, 1 = next month, # -1 = last month) 'name_contains' [string] 'name_not_contains' [string] 'name_starts_with' [string] 'name_ends_with' [string] Valid Operators By Data Type ============================ :: addressing 'is' 'is_not' 'contains' 'not_contains' 'in' 'type_is' 'type_is_not' 'name_contains' 'name_not_contains' 'name_starts_with' 'name_ends_with' checkbox 'is' 'is_not' currency 'is' 'is_not' 'less_than' 'greater_than' 'between' 'not_between' 'in' 'not_in' date 'is' 'is_not' 'greater_than' 'less_than' 'in_last' 'not_in_last' 'in_next' 'not_in_next' 'in_calendar_day' 'in_calendar_week' 'in_calendar_month' 'in_calendar_year' 'between' 'in' 'not_in' date_time 'is' 'is_not' 'greater_than' 'less_than' 'in_last' 'not_in_last' 'in_next' 'not_in_next' 'in_calendar_day' 'in_calendar_week' 'in_calendar_month' 'in_calendar_year' 'between' 'in' 'not_in' duration 'is' 'is_not' 'greater_than' 'less_than' 'between' 'in' 'not_in' entity 'is' 'is_not' 'type_is' 'type_is_not' 'name_contains' 'name_not_contains' 'name_is' 'in' 'not_in' float 'is' 'is_not' 'greater_than' 'less_than' 'between' 'in' 'not_in' image 'is' ** Note: For both 'is' and 'is_not', the only supported value is None, 'is_not' ** which supports detecting the presence or lack of a thumbnail. list 'is' 'is_not' 'in' 'not_in' multi_entity 'is' ** Note: when used on multi_entity, this functions as you would expect 'contains' to function 'is_not' 'type_is' 'type_is_not' 'name_contains' 'name_not_contains' 'in' 'not_in' number 'is' 'is_not' 'less_than' 'greater_than' 'between' 'not_between' 'in' 'not_in' password ** Filtering by this data type field not supported percent 'is' 'is_not' 'greater_than' 'less_than' 'between' 'in' 'not_in' serializable ** Filtering by this data type field not supported status_list 'is' 'is_not' 'in' 'not_in' summary ** Filtering by this data type field not supported tag_list 'is' ** Note: when used on tag_list, this functions as you would expect 'contains' to function 'is_not' 'name_contains' 'name_not_contains' 'name_id' text 'is' 'is_not' 'contains' 'not_contains' 'starts_with' 'ends_with' 'in' 'not_in' timecode 'is' 'is_not' 'greater_than' 'less_than' 'between' 'in' 'not_in' url ** Filtering by this data type field is not supported .. _additional_filter_presets: Additional Filter Presets ========================= As of Flow Production Tracking version 7.0 it is possible to also use filter presets. These presets provide a simple way to specify powerful query filters that would otherwise be costly and difficult to craft using traditional filters. Multiple presets can be specified in cases where it makes sense. Also, these presets can be used alongside normal filters. The result returned is an AND operation between the specified filters. Example Uses ------------ The following query will return the Version with the name 'ABC' that is linked to the latest entity created:: additional_filter_presets = [ { "preset_name": "LATEST", "latest_by": "ENTITIES_CREATED_AT" } ] filters = [['code', 'is', 'ABC']] result = sg.find('Version', filters = filters, additional_filter_presets = additional_filter_presets) The following query will find all CutItems associated to Cut #1 and return all Versions associated to the Shot linked to each of these CutItems:: additional_filter_presets = [ { "preset_name": "CUT_SHOT_VERSIONS", "cut_id": 1 } ] result = sg.find('Version', additional_filter_presets = additional_filter_presets) Available Filter Presets by Entity Type --------------------------------------- Allowed filter presets (and preset parameter values) depend on the entity type being searched. The table bellow gives the details about which filter preset can be used on each entity type and with which parameters. :: Entity Type Preset Name Preset Parameters Allowed Preset Parameter Values ----------- ----------- ----------------- ------------------------------- Cut LATEST [string] latest_by 'REVISION_NUMBER': Returns the cuts that have the highest revision number. This is typically used with a query filter that returns cuts with the same value for a given field (e.g. code field). This preset therefore allows to get the Cut of that set that has the highest revision_number value. Version CUT_SHOT_VERSIONS [int] cut_id Valid Cut entity id. Returns all Version entities associated to the Shot entity associated to the CutItems of the given Cut. This basically allows to find all Versions associated to the given Cut, via its CutItems. LATEST [string] latest_by 'ENTITIES_CREATED_AT': When dealing with multiple Versions associated to a group of entities, this will return only the last Version created for each entity. For example, when dealing with a set of Shots, this preset allows to find the latest Version created for each of these Shots. 'BY_PIPELINE_STEP_NUMBER_AND_ENTITIES_CREATED_AT': When dealing with multiple versions associated to the same entity *and* to Tasks, returns the Version associated to the Task with highest step.list_order. If multiple Versions are found for that step.list_order, only the latest Version is returned. This allows to isolate the Version entity that is the farthest along in the pipeline for a given entity. For example, when dealing with a Shot with multiple Versions, this preset will return the Version associated to the Task with the highest step.list_order value. Published LATEST [string] latest_by 'ENTITIES_CREATED_AT': Files When dealing with multiple PublishedFiles associated to a group of entities, this will return only the last PublishedFiles created for each entity. For example, when dealing with a set of Versions, this preset allows you to find the latest PublishedFile created for each of these Versions. 'VERSION_NUMBER': When dealing with multiple PublishedFiles associated with a group of entities, this returns only the PublishedFile with the highest version_number. .. _data_types: ********** Data Types ********** addressing ========== :value: :obj:`list` List of dicts:: [ { 'type': 'HumanUser' | 'Group', 'id': int, ... }, ... ] checkbox ======== :value: :obj:`bool` (``True`` | ``False``) color ===== :value: :obj:`str` :example: ``255,0,0`` | ``pipeline_step`` ``pipeline_step`` indicates the Task color inherits from the Pipeline Step color. currency ======== :value: :obj:`float` | :obj:`None` :range: ``-9999999999999.99``, ``9999999999999.99`` date ==== :value: :obj:`str` | :obj:`None` :range: Year must be >= 1970 :example: ``YYYY-MM-DD`` date_time ========= :value: :mod:`datetime` | :obj:`None` :range: Year must be >= 1970 .. note:: Datetimes are stored as UTC on the server. The Flow Production Tracking API is configured to automatically convert between client local time and UTC. This can be overridden. duration ======== :value: :obj:`int` | :obj:`None` :range: ``-2147483648``, ``2147483647`` Length of time, in minutes entity ====== :value: :obj:`dict` | :obj:`None` :: { 'type': "string", 'id': int, ... } float ===== :value: :obj:`float` | :obj:`None` :range: ``-999999999.999999``, ``999999999.999999`` footage ======= :value: :obj:`str` | :obj:`None` ``FF-ff`` :range: Frames must be < Preferences value for "Advanced > Number of frames per foot of film" .. note:: Format matches Preference value for "Formatting > Display of footage fields". Example above is default.F=Feet f=Frames. image (read-only) ================= :value: :obj:`str` | :obj:`None` .. note:: Refer to :ref:`interpreting_image_field_strings`. list ==== :value: :obj:`str` | :obj:`None` multi_entity ============ :value: :obj:`list` List of dicts :: [ { 'type': "string", 'id': int, ... }, ... ] number ====== :value: :obj:`int` | ``None`` :range: ``-2147483648``, ``2147483647`` password ======== :value: :obj:`string` | ``None`` Returned values of password fields are replaced with ``*******`` for security percent ======= :value: :obj:`int` | ``None`` :range: ``-2147483648``, ``2147483647`` serializable ============ :value: :obj:`dict` | ``None`` status_list =========== :value: :obj:`str` | ``None`` system_task_type (deprecated) ============================= :value: :obj:`str` | ``None`` tag_list ======== :value: :obj:`list` text ==== :value: :obj:`str` | ``None`` timecode ======== :value: :obj:`int` | ``None`` :range: ``-2147483648``, ``2147483647`` Length of time, in milliseconds (1000 = 1 second) url (file/link field) ===================== :value: :obj:`dict` | ``None`` :: { 'content_type': "string", 'link_type': "local" | "url" | "upload", 'name': "string", 'url': "string" } Local File Links ---------------- Additional keys exist for local file links :value: :obj:`dict` | ``None`` :: { 'content_type': "string", 'link_type': "local", 'local_path': "string" | None, 'local_path_linux': "string" | None, 'local_path_mac': "string" | None, 'local_path_windows': "string" | None, 'local_storage': { 'type': 'LocalStorage', 'id': int | None, 'name': "string" | None, }, 'name': "string", 'relative_path': "string" | None 'url': "string", } API versions < v3.0.3: { 'url': "string", 'name': "string", 'content_type': "string" } .. _interpreting_image_field_strings: ******************************** Interpreting Image Field Strings ******************************** There are three possible states for values returned by an ``image`` field: .. list-table:: :header-rows: 1 * - Type - Value - Description * - :obj:`None` - No thumbnail image uploaded, or thumbnail generation failed. * - :obj:`str` - | ``:///images/status/transient/thumbnail_pending.png`` - | URLs of this form indicate a transient placeholder icon. | Returned if image requested between upload & availability from media storage. | Constant string per site. * - :obj:`str` - | ```` - | Access to final thumbnail. .. note:: Other upcoming features are likely to require the use of other transient thumbnails. For this reason, it is highly recommended to use the prefix part of the placeholder path (e.g. https://my-site.shotgrid.autodesk.com/images/status/transient/) to detect any transient URLs rather than use the full path of the thumbnail. .. _event_types: *********** Event Types *********** Whenever a user makes a change to any data in Flow Production Tracking, an event log entry record is created, capturing the value before and after. Flow Production Tracking also logs some additional useful events that help keep track of various activity on your Flow Production Tracking instance. Event-based Triggers ==================== Events are particularlly useful when used in conjunction with a trigger framework like the `Flow Production Tracking Event Daemon `_. This allows you to write plug-ins that watch for certain types of events and then run code when they occur. Structure of Event Types ======================== The basic structure of event types is broken into 3 parts: ``Application_EntityType_Action`` - ``Application``: Is always "Shotgun" for events automatically created by the Flow Production Tracking server. Other Flow Production Tracking products may use their name in here, for example, Toolkit has its own events that it logs and the application portion is identified by "Toolkit". If you decide to use the EventLogEntry entity to log events for your scripts or tools, you would use your tool name here. - ``EntityType``: This is the entity type in Flow Production Tracking that was acted upon (eg. Shot, Asset, etc.) - ``Action``: The general action that was taken. (eg. New, Change, Retirement, Revival) Standard Event Types ==================== Each entity type has a standard set of events associated with it when it's created, updated, deleted, and revived. They follow this pattern: - ``Shotgun_EntityType_New``: a new entity was created. Example: ``Shotgun_Task_New`` - ``Shotgun_EntityType_Change``: an entity was modified. Example: ``Shotgun_HumanUser_Change`` - ``Shotgun_EntityType_Retirement``: an entity was deleted. Example: ``Shotgun_Ticket_Retirement`` - ``Shotgun_EntityType_Revival``: an entity was revived. Example: ``Shotgun_CustomEntity03_Revival`` Additional Event Types ====================== These are _some_ of the additional event types that are logged by Flow Production Tracking: - ``Shotgun_Attachment_View``: an Attachment (file) was viewed by a user. - ``Shotgun_Reading_Change``: a threaded entity has been marked read or unread. For example, a Note was read by a user. The readings are unique to the entity<->user connection so when a Note is read by user "joe" it may still be unread by user "jane". - ``Shotgun_User_Login``: a user logged in to Flow Production Tracking. - ``Shotgun_User_Logout``: a user logged out of Flow Production Tracking. Custom Event Types ================== Since ``EventLogEntries`` are entities themselves, you can create them using the API just like any other entity type. As mentioned previously, if you'd like to have your scripts or tools log to the Flow Production Tracking event log, simply devise a thoughtful naming structure for your event types and create the EventLogEntry as needed following the usual methods for creating entities via the API. Again, other Flow Production Tracking products like Toolkit use event logs this way. .. note:: EventLogEntries cannot be updated or deleted (that would defeat the purpose of course). Performance =========== Event log database tables can get large very quickly. While Flow Production Tracking does very well with event logs that get into the millions of records, there's an inevitable degradation of performance for pages that display them in the web application as well as any API queries for events when they get too big. This volume of events is not the norm, but can be reached if your server expereinces high usage. This **does not** mean your Flow Production Tracking server performance will suffer in general, just any pages that are specifically displaying EventLogEntries in the web application, or API queries on the event log that are run. We are always looking for ways to improve this in the future. If you have any immediate concerns, please `reach out to our support team `_ ********************* Environment Variables ********************* SHOTGUN_API_CACERTS =================== Use this variable to override the default Trusted Root Certification Authorities Certificate Store bundled with this library. By default, the library relies on `certifi `_ as its Root CA store. This environment variable can be used in place of the ``ca_certs`` keyword argument to the :class:`~shotgun.Shotgun` constructor. In the case that both this environment variable is set and the keyword argument is provided, the value from the keyword argument will be used. For an example about using ``SHOTGUN_API_CACERTS`` to fix a certificate issue, see the `SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed `_ article. SHOTGUN_API_RETRY_INTERVAL ========================== Stores the number of milliseconds to wait between request retries. By default, a value of 3000 milliseconds is used. You can override the default either by setting this environment variable, or by setting the ``rpc_attempt_interval`` property on the config like so: :: sg = Shotgun(site_name, script_name, script_key) sg.config.rpc_attempt_interval = 1000 # adjusting default interval In the case that both this environment variable and the config's ``rpc_attempt_interval`` property are set, the value in ``rpc_attempt_interal`` will be used. SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION ======================================= .. note:: (v3.7.0) This is an experimental feature. Feel free to disable this feature if you are experiencing any issues. When set to ``1``, this environment variable will disable the entity optimization feature. This feature is enabled by default and is used to reduce the payload size made to the server when retrieving entities improving overall performance by decreasing network latency and server processing. For example, a ``find`` call like this: .. code-block:: python sg.find('Asset', [['project', 'is', { 'created_at': datetime.datetime(2015, 12, 16, 11, 2, 10, tzinfo), 'id': 9999, 'name': 'Demo: Game', 'type': 'Project', # More entity attributes }]]) Will internally be transformed as if you invoked something like this: .. code-block:: python sg.find('Asset', [['project', 'is', {'id': 999, 'type': 'Project'}]]) SHOTGUN_ALLOW_OLD_PYTHON ======================== When set to ``1``, ``shotgun_api3`` will allow being imported from Python versions that are no longer supported. Otherwise, when unset (or set to any other value), importing the module will raise an exception. This is not recommended and should only be used for testing purposes. .. important:: The ability to import the module does not guarantee that the module will work properly on the unsupported Python version. In fact, it is very likely that it will not work properly. ************ Localization ************ The Flow Production Tracking API offers the ability to return localized display names in the current user's language. Requests made from script/API users are localized in the site settings. This functionality is currently supported by the methods ``Shotgun.schema_entity_read``, ``Shotgun.schema_field_read``, and ``Shotgun.schema_read``. Localization is disabled by default. To enable localization, set the ``localized`` property to ``True``. Example for a user whose language preference is set to Japanese: .. code-block:: python :emphasize-lines: 9,20 >>> sg = Shotgun(site_name, script_name, script_key) >>> sg.config.localized # checking that localization is disabled False >>> sg.schema_field_read('Shot') { 'sg_vendor_groups': { 'mandatory': {'editable': False, 'value': False}, # the value field (display name) is not localized 'name': {'editable': True, 'value': 'Vendor Groups'}, ... }, ... } >>> sg.config.localized = True # enabling the localization >>> sg.schema_field_read('Shot') { 'sg_vendor_groups': { 'mandatory': {'editable': False, 'value': False}, # the value field (display name) is localized 'name': {'editable': True, 'value': '\xe3\x83\x99\xe3\x83\xb3\xe3\x83\x80\xe3\x83\xbc \xe3\x82\xb0\xe3\x83\xab\xe3\x83\xbc\xe3\x83\x97'}, ... }, ... } ================================================ FILE: setup.py ================================================ # -*- coding: utf-8 -*- # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. import sys from setuptools import setup, find_packages f = open("README.md") readme = f.read().strip() f = open("LICENSE") license = f.read().strip() setup( name="shotgun_api3", version="3.10.0", description="Flow Production Tracking Python API", long_description=readme, author="Autodesk", author_email="https://www.autodesk.com/support", url="https://github.com/shotgunsoftware/python-api", license=license, packages=find_packages(exclude=("tests",)), script_args=sys.argv[1:], include_package_data=True, package_data={"": ["cacerts.txt", "cacert.pem", "py.typed"]}, zip_safe=False, python_requires=">=3.9.0", classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Operating System :: OS Independent", ], ) ================================================ FILE: shotgun_api3/__init__.py ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. import os import sys import warnings if sys.version_info < (3, 7): if os.environ.get("SHOTGUN_ALLOW_OLD_PYTHON", "0") != "1": # This is our preferred default behavior when using an old # unsupported Python version. # This way, we can control where the exception is raised, and it provides a # comprehensive error message rather than having users facing a random # Python traceback and trying to understand this is due to using an # unsupported Python version. raise RuntimeError("This module requires Python version 3.7 or higher.") warnings.warn( "Python versions older than 3.7 are no longer supported as of January " "2023. Since the SHOTGUN_ALLOW_OLD_PYTHON variable is enabled, this " "module is raising a warning instead of an exception. " "However, it is very likely that this module will not be able to work " "on this Python version.", RuntimeWarning, stacklevel=2, ) elif sys.version_info < (3, 9): warnings.warn( "Python versions older than 3.9 are no longer supported as of March " "2025 and compatibility will be discontinued after March 2026. " "Please update to Python 3.13 or any other supported version.", DeprecationWarning, stacklevel=2, ) from .shotgun import ( Shotgun, ShotgunError, ShotgunFileDownloadError, # noqa unused imports ShotgunThumbnailNotReady, Fault, AuthenticationFault, MissingTwoFactorAuthenticationFault, UserCredentialsNotAllowedForSSOAuthenticationFault, ProtocolError, ResponseError, Error, __version__, ) from .shotgun import SG_TIMEZONE as sg_timezone # noqa unused imports ================================================ FILE: shotgun_api3/lib/.gitignore ================================================ *.dist-info ================================================ FILE: shotgun_api3/lib/README.md ================================================ # Lib Submodules ## Third Party Modules Some third-party modules are bundled with `python-api` inside lib. ### httplib2 `httplib2` is used to make http connections to the Flow Production Tracking server. The version of `httplib2` bundled should be updated manually, however its version is included in the unused `shotgun_api3/lib/requirements.txt` to allow Github's automated CVE notifications to work. ## Flow Production Tracking Modules ### sgtimezone `sgtimezone` contains classes for easing the conversion between the server (UTC) timezone and client timezone. ### mockgun Mockgun is a Flow Production Tracking API mocker. It's a class that has got *most* of the same methods and parameters that the Flow Production Tracking API has got. Mockgun is essentially a Flow Production Tracking *emulator* that (for basic operations) looks and feels like Flow Production Tracking. The primary purpose of Mockgun is to drive unit test rigs where it becomes too slow, cumbersome or non-practical to connect to a real Flow Production Tracking. Using a Mockgun for unit tests means that a test can be rerun over and over again from exactly the same database state. This can be hard to do if you connect to a live Flow Production Tracking instance. ## Lib `requirements.txt` The file `shotgun_api3/lib/requirements.txt` is not used to install any packages, however exists so that automated checks for CVEs in dependencies will know about bundled packages. For this reason, it's important to add any newly bundled packages to this file, and to keep the file up to date if the bundled version of a module changes. ================================================ FILE: shotgun_api3/lib/__init__.py ================================================ ================================================ FILE: shotgun_api3/lib/certifi/__init__.py ================================================ from .core import contents, where __all__ = ["contents", "where"] __version__ = "2026.01.04" ================================================ FILE: shotgun_api3/lib/certifi/__main__.py ================================================ import argparse from certifi import contents, where parser = argparse.ArgumentParser() parser.add_argument("-c", "--contents", action="store_true") args = parser.parse_args() if args.contents: print(contents()) else: print(where()) ================================================ FILE: shotgun_api3/lib/certifi/cacert.pem ================================================ # Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited # Label: "QuoVadis Root CA 2" # Serial: 1289 # MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b # SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 # SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 -----BEGIN CERTIFICATE----- MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp +ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og /zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y 4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza 8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited # Label: "QuoVadis Root CA 3" # Serial: 1478 # MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf # SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 # SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 -----BEGIN CERTIFICATE----- MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB 4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd 8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A 4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd +LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B 4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK 4SVhM7JZG+Ju1zdXtg2pEto= -----END CERTIFICATE----- # Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root CA" # Serial: 17154717934120587862167794914071425081 # MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 # SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 # SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c -----BEGIN CERTIFICATE----- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Global Root CA" # Serial: 10944719598952040374951832963794454346 # MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e # SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 # SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- # Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert High Assurance EV Root CA" # Serial: 3553400076410547919724730734378100087 # MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a # SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 # SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep +OkuE6N36B9K -----END CERTIFICATE----- # Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG # Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG # Label: "SwissSign Gold CA - G2" # Serial: 13492815561806991280 # MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 # SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 # SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 -----BEGIN CERTIFICATE----- MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c 6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn 8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a 77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ -----END CERTIFICATE----- # Issuer: CN=SecureTrust CA O=SecureTrust Corporation # Subject: CN=SecureTrust CA O=SecureTrust Corporation # Label: "SecureTrust CA" # Serial: 17199774589125277788362757014266862032 # MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 # SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 # SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 -----BEGIN CERTIFICATE----- MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO 0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj 7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS 8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ 3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= -----END CERTIFICATE----- # Issuer: CN=Secure Global CA O=SecureTrust Corporation # Subject: CN=Secure Global CA O=SecureTrust Corporation # Label: "Secure Global CA" # Serial: 9751836167731051554232119481456978597 # MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de # SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b # SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 -----BEGIN CERTIFICATE----- MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa /FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW -----END CERTIFICATE----- # Issuer: CN=COMODO Certification Authority O=COMODO CA Limited # Subject: CN=COMODO Certification Authority O=COMODO CA Limited # Label: "COMODO Certification Authority" # Serial: 104350513648249232941998508985834464573 # MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 # SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b # SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 -----BEGIN CERTIFICATE----- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI 2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp +2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW /zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB ZQ== -----END CERTIFICATE----- # Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Label: "COMODO ECC Certification Authority" # Serial: 41578283867086692638256921589707938090 # MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 # SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 # SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 -----BEGIN CERTIFICATE----- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- # Issuer: CN=Certigna O=Dhimyotis # Subject: CN=Certigna O=Dhimyotis # Label: "Certigna" # Serial: 18364802974209362175 # MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff # SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 # SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d -----BEGIN CERTIFICATE----- MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q 130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG 9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== -----END CERTIFICATE----- # Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority # Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority # Label: "ePKI Root Certification Authority" # Serial: 28956088682735189655030529057352760477 # MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 # SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 # SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 -----BEGIN CERTIFICATE----- MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS /jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D hNQ+IIX3Sj0rnP0qCglN6oH4EZw= -----END CERTIFICATE----- # Issuer: O=certSIGN OU=certSIGN ROOT CA # Subject: O=certSIGN OU=certSIGN ROOT CA # Label: "certSIGN ROOT CA" # Serial: 35210227249154 # MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 # SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b # SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb -----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do 0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ 44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN 9u6wWk5JRFRYX0KD -----END CERTIFICATE----- # Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) # Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) # Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" # Serial: 80544274841616 # MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 # SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 # SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C +C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- # Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Label: "Microsec e-Szigno Root CA 2009" # Serial: 14014712776195784473 # MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 # SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e # SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 -----BEGIN CERTIFICATE----- MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 +rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c 2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Label: "GlobalSign Root CA - R3" # Serial: 4835703278459759426209954 # MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 # SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad # SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b -----BEGIN CERTIFICATE----- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH WD9f -----END CERTIFICATE----- # Issuer: CN=Izenpe.com O=IZENPE S.A. # Subject: CN=Izenpe.com O=IZENPE S.A. # Label: "Izenpe.com" # Serial: 917563065490389241595536686991402621 # MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 # SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 # SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f -----BEGIN CERTIFICATE----- MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== -----END CERTIFICATE----- # Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. # Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. # Label: "Go Daddy Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 # SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b # SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH /PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu 9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo 2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI 4uJEvlz36hz1 -----END CERTIFICATE----- # Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Label: "Starfield Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 # SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e # SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg 8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 -----END CERTIFICATE----- # Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Label: "Starfield Services Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 # SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f # SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 -----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk 6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn 0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN sSi6 -----END CERTIFICATE----- # Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority # Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority # Label: "Certum Trusted Network CA" # Serial: 279744 # MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 # SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e # SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e -----BEGIN CERTIFICATE----- MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= -----END CERTIFICATE----- # Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA # Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA # Label: "TWCA Root Certification Authority" # Serial: 1 # MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 # SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 # SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 -----BEGIN CERTIFICATE----- MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx 3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== -----END CERTIFICATE----- # Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 # Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 # Label: "Security Communication RootCA2" # Serial: 0 # MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 # SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 # SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy 1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 -----END CERTIFICATE----- # Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 # Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 # Label: "Actalis Authentication Root CA" # Serial: 6271844772424770508 # MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 # SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac # SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 -----BEGIN CERTIFICATE----- MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX 4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ 51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== -----END CERTIFICATE----- # Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 # Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 # Label: "Buypass Class 2 Root CA" # Serial: 2 # MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 # SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 # SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr 6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN 9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h 9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo +fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h 3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= -----END CERTIFICATE----- # Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 # Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 # Label: "Buypass Class 3 Root CA" # Serial: 2 # MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec # SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 # SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX 0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c /3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D 34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv 033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq 4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= -----END CERTIFICATE----- # Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Label: "T-TeleSec GlobalRoot Class 3" # Serial: 1 # MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef # SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 # SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN 8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ 1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT 91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p TpPDpFQUWw== -----END CERTIFICATE----- # Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH # Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH # Label: "D-TRUST Root Class 3 CA 2 2009" # Serial: 623603 # MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f # SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 # SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 -----BEGIN CERTIFICATE----- MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp /hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y Johw1+qRzT65ysCQblrGXnRl11z+o+I= -----END CERTIFICATE----- # Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH # Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH # Label: "D-TRUST Root Class 3 CA 2 EV 2009" # Serial: 623604 # MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 # SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 # SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp 3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 -----END CERTIFICATE----- # Issuer: CN=CA Disig Root R2 O=Disig a.s. # Subject: CN=CA Disig Root R2 O=Disig a.s. # Label: "CA Disig Root R2" # Serial: 10572350602393338211 # MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 # SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 # SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka +elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL -----END CERTIFICATE----- # Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV # Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV # Label: "ACCVRAIZ1" # Serial: 6828503384748696800 # MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 # SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 # SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 -----BEGIN CERTIFICATE----- MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ 0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA 7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH 7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 -----END CERTIFICATE----- # Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA # Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA # Label: "TWCA Global Root CA" # Serial: 3262 # MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 # SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 # SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF 10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz 0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc 46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm 4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL 1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh 15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW 6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy KwbQBM0= -----END CERTIFICATE----- # Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera # Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera # Label: "TeliaSonera Root CA v1" # Serial: 199041966741090107964904287217786801558 # MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c # SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 # SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 -----BEGIN CERTIFICATE----- MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ /jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs 81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG 9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- # Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Label: "T-TeleSec GlobalRoot Class 2" # Serial: 1 # MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a # SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 # SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi 1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP BSeOE6Fuwg== -----END CERTIFICATE----- # Issuer: CN=Atos TrustedRoot 2011 O=Atos # Subject: CN=Atos TrustedRoot 2011 O=Atos # Label: "Atos TrustedRoot 2011" # Serial: 6643877497813316402 # MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 # SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 # SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ 4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited # Label: "QuoVadis Root CA 1 G3" # Serial: 687049649626669250736271037606554624078720034195 # MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab # SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 # SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh 4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc 3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited # Label: "QuoVadis Root CA 2 G3" # Serial: 390156079458959257446133169266079962026824725800 # MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 # SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 # SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz 8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l 7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE +V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited # Label: "QuoVadis Root CA 3 G3" # Serial: 268090761170461462463995952157327242137089239581 # MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 # SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d # SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR /xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP 0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf 3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl 8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 -----END CERTIFICATE----- # Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root G2" # Serial: 15385348160840213938643033620894905419 # MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d # SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f # SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 -----BEGIN CERTIFICATE----- MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I 0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo IhNzbM8m9Yop5w== -----END CERTIFICATE----- # Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root G3" # Serial: 15459312981008553731928384953135426796 # MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb # SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 # SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 -----BEGIN CERTIFICATE----- MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv 6pZjamVFkpUBtA== -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Global Root G2" # Serial: 4293743540046975378534879503202253541 # MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 # SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 # SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f -----BEGIN CERTIFICATE----- MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI 2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx 1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV 5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY 1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl MrY= -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Global Root G3" # Serial: 7089244469030293291760083333884364146 # MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca # SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e # SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 -----BEGIN CERTIFICATE----- MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 sycX -----END CERTIFICATE----- # Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Trusted Root G4" # Serial: 7451500558977370777930084869016614236 # MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 # SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 # SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 -----BEGIN CERTIFICATE----- MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t 9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd +SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N 0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie 4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 /YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ -----END CERTIFICATE----- # Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited # Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited # Label: "COMODO RSA Certification Authority" # Serial: 101909084537582093308941363524873193117 # MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 # SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 # SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 -----BEGIN CERTIFICATE----- MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR 6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC 9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV /erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z +pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB /wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM 4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV 2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl 0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB NVOFBkpdn627G190 -----END CERTIFICATE----- # Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network # Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network # Label: "USERTrust RSA Certification Authority" # Serial: 2645093764781058787591871645665788717 # MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 # SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e # SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 -----BEGIN CERTIFICATE----- MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B 3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT 79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs 8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG jjxDah2nGN59PRbxYvnKkKj9 -----END CERTIFICATE----- # Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network # Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network # Label: "USERTrust ECC Certification Authority" # Serial: 123013823720199481456569720443997572134 # MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 # SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 # SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a -----BEGIN CERTIFICATE----- MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 # Label: "GlobalSign ECC Root CA - R5" # Serial: 32785792099990507226680698011560947931244 # MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 # SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa # SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 -----BEGIN CERTIFICATE----- MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc 8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg 515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO xwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- # Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust # Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust # Label: "IdenTrust Commercial Root CA 1" # Serial: 13298821034946342390520003877796839426 # MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 # SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 # SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT 3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU +ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH 6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 +wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG 4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A 7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H -----END CERTIFICATE----- # Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust # Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust # Label: "IdenTrust Public Sector Root CA 1" # Serial: 13298821034946342390521976156843933698 # MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba # SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd # SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f -----BEGIN CERTIFICATE----- MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF /YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R 3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy 9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ 2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 +bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv 8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c -----END CERTIFICATE----- # Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority # Subject: CN=CFCA EV ROOT O=China Financial Certification Authority # Label: "CFCA EV ROOT" # Serial: 407555286 # MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 # SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 # SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd -----BEGIN CERTIFICATE----- MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 /ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp 7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN 5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe /v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ 5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su -----END CERTIFICATE----- # Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed # Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed # Label: "OISTE WISeKey Global Root GB CA" # Serial: 157768595616588414422159278966750757568 # MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d # SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed # SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 -----BEGIN CERTIFICATE----- MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX 1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P 99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= -----END CERTIFICATE----- # Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. # Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. # Label: "SZAFIR ROOT CA2" # Serial: 357043034767186914217277344587386743377558296292 # MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 # SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de # SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe -----BEGIN CERTIFICATE----- MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT 3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw 3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw 8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== -----END CERTIFICATE----- # Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority # Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority # Label: "Certum Trusted Network CA 2" # Serial: 44979900017204383099463764357512596969 # MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 # SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 # SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 -----BEGIN CERTIFICATE----- MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn 0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n 3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P 5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi DrW5viSP -----END CERTIFICATE----- # Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority # Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority # Label: "Hellenic Academic and Research Institutions RootCA 2015" # Serial: 0 # MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce # SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 # SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 -----BEGIN CERTIFICATE----- MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA 4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV 9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot 9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 vm9qp/UsQu0yrbYhnr68 -----END CERTIFICATE----- # Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority # Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority # Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" # Serial: 0 # MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef # SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 # SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 -----BEGIN CERTIFICATE----- MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR -----END CERTIFICATE----- # Issuer: CN=ISRG Root X1 O=Internet Security Research Group # Subject: CN=ISRG Root X1 O=Internet Security Research Group # Label: "ISRG Root X1" # Serial: 172886928669790476064670243504169061120 # MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e # SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 # SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 -----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- # Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM # Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM # Label: "AC RAIZ FNMT-RCM" # Serial: 485876308206448804701554682760554759 # MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d # SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 # SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa -----BEGIN CERTIFICATE----- MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z 374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf 77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp 6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp 1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B 9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= -----END CERTIFICATE----- # Issuer: CN=Amazon Root CA 1 O=Amazon # Subject: CN=Amazon Root CA 1 O=Amazon # Label: "Amazon Root CA 1" # Serial: 143266978916655856878034712317230054538369994 # MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 # SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 # SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e -----BEGIN CERTIFICATE----- MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM 9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L 93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU 5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy rqXRfboQnoZsG4q5WTP468SQvvG5 -----END CERTIFICATE----- # Issuer: CN=Amazon Root CA 2 O=Amazon # Subject: CN=Amazon Root CA 2 O=Amazon # Label: "Amazon Root CA 2" # Serial: 143266982885963551818349160658925006970653239 # MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 # SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a # SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg 1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K 8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r 2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR 8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz 7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 +XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI 0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY +gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl 7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE 76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H 9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT 4PsJYGw= -----END CERTIFICATE----- # Issuer: CN=Amazon Root CA 3 O=Amazon # Subject: CN=Amazon Root CA 3 O=Amazon # Label: "Amazon Root CA 3" # Serial: 143266986699090766294700635381230934788665930 # MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 # SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e # SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 -----BEGIN CERTIFICATE----- MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM YyRIHN8wfdVoOw== -----END CERTIFICATE----- # Issuer: CN=Amazon Root CA 4 O=Amazon # Subject: CN=Amazon Root CA 4 O=Amazon # Label: "Amazon Root CA 4" # Serial: 143266989758080763974105200630763877849284878 # MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd # SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be # SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 -----BEGIN CERTIFICATE----- MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi 9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB /zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW 1KyLa2tJElMzrdfkviT8tQp21KW8EA== -----END CERTIFICATE----- # Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM # Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM # Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" # Serial: 1 # MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 # SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca # SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 -----BEGIN CERTIFICATE----- MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c 8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= -----END CERTIFICATE----- # Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. # Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. # Label: "GDCA TrustAUTH R5 ROOT" # Serial: 9009899650740120186 # MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 # SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 # SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 -----BEGIN CERTIFICATE----- MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io 2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV 09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== -----END CERTIFICATE----- # Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation # Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation # Label: "SSL.com Root Certification Authority RSA" # Serial: 8875640296558310041 # MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 # SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb # SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 -----BEGIN CERTIFICATE----- MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh /l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm +Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY Ic2wBlX7Jz9TkHCpBB5XJ7k= -----END CERTIFICATE----- # Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation # Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation # Label: "SSL.com Root Certification Authority ECC" # Serial: 8495723813297216424 # MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e # SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a # SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 -----BEGIN CERTIFICATE----- MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI 7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl -----END CERTIFICATE----- # Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation # Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation # Label: "SSL.com EV Root Certification Authority RSA R2" # Serial: 6248227494352943350 # MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 # SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a # SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c -----BEGIN CERTIFICATE----- MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa 4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM 79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz /bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== -----END CERTIFICATE----- # Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation # Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation # Label: "SSL.com EV Root Certification Authority ECC" # Serial: 3182246526754555285 # MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 # SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d # SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 -----BEGIN CERTIFICATE----- MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX 5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 # Label: "GlobalSign Root CA - R6" # Serial: 1417766617973444989252670301619537 # MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae # SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 # SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 -----BEGIN CERTIFICATE----- MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw 1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R 8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= -----END CERTIFICATE----- # Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed # Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed # Label: "OISTE WISeKey Global Root GC CA" # Serial: 44084345621038548146064804565436152554 # MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 # SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 # SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d -----BEGIN CERTIFICATE----- MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV 57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 -----END CERTIFICATE----- # Issuer: CN=UCA Global G2 Root O=UniTrust # Subject: CN=UCA Global G2 Root O=UniTrust # Label: "UCA Global G2 Root" # Serial: 124779693093741543919145257850076631279 # MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 # SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a # SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c -----BEGIN CERTIFICATE----- MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl 1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI +Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX UB+K+wb1whnw0A== -----END CERTIFICATE----- # Issuer: CN=UCA Extended Validation Root O=UniTrust # Subject: CN=UCA Extended Validation Root O=UniTrust # Label: "UCA Extended Validation Root" # Serial: 106100277556486529736699587978573607008 # MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 # SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a # SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 -----BEGIN CERTIFICATE----- MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs 1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp 4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj 2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax -----END CERTIFICATE----- # Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 # Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 # Label: "Certigna Root CA" # Serial: 269714418870597844693661054334862075617 # MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 # SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 # SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 -----BEGIN CERTIFICATE----- MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of 1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L 6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw 3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= -----END CERTIFICATE----- # Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI # Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI # Label: "emSign Root CA - G1" # Serial: 235931866688319308814040 # MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac # SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c # SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 -----BEGIN CERTIFICATE----- MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO 8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH 6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx iN66zB+Afko= -----END CERTIFICATE----- # Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI # Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI # Label: "emSign ECC Root CA - G3" # Serial: 287880440101571086945156 # MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 # SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 # SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b -----BEGIN CERTIFICATE----- MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD +JbNR6iC8hZVdyR+EhCVBCyj -----END CERTIFICATE----- # Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI # Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI # Label: "emSign Root CA - C1" # Serial: 825510296613316004955058 # MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 # SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 # SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f -----BEGIN CERTIFICATE----- MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH 3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 /kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT +xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= -----END CERTIFICATE----- # Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI # Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI # Label: "emSign ECC Root CA - C3" # Serial: 582948710642506000014504 # MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 # SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 # SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 -----BEGIN CERTIFICATE----- MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c 3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J 0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== -----END CERTIFICATE----- # Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post # Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post # Label: "Hongkong Post Root CA 3" # Serial: 46170865288971385588281144162979347873371282084 # MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 # SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 # SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 -----BEGIN CERTIFICATE----- MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5 NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV 9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY 2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+ l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG 7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS 3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+ l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG mpv0 -----END CERTIFICATE----- # Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation # Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation # Label: "Microsoft ECC Root Certificate Authority 2017" # Serial: 136839042543790627607696632466672567020 # MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 # SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 # SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 -----BEGIN CERTIFICATE----- MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= -----END CERTIFICATE----- # Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation # Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation # Label: "Microsoft RSA Root Certificate Authority 2017" # Serial: 40975477897264996090493496164228220339 # MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 # SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 # SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 -----BEGIN CERTIFICATE----- MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH +FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB RA+GsCyRxj3qrg+E -----END CERTIFICATE----- # Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. # Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. # Label: "e-Szigno Root CA 2017" # Serial: 411379200276854331539784714 # MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 # SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 # SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 -----BEGIN CERTIFICATE----- MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ +efcMQ== -----END CERTIFICATE----- # Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 # Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 # Label: "certSIGN Root CA G2" # Serial: 313609486401300475190 # MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 # SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 # SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 -----BEGIN CERTIFICATE----- MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj 03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE 1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX QRBdJ3NghVdJIgc= -----END CERTIFICATE----- # Issuer: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. # Subject: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. # Label: "Trustwave Global Certification Authority" # Serial: 1846098327275375458322922162 # MD5 Fingerprint: f8:1c:18:2d:2f:ba:5f:6d:a1:6c:bc:c7:ab:91:c7:0e # SHA1 Fingerprint: 2f:8f:36:4f:e1:58:97:44:21:59:87:a5:2a:9a:d0:69:95:26:7f:b5 # SHA256 Fingerprint: 97:55:20:15:f5:dd:fc:3c:87:88:c0:06:94:45:55:40:88:94:45:00:84:f1:00:86:70:86:bc:1a:2b:b5:8d:c8 -----BEGIN CERTIFICATE----- MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1 c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu 7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8 1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW 80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10 coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W 0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8 h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9 EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK yeC2nOnOcXHebD8WpHk= -----END CERTIFICATE----- # Issuer: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. # Subject: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. # Label: "Trustwave Global ECC P256 Certification Authority" # Serial: 4151900041497450638097112925 # MD5 Fingerprint: 5b:44:e3:8d:5d:36:86:26:e8:0d:05:d2:59:a7:83:54 # SHA1 Fingerprint: b4:90:82:dd:45:0c:be:8b:5b:b1:66:d3:e2:a4:08:26:cd:ed:42:cf # SHA256 Fingerprint: 94:5b:bc:82:5e:a5:54:f4:89:d1:fd:51:a7:3d:df:2e:a6:24:ac:70:19:a0:52:05:22:5c:22:a7:8c:cf:a8:b4 -----BEGIN CERTIFICATE----- MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 -----END CERTIFICATE----- # Issuer: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. # Subject: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. # Label: "Trustwave Global ECC P384 Certification Authority" # Serial: 2704997926503831671788816187 # MD5 Fingerprint: ea:cf:60:c4:3b:b9:15:29:40:a1:97:ed:78:27:93:d6 # SHA1 Fingerprint: e7:f3:a3:c8:cf:6f:c3:04:2e:6d:0e:67:32:c5:9e:68:95:0d:5e:d2 # SHA256 Fingerprint: 55:90:38:59:c8:c0:c3:eb:b8:75:9e:ce:4e:25:57:22:5f:f5:75:8b:bd:38:eb:d4:82:76:60:1e:1b:d5:80:97 -----BEGIN CERTIFICATE----- MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF 1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3 AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu Sw== -----END CERTIFICATE----- # Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. # Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. # Label: "NAVER Global Root Certification Authority" # Serial: 9013692873798656336226253319739695165984492813 # MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b # SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 # SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 -----BEGIN CERTIFICATE----- MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH 38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo 0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I 36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm +LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX 5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul 9XXeifdy -----END CERTIFICATE----- # Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres # Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres # Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" # Serial: 131542671362353147877283741781055151509 # MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb # SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a # SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb -----BEGIN CERTIFICATE----- MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy v+c= -----END CERTIFICATE----- # Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa # Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa # Label: "GlobalSign Root R46" # Serial: 1552617688466950547958867513931858518042577 # MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef # SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 # SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 -----BEGIN CERTIFICATE----- MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud 316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo 0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE +cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC 4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti 2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP 4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 -----END CERTIFICATE----- # Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa # Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa # Label: "GlobalSign Root E46" # Serial: 1552617690338932563915843282459653771421763 # MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f # SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 # SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 -----BEGIN CERTIFICATE----- MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ 7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 +RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= -----END CERTIFICATE----- # Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz # Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz # Label: "ANF Secure Server Root CA" # Serial: 996390341000653745 # MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 # SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 # SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 -----BEGIN CERTIFICATE----- MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH 2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/ SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3 n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L 9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0 vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ /zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9 2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI +PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2 MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= -----END CERTIFICATE----- # Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority # Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority # Label: "Certum EC-384 CA" # Serial: 160250656287871593594747141429395092468 # MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 # SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed # SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 -----BEGIN CERTIFICATE----- MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= -----END CERTIFICATE----- # Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority # Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority # Label: "Certum Trusted Root CA" # Serial: 40870380103424195783807378461123655149 # MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 # SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 # SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd -----BEGIN CERTIFICATE----- MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6 MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF 8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3 HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi 7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6 Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4 WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR 5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf 5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq 0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP 0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb -----END CERTIFICATE----- # Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique # Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique # Label: "TunTrust Root CA" # Serial: 108534058042236574382096126452369648152337120275 # MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4 # SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb # SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41 -----BEGIN CERTIFICATE----- MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd 2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB 7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW 5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH 22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= -----END CERTIFICATE----- # Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA # Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA # Label: "HARICA TLS RSA Root CA 2021" # Serial: 76817823531813593706434026085292783742 # MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91 # SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d # SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d -----BEGIN CERTIFICATE----- MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE 4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 /L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU 63ZTGI0RmLo= -----END CERTIFICATE----- # Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA # Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA # Label: "HARICA TLS ECC Root CA 2021" # Serial: 137515985548005187474074462014555733966 # MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0 # SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48 # SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01 -----BEGIN CERTIFICATE----- MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps -----END CERTIFICATE----- # Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 # Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 # Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" # Serial: 1977337328857672817 # MD5 Fingerprint: 4e:6e:9b:54:4c:ca:b7:fa:48:e4:90:b1:15:4b:1c:a3 # SHA1 Fingerprint: 0b:be:c2:27:22:49:cb:39:aa:db:35:5c:53:e3:8c:ae:78:ff:b6:fe # SHA256 Fingerprint: 57:de:05:83:ef:d2:b2:6e:03:61:da:99:da:9d:f4:64:8d:ef:7e:e8:44:1c:3b:72:8a:fa:9b:cd:e0:f9:b2:6a -----BEGIN CERTIFICATE----- MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1 MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF 6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV 1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR 5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9 ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV -----END CERTIFICATE----- # Issuer: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. # Subject: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. # Label: "vTrus ECC Root CA" # Serial: 630369271402956006249506845124680065938238527194 # MD5 Fingerprint: de:4b:c1:f5:52:8c:9b:43:e1:3e:8f:55:54:17:8d:85 # SHA1 Fingerprint: f6:9c:db:b0:fc:f6:02:13:b6:52:32:a6:a3:91:3f:16:70:da:c3:e1 # SHA256 Fingerprint: 30:fb:ba:2c:32:23:8e:2a:98:54:7a:f9:79:31:e5:50:42:8b:9b:3f:1c:8e:eb:66:33:dc:fa:86:c5:b2:7d:d3 -----BEGIN CERTIFICATE----- MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0 v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG GJTO -----END CERTIFICATE----- # Issuer: CN=vTrus Root CA O=iTrusChina Co.,Ltd. # Subject: CN=vTrus Root CA O=iTrusChina Co.,Ltd. # Label: "vTrus Root CA" # Serial: 387574501246983434957692974888460947164905180485 # MD5 Fingerprint: b8:c9:37:df:fa:6b:31:84:64:c5:ea:11:6a:1b:75:fc # SHA1 Fingerprint: 84:1a:69:fb:f5:cd:1a:25:34:13:3d:e3:f8:fc:b8:99:d0:c9:14:b7 # SHA256 Fingerprint: 8a:71:de:65:59:33:6f:42:6c:26:e5:38:80:d0:0d:88:a1:8d:a4:c6:a9:1f:0d:cb:61:94:e2:06:c5:c9:63:87 -----BEGIN CERTIFICATE----- MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+ GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9 8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim 0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet 8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9 b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= -----END CERTIFICATE----- # Issuer: CN=ISRG Root X2 O=Internet Security Research Group # Subject: CN=ISRG Root X2 O=Internet Security Research Group # Label: "ISRG Root X2" # Serial: 87493402998870891108772069816698636114 # MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 # SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af # SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 -----BEGIN CERTIFICATE----- MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW +1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 /q4AaOeMSQ+2b1tbFfLn -----END CERTIFICATE----- # Issuer: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. # Subject: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. # Label: "HiPKI Root CA - G1" # Serial: 60966262342023497858655262305426234976 # MD5 Fingerprint: 69:45:df:16:65:4b:e8:68:9a:8f:76:5f:ff:80:9e:d3 # SHA1 Fingerprint: 6a:92:e4:a8:ee:1b:ec:96:45:37:e3:29:57:49:cd:96:e3:e5:d2:60 # SHA256 Fingerprint: f0:15:ce:3c:c2:39:bf:ef:06:4b:e9:f1:d2:c4:17:e1:a0:26:4a:0a:94:be:1f:0c:8d:12:18:64:eb:69:49:cc -----BEGIN CERTIFICATE----- MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3 YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6 lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ /W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6 fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi 7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+ vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 # Label: "GlobalSign ECC Root CA - R4" # Serial: 159662223612894884239637590694 # MD5 Fingerprint: 26:29:f8:6d:e1:88:bf:a2:65:7f:aa:c4:cd:0f:7f:fc # SHA1 Fingerprint: 6b:a0:b0:98:e1:71:ef:5a:ad:fe:48:15:80:77:10:f4:bd:6f:0b:28 # SHA256 Fingerprint: b0:85:d7:0b:96:4f:19:1a:73:e4:af:0d:54:ae:7a:0e:07:aa:fd:af:9b:71:dd:08:62:13:8a:b7:32:5a:24:a2 -----BEGIN CERTIFICATE----- MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/ +wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147 bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm -----END CERTIFICATE----- # Issuer: CN=GTS Root R1 O=Google Trust Services LLC # Subject: CN=GTS Root R1 O=Google Trust Services LLC # Label: "GTS Root R1" # Serial: 159662320309726417404178440727 # MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 # SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a # SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf -----BEGIN CERTIFICATE----- MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo 27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT 6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ 0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm 2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c -----END CERTIFICATE----- # Issuer: CN=GTS Root R2 O=Google Trust Services LLC # Subject: CN=GTS Root R2 O=Google Trust Services LLC # Label: "GTS Root R2" # Serial: 159662449406622349769042896298 # MD5 Fingerprint: 1e:39:c0:53:e6:1e:29:82:0b:ca:52:55:36:5d:57:dc # SHA1 Fingerprint: 9a:44:49:76:32:db:de:fa:d0:bc:fb:5a:7b:17:bd:9e:56:09:24:94 # SHA256 Fingerprint: 8d:25:cd:97:22:9d:bf:70:35:6b:da:4e:b3:cc:73:40:31:e2:4c:f0:0f:af:cf:d3:2d:c7:6e:b5:84:1c:7e:a8 -----BEGIN CERTIFICATE----- MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQsw CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU MBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3LvCvpt nfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY 6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAu MC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7k RXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWg f9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1mKPV +3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K8Yzo dDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKa G73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCq gc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwID AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E FgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBAB/Kzt3H vqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyC B19m3H0Q/gxhswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2u NmSRXbBoGOqKYcl3qJfEycel/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMg yALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVnjWQye+mew4K6Ki3pHrTgSAai/Gev HyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y59PYjJbigapordwj6 xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M7YNR TOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924Sg JPFI/2R80L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV 7LXTWtiBmelDGDfrs7vRWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl 6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL -----END CERTIFICATE----- # Issuer: CN=GTS Root R3 O=Google Trust Services LLC # Subject: CN=GTS Root R3 O=Google Trust Services LLC # Label: "GTS Root R3" # Serial: 159662495401136852707857743206 # MD5 Fingerprint: 3e:e7:9d:58:02:94:46:51:94:e5:e0:22:4a:8b:e7:73 # SHA1 Fingerprint: ed:e5:71:80:2b:c8:92:b9:5b:83:3c:d2:32:68:3f:09:cd:a0:1e:46 # SHA256 Fingerprint: 34:d8:a7:3e:e2:08:d9:bc:db:0d:95:65:20:93:4b:4e:40:e6:94:82:59:6e:8b:6f:73:c8:42:6b:01:0a:6f:48 -----BEGIN CERTIFICATE----- MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2 4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7 VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X -----END CERTIFICATE----- # Issuer: CN=GTS Root R4 O=Google Trust Services LLC # Subject: CN=GTS Root R4 O=Google Trust Services LLC # Label: "GTS Root R4" # Serial: 159662532700760215368942768210 # MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 # SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 # SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d -----BEGIN CERTIFICATE----- MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D 9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD -----END CERTIFICATE----- # Issuer: CN=Telia Root CA v2 O=Telia Finland Oyj # Subject: CN=Telia Root CA v2 O=Telia Finland Oyj # Label: "Telia Root CA v2" # Serial: 7288924052977061235122729490515358 # MD5 Fingerprint: 0e:8f:ac:aa:82:df:85:b1:f4:dc:10:1c:fc:99:d9:48 # SHA1 Fingerprint: b9:99:cd:d1:73:50:8a:c4:47:05:08:9c:8c:88:fb:be:a0:2b:40:cd # SHA256 Fingerprint: 24:2b:69:74:2f:cb:1e:5b:2a:bf:98:89:8b:94:57:21:87:54:4e:5b:4d:99:11:78:65:73:62:1f:6a:74:b8:2c -----BEGIN CERTIFICATE----- MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1 NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9 vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9 lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT 7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o 6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6 WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ 8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi 0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF 6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er 3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA rBPuUBQemMc= -----END CERTIFICATE----- # Issuer: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH # Subject: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH # Label: "D-TRUST BR Root CA 1 2020" # Serial: 165870826978392376648679885835942448534 # MD5 Fingerprint: b5:aa:4b:d5:ed:f7:e3:55:2e:8f:72:0a:f3:75:b8:ed # SHA1 Fingerprint: 1f:5b:98:f0:e3:b5:f7:74:3c:ed:e6:b0:36:7d:32:cd:f4:09:41:67 # SHA256 Fingerprint: e5:9a:aa:81:60:09:c2:2b:ff:5b:25:ba:d3:7d:f3:06:f0:49:79:7c:1f:81:d8:5a:b0:89:e6:57:bd:8f:00:44 -----BEGIN CERTIFICATE----- MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5 NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0 QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/ VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV dWNbFJWcHwHP2NVypw87 -----END CERTIFICATE----- # Issuer: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH # Subject: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH # Label: "D-TRUST EV Root CA 1 2020" # Serial: 126288379621884218666039612629459926992 # MD5 Fingerprint: 8c:2d:9d:70:9f:48:99:11:06:11:fb:e9:cb:30:c0:6e # SHA1 Fingerprint: 61:db:8c:21:59:69:03:90:d8:7c:9c:12:86:54:cf:9d:3d:f4:dd:07 # SHA256 Fingerprint: 08:17:0d:1a:a3:64:53:90:1a:2f:95:92:45:e3:47:db:0c:8d:37:ab:aa:bc:56:b8:1a:a1:00:dc:95:89:70:db -----BEGIN CERTIFICATE----- MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5 NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC /N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3 OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb gfM0agPnIjhQW+0ZT0MW -----END CERTIFICATE----- # Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. # Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. # Label: "DigiCert TLS ECC P384 Root G5" # Serial: 13129116028163249804115411775095713523 # MD5 Fingerprint: d3:71:04:6a:43:1c:db:a6:59:e1:a8:a3:aa:c5:71:ed # SHA1 Fingerprint: 17:f3:de:5e:9f:0f:19:e9:8e:f6:1f:32:26:6e:20:c4:07:ae:30:ee # SHA256 Fingerprint: 01:8e:13:f0:77:25:32:cf:80:9b:d1:b1:72:81:86:72:83:fc:48:c6:e1:3b:e9:c6:98:12:85:4a:49:0c:1b:05 -----BEGIN CERTIFICATE----- MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2 MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS 7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp 0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4 DXZDjC5Ty3zfDBeWUA== -----END CERTIFICATE----- # Issuer: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. # Subject: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. # Label: "DigiCert TLS RSA4096 Root G5" # Serial: 11930366277458970227240571539258396554 # MD5 Fingerprint: ac:fe:f7:34:96:a9:f2:b3:b4:12:4b:e4:27:41:6f:e1 # SHA1 Fingerprint: a7:88:49:dc:5d:7c:75:8c:8c:de:39:98:56:b3:aa:d0:b2:a5:71:35 # SHA256 Fingerprint: 37:1a:00:dc:05:33:b3:72:1a:7e:eb:40:e8:41:9e:70:79:9d:2b:0a:0f:2c:1d:80:69:31:65:f7:ce:c4:ad:75 -----BEGIN CERTIFICATE----- MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+ ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0 2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv /PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+ p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ -----END CERTIFICATE----- # Issuer: CN=Certainly Root R1 O=Certainly # Subject: CN=Certainly Root R1 O=Certainly # Label: "Certainly Root R1" # Serial: 188833316161142517227353805653483829216 # MD5 Fingerprint: 07:70:d4:3e:82:87:a0:fa:33:36:13:f4:fa:33:e7:12 # SHA1 Fingerprint: a0:50:ee:0f:28:71:f4:27:b2:12:6d:6f:50:96:25:ba:cc:86:42:af # SHA256 Fingerprint: 77:b8:2c:d8:64:4c:43:05:f7:ac:c5:cb:15:6b:45:67:50:04:03:3d:51:c6:0c:62:02:a8:e0:c3:34:67:d3:a0 -----BEGIN CERTIFICATE----- MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9 MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0 YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2 1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0 1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5 r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5 cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ 6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA 2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB /wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d 8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi 1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7 lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6 OV+KmalBWQewLK8= -----END CERTIFICATE----- # Issuer: CN=Certainly Root E1 O=Certainly # Subject: CN=Certainly Root E1 O=Certainly # Label: "Certainly Root E1" # Serial: 8168531406727139161245376702891150584 # MD5 Fingerprint: 0a:9e:ca:cd:3e:52:50:c6:36:f3:4b:a3:ed:a7:53:e9 # SHA1 Fingerprint: f9:e1:6d:dc:01:89:cf:d5:82:45:63:3e:c5:37:7d:c2:eb:93:6f:2b # SHA256 Fingerprint: b4:58:5f:22:e4:ac:75:6a:4e:86:12:a1:36:1c:5d:9d:03:1a:93:fd:84:fe:bb:77:8f:a3:06:8b:0f:c4:2d:c2 -----BEGIN CERTIFICATE----- MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK +IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2 QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4 hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR -----END CERTIFICATE----- # Issuer: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. # Subject: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. # Label: "Security Communication ECC RootCA1" # Serial: 15446673492073852651 # MD5 Fingerprint: 7e:43:b0:92:68:ec:05:43:4c:98:ab:5d:35:2e:7e:86 # SHA1 Fingerprint: b8:0e:26:a9:bf:d2:b2:3b:c0:ef:46:c9:ba:c7:bb:f6:1d:0d:41:41 # SHA256 Fingerprint: e7:4f:bd:a5:5b:d5:64:c4:73:a3:6b:44:1a:a7:99:c8:a6:8e:07:74:40:e8:28:8b:9f:a1:e5:0e:4b:ba:ca:11 -----BEGIN CERTIFICATE----- MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5 IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu 9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= -----END CERTIFICATE----- # Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY # Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY # Label: "BJCA Global Root CA1" # Serial: 113562791157148395269083148143378328608 # MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 # SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a # SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae -----BEGIN CERTIFICATE----- MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll 5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF 7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u +2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI +pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy r/6zcCwupvI= -----END CERTIFICATE----- # Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY # Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY # Label: "BJCA Global Root CA2" # Serial: 58605626836079930195615843123109055211 # MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c # SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 # SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 -----BEGIN CERTIFICATE----- MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ +kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA 94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B 43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== -----END CERTIFICATE----- # Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited # Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited # Label: "Sectigo Public Server Authentication Root E46" # Serial: 88989738453351742415770396670917916916 # MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 # SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a # SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 -----BEGIN CERTIFICATE----- MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ 6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q 4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== -----END CERTIFICATE----- # Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited # Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited # Label: "Sectigo Public Server Authentication Root R46" # Serial: 156256931880233212765902055439220583700 # MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 # SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 # SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 -----BEGIN CERTIFICATE----- MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu +Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt 8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp 0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL -----END CERTIFICATE----- # Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation # Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation # Label: "SSL.com TLS RSA Root CA 2022" # Serial: 148535279242832292258835760425842727825 # MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da # SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca # SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed -----BEGIN CERTIFICATE----- MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS +YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU 98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= -----END CERTIFICATE----- # Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation # Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation # Label: "SSL.com TLS ECC Root CA 2022" # Serial: 26605119622390491762507526719404364228 # MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 # SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 # SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 -----BEGIN CERTIFICATE----- MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp 15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== -----END CERTIFICATE----- # Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos # Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos # Label: "Atos TrustedRoot Root CA ECC TLS 2021" # Serial: 81873346711060652204712539181482831616 # MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 # SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd # SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 -----BEGIN CERTIFICATE----- MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo 9H1/IISpQuQo -----END CERTIFICATE----- # Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos # Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos # Label: "Atos TrustedRoot Root CA RSA TLS 2021" # Serial: 111436099570196163832749341232207667876 # MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 # SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 # SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f -----BEGIN CERTIFICATE----- MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z 4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh 3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD 0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS 4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR 0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== -----END CERTIFICATE----- # Issuer: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. # Subject: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. # Label: "TrustAsia Global Root CA G3" # Serial: 576386314500428537169965010905813481816650257167 # MD5 Fingerprint: 30:42:1b:b7:bb:81:75:35:e4:16:4f:53:d2:94:de:04 # SHA1 Fingerprint: 63:cf:b6:c1:27:2b:56:e4:88:8e:1c:23:9a:b6:2e:81:47:24:c3:c7 # SHA256 Fingerprint: e0:d3:22:6a:eb:11:63:c2:e4:8f:f9:be:3b:50:b4:c6:43:1b:e7:bb:1e:ac:c5:c3:6b:5d:5e:c5:09:03:9a:08 -----BEGIN CERTIFICATE----- MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEM BQAwWjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dp ZXMsIEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAe Fw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEwMTlaMFoxCzAJBgNVBAYTAkNOMSUw IwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtU cnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNS T1QY4SxzlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqK AtCWHwDNBSHvBm3dIZwZQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1 nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/VP68czH5GX6zfZBCK70bwkPAPLfSIC7Ep qq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1AgdB4SQXMeJNnKziyhWTXA yB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm9WAPzJMs hH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gX zhqcD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAv kV34PmVACxmZySYgWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msT f9FkPz2ccEblooV7WIQn3MSAPmeamseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jA uPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCFTIcQcf+eQxuulXUtgQIDAQAB o2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj7zjKsK5Xf/Ih MBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4 wM8zAQLpw6o1D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2 XFNFV1pF1AWZLy4jVe5jaN/TG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1 JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNjduMNhXJEIlU/HHzp/LgV6FL6qj6j ITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstlcHboCoWASzY9M/eV VHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys+TIx xHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1on AX1daBli2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d 7XB4tmBZrOFdRWOPyN9yaFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2Ntjj gKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsASZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV +Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFRJQJ6+N1rZdVtTTDIZbpo FGWsJwt0ivKH -----END CERTIFICATE----- # Issuer: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. # Subject: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. # Label: "TrustAsia Global Root CA G4" # Serial: 451799571007117016466790293371524403291602933463 # MD5 Fingerprint: 54:dd:b2:d7:5f:d8:3e:ed:7c:e0:0b:2e:cc:ed:eb:eb # SHA1 Fingerprint: 57:73:a5:61:5d:80:b2:e6:ac:38:82:fc:68:07:31:ac:9f:b5:92:5a # SHA256 Fingerprint: be:4b:56:cb:50:56:c0:13:6a:52:6d:f4:44:50:8d:aa:36:a0:b5:4f:42:e4:ac:38:f7:2a:f4:70:e4:79:65:4c -----BEGIN CERTIFICATE----- MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMw WjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs IEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0y MTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJaMFoxCzAJBgNVBAYTAkNOMSUwIwYD VQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtUcnVz dEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATx s8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbw LxYI+hW8m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJij YzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mD pm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/pDHel4NZg6ZvccveMA4GA1UdDwEB/wQE AwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AAbbd+NvBNEU/zy4k6LHiR UKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xkdUfFVZDj /bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== -----END CERTIFICATE----- # Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH # Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH # Label: "Telekom Security TLS ECC Root 2020" # Serial: 72082518505882327255703894282316633856 # MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd # SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec # SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 -----BEGIN CERTIFICATE----- MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn 27iQ7t0l -----END CERTIFICATE----- # Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH # Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH # Label: "Telekom Security TLS RSA Root 2023" # Serial: 44676229530606711399881795178081572759 # MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 # SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 # SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 -----BEGIN CERTIFICATE----- MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy 8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg 8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg +y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm 9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= -----END CERTIFICATE----- # Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA # Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA # Label: "FIRMAPROFESIONAL CA ROOT-A WEB" # Serial: 65916896770016886708751106294915943533 # MD5 Fingerprint: 82:b2:ad:45:00:82:b0:66:63:f8:5f:c3:67:4e:ce:a3 # SHA1 Fingerprint: a8:31:11:74:a6:14:15:0d:ca:77:dd:0e:e4:0c:5d:58:fc:a0:72:a5 # SHA256 Fingerprint: be:f2:56:da:f2:6e:9c:69:bd:ec:16:02:35:97:98:f3:ca:f7:18:21:a0:3e:01:82:57:c5:3c:65:61:7f:3d:4a -----BEGIN CERTIFICATE----- MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQsw CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB IFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2WhcNNDcwMzMxMDkwMTM2WjBuMQsw CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB IFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zf e9MEkVz6iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6C cyvHZpsKjECcfIr28jlgst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB /wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FDY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0O BBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO PQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgLcFBTApFw hVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dG XSaQpYXFuXqUPoeovQA= -----END CERTIFICATE----- # Issuer: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA # Subject: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA # Label: "TWCA CYBER Root CA" # Serial: 85076849864375384482682434040119489222 # MD5 Fingerprint: 0b:33:a0:97:52:95:d4:a9:fd:bb:db:6e:a3:55:5b:51 # SHA1 Fingerprint: f6:b1:1c:1a:83:38:e9:7b:db:b3:a8:c8:33:24:e0:2d:9c:7f:26:66 # SHA256 Fingerprint: 3f:63:bb:28:14:be:17:4e:c8:b6:43:9c:f0:8d:6d:56:f0:b7:c4:05:88:3a:56:48:a3:34:42:4d:6b:3e:c5:58 -----BEGIN CERTIFICATE----- MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQ MQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290 IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5 WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FO LUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3Qg Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1sTs6P 40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxF avcokPFhV8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/ 34bKS1PE2Y2yHer43CdTo0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684i JkXXYJndzk834H/nY62wuFm40AZoNWDTNq5xQwTxaWV4fPMf88oon1oglWa0zbfu j3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK/c/WMw+f+5eesRycnupf Xtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkHIuNZW0CP 2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDA S9TMfAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDA oS/xUgXJP+92ZuJF2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzC kHDXShi8fgGwsOsVHkQGzaRP6AzRwyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW 5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83QOGt4A1WNzAd BgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0t tGlTITVX1olNc79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn 68xDiBaiA9a5F/gZbG0jAn/xX9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNn TKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDRIG4kqIQnoVesqlVYL9zZyvpoBJ7t RCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq/p1hvIbZv97Tujqx f36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0RFxbI Qh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz 8ppy6rBePm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4 NxKfKjLji7gh7MMrZQzvIt6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzX xeSDwWrruoBa3lwtcHb4yOWHh8qgnaHlIhInD0Q9HWzq1MKLL295q39QpsQZp6F6 t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X -----END CERTIFICATE----- # Issuer: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. # Subject: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. # Label: "SecureSign Root CA12" # Serial: 587887345431707215246142177076162061960426065942 # MD5 Fingerprint: c6:89:ca:64:42:9b:62:08:49:0b:1e:7f:e9:07:3d:e8 # SHA1 Fingerprint: 7a:22:1e:3d:de:1b:06:ac:9e:c8:47:70:16:8e:3c:e5:f7:6b:06:f4 # SHA256 Fingerprint: 3f:03:4b:b5:70:4d:44:b2:d0:85:45:a0:20:57:de:93:eb:f3:90:5f:ce:72:1a:cb:c7:30:c0:6d:da:ee:90:4e -----BEGIN CERTIFICATE----- MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQEL BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgw NTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS b290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3emhF KxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mt p7JIKwccJ/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zd J1M3s6oYwlkm7Fsf0uZlfO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gur FzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBFEaCeVESE99g2zvVQR9wsMJvuwPWW0v4J hscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1UefNzFJM3IFTQy2VYzxV4+K h9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD AgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsF AAOCAQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6Ld mmQOmFxv3Y67ilQiLUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJ mBClnW8Zt7vPemVV2zfrPIpyMpcemik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA 8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPSvWKErI4cqc1avTc7bgoitPQV 55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhgaaaI5gdka9at/ yOPiZwud9AzqVN/Ssq+xIvEg37xEHA== -----END CERTIFICATE----- # Issuer: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. # Subject: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. # Label: "SecureSign Root CA14" # Serial: 575790784512929437950770173562378038616896959179 # MD5 Fingerprint: 71:0d:72:fa:92:19:65:5e:89:04:ac:16:33:f0:bc:d5 # SHA1 Fingerprint: dd:50:c0:f7:79:b3:64:2e:74:a2:b8:9d:9f:d3:40:dd:bb:f0:f2:4f # SHA256 Fingerprint: 4b:00:9c:10:34:49:4f:9a:b5:6b:ba:3b:a1:d6:27:31:fc:4d:20:d8:95:5a:dc:ec:10:a9:25:60:72:61:e3:38 -----BEGIN CERTIFICATE----- MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEM BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgw NzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS b290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh1oq/ FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOg vlIfX8xnbacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy 6pJxaeQp8E+BgQQ8sqVb1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo /IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9J kdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOEkJTRX45zGRBdAuVwpcAQ 0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSxjVIHvXib y8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac 18izju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs 0Wq2XSqypWa9a4X0dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIAB SMbHdPTGrMNASRZhdCyvjG817XsYAFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVL ApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeqYR3r6/wtbyPk 86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ib ed87hwriZLoAymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopT zfFP7ELyk+OZpDc8h7hi2/DsHzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHS DCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPGFrojutzdfhrGe0K22VoF3Jpf1d+4 2kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6qnsb58Nn4DSEC5MUo FlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/OfVy K4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6 dB7h7sxaOgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtl Lor6CZpO2oYofaphNdgOpygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB 365jJ6UeTo3cKXhZ+PmhIIynJkBugnLNeLLIjzwec+fBH7/PzqUqm9tEZDKgu39c JRNItX+S -----END CERTIFICATE----- # Issuer: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. # Subject: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. # Label: "SecureSign Root CA15" # Serial: 126083514594751269499665114766174399806381178503 # MD5 Fingerprint: 13:30:fc:c4:62:a6:a9:de:b5:c1:68:af:b5:d2:31:47 # SHA1 Fingerprint: cb:ba:83:c8:c1:5a:5d:f1:f9:73:6f:ca:d7:ef:28:13:06:4a:07:7d # SHA256 Fingerprint: e7:78:f0:f0:95:fe:84:37:29:cd:1a:00:82:17:9e:53:14:a9:c2:91:44:28:05:e1:fb:1d:8f:b6:b8:88:6c:3a -----BEGIN CERTIFICATE----- MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMw UTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBM dGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMy NTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJl cnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBSb290 IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5GdCx4 wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSR ZHX+AezB2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMB Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT 9DAKBggqhkjOPQQDAwNoADBlAjEA2S6Jfl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp 4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJSwdLZrWeqrqgHkHZAXQ6 bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= -----END CERTIFICATE----- # Issuer: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH # Subject: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH # Label: "D-TRUST BR Root CA 2 2023" # Serial: 153168538924886464690566649552453098598 # MD5 Fingerprint: e1:09:ed:d3:60:d4:56:1b:47:1f:b7:0c:5f:1b:5f:85 # SHA1 Fingerprint: 2d:b0:70:ee:71:94:af:69:68:17:db:79:ce:58:9f:a0:6b:96:f7:87 # SHA256 Fingerprint: 05:52:e6:f8:3f:df:65:e8:fa:96:70:e6:66:df:28:a4:e2:13:40:b5:10:cb:e5:25:66:f9:7c:4f:b9:4b:2b:d1 -----BEGIN CERTIFICATE----- MIIFqTCCA5GgAwIBAgIQczswBEhb2U14LnNLyaHcZjANBgkqhkiG9w0BAQ0FADBI MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE LVRSVVNUIEJSIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA4NTYzMVoXDTM4MDUw OTA4NTYzMFowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi MCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN AQEBBQADggIPADCCAgoCggIBAK7/CVmRgApKaOYkP7in5Mg6CjoWzckjYaCTcfKr i3OPoGdlYNJUa2NRb0kz4HIHE304zQaSBylSa053bATTlfrdTIzZXcFhfUvnKLNE gXtRr90zsWh81k5M/itoucpmacTsXld/9w3HnDY25QdgrMBM6ghs7wZ8T1soegj8 k12b9py0i4a6Ibn08OhZWiihNIQaJZG2tY/vsvmA+vk9PBFy2OMvhnbFeSzBqZCT Rphny4NqoFAjpzv2gTng7fC5v2Xx2Mt6++9zA84A9H3X4F07ZrjcjrqDy4d2A/wl 2ecjbwb9Z/Pg/4S8R7+1FhhGaRTMBffb00msa8yr5LULQyReS2tNZ9/WtT5PeB+U cSTq3nD88ZP+npNa5JRal1QMNXtfbO4AHyTsA7oC9Xb0n9Sa7YUsOCIvx9gvdhFP /Wxc6PWOJ4d/GUohR5AdeY0cW/jPSoXk7bNbjb7EZChdQcRurDhaTyN0dKkSw/bS uREVMweR2Ds3OmMwBtHFIjYoYiMQ4EbMl6zWK11kJNXuHA7e+whadSr2Y23OC0K+ 0bpwHJwh5Q8xaRfX/Aq03u2AnMuStIv13lmiWAmlY0cL4UEyNEHZmrHZqLAbWt4N DfTisl01gLmB1IRpkQLLddCNxbU9CZEJjxShFHR5PtbJFR2kWVki3PaKRT08EtY+ XTIvAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUZ5Dw1t61 GNVGKX5cq/ieCLxklRAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfYnJfcm9vdF9jYV8y XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQA097N3U9swFrktpSHxQCF16+tI FoE9c+CeJyrrd6kTpGoKWloUMz1oH4Guaf2Mn2VsNELZLdB/eBaxOqwjMa1ef67n riv6uvw8l5VAk1/DLQOj7aRvU9f6QA4w9QAgLABMjDu0ox+2v5Eyq6+SmNMW5tTR VFxDWy6u71cqqLRvpO8NVhTaIasgdp4D/Ca4nj8+AybmTNudX0KEPUUDAxxZiMrc LmEkWqTqJwtzEr5SswrPMhfiHocaFpVIbVrg0M8JkiZmkdijYQ6qgYF/6FKC0ULn 4B0Y+qSFNueG4A3rvNTJ1jxD8V1Jbn6Bm2m1iWKPiFLY1/4nwSPFyysCu7Ff/vtD hQNGvl3GyiEm/9cCnnRK3PgTFbGBVzbLZVzRHTF36SXDw7IyN9XxmAnkbWOACKsG koHU6XCPpz+y7YaMgmo1yEJagtFSGkUPFaUA8JR7ZSdXOUPPfH/mvTWze/EZTN46 ls/pdu4D58JDUjxqgejBWoC9EV2Ta/vH5mQ/u2kc6d0li690yVRAysuTEwrt+2aS Ecr1wPrYg1UDfNPFIkZ1cGt5SAYqgpq/5usWDiJFAbzdNpQ0qTUmiteXue4Icr80 knCDgKs4qllo3UCkGJCy89UDyibK79XH4I9TjvAA46jtn/mtd+ArY0+ew+43u3gJ hJ65bvspmZDogNOfJA== -----END CERTIFICATE----- # Issuer: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. # Subject: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. # Label: "TrustAsia TLS ECC Root CA" # Serial: 310892014698942880364840003424242768478804666567 # MD5 Fingerprint: 09:48:04:77:d2:fc:65:93:71:66:b1:11:95:4f:06:8c # SHA1 Fingerprint: b5:ec:39:f3:a1:66:37:ae:c3:05:94:57:e2:be:11:be:b7:a1:7f:36 # SHA256 Fingerprint: c0:07:6b:9e:f0:53:1f:b1:a6:56:d6:7c:4e:be:97:cd:5d:ba:a4:1e:f4:45:98:ac:c2:48:98:78:c9:2d:87:11 -----BEGIN CERTIFICATE----- MIICMTCCAbegAwIBAgIUNnThTXxlE8msg1UloD5Sfi9QaMcwCgYIKoZIzj0EAwMw WDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs IEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgRUNDIFJvb3QgQ0EwHhcNMjQw NTE1MDU0MTU2WhcNNDQwNTE1MDU0MTU1WjBYMQswCQYDVQQGEwJDTjElMCMGA1UE ChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1c3RB c2lhIFRMUyBFQ0MgUm9vdCBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABLh/pVs/ AT598IhtrimY4ZtcU5nb9wj/1WrgjstEpvDBjL1P1M7UiFPoXlfXTr4sP/MSpwDp guMqWzJ8S5sUKZ74LYO1644xST0mYekdcouJtgq7nDM1D9rs3qlKH8kzsaNCMEAw DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQULIVTu7FDzTLqnqOH/qKYqKaT6RAw DgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMFRH18MtYYZI9HlaVQ01 L18N9mdsd0AaRuf4aFtOJx24mH1/k78ITcTaRTChD15KeAIxAKORh/IRM4PDwYqR OkwrULG9IpRdNYlzg8WbGf60oenUoWa2AaU2+dhoYSi3dOGiMQ== -----END CERTIFICATE----- # Issuer: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. # Subject: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. # Label: "TrustAsia TLS RSA Root CA" # Serial: 160405846464868906657516898462547310235378010780 # MD5 Fingerprint: 3b:9e:c3:86:0f:34:3c:6b:c5:46:c4:8e:1d:e7:19:12 # SHA1 Fingerprint: a5:46:50:c5:62:ea:95:9a:1a:a7:04:6f:17:58:c7:29:53:3d:03:fa # SHA256 Fingerprint: 06:c0:8d:7d:af:d8:76:97:1e:b1:12:4f:e6:7f:84:7e:c0:c7:a1:58:d3:ea:53:cb:e9:40:e2:ea:97:91:f4:c3 -----BEGIN CERTIFICATE----- MIIFgDCCA2igAwIBAgIUHBjYz+VTPyI1RlNUJDxsR9FcSpwwDQYJKoZIhvcNAQEM BQAwWDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dp ZXMsIEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgUlNBIFJvb3QgQ0EwHhcN MjQwNTE1MDU0MTU3WhcNNDQwNTE1MDU0MTU2WjBYMQswCQYDVQQGEwJDTjElMCMG A1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1 c3RBc2lhIFRMUyBSU0EgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC AgoCggIBAMMWuBtqpERz5dZO9LnPWwvB0ZqB9WOwj0PBuwhaGnrhB3YmH49pVr7+ NmDQDIPNlOrnxS1cLwUWAp4KqC/lYCZUlviYQB2srp10Zy9U+5RjmOMmSoPGlbYJ Q1DNDX3eRA5gEk9bNb2/mThtfWza4mhzH/kxpRkQcwUqwzIZheo0qt1CHjCNP561 HmHVb70AcnKtEj+qpklz8oYVlQwQX1Fkzv93uMltrOXVmPGZLmzjyUT5tUMnCE32 ft5EebuyjBza00tsLtbDeLdM1aTk2tyKjg7/D8OmYCYozza/+lcK7Fs/6TAWe8Tb xNRkoDD75f0dcZLdKY9BWN4ArTr9PXwaqLEX8E40eFgl1oUh63kd0Nyrz2I8sMeX i9bQn9P+PN7F4/w6g3CEIR0JwqH8uyghZVNgepBtljhb//HXeltt08lwSUq6HTrQ UNoyIBnkiz/r1RYmNzz7dZ6wB3C4FGB33PYPXFIKvF1tjVEK2sUYyJtt3LCDs3+j TnhMmCWr8n4uIF6CFabW2I+s5c0yhsj55NqJ4js+k8UTav/H9xj8Z7XvGCxUq0DT bE3txci3OE9kxJRMT6DNrqXGJyV1J23G2pyOsAWZ1SgRxSHUuPzHlqtKZFlhaxP8 S8ySpg+kUb8OWJDZgoM5pl+z+m6Ss80zDoWo8SnTq1mt1tve1CuBAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFLgHkXlcBvRG/XtZylomkadFK/hT MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQwFAAOCAgEAIZtqBSBdGBanEqT3 Rz/NyjuujsCCztxIJXgXbODgcMTWltnZ9r96nBO7U5WS/8+S4PPFJzVXqDuiGev4 iqME3mmL5Dw8veWv0BIb5Ylrc5tvJQJLkIKvQMKtuppgJFqBTQUYo+IzeXoLH5Pt 7DlK9RME7I10nYEKqG/odv6LTytpEoYKNDbdgptvT+Bz3Ul/KD7JO6NXBNiT2Twp 2xIQaOHEibgGIOcberyxk2GaGUARtWqFVwHxtlotJnMnlvm5P1vQiJ3koP26TpUJ g3933FEFlJ0gcXax7PqJtZwuhfG5WyRasQmr2soaB82G39tp27RIGAAtvKLEiUUj pQ7hRGU+isFqMB3iYPg6qocJQrmBktwliJiJ8Xw18WLK7nn4GS/+X/jbh87qqA8M pugLoDzga5SYnH+tBuYc6kIQX+ImFTw3OffXvO645e8D7r0i+yiGNFjEWn9hongP XvPKnbwbPKfILfanIhHKA9jnZwqKDss1jjQ52MjqjZ9k4DewbNfFj8GQYSbbJIwe SsCI3zWQzj8C9GRh3sfIB5XeMhg6j6JCQCTl1jNdfK7vsU1P1FeQNWrcrgSXSYk0 ly4wBOeY99sLAZDBHwo/+ML+TvrbmnNzFrwFuHnYWa8G5z9nODmxfKuU4CkUpijy 323imttUQ/hHWKNddBWcwauwxzQ= -----END CERTIFICATE----- # Issuer: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH # Subject: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH # Label: "D-TRUST EV Root CA 2 2023" # Serial: 139766439402180512324132425437959641711 # MD5 Fingerprint: 96:b4:78:09:f0:09:cb:77:eb:bb:1b:4d:6f:36:bc:b6 # SHA1 Fingerprint: a5:5b:d8:47:6c:8f:19:f7:4c:f4:6d:6b:b6:c2:79:82:22:df:54:8b # SHA256 Fingerprint: 8e:82:21:b2:e7:d4:00:78:36:a1:67:2f:0d:cc:29:9c:33:bc:07:d3:16:f1:32:fa:1a:20:6d:58:71:50:f1:ce -----BEGIN CERTIFICATE----- MIIFqTCCA5GgAwIBAgIQaSYJfoBLTKCnjHhiU19abzANBgkqhkiG9w0BAQ0FADBI MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE LVRSVVNUIEVWIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA5MTAzM1oXDTM4MDUw OTA5MTAzMlowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi MCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN AQEBBQADggIPADCCAgoCggIBANiOo4mAC7JXUtypU0w3uX9jFxPvp1sjW2l1sJkK F8GLxNuo4MwxusLyzV3pt/gdr2rElYfXR8mV2IIEUD2BCP/kPbOx1sWy/YgJ25yE 7CUXFId/MHibaljJtnMoPDT3mfd/06b4HEV8rSyMlD/YZxBTfiLNTiVR8CUkNRFe EMbsh2aJgWi6zCudR3Mfvc2RpHJqnKIbGKBv7FD0fUDCqDDPvXPIEysQEx6Lmqg6 lHPTGGkKSv/BAQP/eX+1SH977ugpbzZMlWGG2Pmic4ruri+W7mjNPU0oQvlFKzIb RlUWaqZLKfm7lVa/Rh3sHZMdwGWyH6FDrlaeoLGPaxK3YG14C8qKXO0elg6DpkiV jTujIcSuWMYAsoS0I6SWhjW42J7YrDRJmGOVxcttSEfi8i4YHtAxq9107PncjLgc jmgjutDzUNzPZY9zOjLHfP7KgiJPvo5iR2blzYfi6NUPGJ/lBHJLRjwQ8kTCZFZx TnXonMkmdMV9WdEKWw9t/p51HBjGGjp82A0EzM23RWV6sY+4roRIPrN6TagD4uJ+ ARZZaBhDM7DS3LAaQzXupdqpRlyuhoFBAUp0JuyfBr/CBTdkdXgpaP3F9ev+R/nk hbDhezGdpn9yo7nELC7MmVcOIQxFAZRl62UJxmMiCzNJkkg8/M3OsD6Onov4/knF NXJHAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqvyREBuH kV8Wub9PS5FeAByxMoAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfZXZfcm9vdF9jYV8y XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQCTy6UfmRHsmg1fLBWTxj++EI14 QvBukEdHjqOSMo1wj/Zbjb6JzkcBahsgIIlbyIIQbODnmaprxiqgYzWRaoUlrRc4 pZt+UPJ26oUFKidBK7GB0aL2QHWpDsvxVUjY7NHss+jOFKE17MJeNRqrphYBBo7q 3C+jisosketSjl8MmxfPy3MHGcRqwnNU73xDUmPBEcrCRbH0O1P1aa4846XerOhU t7KR/aypH/KH5BfGSah82ApB9PI+53c0BFLd6IHyTS9URZ0V4U/M5d40VxDJI3IX cI1QcB9WbMy5/zpaT2N6w25lBx2Eof+pDGOJbbJAiDnXH3dotfyc1dZnaVuodNv8 ifYbMvekJKZ2t0dT741Jj6m2g1qllpBFYfXeA08mD6iL8AOWsKwV0HFaanuU5nCT 2vFp4LJiTZ6P/4mdm13NRemUAiKN4DV/6PEEeXFsVIP4M7kFMhtYVRFP0OUnR3Hs 7dpn1mKmS00PaaLJvOwiS5THaJQXfuKOKD62xur1NGyfN4gHONuGcfrNlUhDbqNP gofXNJhuS5N5YHVpD/Aa1VP6IQzCP+k/HxiMkl14p3ZnGbuy6n/pcAlWVqOwDAst Nl7F6cTVg8uGF5csbBNvh1qvSaYd2804BC5f4ko1Di1L+KIkBI3Y4WNeApI02phh XBxvWHZks/wCuPWdCg== -----END CERTIFICATE----- # Issuer: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG # Subject: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG # Label: "SwissSign RSA TLS Root CA 2022 - 1" # Serial: 388078645722908516278762308316089881486363258315 # MD5 Fingerprint: 16:2e:e4:19:76:81:85:ba:8e:91:58:f1:15:ef:72:39 # SHA1 Fingerprint: 81:34:0a:be:4c:cd:ce:cc:e7:7d:cc:8a:d4:57:e2:45:a0:77:5d:ce # SHA256 Fingerprint: 19:31:44:f4:31:e0:fd:db:74:07:17:d4:de:92:6a:57:11:33:88:4b:43:60:d3:0e:27:29:13:cb:e6:60:ce:41 -----BEGIN CERTIFICATE----- MIIFkzCCA3ugAwIBAgIUQ/oMX04bgBhE79G0TzUfRPSA7cswDQYJKoZIhvcNAQEL BQAwUTELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzErMCkGA1UE AxMiU3dpc3NTaWduIFJTQSBUTFMgUm9vdCBDQSAyMDIyIC0gMTAeFw0yMjA2MDgx MTA4MjJaFw00NzA2MDgxMTA4MjJaMFExCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxT d2lzc1NpZ24gQUcxKzApBgNVBAMTIlN3aXNzU2lnbiBSU0EgVExTIFJvb3QgQ0Eg MjAyMiAtIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDLKmjiC8NX vDVjvHClO/OMPE5Xlm7DTjak9gLKHqquuN6orx122ro10JFwB9+zBvKK8i5VUXu7 LCTLf5ImgKO0lPaCoaTo+nUdWfMHamFk4saMla+ju45vVs9xzF6BYQ1t8qsCLqSX 5XH8irCRIFucdFJtrhUnWXjyCcplDn/L9Ovn3KlMd/YrFgSVrpxxpT8q2kFC5zyE EPThPYxr4iuRR1VPuFa+Rd4iUU1OKNlfGUEGjw5NBuBwQCMBauTLE5tzrE0USJIt /m2n+IdreXXhvhCxqohAWVTXz8TQm0SzOGlkjIHRI36qOTw7D59Ke4LKa2/KIj4x 0LDQKhySio/YGZxH5D4MucLNvkEM+KRHBdvBFzA4OmnczcNpI/2aDwLOEGrOyvi5 KaM2iYauC8BPY7kGWUleDsFpswrzd34unYyzJ5jSmY0lpx+Gs6ZUcDj8fV3oT4MM 0ZPlEuRU2j7yrTrePjxF8CgPBrnh25d7mUWe3f6VWQQvdT/TromZhqwUtKiE+shd OxtYk8EXlFXIC+OCeYSf8wCENO7cMdWP8vpPlkwGqnj73mSiI80fPsWMvDdUDrta clXvyFu1cvh43zcgTFeRc5JzrBh3Q4IgaezprClG5QtO+DdziZaKHG29777YtvTK wP1H8K4LWCDFyB02rpeNUIMmJCn3nTsPBQIDAQABo2MwYTAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBRvjmKLk0Ow4UD2p8P98Q+4 DxU4pTAdBgNVHQ4EFgQUb45ii5NDsOFA9qfD/fEPuA8VOKUwDQYJKoZIhvcNAQEL BQADggIBAKwsKUF9+lz1GpUYvyypiqkkVHX1uECry6gkUSsYP2OprphWKwVDIqO3 10aewCoSPY6WlkDfDDOLazeROpW7OSltwAJsipQLBwJNGD77+3v1dj2b9l4wBlgz Hqp41eZUBDqyggmNzhYzWUUo8aWjlw5DI/0LIICQ/+Mmz7hkkeUFjxOgdg3XNwwQ iJb0Pr6VvfHDffCjw3lHC1ySFWPtUnWK50Zpy1FVCypM9fJkT6lc/2cyjlUtMoIc gC9qkfjLvH4YoiaoLqNTKIftV+Vlek4ASltOU8liNr3CjlvrzG4ngRhZi0Rjn9UM ZfQpZX+RLOV/fuiJz48gy20HQhFRJjKKLjpHE7iNvUcNCfAWpO2Whi4Z2L6MOuhF LhG6rlrnub+xzI/goP+4s9GFe3lmozm1O2bYQL7Pt2eLSMkZJVX8vY3PXtpOpvJp zv1/THfQwUY1mFwjmwJFQ5Ra3bxHrSL+ul4vkSkphnsh3m5kt8sNjzdbowhq6/Td Ao9QAwKxuDdollDruF/UKIqlIgyKhPBZLtU30WHlQnNYKoH3dtvi4k0NX/a3vgW0 rk4N3hY9A4GzJl5LuEsAz/+MF7psYC0nhzck5npgL7XTgwSqT0N1osGDsieYK7EO gLrAhV5Cud+xYJHT6xh+cHiudoO+cVrQkOPKwRYlZ0rwtnu64ZzZ -----END CERTIFICATE----- # Issuer: CN=OISTE Server Root ECC G1 O=OISTE Foundation # Subject: CN=OISTE Server Root ECC G1 O=OISTE Foundation # Label: "OISTE Server Root ECC G1" # Serial: 47819833811561661340092227008453318557 # MD5 Fingerprint: 42:a7:d2:35:ae:02:92:db:19:76:08:de:2f:05:b4:d4 # SHA1 Fingerprint: 3b:f6:8b:09:ae:2a:92:7b:ba:e3:8d:3f:11:95:d9:e6:44:0c:45:e2 # SHA256 Fingerprint: ee:c9:97:c0:c3:0f:21:6f:7e:3b:8b:30:7d:2b:ae:42:41:2d:75:3f:c8:21:9d:af:d1:52:0b:25:72:85:0f:49 -----BEGIN CERTIFICATE----- MIICNTCCAbqgAwIBAgIQI/nD1jWvjyhLH/BU6n6XnTAKBggqhkjOPQQDAzBLMQsw CQYDVQQGEwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UEAwwY T0lTVEUgU2VydmVyIFJvb3QgRUNDIEcxMB4XDTIzMDUzMTE0NDIyOFoXDTQ4MDUy NDE0NDIyN1owSzELMAkGA1UEBhMCQ0gxGTAXBgNVBAoMEE9JU1RFIEZvdW5kYXRp b24xITAfBgNVBAMMGE9JU1RFIFNlcnZlciBSb290IEVDQyBHMTB2MBAGByqGSM49 AgEGBSuBBAAiA2IABBcv+hK8rBjzCvRE1nZCnrPoH7d5qVi2+GXROiFPqOujvqQy cvO2Ackr/XeFblPdreqqLiWStukhEaivtUwL85Zgmjvn6hp4LrQ95SjeHIC6XG4N 2xml4z+cKrhAS93mT6NjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBQ3 TYhlz/w9itWj8UnATgwQb0K0nDAdBgNVHQ4EFgQUN02IZc/8PYrVo/FJwE4MEG9C tJwwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2kAMGYCMQCpKjAd0MKfkFFR QD6VVCHNFmb3U2wIFjnQEnx/Yxvf4zgAOdktUyBFCxxgZzFDJe0CMQCSia7pXGKD YmH5LVerVrkR3SW+ak5KGoJr3M/TvEqzPNcum9v4KGm8ay3sMaE641c= -----END CERTIFICATE----- # Issuer: CN=OISTE Server Root RSA G1 O=OISTE Foundation # Subject: CN=OISTE Server Root RSA G1 O=OISTE Foundation # Label: " OISTE Server Root RSA G1" # Serial: 113845518112613905024960613408179309848 # MD5 Fingerprint: 23:a7:9e:d4:70:b8:b9:14:57:41:8a:7e:44:59:e2:68 # SHA1 Fingerprint: f7:00:34:25:94:88:68:31:e4:34:87:3f:70:fe:86:b3:86:9f:f0:6e # SHA256 Fingerprint: 9a:e3:62:32:a5:18:9f:fd:db:35:3d:fd:26:52:0c:01:53:95:d2:27:77:da:c5:9d:b5:7b:98:c0:89:a6:51:e6 -----BEGIN CERTIFICATE----- MIIFgzCCA2ugAwIBAgIQVaXZZ5Qoxu0M+ifdWwFNGDANBgkqhkiG9w0BAQwFADBL MQswCQYDVQQGEwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UE AwwYT0lTVEUgU2VydmVyIFJvb3QgUlNBIEcxMB4XDTIzMDUzMTE0MzcxNloXDTQ4 MDUyNDE0MzcxNVowSzELMAkGA1UEBhMCQ0gxGTAXBgNVBAoMEE9JU1RFIEZvdW5k YXRpb24xITAfBgNVBAMMGE9JU1RFIFNlcnZlciBSb290IFJTQSBHMTCCAiIwDQYJ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKqu9KuCz/vlNwvn1ZatkOhLKdxVYOPM vLO8LZK55KN68YG0nnJyQ98/qwsmtO57Gmn7KNByXEptaZnwYx4M0rH/1ow00O7b rEi56rAUjtgHqSSY3ekJvqgiG1k50SeH3BzN+Puz6+mTeO0Pzjd8JnduodgsIUzk ik/HEzxux9UTl7Ko2yRpg1bTacuCErudG/L4NPKYKyqOBGf244ehHa1uzjZ0Dl4z O8vbUZeUapU8zhhabkvG/AePLhq5SvdkNCncpo1Q4Y2LS+VIG24ugBA/5J8bZT8R tOpXaZ+0AOuFJJkk9SGdl6r7NH8CaxWQrbueWhl/pIzY+m0o/DjH40ytas7ZTpOS jswMZ78LS5bOZmdTaMsXEY5Z96ycG7mOaES3GK/m5Q9l3JUJsJMStR8+lKXHiHUh sd4JJCpM4rzsTGdHwimIuQq6+cF0zowYJmXa92/GjHtoXAvuY8BeS/FOzJ8vD+Ho mnqT8eDI278n5mUpezbgMxVz8p1rhAhoKzYHKyfMeNhqhw5HdPSqoBNdZH702xSu +zrkL8Fl47l6QGzwBrd7KJvX4V84c5Ss2XCTLdyEr0YconosP4EmQufU2MVshGYR i3drVByjtdgQ8K4p92cIiBdcuJd5z+orKu5YM+Vt6SmqZQENghPsJQtdLEByFSnT kCz3GkPVavBpAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU 8snBDw1jALvsRQ5KH7WxszbNDo0wHQYDVR0OBBYEFPLJwQ8NYwC77EUOSh+1sbM2 zQ6NMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQwFAAOCAgEANGd5sjrG5T33 I3K5Ce+SrScfoE4KsvXaFwyihdJ+klH9FWXXXGtkFu6KRcoMQzZENdl//nk6HOjG 5D1rd9QhEOP28yBOqb6J8xycqd+8MDoX0TJD0KqKchxRKEzdNsjkLWd9kYccnbz8 qyiWXmFcuCIzGEgWUOrKL+mlSdx/PKQZvDatkuK59EvV6wit53j+F8Bdh3foZ3dP AGav9LEDOr4SfEE15fSmG0eLy3n31r8Xbk5l8PjaV8GUgeV6Vg27Rn9vkf195hfk gSe7BYhW3SCl95gtkRlpMV+bMPKZrXJAlszYd2abtNUOshD+FKrDgHGdPY3ofRRs YWSGRqbXVMW215AWRqWFyp464+YTFrYVI8ypKVL9AMb2kI5Wj4kI3Zaq5tNqqYY1 9tVFeEJKRvwDyF7YZvZFZSS0vod7VSCd9521Kvy5YhnLbDuv0204bKt7ph6N/Ome /msVuduCmsuY33OhkKCgxeDoAaijFJzIwZqsFVAzje18KotzlUBDJvyBpCpfOZC3 J8tRd/iWkx7P8nd9H0aTolkelUTFLXVksNb54Dxp6gS1HAviRkRNQzuXSXERvSS2 wq1yVAb+axj5d9spLFKebXd7Yv0PTY6YMjAwcRLWJTXjn/hvnLXrahut6hDTlhZy BiElxky8j3C7DOReIoMt0r7+hVu05L0= -----END CERTIFICATE----- ================================================ FILE: shotgun_api3/lib/certifi/core.py ================================================ """ certifi.py ~~~~~~~~~~ This module returns the installation location of cacert.pem or its contents. """ import sys import atexit def exit_cacert_ctx() -> None: _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] if sys.version_info >= (3, 11): from importlib.resources import as_file, files _CACERT_CTX = None _CACERT_PATH = None def where() -> str: # This is slightly terrible, but we want to delay extracting the file # in cases where we're inside of a zipimport situation until someone # actually calls where(), but we don't want to re-extract the file # on every call of where(), so we'll do it once then store it in a # global variable. global _CACERT_CTX global _CACERT_PATH if _CACERT_PATH is None: # This is slightly janky, the importlib.resources API wants you to # manage the cleanup of this file, so it doesn't actually return a # path, it returns a context manager that will give you the path # when you enter it and will do any cleanup when you leave it. In # the common case of not needing a temporary file, it will just # return the file system location and the __exit__() is a no-op. # # We also have to hold onto the actual context manager, because # it will do the cleanup whenever it gets garbage collected, so # we will also store that at the global level as well. _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) _CACERT_PATH = str(_CACERT_CTX.__enter__()) atexit.register(exit_cacert_ctx) return _CACERT_PATH def contents() -> str: return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") else: from importlib.resources import path as get_path, read_text _CACERT_CTX = None _CACERT_PATH = None def where() -> str: # This is slightly terrible, but we want to delay extracting the # file in cases where we're inside of a zipimport situation until # someone actually calls where(), but we don't want to re-extract # the file on every call of where(), so we'll do it once then store # it in a global variable. global _CACERT_CTX global _CACERT_PATH if _CACERT_PATH is None: # This is slightly janky, the importlib.resources API wants you # to manage the cleanup of this file, so it doesn't actually # return a path, it returns a context manager that will give # you the path when you enter it and will do any cleanup when # you leave it. In the common case of not needing a temporary # file, it will just return the file system location and the # __exit__() is a no-op. # # We also have to hold onto the actual context manager, because # it will do the cleanup whenever it gets garbage collected, so # we will also store that at the global level as well. _CACERT_CTX = get_path("certifi", "cacert.pem") _CACERT_PATH = str(_CACERT_CTX.__enter__()) atexit.register(exit_cacert_ctx) return _CACERT_PATH def contents() -> str: return read_text("certifi", "cacert.pem", encoding="ascii") ================================================ FILE: shotgun_api3/lib/certifi/py.typed ================================================ ================================================ FILE: shotgun_api3/lib/httplib2/__init__.py ================================================ # -*- coding: utf-8 -*- """Small, fast HTTP client library for Python.""" __author__ = "Joe Gregorio (joe@bitworking.org)" __copyright__ = "Copyright 2006, Joe Gregorio" __contributors__ = [ "Thomas Broyer (t.broyer@ltgt.net)", "James Antill", "Xavier Verges Farrero", "Jonathan Feinberg", "Blair Zajac", "Sam Ruby", "Louis Nyffenegger", "Mark Pilgrim", "Alex Yu", "Lai Han", ] __license__ = "MIT" __version__ = "0.22.0" import base64 import calendar import copy import email import email.feedparser from email import header import email.message import email.utils import errno from gettext import gettext as _ import gzip from hashlib import md5 as _md5 from hashlib import sha1 as _sha import hmac import http.client import io import os import random import re import socket import ssl import sys import time import urllib.parse import zlib try: import socks except ImportError: # TODO: remove this fallback and copypasted socksipy module upon py2/3 merge, # idea is to have soft-dependency on any compatible module called socks from . import socks from . import auth from .error import * from .iri2uri import iri2uri def has_timeout(timeout): if hasattr(socket, "_GLOBAL_DEFAULT_TIMEOUT"): return timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT return timeout is not None __all__ = [ "debuglevel", "FailedToDecompressContent", "Http", "HttpLib2Error", "ProxyInfo", "RedirectLimit", "RedirectMissingLocation", "Response", "RETRIES", "UnimplementedDigestAuthOptionError", "UnimplementedHmacDigestAuthOptionError", ] # The httplib debug level, set to a non-zero value to get debug output debuglevel = 0 # A request will be tried 'RETRIES' times if it fails at the socket/connection level. RETRIES = 2 # Open Items: # ----------- # Are we removing the cached content too soon on PUT (only delete on 200 Maybe?) # Pluggable cache storage (supports storing the cache in # flat files by default. We need a plug-in architecture # that can support Berkeley DB and Squid) # == Known Issues == # Does not handle a resource that uses conneg and Last-Modified but no ETag as a cache validator. # Does not handle Cache-Control: max-stale # Does not use Age: headers when calculating cache freshness. # The number of redirections to follow before giving up. # Note that only GET redirects are automatically followed. # Will also honor 301 requests by saving that info and never # requesting that URI again. DEFAULT_MAX_REDIRECTS = 5 # Which headers are hop-by-hop headers by default HOP_BY_HOP = [ "connection", "keep-alive", "proxy-authenticate", "proxy-authorization", "te", "trailers", "transfer-encoding", "upgrade", ] # https://tools.ietf.org/html/rfc7231#section-8.1.3 SAFE_METHODS = ("GET", "HEAD", "OPTIONS", "TRACE") # To change, assign to `Http().redirect_codes` REDIRECT_CODES = frozenset((300, 301, 302, 303, 307, 308)) from . import certs CA_CERTS = certs.where() # PROTOCOL_TLS is python 3.5.3+. PROTOCOL_SSLv23 is deprecated. # Both PROTOCOL_TLS and PROTOCOL_SSLv23 are equivalent and means: # > Selects the highest protocol version that both the client and server support. # > Despite the name, this option can select “TLS” protocols as well as “SSL”. # source: https://docs.python.org/3.5/library/ssl.html#ssl.PROTOCOL_SSLv23 # PROTOCOL_TLS_CLIENT is python 3.10.0+. PROTOCOL_TLS is deprecated. # > Auto-negotiate the highest protocol version that both the client and server support, and configure the context client-side connections. # > The protocol enables CERT_REQUIRED and check_hostname by default. # source: https://docs.python.org/3.10/library/ssl.html#ssl.PROTOCOL_TLS DEFAULT_TLS_VERSION = getattr(ssl, "PROTOCOL_TLS_CLIENT", None) or getattr(ssl, "PROTOCOL_TLS", None) or getattr(ssl, "PROTOCOL_SSLv23") def _build_ssl_context( disable_ssl_certificate_validation, ca_certs, cert_file=None, key_file=None, maximum_version=None, minimum_version=None, key_password=None, ): if not hasattr(ssl, "SSLContext"): raise RuntimeError("httplib2 requires Python 3.2+ for ssl.SSLContext") context = ssl.SSLContext(DEFAULT_TLS_VERSION) # check_hostname and verify_mode should be set in opposite order during disable # https://bugs.python.org/issue31431 if disable_ssl_certificate_validation and hasattr(context, "check_hostname"): context.check_hostname = not disable_ssl_certificate_validation context.verify_mode = ssl.CERT_NONE if disable_ssl_certificate_validation else ssl.CERT_REQUIRED # SSLContext.maximum_version and SSLContext.minimum_version are python 3.7+. # source: https://docs.python.org/3/library/ssl.html#ssl.SSLContext.maximum_version if maximum_version is not None: if hasattr(context, "maximum_version"): if isinstance(maximum_version, str): maximum_version = getattr(ssl.TLSVersion, maximum_version) context.maximum_version = maximum_version else: raise RuntimeError("setting tls_maximum_version requires Python 3.7 and OpenSSL 1.1 or newer") if minimum_version is not None: if hasattr(context, "minimum_version"): if isinstance(minimum_version, str): minimum_version = getattr(ssl.TLSVersion, minimum_version) context.minimum_version = minimum_version else: raise RuntimeError("setting tls_minimum_version requires Python 3.7 and OpenSSL 1.1 or newer") # check_hostname requires python 3.4+ # we will perform the equivalent in HTTPSConnectionWithTimeout.connect() by calling ssl.match_hostname # if check_hostname is not supported. if hasattr(context, "check_hostname"): context.check_hostname = not disable_ssl_certificate_validation context.load_verify_locations(ca_certs) if cert_file: context.load_cert_chain(cert_file, key_file, key_password) return context def _get_end2end_headers(response): hopbyhop = list(HOP_BY_HOP) hopbyhop.extend([x.strip() for x in response.get("connection", "").split(",")]) return [header for header in list(response.keys()) if header not in hopbyhop] _missing = object() def _errno_from_exception(e): # TODO python 3.11+ cheap try: return e.errno except AttributeError: pass errno = getattr(e, "errno", _missing) if errno is not _missing: return errno # socket.error and common wrap in .args args = getattr(e, "args", None) if args: return _errno_from_exception(args[0]) # pysocks.ProxyError wraps in .socket_err # https://github.com/httplib2/httplib2/pull/202 socket_err = getattr(e, "socket_err", None) if socket_err: return _errno_from_exception(socket_err) return None URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") def parse_uri(uri): """Parses a URI using the regex given in Appendix B of RFC 3986. (scheme, authority, path, query, fragment) = parse_uri(uri) """ groups = URI.match(uri).groups() return (groups[1], groups[3], groups[4], groups[6], groups[8]) def urlnorm(uri): (scheme, authority, path, query, fragment) = parse_uri(uri) if not scheme or not authority: raise RelativeURIError("Only absolute URIs are allowed. uri = %s" % uri) authority = authority.lower() scheme = scheme.lower() if not path: path = "/" # Could do syntax based normalization of the URI before # computing the digest. See Section 6.2.2 of Std 66. request_uri = query and "?".join([path, query]) or path scheme = scheme.lower() defrag_uri = scheme + "://" + authority + request_uri return scheme, authority, request_uri, defrag_uri # Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) re_url_scheme = re.compile(r"^\w+://") re_unsafe = re.compile(r"[^\w\-_.()=!]+", re.ASCII) def safename(filename): """Return a filename suitable for the cache. Strips dangerous and common characters to create a filename we can use to store the cache in. """ if isinstance(filename, bytes): filename_bytes = filename filename = filename.decode("utf-8") else: filename_bytes = filename.encode("utf-8") filemd5 = _md5(filename_bytes).hexdigest() filename = re_url_scheme.sub("", filename) filename = re_unsafe.sub("", filename) # limit length of filename (vital for Windows) # https://github.com/httplib2/httplib2/pull/74 # C:\Users\ \AppData\Local\Temp\ , # 9 chars + max 104 chars + 20 chars + x + 1 + 32 = max 259 chars # Thus max safe filename x = 93 chars. Let it be 90 to make a round sum: filename = filename[:90] return ",".join((filename, filemd5)) NORMALIZE_SPACE = re.compile(r"(?:\r\n)?[ \t]+") def _normalize_headers(headers): return dict( [ (_convert_byte_str(key).lower(), NORMALIZE_SPACE.sub(_convert_byte_str(value), " ").strip(),) for (key, value) in headers.items() ] ) def _convert_byte_str(s): if not isinstance(s, str): return str(s, "utf-8") return s def _parse_cache_control(headers): retval = {} if "cache-control" in headers: parts = headers["cache-control"].split(",") parts_with_args = [ tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=") ] parts_wo_args = [(name.strip().lower(), 1) for name in parts if -1 == name.find("=")] retval = dict(parts_with_args + parts_wo_args) return retval # Whether to use a strict mode to parse WWW-Authenticate headers # Might lead to bad results in case of ill-formed header value, # so disabled by default, falling back to relaxed parsing. # Set to true to turn on, useful for testing servers. USE_WWW_AUTH_STRICT_PARSING = 0 def _entry_disposition(response_headers, request_headers): """Determine freshness from the Date, Expires and Cache-Control headers. We don't handle the following: 1. Cache-Control: max-stale 2. Age: headers are not used in the calculations. Not that this algorithm is simpler than you might think because we are operating as a private (non-shared) cache. This lets us ignore 's-maxage'. We can also ignore 'proxy-invalidate' since we aren't a proxy. We will never return a stale document as fresh as a design decision, and thus the non-implementation of 'max-stale'. This also lets us safely ignore 'must-revalidate' since we operate as if every server has sent 'must-revalidate'. Since we are private we get to ignore both 'public' and 'private' parameters. We also ignore 'no-transform' since we don't do any transformations. The 'no-store' parameter is handled at a higher level. So the only Cache-Control parameters we look at are: no-cache only-if-cached max-age min-fresh """ retval = "STALE" cc = _parse_cache_control(request_headers) cc_response = _parse_cache_control(response_headers) if "pragma" in request_headers and request_headers["pragma"].lower().find("no-cache") != -1: retval = "TRANSPARENT" if "cache-control" not in request_headers: request_headers["cache-control"] = "no-cache" elif "no-cache" in cc: retval = "TRANSPARENT" elif "no-cache" in cc_response: retval = "STALE" elif "only-if-cached" in cc: retval = "FRESH" elif "date" in response_headers: date = calendar.timegm(email.utils.parsedate_tz(response_headers["date"])) now = time.time() current_age = max(0, now - date) if "max-age" in cc_response: try: freshness_lifetime = int(cc_response["max-age"]) except ValueError: freshness_lifetime = 0 elif "expires" in response_headers: expires = email.utils.parsedate_tz(response_headers["expires"]) if None == expires: freshness_lifetime = 0 else: freshness_lifetime = max(0, calendar.timegm(expires) - date) else: freshness_lifetime = 0 if "max-age" in cc: try: freshness_lifetime = int(cc["max-age"]) except ValueError: freshness_lifetime = 0 if "min-fresh" in cc: try: min_fresh = int(cc["min-fresh"]) except ValueError: min_fresh = 0 current_age += min_fresh if freshness_lifetime > current_age: retval = "FRESH" return retval def _decompressContent(response, new_content): content = new_content try: encoding = response.get("content-encoding", None) if encoding in ["gzip", "deflate"]: if encoding == "gzip": content = gzip.GzipFile(fileobj=io.BytesIO(new_content)).read() if encoding == "deflate": try: content = zlib.decompress(content, zlib.MAX_WBITS) except (IOError, zlib.error): content = zlib.decompress(content, -zlib.MAX_WBITS) response["content-length"] = str(len(content)) # Record the historical presence of the encoding in a way the won't interfere. response["-content-encoding"] = response["content-encoding"] del response["content-encoding"] except (IOError, zlib.error): content = "" raise FailedToDecompressContent( _("Content purported to be compressed with %s but failed to decompress.") % response.get("content-encoding"), response, content, ) return content def _bind_write_headers(msg): def _write_headers(self): # Self refers to the Generator object. for h, v in msg.items(): print("%s:" % h, end=" ", file=self._fp) if isinstance(v, header.Header): print(v.encode(maxlinelen=self._maxheaderlen), file=self._fp) else: # email.Header got lots of smarts, so use it. headers = header.Header(v, maxlinelen=self._maxheaderlen, charset="utf-8", header_name=h) print(headers.encode(), file=self._fp) # A blank line always separates headers from body. print(file=self._fp) return _write_headers def _updateCache(request_headers, response_headers, content, cache, cachekey): if cachekey: cc = _parse_cache_control(request_headers) cc_response = _parse_cache_control(response_headers) if "no-store" in cc or "no-store" in cc_response: cache.delete(cachekey) else: info = email.message.Message() for key, value in response_headers.items(): if key not in ["status", "content-encoding", "transfer-encoding"]: info[key] = value # Add annotations to the cache to indicate what headers # are variant for this request. vary = response_headers.get("vary", None) if vary: vary_headers = vary.lower().replace(" ", "").split(",") for header in vary_headers: key = "-varied-%s" % header try: info[key] = request_headers[header] except KeyError: pass status = response_headers.status if status == 304: status = 200 status_header = "status: %d\r\n" % status try: header_str = info.as_string() except UnicodeEncodeError: setattr(info, "_write_headers", _bind_write_headers(info)) header_str = info.as_string() header_str = re.sub("\r(?!\n)|(? 0: service = "cl" # No point in guessing Base or Spreadsheet # elif request_uri.find("spreadsheets") > 0: # service = "wise" auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers["user-agent"],) resp, content = self.http.request( "https://www.google.com/accounts/ClientLogin", method="POST", body=urlencode(auth), headers={"Content-Type": "application/x-www-form-urlencoded"}, ) lines = content.split("\n") d = dict([tuple(line.split("=", 1)) for line in lines if line]) if resp.status == 403: self.Auth = "" else: self.Auth = d["Auth"] def request(self, method, request_uri, headers, content): """Modify the request headers to add the appropriate Authorization header.""" headers["authorization"] = "GoogleLogin Auth=" + self.Auth AUTH_SCHEME_CLASSES = { "basic": BasicAuthentication, "wsse": WsseAuthentication, "digest": DigestAuthentication, "hmacdigest": HmacDigestAuthentication, "googlelogin": GoogleLoginAuthentication, } AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] class FileCache(object): """Uses a local directory as a store for cached files. Not really safe to use if multiple threads or processes are going to be running on the same cache. """ def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior self.cache = cache self.safe = safe if not os.path.exists(cache): os.makedirs(self.cache) def get(self, key): retval = None cacheFullPath = os.path.join(self.cache, self.safe(key)) try: f = open(cacheFullPath, "rb") retval = f.read() f.close() except IOError: pass return retval def set(self, key, value): cacheFullPath = os.path.join(self.cache, self.safe(key)) f = open(cacheFullPath, "wb") f.write(value) f.close() def delete(self, key): cacheFullPath = os.path.join(self.cache, self.safe(key)) if os.path.exists(cacheFullPath): os.remove(cacheFullPath) class Credentials(object): def __init__(self): self.credentials = [] def add(self, name, password, domain=""): self.credentials.append((domain.lower(), name, password)) def clear(self): self.credentials = [] def iter(self, domain): for (cdomain, name, password) in self.credentials: if cdomain == "" or domain == cdomain: yield (name, password) class KeyCerts(Credentials): """Identical to Credentials except that name/password are mapped to key/cert.""" def add(self, key, cert, domain, password): self.credentials.append((domain.lower(), key, cert, password)) def iter(self, domain): for (cdomain, key, cert, password) in self.credentials: if cdomain == "" or domain == cdomain: yield (key, cert, password) class AllHosts(object): pass class ProxyInfo(object): """Collect information required to use a proxy.""" bypass_hosts = () def __init__( self, proxy_type, proxy_host, proxy_port, proxy_rdns=True, proxy_user=None, proxy_pass=None, proxy_headers=None, ): """Args: proxy_type: The type of proxy server. This must be set to one of socks.PROXY_TYPE_XXX constants. For example: p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost', proxy_port=8000) proxy_host: The hostname or IP address of the proxy server. proxy_port: The port that the proxy server is running on. proxy_rdns: If True (default), DNS queries will not be performed locally, and instead, handed to the proxy to resolve. This is useful if the network does not allow resolution of non-local names. In httplib2 0.9 and earlier, this defaulted to False. proxy_user: The username used to authenticate with the proxy server. proxy_pass: The password used to authenticate with the proxy server. proxy_headers: Additional or modified headers for the proxy connect request. """ if isinstance(proxy_user, bytes): proxy_user = proxy_user.decode() if isinstance(proxy_pass, bytes): proxy_pass = proxy_pass.decode() ( self.proxy_type, self.proxy_host, self.proxy_port, self.proxy_rdns, self.proxy_user, self.proxy_pass, self.proxy_headers, ) = ( proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers, ) def astuple(self): return ( self.proxy_type, self.proxy_host, self.proxy_port, self.proxy_rdns, self.proxy_user, self.proxy_pass, self.proxy_headers, ) def isgood(self): return socks and (self.proxy_host != None) and (self.proxy_port != None) def applies_to(self, hostname): return not self.bypass_host(hostname) def bypass_host(self, hostname): """Has this host been excluded from the proxy config""" if self.bypass_hosts is AllHosts: return True hostname = "." + hostname.lstrip(".") for skip_name in self.bypass_hosts: # *.suffix if skip_name.startswith(".") and hostname.endswith(skip_name): return True # exact match if hostname == "." + skip_name: return True return False def __repr__(self): return ( "" ).format(p=self) def proxy_info_from_environment(method="http"): """Read proxy info from the environment variables. """ if method not in ("http", "https"): return env_var = method + "_proxy" url = os.environ.get(env_var, os.environ.get(env_var.upper())) if not url: return return proxy_info_from_url(url, method, noproxy=None) def proxy_info_from_url(url, method="http", noproxy=None): """Construct a ProxyInfo from a URL (such as http_proxy env var) """ url = urllib.parse.urlparse(url) proxy_type = 3 # socks.PROXY_TYPE_HTTP pi = ProxyInfo( proxy_type=proxy_type, proxy_host=url.hostname, proxy_port=url.port or dict(https=443, http=80)[method], proxy_user=url.username or None, proxy_pass=url.password or None, proxy_headers=None, ) bypass_hosts = [] # If not given an explicit noproxy value, respect values in env vars. if noproxy is None: noproxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY", "")) # Special case: A single '*' character means all hosts should be bypassed. if noproxy == "*": bypass_hosts = AllHosts elif noproxy.strip(): bypass_hosts = noproxy.split(",") bypass_hosts = tuple(filter(bool, bypass_hosts)) # To exclude empty string. pi.bypass_hosts = bypass_hosts return pi class HTTPConnectionWithTimeout(http.client.HTTPConnection): """HTTPConnection subclass that supports timeouts HTTPConnection subclass that supports timeouts All timeouts are in seconds. If None is passed for timeout then Python's default timeout for sockets will be used. See for example the docs of socket.setdefaulttimeout(): http://docs.python.org/library/socket.html#socket.setdefaulttimeout """ def __init__(self, host, port=None, timeout=None, proxy_info=None): http.client.HTTPConnection.__init__(self, host, port=port, timeout=timeout) self.proxy_info = proxy_info if proxy_info and not isinstance(proxy_info, ProxyInfo): self.proxy_info = proxy_info("http") def connect(self): """Connect to the host and port specified in __init__.""" if self.proxy_info and socks is None: raise ProxiesUnavailableError("Proxy support missing but proxy use was requested!") if self.proxy_info and self.proxy_info.isgood() and self.proxy_info.applies_to(self.host): use_proxy = True ( proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers, ) = self.proxy_info.astuple() host = proxy_host port = proxy_port else: use_proxy = False host = self.host port = self.port proxy_type = None socket_err = None for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res try: if use_proxy: self.sock = socks.socksocket(af, socktype, proto) self.sock.setproxy( proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, ) else: self.sock = socket.socket(af, socktype, proto) self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) if has_timeout(self.timeout): self.sock.settimeout(self.timeout) if self.debuglevel > 0: print("connect: ({0}, {1}) ************".format(self.host, self.port)) if use_proxy: print( "proxy: {0} ************".format( str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,)) ) ) self.sock.connect((self.host, self.port) + sa[2:]) except socket.error as e: socket_err = e if self.debuglevel > 0: print("connect fail: ({0}, {1})".format(self.host, self.port)) if use_proxy: print( "proxy: {0}".format( str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,)) ) ) if self.sock: self.sock.close() self.sock = None continue break if not self.sock: raise socket_err class HTTPSConnectionWithTimeout(http.client.HTTPSConnection): """This class allows communication via SSL. All timeouts are in seconds. If None is passed for timeout then Python's default timeout for sockets will be used. See for example the docs of socket.setdefaulttimeout(): http://docs.python.org/library/socket.html#socket.setdefaulttimeout """ def __init__( self, host, port=None, key_file=None, cert_file=None, timeout=None, proxy_info=None, ca_certs=None, disable_ssl_certificate_validation=False, tls_maximum_version=None, tls_minimum_version=None, key_password=None, ): self.disable_ssl_certificate_validation = disable_ssl_certificate_validation self.ca_certs = ca_certs if ca_certs else CA_CERTS self.proxy_info = proxy_info if proxy_info and not isinstance(proxy_info, ProxyInfo): self.proxy_info = proxy_info("https") context = _build_ssl_context( self.disable_ssl_certificate_validation, self.ca_certs, cert_file, key_file, maximum_version=tls_maximum_version, minimum_version=tls_minimum_version, key_password=key_password, ) super(HTTPSConnectionWithTimeout, self).__init__( host, port=port, timeout=timeout, context=context, ) self.key_file = key_file self.cert_file = cert_file self.key_password = key_password def connect(self): """Connect to a host on a given (SSL) port.""" if self.proxy_info and self.proxy_info.isgood() and self.proxy_info.applies_to(self.host): use_proxy = True ( proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers, ) = self.proxy_info.astuple() host = proxy_host port = proxy_port else: use_proxy = False host = self.host port = self.port proxy_type = None proxy_headers = None socket_err = None address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM) for family, socktype, proto, canonname, sockaddr in address_info: try: if use_proxy: sock = socks.socksocket(family, socktype, proto) sock.setproxy( proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, ) else: sock = socket.socket(family, socktype, proto) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) if has_timeout(self.timeout): sock.settimeout(self.timeout) sock.connect((self.host, self.port)) self.sock = self._context.wrap_socket(sock, server_hostname=self.host) # Python 3.3 compatibility: emulate the check_hostname behavior if not hasattr(self._context, "check_hostname") and not self.disable_ssl_certificate_validation: try: ssl.match_hostname(self.sock.getpeercert(), self.host) except Exception: self.sock.shutdown(socket.SHUT_RDWR) self.sock.close() raise if self.debuglevel > 0: print("connect: ({0}, {1})".format(self.host, self.port)) if use_proxy: print( "proxy: {0}".format( str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,)) ) ) except (ssl.SSLError, ssl.CertificateError) as e: if sock: sock.close() if self.sock: self.sock.close() self.sock = None raise except (socket.timeout, socket.gaierror): raise except socket.error as e: socket_err = e if self.debuglevel > 0: print("connect fail: ({0}, {1})".format(self.host, self.port)) if use_proxy: print( "proxy: {0}".format( str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,)) ) ) if self.sock: self.sock.close() self.sock = None continue break if not self.sock: raise socket_err SCHEME_TO_CONNECTION = { "http": HTTPConnectionWithTimeout, "https": HTTPSConnectionWithTimeout, } class Http(object): """An HTTP client that handles: - all methods - caching - ETags - compression, - HTTPS - Basic - Digest - WSSE and more. """ def __init__( self, cache=None, timeout=None, proxy_info=proxy_info_from_environment, ca_certs=None, disable_ssl_certificate_validation=False, tls_maximum_version=None, tls_minimum_version=None, ): """If 'cache' is a string then it is used as a directory name for a disk cache. Otherwise it must be an object that supports the same interface as FileCache. All timeouts are in seconds. If None is passed for timeout then Python's default timeout for sockets will be used. See for example the docs of socket.setdefaulttimeout(): http://docs.python.org/library/socket.html#socket.setdefaulttimeout `proxy_info` may be: - a callable that takes the http scheme ('http' or 'https') and returns a ProxyInfo instance per request. By default, uses proxy_info_from_environment. - a ProxyInfo instance (static proxy config). - None (proxy disabled). ca_certs is the path of a file containing root CA certificates for SSL server certificate validation. By default, a CA cert file bundled with httplib2 is used. If disable_ssl_certificate_validation is true, SSL cert validation will not be performed. tls_maximum_version / tls_minimum_version require Python 3.7+ / OpenSSL 1.1.0g+. A value of "TLSv1_3" requires OpenSSL 1.1.1+. """ self.proxy_info = proxy_info self.ca_certs = ca_certs self.disable_ssl_certificate_validation = disable_ssl_certificate_validation self.tls_maximum_version = tls_maximum_version self.tls_minimum_version = tls_minimum_version # Map domain name to an httplib connection self.connections = {} # The location of the cache, for now a directory # where cached responses are held. if cache and isinstance(cache, str): self.cache = FileCache(cache) else: self.cache = cache # Name/password self.credentials = Credentials() # Key/cert self.certificates = KeyCerts() # authorization objects self.authorizations = [] # If set to False then no redirects are followed, even safe ones. self.follow_redirects = True self.redirect_codes = REDIRECT_CODES # Which HTTP methods do we apply optimistic concurrency to, i.e. # which methods get an "if-match:" etag header added to them. self.optimistic_concurrency_methods = ["PUT", "PATCH"] self.safe_methods = list(SAFE_METHODS) # If 'follow_redirects' is True, and this is set to True then # all redirecs are followed, including unsafe ones. self.follow_all_redirects = False self.ignore_etag = False self.force_exception_to_status_code = False self.timeout = timeout # Keep Authorization: headers on a redirect. self.forward_authorization_headers = False def close(self): """Close persistent connections, clear sensitive data. Not thread-safe, requires external synchronization against concurrent requests. """ existing, self.connections = self.connections, {} for _, c in existing.items(): c.close() self.certificates.clear() self.clear_credentials() def __getstate__(self): state_dict = copy.copy(self.__dict__) # In case request is augmented by some foreign object such as # credentials which handle auth if "request" in state_dict: del state_dict["request"] if "connections" in state_dict: del state_dict["connections"] return state_dict def __setstate__(self, state): self.__dict__.update(state) self.connections = {} def _auth_from_challenge(self, host, request_uri, headers, response, content): """A generator that creates Authorization objects that can be applied to requests. """ challenges = auth._parse_www_authenticate(response, "www-authenticate") for cred in self.credentials.iter(host): for scheme in AUTH_SCHEME_ORDER: if scheme in challenges: yield AUTH_SCHEME_CLASSES[scheme](cred, host, request_uri, headers, response, content, self) def add_credentials(self, name, password, domain=""): """Add a name and password that will be used any time a request requires authentication.""" self.credentials.add(name, password, domain) def add_certificate(self, key, cert, domain, password=None): """Add a key and cert that will be used any time a request requires authentication.""" self.certificates.add(key, cert, domain, password) def clear_credentials(self): """Remove all the names and passwords that are used for authentication""" self.credentials.clear() self.authorizations = [] def _conn_request(self, conn, request_uri, method, body, headers): i = 0 seen_bad_status_line = False while i < RETRIES: i += 1 try: if conn.sock is None: conn.connect() conn.request(method, request_uri, body, headers) except socket.timeout: conn.close() raise except socket.gaierror: conn.close() raise ServerNotFoundError("Unable to find the server at %s" % conn.host) except socket.error as e: errno_ = _errno_from_exception(e) if errno_ in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES: continue # retry on potentially transient errors raise except http.client.HTTPException: if conn.sock is None: if i < RETRIES - 1: conn.close() conn.connect() continue else: conn.close() raise if i < RETRIES - 1: conn.close() conn.connect() continue # Just because the server closed the connection doesn't apparently mean # that the server didn't send a response. pass try: response = conn.getresponse() except (http.client.BadStatusLine, http.client.ResponseNotReady): # If we get a BadStatusLine on the first try then that means # the connection just went stale, so retry regardless of the # number of RETRIES set. if not seen_bad_status_line and i == 1: i = 0 seen_bad_status_line = True conn.close() conn.connect() continue else: conn.close() raise except socket.timeout: raise except (socket.error, http.client.HTTPException): conn.close() if i == 0: conn.close() conn.connect() continue else: raise else: content = b"" if method == "HEAD": conn.close() else: content = response.read() response = Response(response) if method != "HEAD": content = _decompressContent(response, content) break return (response, content) def _request( self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey, ): """Do the actual request using the connection object and also follow one level of redirects if necessary""" auths = [(auth.depth(request_uri), auth) for auth in self.authorizations if auth.inscope(host, request_uri)] auth = auths and sorted(auths)[0][1] or None if auth: auth.request(method, request_uri, headers, body) (response, content) = self._conn_request(conn, request_uri, method, body, headers) if auth: if auth.response(response, body): auth.request(method, request_uri, headers, body) (response, content) = self._conn_request(conn, request_uri, method, body, headers) response._stale_digest = 1 if response.status == 401: for authorization in self._auth_from_challenge(host, request_uri, headers, response, content): authorization.request(method, request_uri, headers, body) (response, content) = self._conn_request(conn, request_uri, method, body, headers) if response.status != 401: self.authorizations.append(authorization) authorization.response(response, body) break if self.follow_all_redirects or method in self.safe_methods or response.status in (303, 308): if self.follow_redirects and response.status in self.redirect_codes: # Pick out the location header and basically start from the beginning # remembering first to strip the ETag header and decrement our 'depth' if redirections: if "location" not in response and response.status != 300: raise RedirectMissingLocation( _("Redirected but the response is missing a Location: header."), response, content, ) # Fix-up relative redirects (which violate an RFC 2616 MUST) if "location" in response: location = response["location"] (scheme, authority, path, query, fragment) = parse_uri(location) if authority == None: response["location"] = urllib.parse.urljoin(absolute_uri, location) if response.status == 308 or (response.status == 301 and (method in self.safe_methods)): response["-x-permanent-redirect-url"] = response["location"] if "content-location" not in response: response["content-location"] = absolute_uri _updateCache(headers, response, content, self.cache, cachekey) if "if-none-match" in headers: del headers["if-none-match"] if "if-modified-since" in headers: del headers["if-modified-since"] if "authorization" in headers and not self.forward_authorization_headers: del headers["authorization"] if "location" in response: location = response["location"] old_response = copy.deepcopy(response) if "content-location" not in old_response: old_response["content-location"] = absolute_uri redirect_method = method if response.status in [302, 303]: redirect_method = "GET" body = None (response, content) = self.request( location, method=redirect_method, body=body, headers=headers, redirections=redirections - 1, ) response.previous = old_response else: raise RedirectLimit( "Redirected more times than redirection_limit allows.", response, content, ) elif response.status in [200, 203] and method in self.safe_methods: # Don't cache 206's since we aren't going to handle byte range requests if "content-location" not in response: response["content-location"] = absolute_uri _updateCache(headers, response, content, self.cache, cachekey) return (response, content) def _normalize_headers(self, headers): return _normalize_headers(headers) # Need to catch and rebrand some exceptions # Then need to optionally turn all exceptions into status codes # including all socket.* and httplib.* exceptions. def request( self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None, ): """ Performs a single HTTP request. The 'uri' is the URI of the HTTP resource and can begin with either 'http' or 'https'. The value of 'uri' must be an absolute URI. The 'method' is the HTTP method to perform, such as GET, POST, DELETE, etc. There is no restriction on the methods allowed. The 'body' is the entity body to be sent with the request. It is a string object. Any extra headers that are to be sent with the request should be provided in the 'headers' dictionary. The maximum number of redirect to follow before raising an exception is 'redirections. The default is 5. The return value is a tuple of (response, content), the first being and instance of the 'Response' class, the second being a string that contains the response entity body. """ conn_key = "" try: if headers is None: headers = {} else: headers = self._normalize_headers(headers) if "user-agent" not in headers: headers["user-agent"] = "Python-httplib2/%s (gzip)" % __version__ uri = iri2uri(uri) # Prevent CWE-75 space injection to manipulate request via part of uri. # Prevent CWE-93 CRLF injection to modify headers via part of uri. uri = uri.replace(" ", "%20").replace("\r", "%0D").replace("\n", "%0A") (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) conn_key = scheme + ":" + authority conn = self.connections.get(conn_key) if conn is None: if not connection_type: connection_type = SCHEME_TO_CONNECTION[scheme] certs = list(self.certificates.iter(authority)) if issubclass(connection_type, HTTPSConnectionWithTimeout): if certs: conn = self.connections[conn_key] = connection_type( authority, key_file=certs[0][0], cert_file=certs[0][1], timeout=self.timeout, proxy_info=self.proxy_info, ca_certs=self.ca_certs, disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, tls_maximum_version=self.tls_maximum_version, tls_minimum_version=self.tls_minimum_version, key_password=certs[0][2], ) else: conn = self.connections[conn_key] = connection_type( authority, timeout=self.timeout, proxy_info=self.proxy_info, ca_certs=self.ca_certs, disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, tls_maximum_version=self.tls_maximum_version, tls_minimum_version=self.tls_minimum_version, ) else: conn = self.connections[conn_key] = connection_type( authority, timeout=self.timeout, proxy_info=self.proxy_info ) conn.set_debuglevel(debuglevel) if "range" not in headers and "accept-encoding" not in headers: headers["accept-encoding"] = "gzip, deflate" info = email.message.Message() cachekey = None cached_value = None if self.cache: cachekey = defrag_uri cached_value = self.cache.get(cachekey) if cached_value: try: info, content = cached_value.split(b"\r\n\r\n", 1) info = email.message_from_bytes(info) for k, v in info.items(): if v.startswith("=?") and v.endswith("?="): info.replace_header(k, str(*email.header.decode_header(v)[0])) except (IndexError, ValueError): self.cache.delete(cachekey) cachekey = None cached_value = None if ( method in self.optimistic_concurrency_methods and self.cache and "etag" in info and not self.ignore_etag and "if-match" not in headers ): # http://www.w3.org/1999/04/Editing/ headers["if-match"] = info["etag"] # https://tools.ietf.org/html/rfc7234 # A cache MUST invalidate the effective Request URI as well as [...] Location and Content-Location # when a non-error status code is received in response to an unsafe request method. if self.cache and cachekey and method not in self.safe_methods: self.cache.delete(cachekey) # Check the vary header in the cache to see if this request # matches what varies in the cache. if method in self.safe_methods and "vary" in info: vary = info["vary"] vary_headers = vary.lower().replace(" ", "").split(",") for header in vary_headers: key = "-varied-%s" % header value = info[key] if headers.get(header, None) != value: cached_value = None break if ( self.cache and cached_value and (method in self.safe_methods or info["status"] == "308") and "range" not in headers ): redirect_method = method if info["status"] not in ("307", "308"): redirect_method = "GET" if "-x-permanent-redirect-url" in info: # Should cached permanent redirects be counted in our redirection count? For now, yes. if redirections <= 0: raise RedirectLimit( "Redirected more times than redirection_limit allows.", {}, "", ) (response, new_content) = self.request( info["-x-permanent-redirect-url"], method=redirect_method, headers=headers, redirections=redirections - 1, ) response.previous = Response(info) response.previous.fromcache = True else: # Determine our course of action: # Is the cached entry fresh or stale? # Has the client requested a non-cached response? # # There seems to be three possible answers: # 1. [FRESH] Return the cache entry w/o doing a GET # 2. [STALE] Do the GET (but add in cache validators if available) # 3. [TRANSPARENT] Do a GET w/o any cache validators (Cache-Control: no-cache) on the request entry_disposition = _entry_disposition(info, headers) if entry_disposition == "FRESH": response = Response(info) response.fromcache = True return (response, content) if entry_disposition == "STALE": if "etag" in info and not self.ignore_etag and not "if-none-match" in headers: headers["if-none-match"] = info["etag"] if "last-modified" in info and not "last-modified" in headers: headers["if-modified-since"] = info["last-modified"] elif entry_disposition == "TRANSPARENT": pass (response, new_content) = self._request( conn, authority, uri, request_uri, method, body, headers, redirections, cachekey, ) if response.status == 304 and method == "GET": # Rewrite the cache entry with the new end-to-end headers # Take all headers that are in response # and overwrite their values in info. # unless they are hop-by-hop, or are listed in the connection header. for key in _get_end2end_headers(response): info[key] = response[key] merged_response = Response(info) if hasattr(response, "_stale_digest"): merged_response._stale_digest = response._stale_digest _updateCache(headers, merged_response, content, self.cache, cachekey) response = merged_response response.status = 200 response.fromcache = True elif response.status == 200: content = new_content else: self.cache.delete(cachekey) content = new_content else: cc = _parse_cache_control(headers) if "only-if-cached" in cc: info["status"] = "504" response = Response(info) content = b"" else: (response, content) = self._request( conn, authority, uri, request_uri, method, body, headers, redirections, cachekey, ) except Exception as e: is_timeout = isinstance(e, socket.timeout) if is_timeout: conn = self.connections.pop(conn_key, None) if conn: conn.close() if self.force_exception_to_status_code: if isinstance(e, HttpLib2ErrorWithResponse): response = e.response content = e.content response.status = 500 response.reason = str(e) elif isinstance(e, socket.timeout): content = b"Request Timeout" response = Response({"content-type": "text/plain", "status": "408", "content-length": len(content),}) response.reason = "Request Timeout" else: content = str(e).encode("utf-8") response = Response({"content-type": "text/plain", "status": "400", "content-length": len(content),}) response.reason = "Bad Request" else: raise return (response, content) class Response(dict): """An object more like email.message than httplib.HTTPResponse.""" """Is this response from our local cache""" fromcache = False """HTTP protocol version used by server. 10 for HTTP/1.0, 11 for HTTP/1.1. """ version = 11 "Status code returned by server. " status = 200 """Reason phrase returned by server.""" reason = "Ok" previous = None def __init__(self, info): # info is either an email.message or # an httplib.HTTPResponse object. if isinstance(info, http.client.HTTPResponse): for key, value in info.getheaders(): key = key.lower() prev = self.get(key) if prev is not None: value = ", ".join((prev, value)) self[key] = value self.status = info.status self["status"] = str(self.status) self.reason = info.reason self.version = info.version elif isinstance(info, email.message.Message): for key, value in list(info.items()): self[key.lower()] = value self.status = int(self["status"]) else: for key, value in info.items(): self[key.lower()] = value self.status = int(self.get("status", self.status)) def __getattr__(self, name): if name == "dict": return self else: raise AttributeError(name) ================================================ FILE: shotgun_api3/lib/httplib2/auth.py ================================================ import base64 import re from .. import pyparsing as pp from .error import * try: # pyparsing>=3.0.0 downcaseTokens = pp.common.downcaseTokens except AttributeError: downcaseTokens = pp.downcaseTokens UNQUOTE_PAIRS = re.compile(r"\\(.)") unquote = lambda s, l, t: UNQUOTE_PAIRS.sub(r"\1", t[0][1:-1]) # https://tools.ietf.org/html/rfc7235#section-1.2 # https://tools.ietf.org/html/rfc7235#appendix-B tchar = "!#$%&'*+-.^_`|~" + pp.nums + pp.alphas token = pp.Word(tchar).setName("token") token68 = pp.Combine(pp.Word("-._~+/" + pp.nums + pp.alphas) + pp.Optional(pp.Word("=").leaveWhitespace())).setName( "token68" ) quoted_string = pp.dblQuotedString.copy().setName("quoted-string").setParseAction(unquote) auth_param_name = token.copy().setName("auth-param-name").addParseAction(downcaseTokens) auth_param = auth_param_name + pp.Suppress("=") + (quoted_string | token) params = pp.Dict(pp.delimitedList(pp.Group(auth_param))) scheme = token("scheme") challenge = scheme + (params("params") | token68("token")) authentication_info = params.copy() www_authenticate = pp.delimitedList(pp.Group(challenge)) def _parse_authentication_info(headers, headername="authentication-info"): """https://tools.ietf.org/html/rfc7615 """ header = headers.get(headername, "").strip() if not header: return {} try: parsed = authentication_info.parseString(header) except pp.ParseException as ex: # print(ex.explain(ex)) raise MalformedHeader(headername) return parsed.asDict() def _parse_www_authenticate(headers, headername="www-authenticate"): """Returns a dictionary of dictionaries, one dict per auth_scheme.""" header = headers.get(headername, "").strip() if not header: return {} try: parsed = www_authenticate.parseString(header) except pp.ParseException as ex: # print(ex.explain(ex)) raise MalformedHeader(headername) retval = { challenge["scheme"].lower(): challenge["params"].asDict() if "params" in challenge else {"token": challenge.get("token")} for challenge in parsed } return retval ================================================ FILE: shotgun_api3/lib/httplib2/cacerts.txt ================================================ # Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. # Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. # Label: "GTE CyberTrust Global Root" # Serial: 421 # MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db # SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 # SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 -----BEGIN CERTIFICATE----- MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ -----END CERTIFICATE----- # Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division # Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division # Label: "Thawte Server CA" # Serial: 1 # MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d # SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c # SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 -----BEGIN CERTIFICATE----- MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG 7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ qdq5snUb9kLy78fyGPmJvKP/iiMucEc= -----END CERTIFICATE----- # Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division # Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division # Label: "Thawte Premium Server CA" # Serial: 1 # MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a # SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a # SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 -----BEGIN CERTIFICATE----- MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG 9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== -----END CERTIFICATE----- # Issuer: O=Equifax OU=Equifax Secure Certificate Authority # Subject: O=Equifax OU=Equifax Secure Certificate Authority # Label: "Equifax Secure CA" # Serial: 903804111 # MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 # SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a # SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 -----BEGIN CERTIFICATE----- MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y 7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 -----END CERTIFICATE----- # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network # Label: "Verisign Class 3 Public Primary Certification Authority - G2" # Serial: 167285380242319648451154478808036881606 # MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 # SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f # SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b -----BEGIN CERTIFICATE----- MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY oJ2daZH9 -----END CERTIFICATE----- # Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Label: "GlobalSign Root CA" # Serial: 4835703278459707669005204 # MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a # SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c # SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 -----BEGIN CERTIFICATE----- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp 1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE 38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 # Label: "GlobalSign Root CA - R2" # Serial: 4835703278459682885658125 # MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 # SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe # SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e -----BEGIN CERTIFICATE----- MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG 3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO 291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== -----END CERTIFICATE----- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority # Label: "ValiCert Class 1 VA" # Serial: 1 # MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb # SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e # SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 -----BEGIN CERTIFICATE----- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI -----END CERTIFICATE----- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority # Label: "ValiCert Class 2 VA" # Serial: 1 # MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 # SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 # SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b -----BEGIN CERTIFICATE----- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd -----END CERTIFICATE----- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority # Label: "RSA Root Certificate 1" # Serial: 1 # MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 # SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb # SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a -----BEGIN CERTIFICATE----- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs 2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Label: "Verisign Class 3 Public Primary Certification Authority - G3" # Serial: 206684696279472310254277870180966723415 # MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 # SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 # SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 -----BEGIN CERTIFICATE----- MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te 2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Label: "Verisign Class 4 Public Primary Certification Authority - G3" # Serial: 314531972711909413743075096039378935511 # MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df # SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d # SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 -----BEGIN CERTIFICATE----- MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ +mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c 2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== -----END CERTIFICATE----- # Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Label: "Entrust.net Secure Server CA" # Serial: 927650371 # MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee # SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 # SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 -----BEGIN CERTIFICATE----- MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN 95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd 2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= -----END CERTIFICATE----- # Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Label: "Entrust.net Premium 2048 Secure Server CA" # Serial: 946059622 # MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc # SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe # SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f -----BEGIN CERTIFICATE----- MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH 4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy vUxFnmG6v4SBkgPR0ml8xQ== -----END CERTIFICATE----- # Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust # Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust # Label: "Baltimore CyberTrust Root" # Serial: 33554617 # MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 # SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 # SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- # Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. # Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. # Label: "Equifax Secure Global eBusiness CA" # Serial: 1 # MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc # SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 # SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 -----BEGIN CERTIFICATE----- MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc 58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv 8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV -----END CERTIFICATE----- # Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. # Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. # Label: "Equifax Secure eBusiness CA 1" # Serial: 4 # MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d # SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 # SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 -----BEGIN CERTIFICATE----- MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN /Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== -----END CERTIFICATE----- # Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 # Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 # Label: "Equifax Secure eBusiness CA 2" # Serial: 930140085 # MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca # SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc # SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20 -----BEGIN CERTIFICATE----- MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy 0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN -----END CERTIFICATE----- # Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Low-Value Services Root" # Serial: 1 # MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc # SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d # SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 -----BEGIN CERTIFICATE----- MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC +Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X 7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz 43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= -----END CERTIFICATE----- # Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network # Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network # Label: "AddTrust External Root" # Serial: 1 # MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f # SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 # SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 -----BEGIN CERTIFICATE----- MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= -----END CERTIFICATE----- # Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Public Services Root" # Serial: 1 # MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f # SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 # SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV 6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH 1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF 62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh 4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= -----END CERTIFICATE----- # Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Qualified Certificates Root" # Serial: 1 # MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb # SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf # SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 -----BEGIN CERTIFICATE----- MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G 87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i 2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no xqE= -----END CERTIFICATE----- # Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. # Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. # Label: "Entrust Root Certification Authority" # Serial: 1164660820 # MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 # SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 # SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c -----BEGIN CERTIFICATE----- MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi 94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP 9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m 0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- # Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. # Subject: CN=GeoTrust Global CA O=GeoTrust Inc. # Label: "GeoTrust Global CA" # Serial: 144470 # MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 # SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 # SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a -----BEGIN CERTIFICATE----- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU 1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV 5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== -----END CERTIFICATE----- # Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. # Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. # Label: "GeoTrust Global CA 2" # Serial: 1 # MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 # SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d # SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 -----BEGIN CERTIFICATE----- MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL 5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe 2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv /NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz 4iIprn2DQKi6bA== -----END CERTIFICATE----- # Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. # Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. # Label: "GeoTrust Universal CA" # Serial: 1 # MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 # SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 # SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 -----BEGIN CERTIFICATE----- MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB /wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG 9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= -----END CERTIFICATE----- # Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. # Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. # Label: "GeoTrust Universal CA 2" # Serial: 1 # MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 # SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 # SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b -----BEGIN CERTIFICATE----- MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m 1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH 6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS -----END CERTIFICATE----- # Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc. # Subject: CN=America Online Root Certification Authority 1 O=America Online Inc. # Label: "America Online Root Certification Authority 1" # Serial: 1 # MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e # SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a # SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3 -----BEGIN CERTIFICATE----- MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym 1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb 2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 -----END CERTIFICATE----- # Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc. # Subject: CN=America Online Root Certification Authority 2 O=America Online Inc. # Label: "America Online Root Certification Authority 2" # Serial: 1 # MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf # SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84 # SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd -----BEGIN CERTIFICATE----- MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC 206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 +L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw RY8mkaKO/qk= -----END CERTIFICATE----- # Issuer: CN=AAA Certificate Services O=Comodo CA Limited # Subject: CN=AAA Certificate Services O=Comodo CA Limited # Label: "Comodo AAA Services root" # Serial: 1 # MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 # SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 # SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 -----BEGIN CERTIFICATE----- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe 3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- # Issuer: CN=Secure Certificate Services O=Comodo CA Limited # Subject: CN=Secure Certificate Services O=Comodo CA Limited # Label: "Comodo Secure Services root" # Serial: 1 # MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd # SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 # SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 -----BEGIN CERTIFICATE----- MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk 3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz 6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= -----END CERTIFICATE----- # Issuer: CN=Trusted Certificate Services O=Comodo CA Limited # Subject: CN=Trusted Certificate Services O=Comodo CA Limited # Label: "Comodo Trusted Services root" # Serial: 1 # MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 # SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd # SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW 1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi -----END CERTIFICATE----- # Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Label: "UTN DATACorp SGC Root CA" # Serial: 91374294542884689855167577680241077609 # MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 # SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 # SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 -----BEGIN CERTIFICATE----- MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK 4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv 2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 mfnGV/TJVTl4uix5yaaIK/QI -----END CERTIFICATE----- # Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com # Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com # Label: "UTN USERFirst Hardware Root CA" # Serial: 91374294542884704022267039221184531197 # MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 # SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 # SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 -----BEGIN CERTIFICATE----- MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn 0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t 3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== -----END CERTIFICATE----- # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Label: "XRamp Global CA Root" # Serial: 107108908803651509692980124233745014957 # MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 # SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 # SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 -----BEGIN CERTIFICATE----- MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ O+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- # Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority # Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority # Label: "Go Daddy Class 2 CA" # Serial: 0 # MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 # SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 # SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h /t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf ReYNnyicsbkqWletNw+vHX/bvZ8= -----END CERTIFICATE----- # Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority # Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority # Label: "Starfield Class 2 CA" # Serial: 0 # MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 # SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a # SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 -----BEGIN CERTIFICATE----- MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf 8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN +lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA 1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- # Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Label: "StartCom Certification Authority" # Serial: 1 # MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 # SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f # SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea -----BEGIN CERTIFICATE----- MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ 9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= -----END CERTIFICATE----- # Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root CA" # Serial: 17154717934120587862167794914071425081 # MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 # SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 # SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c -----BEGIN CERTIFICATE----- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Global Root CA" # Serial: 10944719598952040374951832963794454346 # MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e # SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 # SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- # Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert High Assurance EV Root CA" # Serial: 3553400076410547919724730734378100087 # MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a # SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 # SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep +OkuE6N36B9K -----END CERTIFICATE----- # Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. # Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. # Label: "GeoTrust Primary Certification Authority" # Serial: 32798226551256963324313806436981982369 # MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf # SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 # SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c -----BEGIN CERTIFICATE----- MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl 4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= -----END CERTIFICATE----- # Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only # Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only # Label: "thawte Primary Root CA" # Serial: 69529181992039203566298953787712940909 # MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 # SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 # SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f -----BEGIN CERTIFICATE----- MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta 3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk 6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 /qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 jVaMaA== -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only # Label: "VeriSign Class 3 Public Primary Certification Authority - G5" # Serial: 33037644167568058970164719475676101450 # MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c # SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 # SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df -----BEGIN CERTIFICATE----- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y 5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ 4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq -----END CERTIFICATE----- # Issuer: CN=COMODO Certification Authority O=COMODO CA Limited # Subject: CN=COMODO Certification Authority O=COMODO CA Limited # Label: "COMODO Certification Authority" # Serial: 104350513648249232941998508985834464573 # MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 # SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b # SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 -----BEGIN CERTIFICATE----- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI 2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp +2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW /zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB ZQ== -----END CERTIFICATE----- # Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. # Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. # Label: "Network Solutions Certificate Authority" # Serial: 116697915152937497490437556386812487904 # MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e # SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce # SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c -----BEGIN CERTIFICATE----- MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH /nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey -----END CERTIFICATE----- # Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Label: "COMODO ECC Certification Authority" # Serial: 41578283867086692638256921589707938090 # MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 # SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 # SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 -----BEGIN CERTIFICATE----- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- # Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA # Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA # Label: "TC TrustCenter Class 2 CA II" # Serial: 941389028203453866782103406992443 # MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23 # SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e # SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4 -----BEGIN CERTIFICATE----- MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK 8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== -----END CERTIFICATE----- # Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA # Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA # Label: "TC TrustCenter Class 3 CA II" # Serial: 1506523511417715638772220530020799 # MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e # SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5 # SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e -----BEGIN CERTIFICATE----- MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1 OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2 1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1 Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6 Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8 TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6 g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB 95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A== -----END CERTIFICATE----- # Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA # Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA # Label: "TC TrustCenter Universal CA I" # Serial: 601024842042189035295619584734726 # MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c # SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3 # SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7 -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn 8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ 2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY -----END CERTIFICATE----- # Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc # Subject: CN=Cybertrust Global Root O=Cybertrust, Inc # Label: "Cybertrust Global Root" # Serial: 4835703278459682877484360 # MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 # SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 # SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 -----BEGIN CERTIFICATE----- MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW WL1WMRJOEcgh4LMRkWXbtKaIOM5V -----END CERTIFICATE----- # Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Label: "GeoTrust Primary Certification Authority - G3" # Serial: 28809105769928564313984085209975885599 # MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 # SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd # SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 -----BEGIN CERTIFICATE----- MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz +uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn 5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G spki4cErx5z481+oghLrGREt -----END CERTIFICATE----- # Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only # Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only # Label: "thawte Primary Root CA - G2" # Serial: 71758320672825410020661621085256472406 # MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f # SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 # SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 -----BEGIN CERTIFICATE----- MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== -----END CERTIFICATE----- # Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only # Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only # Label: "thawte Primary Root CA - G3" # Serial: 127614157056681299805556476275995414779 # MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 # SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 # SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA 2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu MdRAGmI0Nj81Aa6sY6A= -----END CERTIFICATE----- # Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only # Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only # Label: "GeoTrust Primary Certification Authority - G2" # Serial: 80682863203381065782177908751794619243 # MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a # SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 # SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 -----BEGIN CERTIFICATE----- MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz rD6ogRLQy7rQkgu2npaqBA+K -----END CERTIFICATE----- # Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only # Label: "VeriSign Universal Root Certification Authority" # Serial: 85209574734084581917763752644031726877 # MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 # SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 # SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c -----BEGIN CERTIFICATE----- MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF 9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN /BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz 4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 7M2CYfE45k+XmCpajQ== -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only # Label: "VeriSign Class 3 Public Primary Certification Authority - G4" # Serial: 63143484348153506665311985501458640051 # MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 # SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a # SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 -----BEGIN CERTIFICATE----- MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC 4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Label: "GlobalSign Root CA - R3" # Serial: 4835703278459759426209954 # MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 # SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad # SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b -----BEGIN CERTIFICATE----- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH WD9f -----END CERTIFICATE----- # Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA # Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA # Label: "TC TrustCenter Universal CA III" # Serial: 2010889993983507346460533407902964 # MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b # SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87 # SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d -----BEGIN CERTIFICATE----- MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1 c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF 5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI 4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== -----END CERTIFICATE----- # Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. # Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. # Label: "Go Daddy Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 # SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b # SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH /PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu 9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo 2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI 4uJEvlz36hz1 -----END CERTIFICATE----- # Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Label: "Starfield Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 # SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e # SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg 8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 -----END CERTIFICATE----- # Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Label: "Starfield Services Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 # SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f # SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 -----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk 6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn 0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN sSi6 -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Commercial O=AffirmTrust # Subject: CN=AffirmTrust Commercial O=AffirmTrust # Label: "AffirmTrust Commercial" # Serial: 8608355977964138876 # MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 # SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 # SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Networking O=AffirmTrust # Subject: CN=AffirmTrust Networking O=AffirmTrust # Label: "AffirmTrust Networking" # Serial: 8957382827206547757 # MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f # SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f # SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp 6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Premium O=AffirmTrust # Subject: CN=AffirmTrust Premium O=AffirmTrust # Label: "AffirmTrust Premium" # Serial: 7893706540734352110 # MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 # SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 # SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a -----BEGIN CERTIFICATE----- MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ +jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S 5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B 8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc 0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e KeC2uAloGRwYQw== -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust # Subject: CN=AffirmTrust Premium ECC O=AffirmTrust # Label: "AffirmTrust Premium ECC" # Serial: 8401224907861490260 # MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d # SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb # SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 -----BEGIN CERTIFICATE----- MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D 0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== -----END CERTIFICATE----- # Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Label: "StartCom Certification Authority" # Serial: 45 # MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 # SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 # SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 -----BEGIN CERTIFICATE----- MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst 0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK 1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ 8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm fyWl8kgAwKQB2j8= -----END CERTIFICATE----- # Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. # Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. # Label: "StartCom Certification Authority G2" # Serial: 59 # MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 # SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 # SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 -----BEGIN CERTIFICATE----- MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM 0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K 2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl 6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK 9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US # Subject: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US # Serial: 33af1e6a711a9a0bb2864b11d09fae5 # MD5 Fingerprint: E4:A6:8A:C8:54:AC:52:42:46:0A:FD:72:48:1B:2A:44 # SHA1 Fingerprint: DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4 # SHA256 Fingerprint: CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F -----BEGIN CERTIFICATE----- MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI 2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx 1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV 5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY 1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl MrY= -----END CERTIFICATE----- # Issuer: /C=US/O=Internet Security Research Group/CN=ISRG Root X1 # Subject: /C=US/O=Internet Security Research Group/CN=ISRG Root X1 # Serial: 8210CFB0D240E3594463E0BB63828B00 # SHA1 Fingerprint: CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8 # SHA256 Fingerprint: 96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6 -----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- # Issuer: /C=US/O=Internet Security Research Group/CN=ISRG Root X2 # Subject: /C=US/O=Internet Security Research Group/CN=ISRG Root X2 # Serial: 41D29DD172EAEEA780C12C6CE92F8752 # SHA1 Fingerprint: BD:B1:B9:3C:D5:97:8D:45:C6:26:14:55:F8:DB:95:C7:5A:D1:53:AF # SHA256 Fingerprint: 69:72:9B:8E:15:A8:6E:FC:17:7A:57:AF:B7:17:1D:FC:64:AD:D2:8C:2F:CA:8C:F1:50:7E:34:45:3C:CB:14:70 -----BEGIN CERTIFICATE----- MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW +1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 /q4AaOeMSQ+2b1tbFfLn -----END CERTIFICATE----- ================================================ FILE: shotgun_api3/lib/httplib2/certs.py ================================================ """Utilities for certificate management.""" import os certifi_available = False certifi_where = None try: from certifi import where as certifi_where certifi_available = True except ImportError: pass custom_ca_locater_available = False custom_ca_locater_where = None try: from ca_certs_locater import get as custom_ca_locater_where custom_ca_locater_available = True except ImportError: pass BUILTIN_CA_CERTS = os.path.join( os.path.dirname(os.path.abspath(__file__)), "cacerts.txt" ) def where(): env = os.environ.get("HTTPLIB2_CA_CERTS") if env is not None: if os.path.isfile(env): return env else: raise RuntimeError("Environment variable HTTPLIB2_CA_CERTS not a valid file") if custom_ca_locater_available: return custom_ca_locater_where() if certifi_available: return certifi_where() return BUILTIN_CA_CERTS if __name__ == "__main__": print(where()) ================================================ FILE: shotgun_api3/lib/httplib2/error.py ================================================ # All exceptions raised here derive from HttpLib2Error class HttpLib2Error(Exception): pass # Some exceptions can be caught and optionally # be turned back into responses. class HttpLib2ErrorWithResponse(HttpLib2Error): def __init__(self, desc, response, content): self.response = response self.content = content HttpLib2Error.__init__(self, desc) class RedirectMissingLocation(HttpLib2ErrorWithResponse): pass class RedirectLimit(HttpLib2ErrorWithResponse): pass class FailedToDecompressContent(HttpLib2ErrorWithResponse): pass class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): pass class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): pass class MalformedHeader(HttpLib2Error): pass class RelativeURIError(HttpLib2Error): pass class ServerNotFoundError(HttpLib2Error): pass class ProxiesUnavailableError(HttpLib2Error): pass ================================================ FILE: shotgun_api3/lib/httplib2/iri2uri.py ================================================ # -*- coding: utf-8 -*- """Converts an IRI to a URI.""" __author__ = "Joe Gregorio (joe@bitworking.org)" __copyright__ = "Copyright 2006, Joe Gregorio" __contributors__ = [] __version__ = "1.0.0" __license__ = "MIT" import urllib.parse # Convert an IRI to a URI following the rules in RFC 3987 # # The characters we need to enocde and escape are defined in the spec: # # iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD # ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF # / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD # / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD # / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD # / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD # / %xD0000-DFFFD / %xE1000-EFFFD escape_range = [ (0xA0, 0xD7FF), (0xE000, 0xF8FF), (0xF900, 0xFDCF), (0xFDF0, 0xFFEF), (0x10000, 0x1FFFD), (0x20000, 0x2FFFD), (0x30000, 0x3FFFD), (0x40000, 0x4FFFD), (0x50000, 0x5FFFD), (0x60000, 0x6FFFD), (0x70000, 0x7FFFD), (0x80000, 0x8FFFD), (0x90000, 0x9FFFD), (0xA0000, 0xAFFFD), (0xB0000, 0xBFFFD), (0xC0000, 0xCFFFD), (0xD0000, 0xDFFFD), (0xE1000, 0xEFFFD), (0xF0000, 0xFFFFD), (0x100000, 0x10FFFD), ] def encode(c): retval = c i = ord(c) for low, high in escape_range: if i < low: break if i >= low and i <= high: retval = "".join(["%%%2X" % o for o in c.encode("utf-8")]) break return retval def iri2uri(uri): """Convert an IRI to a URI. Note that IRIs must be passed in a unicode strings. That is, do not utf-8 encode the IRI before passing it into the function.""" if isinstance(uri, str): (scheme, authority, path, query, fragment) = urllib.parse.urlsplit(uri) authority = authority.encode("idna").decode("utf-8") # For each character in 'ucschar' or 'iprivate' # 1. encode as utf-8 # 2. then %-encode each octet of that utf-8 uri = urllib.parse.urlunsplit((scheme, authority, path, query, fragment)) uri = "".join([encode(c) for c in uri]) return uri if __name__ == "__main__": import unittest class Test(unittest.TestCase): def test_uris(self): """Test that URIs are invariant under the transformation.""" invariant = [ "ftp://ftp.is.co.za/rfc/rfc1808.txt", "http://www.ietf.org/rfc/rfc2396.txt", "ldap://[2001:db8::7]/c=GB?objectClass?one", "mailto:John.Doe@example.com", "news:comp.infosystems.www.servers.unix", "tel:+1-816-555-1212", "telnet://192.0.2.16:80/", "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", ] for uri in invariant: self.assertEqual(uri, iri2uri(uri)) def test_iri(self): """Test that the right type of escaping is done for each part of the URI.""" self.assertEqual( "http://xn--o3h.com/%E2%98%84", iri2uri("http://\N{COMET}.com/\N{COMET}"), ) self.assertEqual( "http://bitworking.org/?fred=%E2%98%84", iri2uri("http://bitworking.org/?fred=\N{COMET}"), ) self.assertEqual( "http://bitworking.org/#%E2%98%84", iri2uri("http://bitworking.org/#\N{COMET}"), ) self.assertEqual("#%E2%98%84", iri2uri("#\N{COMET}")) self.assertEqual( "/fred?bar=%E2%98%9A#%E2%98%84", iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"), ) self.assertEqual( "/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")), ) self.assertNotEqual( "/fred?bar=%E2%98%9A#%E2%98%84", iri2uri( "/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode("utf-8") ), ) unittest.main() ================================================ FILE: shotgun_api3/lib/httplib2/socks.py ================================================ """SocksiPy - Python SOCKS module. Version 1.00 Copyright 2006 Dan-Haim. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Dan Haim nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY DAN HAIM "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAN HAIM OR HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE. This module provides a standard socket-like interface for Python for tunneling connections through SOCKS proxies. Minor modifications made by Christopher Gilbert (http://motomastyle.com/) for use in PyLoris (http://pyloris.sourceforge.net/). Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/) mainly to merge bug fixes found in Sourceforge. """ import base64 import socket import struct import sys if getattr(socket, "socket", None) is None: raise ImportError("socket.socket missing, proxy support unusable") PROXY_TYPE_SOCKS4 = 1 PROXY_TYPE_SOCKS5 = 2 PROXY_TYPE_HTTP = 3 PROXY_TYPE_HTTP_NO_TUNNEL = 4 _defaultproxy = None _orgsocket = socket.socket class ProxyError(Exception): pass class GeneralProxyError(ProxyError): pass class Socks5AuthError(ProxyError): pass class Socks5Error(ProxyError): pass class Socks4Error(ProxyError): pass class HTTPError(ProxyError): pass _generalerrors = ( "success", "invalid data", "not connected", "not available", "bad proxy type", "bad input", ) _socks5errors = ( "succeeded", "general SOCKS server failure", "connection not allowed by ruleset", "Network unreachable", "Host unreachable", "Connection refused", "TTL expired", "Command not supported", "Address type not supported", "Unknown error", ) _socks5autherrors = ( "succeeded", "authentication is required", "all offered authentication methods were rejected", "unknown username or invalid password", "unknown error", ) _socks4errors = ( "request granted", "request rejected or failed", "request rejected because SOCKS server cannot connect to identd on the client", "request rejected because the client program and identd report different " "user-ids", "unknown error", ) def setdefaultproxy( proxytype=None, addr=None, port=None, rdns=True, username=None, password=None ): """setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) Sets a default proxy which all further socksocket objects will use, unless explicitly changed. """ global _defaultproxy _defaultproxy = (proxytype, addr, port, rdns, username, password) def wrapmodule(module): """wrapmodule(module) Attempts to replace a module's socket library with a SOCKS socket. Must set a default proxy using setdefaultproxy(...) first. This will only work on modules that import socket directly into the namespace; most of the Python Standard Library falls into this category. """ if _defaultproxy != None: module.socket.socket = socksocket else: raise GeneralProxyError((4, "no proxy specified")) class socksocket(socket.socket): """socksocket([family[, type[, proto]]]) -> socket object Open a SOCKS enabled socket. The parameters are the same as those of the standard socket init. In order for SOCKS to work, you must specify family=AF_INET, type=SOCK_STREAM and proto=0. """ def __init__( self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None ): _orgsocket.__init__(self, family, type, proto, _sock) if _defaultproxy != None: self.__proxy = _defaultproxy else: self.__proxy = (None, None, None, None, None, None) self.__proxysockname = None self.__proxypeername = None self.__httptunnel = True def __recvall(self, count): """__recvall(count) -> data Receive EXACTLY the number of bytes requested from the socket. Blocks until the required number of bytes have been received. """ data = self.recv(count) while len(data) < count: d = self.recv(count - len(data)) if not d: raise GeneralProxyError((0, "connection closed unexpectedly")) data = data + d return data def sendall(self, content, *args): """ override socket.socket.sendall method to rewrite the header for non-tunneling proxies if needed """ if not self.__httptunnel: content = self.__rewriteproxy(content) return super(socksocket, self).sendall(content, *args) def __rewriteproxy(self, header): """ rewrite HTTP request headers to support non-tunneling proxies (i.e. those which do not support the CONNECT method). This only works for HTTP (not HTTPS) since HTTPS requires tunneling. """ host, endpt = None, None hdrs = header.split("\r\n") for hdr in hdrs: if hdr.lower().startswith("host:"): host = hdr elif hdr.lower().startswith("get") or hdr.lower().startswith("post"): endpt = hdr if host and endpt: hdrs.remove(host) hdrs.remove(endpt) host = host.split(" ")[1] endpt = endpt.split(" ") if self.__proxy[4] != None and self.__proxy[5] != None: hdrs.insert(0, self.__getauthheader()) hdrs.insert(0, "Host: %s" % host) hdrs.insert(0, "%s http://%s%s %s" % (endpt[0], host, endpt[1], endpt[2])) return "\r\n".join(hdrs) def __getauthheader(self): auth = self.__proxy[4] + b":" + self.__proxy[5] return "Proxy-Authorization: Basic " + base64.b64encode(auth).decode() def setproxy( self, proxytype=None, addr=None, port=None, rdns=True, username=None, password=None, headers=None, ): """setproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) Sets the proxy to be used. proxytype - The type of the proxy to be used. Three types are supported: PROXY_TYPE_SOCKS4 (including socks4a), PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP addr - The address of the server (IP or DNS). port - The port of the server. Defaults to 1080 for SOCKS servers and 8080 for HTTP proxy servers. rdns - Should DNS queries be preformed on the remote side (rather than the local side). The default is True. Note: This has no effect with SOCKS4 servers. username - Username to authenticate with to the server. The default is no authentication. password - Password to authenticate with to the server. Only relevant when username is also provided. headers - Additional or modified headers for the proxy connect request. """ self.__proxy = ( proxytype, addr, port, rdns, username.encode() if username else None, password.encode() if password else None, headers, ) def __negotiatesocks5(self, destaddr, destport): """__negotiatesocks5(self,destaddr,destport) Negotiates a connection through a SOCKS5 server. """ # First we'll send the authentication packages we support. if (self.__proxy[4] != None) and (self.__proxy[5] != None): # The username/password details were supplied to the # setproxy method so we support the USERNAME/PASSWORD # authentication (in addition to the standard none). self.sendall(struct.pack("BBBB", 0x05, 0x02, 0x00, 0x02)) else: # No username/password were entered, therefore we # only support connections with no authentication. self.sendall(struct.pack("BBB", 0x05, 0x01, 0x00)) # We'll receive the server's response to determine which # method was selected chosenauth = self.__recvall(2) if chosenauth[0:1] != chr(0x05).encode(): self.close() raise GeneralProxyError((1, _generalerrors[1])) # Check the chosen authentication method if chosenauth[1:2] == chr(0x00).encode(): # No authentication is required pass elif chosenauth[1:2] == chr(0x02).encode(): # Okay, we need to perform a basic username/password # authentication. packet = bytearray() packet.append(0x01) packet.append(len(self.__proxy[4])) packet.extend(self.__proxy[4]) packet.append(len(self.__proxy[5])) packet.extend(self.__proxy[5]) self.sendall(packet) authstat = self.__recvall(2) if authstat[0:1] != chr(0x01).encode(): # Bad response self.close() raise GeneralProxyError((1, _generalerrors[1])) if authstat[1:2] != chr(0x00).encode(): # Authentication failed self.close() raise Socks5AuthError((3, _socks5autherrors[3])) # Authentication succeeded else: # Reaching here is always bad self.close() if chosenauth[1] == chr(0xFF).encode(): raise Socks5AuthError((2, _socks5autherrors[2])) else: raise GeneralProxyError((1, _generalerrors[1])) # Now we can request the actual connection req = struct.pack("BBB", 0x05, 0x01, 0x00) # If the given destination address is an IP address, we'll # use the IPv4 address request even if remote resolving was specified. try: ipaddr = socket.inet_aton(destaddr) req = req + chr(0x01).encode() + ipaddr except socket.error: # Well it's not an IP number, so it's probably a DNS name. if self.__proxy[3]: # Resolve remotely ipaddr = None req = ( req + chr(0x03).encode() + chr(len(destaddr)).encode() + destaddr.encode() ) else: # Resolve locally ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) req = req + chr(0x01).encode() + ipaddr req = req + struct.pack(">H", destport) self.sendall(req) # Get the response resp = self.__recvall(4) if resp[0:1] != chr(0x05).encode(): self.close() raise GeneralProxyError((1, _generalerrors[1])) elif resp[1:2] != chr(0x00).encode(): # Connection failed self.close() if ord(resp[1:2]) <= 8: raise Socks5Error((ord(resp[1:2]), _socks5errors[ord(resp[1:2])])) else: raise Socks5Error((9, _socks5errors[9])) # Get the bound address/port elif resp[3:4] == chr(0x01).encode(): boundaddr = self.__recvall(4) elif resp[3:4] == chr(0x03).encode(): resp = resp + self.recv(1) boundaddr = self.__recvall(ord(resp[4:5])) else: self.close() raise GeneralProxyError((1, _generalerrors[1])) boundport = struct.unpack(">H", self.__recvall(2))[0] self.__proxysockname = (boundaddr, boundport) if ipaddr != None: self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) else: self.__proxypeername = (destaddr, destport) def getproxysockname(self): """getsockname() -> address info Returns the bound IP address and port number at the proxy. """ return self.__proxysockname def getproxypeername(self): """getproxypeername() -> address info Returns the IP and port number of the proxy. """ return _orgsocket.getpeername(self) def getpeername(self): """getpeername() -> address info Returns the IP address and port number of the destination machine (note: getproxypeername returns the proxy) """ return self.__proxypeername def __negotiatesocks4(self, destaddr, destport): """__negotiatesocks4(self,destaddr,destport) Negotiates a connection through a SOCKS4 server. """ # Check if the destination address provided is an IP address rmtrslv = False try: ipaddr = socket.inet_aton(destaddr) except socket.error: # It's a DNS name. Check where it should be resolved. if self.__proxy[3]: ipaddr = struct.pack("BBBB", 0x00, 0x00, 0x00, 0x01) rmtrslv = True else: ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) # Construct the request packet req = struct.pack(">BBH", 0x04, 0x01, destport) + ipaddr # The username parameter is considered userid for SOCKS4 if self.__proxy[4] != None: req = req + self.__proxy[4] req = req + chr(0x00).encode() # DNS name if remote resolving is required # NOTE: This is actually an extension to the SOCKS4 protocol # called SOCKS4A and may not be supported in all cases. if rmtrslv: req = req + destaddr + chr(0x00).encode() self.sendall(req) # Get the response from the server resp = self.__recvall(8) if resp[0:1] != chr(0x00).encode(): # Bad data self.close() raise GeneralProxyError((1, _generalerrors[1])) if resp[1:2] != chr(0x5A).encode(): # Server returned an error self.close() if ord(resp[1:2]) in (91, 92, 93): self.close() raise Socks4Error((ord(resp[1:2]), _socks4errors[ord(resp[1:2]) - 90])) else: raise Socks4Error((94, _socks4errors[4])) # Get the bound address/port self.__proxysockname = ( socket.inet_ntoa(resp[4:]), struct.unpack(">H", resp[2:4])[0], ) if rmtrslv != None: self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) else: self.__proxypeername = (destaddr, destport) def __negotiatehttp(self, destaddr, destport): """__negotiatehttp(self,destaddr,destport) Negotiates a connection through an HTTP server. """ # If we need to resolve locally, we do this now if not self.__proxy[3]: addr = socket.gethostbyname(destaddr) else: addr = destaddr headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"] wrote_host_header = False wrote_auth_header = False if self.__proxy[6] != None: for key, val in self.__proxy[6].iteritems(): headers += [key, ": ", val, "\r\n"] wrote_host_header = key.lower() == "host" wrote_auth_header = key.lower() == "proxy-authorization" if not wrote_host_header: headers += ["Host: ", destaddr, "\r\n"] if not wrote_auth_header: if self.__proxy[4] != None and self.__proxy[5] != None: headers += [self.__getauthheader(), "\r\n"] headers.append("\r\n") self.sendall("".join(headers).encode()) # We read the response until we get the string "\r\n\r\n" resp = self.recv(1) while resp.find("\r\n\r\n".encode()) == -1: resp = resp + self.recv(1) # We just need the first line to check if the connection # was successful statusline = resp.splitlines()[0].split(" ".encode(), 2) if statusline[0] not in ("HTTP/1.0".encode(), "HTTP/1.1".encode()): self.close() raise GeneralProxyError((1, _generalerrors[1])) try: statuscode = int(statusline[1]) except ValueError: self.close() raise GeneralProxyError((1, _generalerrors[1])) if statuscode != 200: self.close() raise HTTPError((statuscode, statusline[2])) self.__proxysockname = ("0.0.0.0", 0) self.__proxypeername = (addr, destport) def connect(self, destpair): """connect(self, despair) Connects to the specified destination through a proxy. destpar - A tuple of the IP/DNS address and the port number. (identical to socket's connect). To select the proxy server use setproxy(). """ # Do a minimal input check first if ( (not type(destpair) in (list, tuple)) or (len(destpair) < 2) or (not isinstance(destpair[0], (str, bytes))) or (type(destpair[1]) != int) ): raise GeneralProxyError((5, _generalerrors[5])) if self.__proxy[0] == PROXY_TYPE_SOCKS5: if self.__proxy[2] != None: portnum = self.__proxy[2] else: portnum = 1080 _orgsocket.connect(self, (self.__proxy[1], portnum)) self.__negotiatesocks5(destpair[0], destpair[1]) elif self.__proxy[0] == PROXY_TYPE_SOCKS4: if self.__proxy[2] != None: portnum = self.__proxy[2] else: portnum = 1080 _orgsocket.connect(self, (self.__proxy[1], portnum)) self.__negotiatesocks4(destpair[0], destpair[1]) elif self.__proxy[0] == PROXY_TYPE_HTTP: if self.__proxy[2] != None: portnum = self.__proxy[2] else: portnum = 8080 _orgsocket.connect(self, (self.__proxy[1], portnum)) self.__negotiatehttp(destpair[0], destpair[1]) elif self.__proxy[0] == PROXY_TYPE_HTTP_NO_TUNNEL: if self.__proxy[2] != None: portnum = self.__proxy[2] else: portnum = 8080 _orgsocket.connect(self, (self.__proxy[1], portnum)) if destpair[1] == 443: self.__negotiatehttp(destpair[0], destpair[1]) else: self.__httptunnel = False elif self.__proxy[0] == None: _orgsocket.connect(self, (destpair[0], destpair[1])) else: raise GeneralProxyError((4, _generalerrors[4])) ================================================ FILE: shotgun_api3/lib/mockgun/__init__.py ================================================ """ ----------------------------------------------------------------------------- Copyright (c) 2009-2017, Shotgun Software Inc Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Shotgun Software Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- """ from .schema import generate_schema # noqa from .mockgun import Shotgun # noqa from .errors import MockgunError # noqa ================================================ FILE: shotgun_api3/lib/mockgun/errors.py ================================================ """ ----------------------------------------------------------------------------- Copyright (c) 2009-2017, Shotgun Software Inc Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Shotgun Software Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- """ # ---------------------------------------------------------------------------- # Errors class MockgunError(Exception): """ Base for all Mockgun related API Errors. These are errors that relate to mockgun specifically, for example relating to mockups setup and initialization. For operational errors, mockgun raises ShotgunErrors just like the Shotgun API. """ ================================================ FILE: shotgun_api3/lib/mockgun/mockgun.py ================================================ """ ----------------------------------------------------------------------------- Copyright (c) 2009-2017, Shotgun Software Inc Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Shotgun Software Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- M O C K G U N ----------------------------------------------------------------------------- Experimental software ahead! ---------------------------- Disclaimer! Mockgun is in its early stages of development. It is not fully compatible with the Shotgun API yet and we offer no guarantees at this point that future versions of Mockgun will be backwards compatible. Consider this alpha level software and use at your own risk. What is Mockgun? ---------------- Mockgun is a Shotgun API mocker. It's a class that has got *most* of the same methods and parameters that the Shotgun API has got. Mockgun is essentially a Shotgun *emulator* that (for basic operations) looks and feels like Shotgun. The primary purpose of Mockgun is to drive unit test rigs where it becomes too slow, cumbersome or non-practical to connect to a real Shotgun. Using a Mockgun for unit tests means that a test can be rerun over and over again from exactly the same database state. This can be hard to do if you connect to a live Shotgun instance. How do I use Mockgun? --------------------- First of all, you need a Shotgun schema to run against. This will define all the fields and entities that mockgun will use. Simply connect to your Shotgun site and use the generate_schema() method to download the schema data: # connect to your site from shotgun_api3 import Shotgun sg = Shotgun("https://mysite.shotgunstudio.com", script_name="xyz", api_key="abc") # write out schema data to files from shotgun_api3.lib import mockgun mockgun.generate_schema(sg, "/tmp/schema", "/tmp/entity_schema") Now that you have a schema, you can tell your mockgun instance about it. We do this as a class-level operation, so that the consctructor can be exactly like the real Shotgun one: from shotgun_api3.lib import mockgun # tell mockgun about the schema mockgun.Shotgun.set_schema_paths("/tmp/schema", "/tmp/entity_schema") # we are ready to mock! # this call will not connect to mysite, but instead create a # mockgun instance which is connected to an *empty* shotgun site # which has got the same schema as mysite. sg = mockgun.Shotgun("https://mysite.shotgunstudio.com", script_name="xyz", api_key="abc") # now you can start putting stuff in print(sg.create("HumanUser", {"firstname": "John", "login": "john"})) # prints {'login': 'john', 'type': 'HumanUser', 'id': 1, 'firstname': 'John'} # and find what you have created print(sg.find("HumanUser", [["login", "is", "john"]])) prints [{'type': 'HumanUser', 'id': 1}] That's it! Mockgun is used to run the Shotgun Pipeline Toolkit unit test rig. Mockgun has a 'database' in the form of a dictionary stored in Mockgun._db By editing this directly, you can modify the database without going through the API. What are the limitations? --------------------- There are many. Don't expect mockgun to be fully featured at this point. Below is a non-exhaustive list of things that we still need to implement: - Many find queries won't work - Methods around session handling and authentication is not implemented - Attachments and upload is rundimental at best - Schema modification isn't most most likely will never be supported - There is no validation or sanitation """ import datetime from typing import Any from ... import ShotgunError from ...shotgun import _Config from .errors import MockgunError from .schema import SchemaFactory # ---------------------------------------------------------------------------- # Version __version__ = "0.0.1" # ---------------------------------------------------------------------------- # API class Shotgun(object): """ Mockgun is a mocked Shotgun API, designed for test purposes. It generates an object which looks and feels like a normal Shotgun API instance. Instead of connecting to a real server, it keeps all its data in memory in a way which makes it easy to introspect and test. The methods presented in this class reflect the Shotgun API and are therefore sparsely documented. Please note that this class is built for test purposes only and only creates an object which *roughly* resembles the Shotgun API - however, for most common use cases, this is enough to be able to perform relevant and straight forward testing of code. """ __schema_path = None __schema_entity_path = None @classmethod def set_schema_paths(cls, schema_path, schema_entity_path): """ Set the path where schema files can be found. This is done at the class level so all Shotgun instances will share the same schema. The responsability to generate and load these files is left to the user changing the default value. :param schema_path: Directory path where schema files are. """ cls.__schema_path = schema_path cls.__schema_entity_path = schema_entity_path @classmethod def get_schema_paths(cls): """ Returns a tuple with paths to the files which are part of the schema. These paths can then be used in generate_schema if needed. :returns: A tuple with schema_file_path and schema_entity_file_path """ return (cls.__schema_path, cls.__schema_entity_path) def __init__(self, base_url, script_name=None, api_key=None, convert_datetimes_to_utc=True, http_proxy=None, connect=True, ca_certs=None, login=None, password=None, sudo_as_login=None, session_token=None, auth_token=None): # emulate the config object in the Shotgun API. # these settings won't make sense for mockgun, but # having them present means code and get and set them # they way they would expect to in the real API. self.config = _Config(self) self.config.set_server_params(base_url) # load in the shotgun schema to associate with this Shotgun (schema_path, schema_entity_path) = self.get_schema_paths() if schema_path is None or schema_entity_path is None: raise MockgunError("Cannot create Mockgun instance because no schema files have been defined. " "Before creating a Mockgun instance, please call Mockgun.set_schema_paths() " "in order to specify which Flow Production Tracking schema Mockgun should operate against.") self._schema, self._schema_entity = SchemaFactory.get_schemas(schema_path, schema_entity_path) # initialize the "database" self._db = dict((entity, {}) for entity in self._schema) # set some basic public members that exist in the Shotgun API self.base_url = base_url # bootstrap the event log # let's make sure there is at least one event log id in our mock db data = {} data["event_type"] = "Hello_Mockgun_World" data["description"] = "Mockgun was born. Yay." self.create("EventLogEntry", data) self.finds = 0 ################################################################################################### # public API methods def get_session_token(self): return "bogus_session_token" def schema_read(self): return self._schema def schema_field_create(self, entity_type, data_type, display_name, properties=None): raise NotImplementedError def schema_field_update(self, entity_type, field_name, properties): raise NotImplementedError def schema_field_delete(self, entity_type, field_name): raise NotImplementedError def schema_entity_read(self): return self._schema_entity def schema_field_read(self, entity_type, field_name=None): if field_name is None: return self._schema[entity_type] else: return dict((k, v) for k, v in self._schema[entity_type].items() if k == field_name) def find( self, entity_type, filters, fields=None, order=None, filter_operator=None, limit=0, retired_only=False, page=0 ): self.finds += 1 self._validate_entity_type(entity_type) # do not validate custom fields - this makes it hard to mock up a field quickly # self._validate_entity_fields(entity_type, fields) # FIXME: This should be refactored so that we can use the complex filer # style in nested filter operations. if isinstance(filters, dict): # complex filter style! # {'conditions': [{'path': 'id', 'relation': 'is', 'values': [1]}], 'logical_operator': 'and'} resolved_filters = [] for f in filters["conditions"]: if f["path"].startswith("$FROM$"): # special $FROM$Task.step.entity syntax # skip this for now continue if len(f["values"]) != 1: # {'path': 'id', 'relation': 'in', 'values': [1,2,3]} --> ["id", "in", [1,2,3]] resolved_filters.append([f["path"], f["relation"], f["values"]]) else: # {'path': 'id', 'relation': 'is', 'values': [3]} --> ["id", "is", 3] resolved_filters.append([f["path"], f["relation"], f["values"][0]]) else: # traditiona style sg filters resolved_filters = filters results = [ # Apply the filters for every single entities for the given entity type. row for row in self._db[entity_type].values() if self._row_matches_filters( entity_type, row, resolved_filters, filter_operator, retired_only ) ] # handle the ordering of the recordset if order: # order: [{"field_name": "code", "direction": "asc"}, ... ] def sort_none(k, order_field): """ Handle sorting of None consistently. Note: Doesn't handle [checkbox, serializable, url]. """ field_type = self._get_field_type(k["type"], order_field) value = k[order_field] if value is not None: return value elif field_type in ("number", "percent", "duration"): return 0 elif field_type == "float": return 0.0 elif field_type in ("text", "entity_type", "date", "list", "status_list"): return "" elif field_type == "date_time": return datetime.datetime(datetime.MINYEAR, 1, 1) return None for order_entry in order: if "field_name" not in order_entry: raise ValueError("Order clauses must be list of dicts with keys 'field_name' and 'direction'!") order_field = order_entry["field_name"] if order_entry["direction"] == "asc": desc_order = False elif order_entry["direction"] == "desc": desc_order = True else: raise ValueError("Unknown ordering direction") results = sorted( results, key=lambda k: sort_none(k, order_field), reverse=desc_order, ) if fields is None: fields = set(["type", "id"]) else: fields = set(fields) | set(["type", "id"]) # get the values requested val = [dict((field, self._get_field_from_row(entity_type, row, field)) for field in fields) for row in results] return val def find_one( self, entity_type, filters, fields=None, order=None, filter_operator=None, retired_only=False ): results = self.find( entity_type, filters, fields=fields, order=order, filter_operator=filter_operator, retired_only=retired_only ) return results[0] if results else None def batch(self, requests): results = [] for request in requests: if request["request_type"] == "create": results.append(self.create(request["entity_type"], request["data"])) elif request["request_type"] == "update": # note: Shotgun.update returns a list of a single item results.append( self.update(request["entity_type"], request["entity_id"], request["data"], request.get("multi_entity_update_modes"))[0] ) elif request["request_type"] == "delete": results.append(self.delete(request["entity_type"], request["entity_id"])) else: raise ShotgunError("Invalid request type %s in request %s" % (request["request_type"], request)) return results def create(self, entity_type, data, return_fields=None): # special handling of storage fields - if a field value # is a dict with a key local_path, then add fields # local_path_linux, local_path_windows, local_path_mac # as a reflection of this for d in data: if isinstance(data[d], dict) and "local_path" in data[d]: # partly imitate some of the business logic happening on the # server side of shotgun when a file/link entity value is created if "local_storage" not in data[d]: data[d]["local_storage"] = {"id": 0, "name": "auto_generated_by_mockgun", "type": "LocalStorage"} if "local_path_linux" not in data[d]: data[d]["local_path_linux"] = data[d]["local_path"] if "local_path_windows" not in data[d]: data[d]["local_path_windows"] = data[d]["local_path"] if "local_path_mac" not in data[d]: data[d]["local_path_mac"] = data[d]["local_path"] self._validate_entity_type(entity_type) self._validate_entity_data(entity_type, data) self._validate_entity_fields(entity_type, return_fields) try: # get next id in this table next_id = max(self._db[entity_type]) + 1 except ValueError: next_id = 1 row = self._get_new_row(entity_type) self._update_row(entity_type, row, data) row["id"] = next_id self._db[entity_type][next_id] = row if return_fields is None: result = dict((field, self._get_field_from_row(entity_type, row, field)) for field in data) else: result = dict((field, self._get_field_from_row(entity_type, row, field)) for field in return_fields) result["type"] = row["type"] result["id"] = row["id"] return result def update(self, entity_type, entity_id, data, multi_entity_update_modes=None): self._validate_entity_type(entity_type) self._validate_entity_data(entity_type, data) self._validate_entity_exists(entity_type, entity_id) row = self._db[entity_type][entity_id] self._update_row(entity_type, row, data, multi_entity_update_modes) return [dict((field, item) for field, item in row.items() if field in data or field in ("type", "id"))] def delete(self, entity_type, entity_id): self._validate_entity_type(entity_type) self._validate_entity_exists(entity_type, entity_id) row = self._db[entity_type][entity_id] if not row["__retired"]: row["__retired"] = True return True else: return False def revive(self, entity_type, entity_id): self._validate_entity_type(entity_type) self._validate_entity_exists(entity_type, entity_id) row = self._db[entity_type][entity_id] if row["__retired"]: row["__retired"] = False return True else: return False def upload(self, entity_type, entity_id, path, field_name=None, display_name=None, tag_list=None): raise NotImplementedError def upload_thumbnail(self, entity_type, entity_id, path, **kwargs): pass def add_user_agent(self, agent): pass def set_session_uuid(self, session_uuid): pass ################################################################################################### # internal methods and members def _validate_entity_type(self, entity_type): if entity_type not in self._schema: raise ShotgunError("%s is not a valid entity" % entity_type) def _validate_entity_data(self, entity_type, data): if "id" in data or "type" in data: raise ShotgunError("Can't set id or type on create or update") self._validate_entity_fields(entity_type, data.keys()) for field, item in data.items(): if item is None: # none is always ok continue field_info = self._schema[entity_type][field] if field_info["data_type"]["value"] == "multi_entity": if not isinstance(item, list): raise ShotgunError( "%s.%s is of type multi_entity, but data %s is not a list" % (entity_type, field, item) ) elif item and any(not isinstance(sub_item, dict) for sub_item in item): raise ShotgunError( "%s.%s is of type multi_entity, but data %s contains a non-dictionary" % (entity_type, field, item) ) elif item and any("id" not in sub_item or "type" not in sub_item for sub_item in item): raise ShotgunError( "%s.%s is of type multi-entity, but an item in data %s does not contain 'type' and 'id'" % (entity_type, field, item) ) elif item and any( sub_item["type"] not in field_info["properties"]["valid_types"]["value"] for sub_item in item ): raise ShotgunError( "%s.%s is of multi-type entity, but an item in data %s has an invalid type (expected one of %s)" % (entity_type, field, item, field_info["properties"]["valid_types"]["value"]) ) elif field_info["data_type"]["value"] == "entity": if not isinstance(item, dict): raise ShotgunError( "%s.%s is of type entity, but data %s is not a dictionary" % (entity_type, field, item) ) elif "id" not in item or "type" not in item: raise ShotgunError( "%s.%s is of type entity, but data %s does not contain 'type' and 'id'" % (entity_type, field, item) ) # elif item["type"] not in field_info["properties"]["valid_types"]["value"]: # raise ShotgunError( # "%s.%s is of type entity, but data %s has an invalid type (expected one of %s)" % # (entity_type, field, item, field_info["properties"]["valid_types"]["value"]) # ) else: try: sg_type = field_info["data_type"]["value"] python_type = {"number": int, "float": float, "checkbox": bool, "percent": int, "text": str, "serializable": dict, "entity_type": str, "date": str, "date_time": datetime.datetime, "duration": int, "list": str, "status_list": str, "url": dict}[sg_type] except KeyError: raise ShotgunError( "Field %s.%s: Handling for Flow Production Tracking type %s is not implemented" % (entity_type, field, sg_type) ) if not isinstance(item, python_type): raise ShotgunError( "%s.%s is of type %s, but data %s is not of type %s" % (entity_type, field, type(item), sg_type, python_type) ) # TODO: add check for correct timezone def _validate_entity_fields(self, entity_type, fields): self._validate_entity_type(entity_type) if fields is not None: valid_fields = set(self._schema[entity_type].keys()) for field in fields: try: field2, entity_type2, field3 = field.split(".", 2) self._validate_entity_fields(entity_type2, [field3]) except ValueError: if field not in valid_fields and field not in ("type", "id"): raise ShotgunError("%s is not a valid field for entity %s" % (field, entity_type)) def _get_default_value(self, entity_type, field): field_info = self._schema[entity_type][field] if field_info["data_type"]["value"] == "multi_entity": default_value = [] else: default_value = field_info["properties"]["default_value"]["value"] return default_value def _get_new_row(self, entity_type): row = {"type": entity_type, "__retired": False} for field in self._schema[entity_type]: field_info = self._schema[entity_type][field] if field_info["data_type"]["value"] == "multi_entity": default_value = [] else: default_value = field_info["properties"]["default_value"]["value"] row[field] = default_value return row def _compare(self, field_type: str, lval: Any, operator: str, rval: Any) -> bool: """ Compares a field using the operator and value provide by the filter. :param str field_type: Type of the field we are operating on. :param lval: Value inside that field. Can be of any type: datetime, date, int, str, bool, etc. :param str operator: Name of the operator to use. :param rval: The value following the operator in a filter. :returns: The result of the operator that was applied. :rtype: bool """ # If we have a list of scalar values if isinstance(lval, list) and field_type != "multi_entity": # Compare each one. If one matches the predicate we're good! return any((self._compare(field_type, sub_val, operator, rval)) for sub_val in lval) if field_type == "checkbox": if operator == "is": return lval == rval elif operator == "is_not": return lval != rval elif field_type in ("float", "number", "date", "date_time"): if operator == "is": return lval == rval elif operator == "is_not": return lval != rval elif operator == "less_than": return lval < rval elif operator == "greater_than": return lval > rval elif operator == "between": return lval >= rval[0] and lval <= rval[1] elif operator == "not_between": return lval < rval[0] or lval > rval[1] elif operator == "in": return lval in rval elif field_type in ("list", "status_list"): if operator == "is": return lval == rval elif operator == "is_not": return lval != rval elif operator == "in": return lval in rval elif operator == "not_in": return lval not in rval elif field_type == "entity_type": if operator == "is": return lval == rval elif field_type == "text": # Some operations expect a list but can deal with a single value if operator in ("in", "not_in") and not isinstance(rval, list): rval = [rval] # Some operation expect a string but can deal with None elif operator in ("starts_with", "ends_with", "contains", "not_contains"): lval = lval or '' rval = rval or '' # Shotgun string comparison is case insensitive lval = lval.lower() if lval is not None else None if isinstance(rval, list): rval = [val.lower() if val is not None else None for val in rval] else: rval = rval.lower() if rval is not None else None if operator == "is": return lval == rval elif operator == "is_not": return lval != rval elif operator == "in": return lval in rval elif operator == "contains": return rval in lval elif operator == "not_contains": return rval not in lval elif operator == "starts_with": return lval.startswith(rval) elif operator == "ends_with": return lval.endswith(rval) elif operator == "not_in": return lval not in rval elif field_type == "entity": if operator == "is": # If one of the two is None, ensure both are. if lval is None or rval is None: return lval == rval # Both values are set, compare them. return lval["type"] == rval["type"] and lval["id"] == rval["id"] elif operator == "is_not": if lval is None or rval is None: return lval != rval if rval is None: # We already know lval is not None, so we know they are not equal. return True return lval["type"] != rval["type"] or lval["id"] != rval["id"] elif operator == "in": return all((lval["type"] == sub_rval["type"] and lval["id"] == sub_rval["id"]) for sub_rval in rval) elif operator == "type_is": return lval["type"] == rval elif operator == "type_is_not": return lval["type"] != rval elif operator == "name_contains": return rval in lval["name"] elif operator == "name_not_contains": return rval not in lval["name"] elif operator == "name_starts_with": return lval["name"].startswith(rval) elif operator == "name_ends_with": return lval["name"].endswith(rval) elif field_type == "multi_entity": if operator == "is": if rval is None: return len(lval) == 0 return rval["id"] in (sub_lval["id"] for sub_lval in lval) elif operator == "is_not": if rval is None: return len(lval) != 0 return rval["id"] not in (sub_lval["id"] for sub_lval in lval) raise ShotgunError("The %s operator is not supported on the %s type" % (operator, field_type)) def _get_field_from_row(self, entity_type, row, field): # split dotted form fields try: # is it something like sg_sequence.Sequence.code ? field2, entity_type2, field3 = field.split(".", 2) if field2 in row: field_value = row[field2] # If we have a list of links, retrieve the subfields one by one. if isinstance(field_value, list): values = [] for linked_row in field_value: # Make sure we're actually iterating on links. if not isinstance(linked_row, dict): raise ShotgunError("Invalid deep query field %s.%s" % (entity_type, field)) # Skips entities that are not of the requested type. if linked_row["type"] != entity_type2: continue entity = self._db[linked_row["type"]][linked_row["id"]] sub_field_value = self._get_field_from_row(entity_type2, entity, field3) values.append(sub_field_value) return values # The field is not set, so return None. elif field_value is None: return None # not multi entity, must be entity. elif not isinstance(field_value, dict): raise ShotgunError("Invalid deep query field %s.%s" % (entity_type, field)) # make sure that types in the query match type in the linked field if entity_type2 != field_value["type"]: raise ShotgunError("Deep query field %s.%s does not match type " "with data %s" % (entity_type, field, field_value)) # ok so looks like the value is an entity link # e.g. db contains: {"sg_sequence": {"type":"Sequence", "id": 123 } } linked_row = self._db[field_value["type"]][field_value["id"]] return self._get_field_from_row(entity_type2, linked_row, field3) else: # sg returns none for unknown stuff return None except ValueError: # this is not a deep-linked field - just something like "code" if field in row: return row[field] else: # sg returns none for unknown stuff return None def _get_field_type(self, entity_type, field): # split dotted form fields try: field2, entity_type2, field3 = field.split(".", 2) return self._get_field_type(entity_type2, field3) except ValueError: return self._schema[entity_type][field]["data_type"]["value"] def _row_matches_filter(self, entity_type, row, sg_filter, retired_only): try: field, operator, rval = sg_filter except ValueError: raise ShotgunError("Filters must be in the form [lval, operator, rval]") # Special case, field is None when we have a filter operator. if field is None: if operator in ["any", "all"]: return self._row_matches_filters(entity_type, row, rval, operator, retired_only) else: raise ShotgunError("Unknown filter_operator type: %s" % operator) else: lval = self._get_field_from_row(entity_type, row, field) field_type = self._get_field_type(entity_type, field) # if we're operating on an entity, we'll need to grab the name from the lval's row if field_type == "entity": # If the entity field is set, we'll retrieve the name of the entity. if lval is not None: link_type = lval["type"] link_id = lval["id"] lval_row = self._db[link_type][link_id] if "name" in lval_row: lval["name"] = lval_row["name"] elif "code" in lval_row: lval["name"] = lval_row["code"] return self._compare(field_type, lval, operator, rval) def _rearrange_filters(self, filters: list) -> None: """ Modifies the filter syntax to turn it into a list of three items regardless of the actual filter. Most of the filters are list of three elements, so this doesn't change much. The filter_operator syntax uses a dictionary with two keys, "filters" and "filter_operator". Filters using this syntax will be turned into [None, filter["filter_operator"], filter["filters"]] Filters of the form [field, operator, values....] will be turned into [field, operator, [values...]]. :param list filters: List of filters to rearrange. :returns: A list of three items. """ rearranged_filters = [] # now translate ["field", "in", 2,3,4] --> ["field", "in", [2, 3, 4]] for f in filters: if isinstance(f, list): if len(f) > 3: # ["field", "in", 2,3,4] --> ["field", "in", [2, 3, 4]] new_filter = [f[0], f[1], f[2:]] elif f[1] == "in" and not isinstance(f[2], list): # ["field", "in", 2] --> ["field", "in", [2]] new_filter = [f[0], f[1], [f[2]]] else: new_filter = f elif isinstance(f, dict): if "filter_operator" not in f or "filters" not in f: raise ShotgunError( "Bad filter operator, requires keys 'filter_operator' and 'filters', " "found %s" % ", ".join(f.keys()) ) new_filter = [None, f["filter_operator"], f["filters"]] else: raise ShotgunError( "Filters can only be lists or dictionaries, not %s." % type(f).__name__ ) rearranged_filters.append(new_filter) return rearranged_filters def _row_matches_filters(self, entity_type, row, filters, filter_operator, retired_only): filters = self._rearrange_filters(filters) if retired_only and not row["__retired"] or not retired_only and row["__retired"]: # ignore retired rows unless the retired_only flag is set # ignore live rows if the retired_only flag is set return False elif filter_operator in ("all", None): return all(self._row_matches_filter(entity_type, row, filter, retired_only) for filter in filters) elif filter_operator == "any": return any(self._row_matches_filter(entity_type, row, filter, retired_only) for filter in filters) else: raise ShotgunError("%s is not a valid filter operator" % filter_operator) def _update_row(self, entity_type, row, data, multi_entity_update_modes=None): for field in data: field_type = self._get_field_type(entity_type, field) if field_type == "entity" and data[field]: row[field] = {"type": data[field]["type"], "id": data[field]["id"]} elif field_type == "multi_entity": update_mode = multi_entity_update_modes.get(field, "set") if multi_entity_update_modes else "set" if update_mode == "add": for item in data[field]: new_item = {"type": item["type"], "id": item["id"]} if new_item not in row[field]: row[field].append(new_item) elif update_mode == "remove": row[field] = [ item for item in row[field] for new_item in data[field] if item["id"] != new_item["id"] or item["type"] != new_item["type"] ] elif update_mode == "set": row[field] = [{"type": item["type"], "id": item["id"]} for item in data[field]] else: row[field] = data[field] def _validate_entity_exists(self, entity_type, entity_id): if entity_id not in self._db[entity_type]: raise ShotgunError("No entity of type %s exists with id %s" % (entity_type, entity_id)) ================================================ FILE: shotgun_api3/lib/mockgun/schema.py ================================================ """ ----------------------------------------------------------------------------- Copyright (c) 2009-2017, Shotgun Software Inc Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Shotgun Software Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- """ import os import pickle from .errors import MockgunError class SchemaFactory(object): """ Allows to instantiate a pickled schema. """ _schema_entity_cache = None _schema_entity_cache_path = None _schema_cache = None _schema_cache_path = None @classmethod def get_schemas(cls, schema_path: str, schema_entity_path: str) -> tuple: """ Retrieves the schemas from disk. :param str schema_path: Path to the schema. :param str schema_entity_path: Path to the entities schema. :returns: Pair of dictionaries holding the schema and entities schema. :rtype: tuple """ if not os.path.exists(schema_path): raise MockgunError("Cannot locate Mockgun schema file '%s'!" % schema_path) if not os.path.exists(schema_entity_path): raise MockgunError("Cannot locate Mockgun schema file '%s'!" % schema_entity_path) # Poor man's attempt at a cache. All of our use cases deal with a single pair of files # for the duration of the unit tests, so keep a cache for both inputs. We don't want # to deal with ever growing caches anyway. Just having this simple cache has shown # speed increases of up to 500% for Toolkit unit tests alone. if schema_path != cls._schema_cache_path: cls._schema_cache = cls._read_file(schema_path) cls._schema_cache_path = schema_path if schema_entity_path != cls._schema_entity_cache_path: cls._schema_entity_cache = cls._read_file(schema_entity_path) cls._schema_entity_cache_path = schema_entity_path return cls._schema_cache, cls._schema_entity_cache @classmethod def _read_file(cls, path): with open(path, "rb") as fh: return pickle.load(fh) # Highest protocol that Python 2.4 supports, which is the earliest version of Python we support. # Actually, this is the same version that Python 2.7 supports at the moment! _HIGHEST_24_PICKLE_PROTOCOL = 2 # ---------------------------------------------------------------------------- # Utility methods def generate_schema(shotgun, schema_file_path, schema_entity_file_path): """ Helper method for mockgun. Generates the schema files needed by the mocker by connecting to a real shotgun and downloading the schema information for that site. Once the generated schema files are being passed to mockgun, it will mimic the site's schema structure. :param sg_url: Shotgun site url :param sg_script: Script name to connect with :param sg_key: Script key to connect with :param schema_file_path: Path where to write the main schema file to :param schema_entity_file_path: Path where to write the entity schema file to """ schema = shotgun.schema_read() fh = open(schema_file_path, "wb") try: pickle.dump(schema, fh, protocol=_HIGHEST_24_PICKLE_PROTOCOL) finally: fh.close() schema_entity = shotgun.schema_entity_read() fh = open(schema_entity_file_path, "wb") try: pickle.dump(schema_entity, fh, protocol=_HIGHEST_24_PICKLE_PROTOCOL) finally: fh.close() ================================================ FILE: shotgun_api3/lib/pyparsing.py ================================================ # -*- coding: utf-8 -*- # module pyparsing.py # # Copyright (c) 2003-2019 Paul T. McGuire # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # __doc__ = \ """ pyparsing module - Classes and methods to define and execute parsing grammars ============================================================================= The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions. With pyparsing, you don't need to learn a new syntax for defining grammars or matching expressions - the parsing module provides a library of classes that you use to construct the grammar directly in Python. Here is a program to parse "Hello, World!" (or any greeting of the form ``", !"``), built up using :class:`Word`, :class:`Literal`, and :class:`And` elements (the :class:`'+'` operators create :class:`And` expressions, and the strings are auto-converted to :class:`Literal` expressions):: from pyparsing import Word, alphas # define grammar of a greeting greet = Word(alphas) + "," + Word(alphas) + "!" hello = "Hello, World!" print (hello, "->", greet.parseString(hello)) The program outputs the following:: Hello, World! -> ['Hello', ',', 'World', '!'] The Python representation of the grammar is quite readable, owing to the self-explanatory class names, and the use of '+', '|' and '^' operators. The :class:`ParseResults` object returned from :class:`ParserElement.parseString` can be accessed as a nested list, a dictionary, or an object with named attributes. The pyparsing module handles some of the problems that are typically vexing when writing text parsers: - extra or missing whitespace (the above program will also handle "Hello,World!", "Hello , World !", etc.) - quoted strings - embedded comments Getting Started - ----------------- Visit the classes :class:`ParserElement` and :class:`ParseResults` to see the base classes that most other pyparsing classes inherit from. Use the docstrings for examples of how to: - construct literal match expressions from :class:`Literal` and :class:`CaselessLiteral` classes - construct character word-group expressions using the :class:`Word` class - see how to create repetitive expressions using :class:`ZeroOrMore` and :class:`OneOrMore` classes - use :class:`'+'`, :class:`'|'`, :class:`'^'`, and :class:`'&'` operators to combine simple expressions into more complex ones - associate names with your parsed results using :class:`ParserElement.setResultsName` - access the parsed data, which is returned as a :class:`ParseResults` object - find some helpful expression short-cuts like :class:`delimitedList` and :class:`oneOf` - find more useful common expressions in the :class:`pyparsing_common` namespace class """ __version__ = "2.4.7" __versionTime__ = "30 Mar 2020 00:43 UTC" __author__ = "Paul McGuire " import string from weakref import ref as wkref import copy import sys import warnings import re import collections import pprint import traceback import types from datetime import datetime from operator import itemgetter import itertools from functools import wraps from contextlib import contextmanager try: # Python 3 from itertools import filterfalse except ImportError: from itertools import ifilterfalse as filterfalse try: from _thread import RLock except ImportError: from threading import RLock try: # Python 3 from collections.abc import Iterable from collections.abc import MutableMapping, Mapping except ImportError: # Python 2.7 from collections import Iterable from collections import MutableMapping, Mapping try: from collections import OrderedDict as _OrderedDict except ImportError: try: from ordereddict import OrderedDict as _OrderedDict except ImportError: _OrderedDict = None try: from types import SimpleNamespace except ImportError: class SimpleNamespace: pass # version compatibility configuration __compat__ = SimpleNamespace() __compat__.__doc__ = """ A cross-version compatibility configuration for pyparsing features that will be released in a future version. By setting values in this configuration to True, those features can be enabled in prior versions for compatibility development and testing. - collect_all_And_tokens - flag to enable fix for Issue #63 that fixes erroneous grouping of results names when an And expression is nested within an Or or MatchFirst; set to True to enable bugfix released in pyparsing 2.3.0, or False to preserve pre-2.3.0 handling of named results """ __compat__.collect_all_And_tokens = True __diag__ = SimpleNamespace() __diag__.__doc__ = """ Diagnostic configuration (all default to False) - warn_multiple_tokens_in_named_alternation - flag to enable warnings when a results name is defined on a MatchFirst or Or expression with one or more And subexpressions (only warns if __compat__.collect_all_And_tokens is False) - warn_ungrouped_named_tokens_in_collection - flag to enable warnings when a results name is defined on a containing expression with ungrouped subexpressions that also have results names - warn_name_set_on_empty_Forward - flag to enable warnings whan a Forward is defined with a results name, but has no contents defined - warn_on_multiple_string_args_to_oneof - flag to enable warnings whan oneOf is incorrectly called with multiple str arguments - enable_debug_on_named_expressions - flag to auto-enable debug on all subsequent calls to ParserElement.setName() """ __diag__.warn_multiple_tokens_in_named_alternation = False __diag__.warn_ungrouped_named_tokens_in_collection = False __diag__.warn_name_set_on_empty_Forward = False __diag__.warn_on_multiple_string_args_to_oneof = False __diag__.enable_debug_on_named_expressions = False __diag__._all_names = [nm for nm in vars(__diag__) if nm.startswith("enable_") or nm.startswith("warn_")] def _enable_all_warnings(): __diag__.warn_multiple_tokens_in_named_alternation = True __diag__.warn_ungrouped_named_tokens_in_collection = True __diag__.warn_name_set_on_empty_Forward = True __diag__.warn_on_multiple_string_args_to_oneof = True __diag__.enable_all_warnings = _enable_all_warnings __all__ = ['__version__', '__versionTime__', '__author__', '__compat__', '__diag__', 'And', 'CaselessKeyword', 'CaselessLiteral', 'CharsNotIn', 'Combine', 'Dict', 'Each', 'Empty', 'FollowedBy', 'Forward', 'GoToColumn', 'Group', 'Keyword', 'LineEnd', 'LineStart', 'Literal', 'PrecededBy', 'MatchFirst', 'NoMatch', 'NotAny', 'OneOrMore', 'OnlyOnce', 'Optional', 'Or', 'ParseBaseException', 'ParseElementEnhance', 'ParseException', 'ParseExpression', 'ParseFatalException', 'ParseResults', 'ParseSyntaxException', 'ParserElement', 'QuotedString', 'RecursiveGrammarException', 'Regex', 'SkipTo', 'StringEnd', 'StringStart', 'Suppress', 'Token', 'TokenConverter', 'White', 'Word', 'WordEnd', 'WordStart', 'ZeroOrMore', 'Char', 'alphanums', 'alphas', 'alphas8bit', 'anyCloseTag', 'anyOpenTag', 'cStyleComment', 'col', 'commaSeparatedList', 'commonHTMLEntity', 'countedArray', 'cppStyleComment', 'dblQuotedString', 'dblSlashComment', 'delimitedList', 'dictOf', 'downcaseTokens', 'empty', 'hexnums', 'htmlComment', 'javaStyleComment', 'line', 'lineEnd', 'lineStart', 'lineno', 'makeHTMLTags', 'makeXMLTags', 'matchOnlyAtCol', 'matchPreviousExpr', 'matchPreviousLiteral', 'nestedExpr', 'nullDebugAction', 'nums', 'oneOf', 'opAssoc', 'operatorPrecedence', 'printables', 'punc8bit', 'pythonStyleComment', 'quotedString', 'removeQuotes', 'replaceHTMLEntity', 'replaceWith', 'restOfLine', 'sglQuotedString', 'srange', 'stringEnd', 'stringStart', 'traceParseAction', 'unicodeString', 'upcaseTokens', 'withAttribute', 'indentedBlock', 'originalTextFor', 'ungroup', 'infixNotation', 'locatedExpr', 'withClass', 'CloseMatch', 'tokenMap', 'pyparsing_common', 'pyparsing_unicode', 'unicode_set', 'conditionAsParseAction', 're', ] system_version = tuple(sys.version_info)[:3] PY_3 = system_version[0] == 3 if PY_3: _MAX_INT = sys.maxsize basestring = str unichr = chr unicode = str _ustr = str # build list of single arg builtins, that can be used as parse actions singleArgBuiltins = [sum, len, sorted, reversed, list, tuple, set, any, all, min, max] else: _MAX_INT = sys.maxint range = xrange def _ustr(obj): """Drop-in replacement for str(obj) that tries to be Unicode friendly. It first tries str(obj). If that fails with a UnicodeEncodeError, then it tries unicode(obj). It then < returns the unicode object | encodes it with the default encoding | ... >. """ if isinstance(obj, unicode): return obj try: # If this works, then _ustr(obj) has the same behaviour as str(obj), so # it won't break any existing code. return str(obj) except UnicodeEncodeError: # Else encode it ret = unicode(obj).encode(sys.getdefaultencoding(), 'xmlcharrefreplace') xmlcharref = Regex(r'&#\d+;') xmlcharref.setParseAction(lambda t: '\\u' + hex(int(t[0][2:-1]))[2:]) return xmlcharref.transformString(ret) # build list of single arg builtins, tolerant of Python version, that can be used as parse actions singleArgBuiltins = [] import __builtin__ for fname in "sum len sorted reversed list tuple set any all min max".split(): try: singleArgBuiltins.append(getattr(__builtin__, fname)) except AttributeError: continue _generatorType = type((y for y in range(1))) def _xml_escape(data): """Escape &, <, >, ", ', etc. in a string of data.""" # ampersand must be replaced first from_symbols = '&><"\'' to_symbols = ('&' + s + ';' for s in "amp gt lt quot apos".split()) for from_, to_ in zip(from_symbols, to_symbols): data = data.replace(from_, to_) return data alphas = string.ascii_uppercase + string.ascii_lowercase nums = "0123456789" hexnums = nums + "ABCDEFabcdef" alphanums = alphas + nums _bslash = chr(92) printables = "".join(c for c in string.printable if c not in string.whitespace) def conditionAsParseAction(fn, message=None, fatal=False): msg = message if message is not None else "failed user-defined condition" exc_type = ParseFatalException if fatal else ParseException fn = _trim_arity(fn) @wraps(fn) def pa(s, l, t): if not bool(fn(s, l, t)): raise exc_type(s, l, msg) return pa class ParseBaseException(Exception): """base exception class for all parsing runtime exceptions""" # Performance tuning: we construct a *lot* of these, so keep this # constructor as small and fast as possible def __init__(self, pstr, loc=0, msg=None, elem=None): self.loc = loc if msg is None: self.msg = pstr self.pstr = "" else: self.msg = msg self.pstr = pstr self.parserElement = elem self.args = (pstr, loc, msg) @classmethod def _from_exception(cls, pe): """ internal factory method to simplify creating one type of ParseException from another - avoids having __init__ signature conflicts among subclasses """ return cls(pe.pstr, pe.loc, pe.msg, pe.parserElement) def __getattr__(self, aname): """supported attributes by name are: - lineno - returns the line number of the exception text - col - returns the column number of the exception text - line - returns the line containing the exception text """ if aname == "lineno": return lineno(self.loc, self.pstr) elif aname in ("col", "column"): return col(self.loc, self.pstr) elif aname == "line": return line(self.loc, self.pstr) else: raise AttributeError(aname) def __str__(self): if self.pstr: if self.loc >= len(self.pstr): foundstr = ', found end of text' else: foundstr = (', found %r' % self.pstr[self.loc:self.loc + 1]).replace(r'\\', '\\') else: foundstr = '' return ("%s%s (at char %d), (line:%d, col:%d)" % (self.msg, foundstr, self.loc, self.lineno, self.column)) def __repr__(self): return _ustr(self) def markInputline(self, markerString=">!<"): """Extracts the exception line from the input string, and marks the location of the exception with a special symbol. """ line_str = self.line line_column = self.column - 1 if markerString: line_str = "".join((line_str[:line_column], markerString, line_str[line_column:])) return line_str.strip() def __dir__(self): return "lineno col line".split() + dir(type(self)) class ParseException(ParseBaseException): """ Exception thrown when parse expressions don't match class; supported attributes by name are: - lineno - returns the line number of the exception text - col - returns the column number of the exception text - line - returns the line containing the exception text Example:: try: Word(nums).setName("integer").parseString("ABC") except ParseException as pe: print(pe) print("column: {}".format(pe.col)) prints:: Expected integer (at char 0), (line:1, col:1) column: 1 """ @staticmethod def explain(exc, depth=16): """ Method to take an exception and translate the Python internal traceback into a list of the pyparsing expressions that caused the exception to be raised. Parameters: - exc - exception raised during parsing (need not be a ParseException, in support of Python exceptions that might be raised in a parse action) - depth (default=16) - number of levels back in the stack trace to list expression and function names; if None, the full stack trace names will be listed; if 0, only the failing input line, marker, and exception string will be shown Returns a multi-line string listing the ParserElements and/or function names in the exception's stack trace. Note: the diagnostic output will include string representations of the expressions that failed to parse. These representations will be more helpful if you use `setName` to give identifiable names to your expressions. Otherwise they will use the default string forms, which may be cryptic to read. explain() is only supported under Python 3. """ import inspect if depth is None: depth = sys.getrecursionlimit() ret = [] if isinstance(exc, ParseBaseException): ret.append(exc.line) ret.append(' ' * (exc.col - 1) + '^') ret.append("{0}: {1}".format(type(exc).__name__, exc)) if depth > 0: callers = inspect.getinnerframes(exc.__traceback__, context=depth) seen = set() for i, ff in enumerate(callers[-depth:]): frm = ff[0] f_self = frm.f_locals.get('self', None) if isinstance(f_self, ParserElement): if frm.f_code.co_name not in ('parseImpl', '_parseNoCache'): continue if f_self in seen: continue seen.add(f_self) self_type = type(f_self) ret.append("{0}.{1} - {2}".format(self_type.__module__, self_type.__name__, f_self)) elif f_self is not None: self_type = type(f_self) ret.append("{0}.{1}".format(self_type.__module__, self_type.__name__)) else: code = frm.f_code if code.co_name in ('wrapper', ''): continue ret.append("{0}".format(code.co_name)) depth -= 1 if not depth: break return '\n'.join(ret) class ParseFatalException(ParseBaseException): """user-throwable exception thrown when inconsistent parse content is found; stops all parsing immediately""" pass class ParseSyntaxException(ParseFatalException): """just like :class:`ParseFatalException`, but thrown internally when an :class:`ErrorStop` ('-' operator) indicates that parsing is to stop immediately because an unbacktrackable syntax error has been found. """ pass #~ class ReparseException(ParseBaseException): #~ """Experimental class - parse actions can raise this exception to cause #~ pyparsing to reparse the input string: #~ - with a modified input string, and/or #~ - with a modified start location #~ Set the values of the ReparseException in the constructor, and raise the #~ exception in a parse action to cause pyparsing to use the new string/location. #~ Setting the values as None causes no change to be made. #~ """ #~ def __init_( self, newstring, restartLoc ): #~ self.newParseText = newstring #~ self.reparseLoc = restartLoc class RecursiveGrammarException(Exception): """exception thrown by :class:`ParserElement.validate` if the grammar could be improperly recursive """ def __init__(self, parseElementList): self.parseElementTrace = parseElementList def __str__(self): return "RecursiveGrammarException: %s" % self.parseElementTrace class _ParseResultsWithOffset(object): def __init__(self, p1, p2): self.tup = (p1, p2) def __getitem__(self, i): return self.tup[i] def __repr__(self): return repr(self.tup[0]) def setOffset(self, i): self.tup = (self.tup[0], i) class ParseResults(object): """Structured parse results, to provide multiple means of access to the parsed data: - as a list (``len(results)``) - by list index (``results[0], results[1]``, etc.) - by attribute (``results.`` - see :class:`ParserElement.setResultsName`) Example:: integer = Word(nums) date_str = (integer.setResultsName("year") + '/' + integer.setResultsName("month") + '/' + integer.setResultsName("day")) # equivalent form: # date_str = integer("year") + '/' + integer("month") + '/' + integer("day") # parseString returns a ParseResults object result = date_str.parseString("1999/12/31") def test(s, fn=repr): print("%s -> %s" % (s, fn(eval(s)))) test("list(result)") test("result[0]") test("result['month']") test("result.day") test("'month' in result") test("'minutes' in result") test("result.dump()", str) prints:: list(result) -> ['1999', '/', '12', '/', '31'] result[0] -> '1999' result['month'] -> '12' result.day -> '31' 'month' in result -> True 'minutes' in result -> False result.dump() -> ['1999', '/', '12', '/', '31'] - day: 31 - month: 12 - year: 1999 """ def __new__(cls, toklist=None, name=None, asList=True, modal=True): if isinstance(toklist, cls): return toklist retobj = object.__new__(cls) retobj.__doinit = True return retobj # Performance tuning: we construct a *lot* of these, so keep this # constructor as small and fast as possible def __init__(self, toklist=None, name=None, asList=True, modal=True, isinstance=isinstance): if self.__doinit: self.__doinit = False self.__name = None self.__parent = None self.__accumNames = {} self.__asList = asList self.__modal = modal if toklist is None: toklist = [] if isinstance(toklist, list): self.__toklist = toklist[:] elif isinstance(toklist, _generatorType): self.__toklist = list(toklist) else: self.__toklist = [toklist] self.__tokdict = dict() if name is not None and name: if not modal: self.__accumNames[name] = 0 if isinstance(name, int): name = _ustr(name) # will always return a str, but use _ustr for consistency self.__name = name if not (isinstance(toklist, (type(None), basestring, list)) and toklist in (None, '', [])): if isinstance(toklist, basestring): toklist = [toklist] if asList: if isinstance(toklist, ParseResults): self[name] = _ParseResultsWithOffset(ParseResults(toklist.__toklist), 0) else: self[name] = _ParseResultsWithOffset(ParseResults(toklist[0]), 0) self[name].__name = name else: try: self[name] = toklist[0] except (KeyError, TypeError, IndexError): self[name] = toklist def __getitem__(self, i): if isinstance(i, (int, slice)): return self.__toklist[i] else: if i not in self.__accumNames: return self.__tokdict[i][-1][0] else: return ParseResults([v[0] for v in self.__tokdict[i]]) def __setitem__(self, k, v, isinstance=isinstance): if isinstance(v, _ParseResultsWithOffset): self.__tokdict[k] = self.__tokdict.get(k, list()) + [v] sub = v[0] elif isinstance(k, (int, slice)): self.__toklist[k] = v sub = v else: self.__tokdict[k] = self.__tokdict.get(k, list()) + [_ParseResultsWithOffset(v, 0)] sub = v if isinstance(sub, ParseResults): sub.__parent = wkref(self) def __delitem__(self, i): if isinstance(i, (int, slice)): mylen = len(self.__toklist) del self.__toklist[i] # convert int to slice if isinstance(i, int): if i < 0: i += mylen i = slice(i, i + 1) # get removed indices removed = list(range(*i.indices(mylen))) removed.reverse() # fixup indices in token dictionary for name, occurrences in self.__tokdict.items(): for j in removed: for k, (value, position) in enumerate(occurrences): occurrences[k] = _ParseResultsWithOffset(value, position - (position > j)) else: del self.__tokdict[i] def __contains__(self, k): return k in self.__tokdict def __len__(self): return len(self.__toklist) def __bool__(self): return (not not self.__toklist) __nonzero__ = __bool__ def __iter__(self): return iter(self.__toklist) def __reversed__(self): return iter(self.__toklist[::-1]) def _iterkeys(self): if hasattr(self.__tokdict, "iterkeys"): return self.__tokdict.iterkeys() else: return iter(self.__tokdict) def _itervalues(self): return (self[k] for k in self._iterkeys()) def _iteritems(self): return ((k, self[k]) for k in self._iterkeys()) if PY_3: keys = _iterkeys """Returns an iterator of all named result keys.""" values = _itervalues """Returns an iterator of all named result values.""" items = _iteritems """Returns an iterator of all named result key-value tuples.""" else: iterkeys = _iterkeys """Returns an iterator of all named result keys (Python 2.x only).""" itervalues = _itervalues """Returns an iterator of all named result values (Python 2.x only).""" iteritems = _iteritems """Returns an iterator of all named result key-value tuples (Python 2.x only).""" def keys(self): """Returns all named result keys (as a list in Python 2.x, as an iterator in Python 3.x).""" return list(self.iterkeys()) def values(self): """Returns all named result values (as a list in Python 2.x, as an iterator in Python 3.x).""" return list(self.itervalues()) def items(self): """Returns all named result key-values (as a list of tuples in Python 2.x, as an iterator in Python 3.x).""" return list(self.iteritems()) def haskeys(self): """Since keys() returns an iterator, this method is helpful in bypassing code that looks for the existence of any defined results names.""" return bool(self.__tokdict) def pop(self, *args, **kwargs): """ Removes and returns item at specified index (default= ``last``). Supports both ``list`` and ``dict`` semantics for ``pop()``. If passed no argument or an integer argument, it will use ``list`` semantics and pop tokens from the list of parsed tokens. If passed a non-integer argument (most likely a string), it will use ``dict`` semantics and pop the corresponding value from any defined results names. A second default return value argument is supported, just as in ``dict.pop()``. Example:: def remove_first(tokens): tokens.pop(0) print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321'] print(OneOrMore(Word(nums)).addParseAction(remove_first).parseString("0 123 321")) # -> ['123', '321'] label = Word(alphas) patt = label("LABEL") + OneOrMore(Word(nums)) print(patt.parseString("AAB 123 321").dump()) # Use pop() in a parse action to remove named result (note that corresponding value is not # removed from list form of results) def remove_LABEL(tokens): tokens.pop("LABEL") return tokens patt.addParseAction(remove_LABEL) print(patt.parseString("AAB 123 321").dump()) prints:: ['AAB', '123', '321'] - LABEL: AAB ['AAB', '123', '321'] """ if not args: args = [-1] for k, v in kwargs.items(): if k == 'default': args = (args[0], v) else: raise TypeError("pop() got an unexpected keyword argument '%s'" % k) if (isinstance(args[0], int) or len(args) == 1 or args[0] in self): index = args[0] ret = self[index] del self[index] return ret else: defaultvalue = args[1] return defaultvalue def get(self, key, defaultValue=None): """ Returns named result matching the given key, or if there is no such name, then returns the given ``defaultValue`` or ``None`` if no ``defaultValue`` is specified. Similar to ``dict.get()``. Example:: integer = Word(nums) date_str = integer("year") + '/' + integer("month") + '/' + integer("day") result = date_str.parseString("1999/12/31") print(result.get("year")) # -> '1999' print(result.get("hour", "not specified")) # -> 'not specified' print(result.get("hour")) # -> None """ if key in self: return self[key] else: return defaultValue def insert(self, index, insStr): """ Inserts new element at location index in the list of parsed tokens. Similar to ``list.insert()``. Example:: print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321'] # use a parse action to insert the parse location in the front of the parsed results def insert_locn(locn, tokens): tokens.insert(0, locn) print(OneOrMore(Word(nums)).addParseAction(insert_locn).parseString("0 123 321")) # -> [0, '0', '123', '321'] """ self.__toklist.insert(index, insStr) # fixup indices in token dictionary for name, occurrences in self.__tokdict.items(): for k, (value, position) in enumerate(occurrences): occurrences[k] = _ParseResultsWithOffset(value, position + (position > index)) def append(self, item): """ Add single element to end of ParseResults list of elements. Example:: print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321'] # use a parse action to compute the sum of the parsed integers, and add it to the end def append_sum(tokens): tokens.append(sum(map(int, tokens))) print(OneOrMore(Word(nums)).addParseAction(append_sum).parseString("0 123 321")) # -> ['0', '123', '321', 444] """ self.__toklist.append(item) def extend(self, itemseq): """ Add sequence of elements to end of ParseResults list of elements. Example:: patt = OneOrMore(Word(alphas)) # use a parse action to append the reverse of the matched strings, to make a palindrome def make_palindrome(tokens): tokens.extend(reversed([t[::-1] for t in tokens])) return ''.join(tokens) print(patt.addParseAction(make_palindrome).parseString("lskdj sdlkjf lksd")) # -> 'lskdjsdlkjflksddsklfjkldsjdksl' """ if isinstance(itemseq, ParseResults): self.__iadd__(itemseq) else: self.__toklist.extend(itemseq) def clear(self): """ Clear all elements and results names. """ del self.__toklist[:] self.__tokdict.clear() def __getattr__(self, name): try: return self[name] except KeyError: return "" def __add__(self, other): ret = self.copy() ret += other return ret def __iadd__(self, other): if other.__tokdict: offset = len(self.__toklist) addoffset = lambda a: offset if a < 0 else a + offset otheritems = other.__tokdict.items() otherdictitems = [(k, _ParseResultsWithOffset(v[0], addoffset(v[1]))) for k, vlist in otheritems for v in vlist] for k, v in otherdictitems: self[k] = v if isinstance(v[0], ParseResults): v[0].__parent = wkref(self) self.__toklist += other.__toklist self.__accumNames.update(other.__accumNames) return self def __radd__(self, other): if isinstance(other, int) and other == 0: # useful for merging many ParseResults using sum() builtin return self.copy() else: # this may raise a TypeError - so be it return other + self def __repr__(self): return "(%s, %s)" % (repr(self.__toklist), repr(self.__tokdict)) def __str__(self): return '[' + ', '.join(_ustr(i) if isinstance(i, ParseResults) else repr(i) for i in self.__toklist) + ']' def _asStringList(self, sep=''): out = [] for item in self.__toklist: if out and sep: out.append(sep) if isinstance(item, ParseResults): out += item._asStringList() else: out.append(_ustr(item)) return out def asList(self): """ Returns the parse results as a nested list of matching tokens, all converted to strings. Example:: patt = OneOrMore(Word(alphas)) result = patt.parseString("sldkj lsdkj sldkj") # even though the result prints in string-like form, it is actually a pyparsing ParseResults print(type(result), result) # -> ['sldkj', 'lsdkj', 'sldkj'] # Use asList() to create an actual list result_list = result.asList() print(type(result_list), result_list) # -> ['sldkj', 'lsdkj', 'sldkj'] """ return [res.asList() if isinstance(res, ParseResults) else res for res in self.__toklist] def asDict(self): """ Returns the named parse results as a nested dictionary. Example:: integer = Word(nums) date_str = integer("year") + '/' + integer("month") + '/' + integer("day") result = date_str.parseString('12/31/1999') print(type(result), repr(result)) # -> (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]}) result_dict = result.asDict() print(type(result_dict), repr(result_dict)) # -> {'day': '1999', 'year': '12', 'month': '31'} # even though a ParseResults supports dict-like access, sometime you just need to have a dict import json print(json.dumps(result)) # -> Exception: TypeError: ... is not JSON serializable print(json.dumps(result.asDict())) # -> {"month": "31", "day": "1999", "year": "12"} """ if PY_3: item_fn = self.items else: item_fn = self.iteritems def toItem(obj): if isinstance(obj, ParseResults): if obj.haskeys(): return obj.asDict() else: return [toItem(v) for v in obj] else: return obj return dict((k, toItem(v)) for k, v in item_fn()) def copy(self): """ Returns a new copy of a :class:`ParseResults` object. """ ret = ParseResults(self.__toklist) ret.__tokdict = dict(self.__tokdict.items()) ret.__parent = self.__parent ret.__accumNames.update(self.__accumNames) ret.__name = self.__name return ret def asXML(self, doctag=None, namedItemsOnly=False, indent="", formatted=True): """ (Deprecated) Returns the parse results as XML. Tags are created for tokens and lists that have defined results names. """ nl = "\n" out = [] namedItems = dict((v[1], k) for (k, vlist) in self.__tokdict.items() for v in vlist) nextLevelIndent = indent + " " # collapse out indents if formatting is not desired if not formatted: indent = "" nextLevelIndent = "" nl = "" selfTag = None if doctag is not None: selfTag = doctag else: if self.__name: selfTag = self.__name if not selfTag: if namedItemsOnly: return "" else: selfTag = "ITEM" out += [nl, indent, "<", selfTag, ">"] for i, res in enumerate(self.__toklist): if isinstance(res, ParseResults): if i in namedItems: out += [res.asXML(namedItems[i], namedItemsOnly and doctag is None, nextLevelIndent, formatted)] else: out += [res.asXML(None, namedItemsOnly and doctag is None, nextLevelIndent, formatted)] else: # individual token, see if there is a name for it resTag = None if i in namedItems: resTag = namedItems[i] if not resTag: if namedItemsOnly: continue else: resTag = "ITEM" xmlBodyText = _xml_escape(_ustr(res)) out += [nl, nextLevelIndent, "<", resTag, ">", xmlBodyText, ""] out += [nl, indent, ""] return "".join(out) def __lookup(self, sub): for k, vlist in self.__tokdict.items(): for v, loc in vlist: if sub is v: return k return None def getName(self): r""" Returns the results name for this token expression. Useful when several different expressions might match at a particular location. Example:: integer = Word(nums) ssn_expr = Regex(r"\d\d\d-\d\d-\d\d\d\d") house_number_expr = Suppress('#') + Word(nums, alphanums) user_data = (Group(house_number_expr)("house_number") | Group(ssn_expr)("ssn") | Group(integer)("age")) user_info = OneOrMore(user_data) result = user_info.parseString("22 111-22-3333 #221B") for item in result: print(item.getName(), ':', item[0]) prints:: age : 22 ssn : 111-22-3333 house_number : 221B """ if self.__name: return self.__name elif self.__parent: par = self.__parent() if par: return par.__lookup(self) else: return None elif (len(self) == 1 and len(self.__tokdict) == 1 and next(iter(self.__tokdict.values()))[0][1] in (0, -1)): return next(iter(self.__tokdict.keys())) else: return None def dump(self, indent='', full=True, include_list=True, _depth=0): """ Diagnostic method for listing out the contents of a :class:`ParseResults`. Accepts an optional ``indent`` argument so that this string can be embedded in a nested display of other data. Example:: integer = Word(nums) date_str = integer("year") + '/' + integer("month") + '/' + integer("day") result = date_str.parseString('12/31/1999') print(result.dump()) prints:: ['12', '/', '31', '/', '1999'] - day: 1999 - month: 31 - year: 12 """ out = [] NL = '\n' if include_list: out.append(indent + _ustr(self.asList())) else: out.append('') if full: if self.haskeys(): items = sorted((str(k), v) for k, v in self.items()) for k, v in items: if out: out.append(NL) out.append("%s%s- %s: " % (indent, (' ' * _depth), k)) if isinstance(v, ParseResults): if v: out.append(v.dump(indent=indent, full=full, include_list=include_list, _depth=_depth + 1)) else: out.append(_ustr(v)) else: out.append(repr(v)) elif any(isinstance(vv, ParseResults) for vv in self): v = self for i, vv in enumerate(v): if isinstance(vv, ParseResults): out.append("\n%s%s[%d]:\n%s%s%s" % (indent, (' ' * (_depth)), i, indent, (' ' * (_depth + 1)), vv.dump(indent=indent, full=full, include_list=include_list, _depth=_depth + 1))) else: out.append("\n%s%s[%d]:\n%s%s%s" % (indent, (' ' * (_depth)), i, indent, (' ' * (_depth + 1)), _ustr(vv))) return "".join(out) def pprint(self, *args, **kwargs): """ Pretty-printer for parsed results as a list, using the `pprint `_ module. Accepts additional positional or keyword args as defined for `pprint.pprint `_ . Example:: ident = Word(alphas, alphanums) num = Word(nums) func = Forward() term = ident | num | Group('(' + func + ')') func <<= ident + Group(Optional(delimitedList(term))) result = func.parseString("fna a,b,(fnb c,d,200),100") result.pprint(width=40) prints:: ['fna', ['a', 'b', ['(', 'fnb', ['c', 'd', '200'], ')'], '100']] """ pprint.pprint(self.asList(), *args, **kwargs) # add support for pickle protocol def __getstate__(self): return (self.__toklist, (self.__tokdict.copy(), self.__parent is not None and self.__parent() or None, self.__accumNames, self.__name)) def __setstate__(self, state): self.__toklist = state[0] self.__tokdict, par, inAccumNames, self.__name = state[1] self.__accumNames = {} self.__accumNames.update(inAccumNames) if par is not None: self.__parent = wkref(par) else: self.__parent = None def __getnewargs__(self): return self.__toklist, self.__name, self.__asList, self.__modal def __dir__(self): return dir(type(self)) + list(self.keys()) @classmethod def from_dict(cls, other, name=None): """ Helper classmethod to construct a ParseResults from a dict, preserving the name-value relations as results names. If an optional 'name' argument is given, a nested ParseResults will be returned """ def is_iterable(obj): try: iter(obj) except Exception: return False else: if PY_3: return not isinstance(obj, (str, bytes)) else: return not isinstance(obj, basestring) ret = cls([]) for k, v in other.items(): if isinstance(v, Mapping): ret += cls.from_dict(v, name=k) else: ret += cls([v], name=k, asList=is_iterable(v)) if name is not None: ret = cls([ret], name=name) return ret MutableMapping.register(ParseResults) def col (loc, strg): """Returns current column within a string, counting newlines as line separators. The first column is number 1. Note: the default parsing behavior is to expand tabs in the input string before starting the parsing process. See :class:`ParserElement.parseString` for more information on parsing strings containing ```` s, and suggested methods to maintain a consistent view of the parsed string, the parse location, and line and column positions within the parsed string. """ s = strg return 1 if 0 < loc < len(s) and s[loc-1] == '\n' else loc - s.rfind("\n", 0, loc) def lineno(loc, strg): """Returns current line number within a string, counting newlines as line separators. The first line is number 1. Note - the default parsing behavior is to expand tabs in the input string before starting the parsing process. See :class:`ParserElement.parseString` for more information on parsing strings containing ```` s, and suggested methods to maintain a consistent view of the parsed string, the parse location, and line and column positions within the parsed string. """ return strg.count("\n", 0, loc) + 1 def line(loc, strg): """Returns the line of text containing loc within a string, counting newlines as line separators. """ lastCR = strg.rfind("\n", 0, loc) nextCR = strg.find("\n", loc) if nextCR >= 0: return strg[lastCR + 1:nextCR] else: return strg[lastCR + 1:] def _defaultStartDebugAction(instring, loc, expr): print(("Match " + _ustr(expr) + " at loc " + _ustr(loc) + "(%d,%d)" % (lineno(loc, instring), col(loc, instring)))) def _defaultSuccessDebugAction(instring, startloc, endloc, expr, toks): print("Matched " + _ustr(expr) + " -> " + str(toks.asList())) def _defaultExceptionDebugAction(instring, loc, expr, exc): print("Exception raised:" + _ustr(exc)) def nullDebugAction(*args): """'Do-nothing' debug action, to suppress debugging output during parsing.""" pass # Only works on Python 3.x - nonlocal is toxic to Python 2 installs #~ 'decorator to trim function calls to match the arity of the target' #~ def _trim_arity(func, maxargs=3): #~ if func in singleArgBuiltins: #~ return lambda s,l,t: func(t) #~ limit = 0 #~ foundArity = False #~ def wrapper(*args): #~ nonlocal limit,foundArity #~ while 1: #~ try: #~ ret = func(*args[limit:]) #~ foundArity = True #~ return ret #~ except TypeError: #~ if limit == maxargs or foundArity: #~ raise #~ limit += 1 #~ continue #~ return wrapper # this version is Python 2.x-3.x cross-compatible 'decorator to trim function calls to match the arity of the target' def _trim_arity(func, maxargs=2): if func in singleArgBuiltins: return lambda s, l, t: func(t) limit = [0] foundArity = [False] # traceback return data structure changed in Py3.5 - normalize back to plain tuples if system_version[:2] >= (3, 5): def extract_stack(limit=0): # special handling for Python 3.5.0 - extra deep call stack by 1 offset = -3 if system_version == (3, 5, 0) else -2 frame_summary = traceback.extract_stack(limit=-offset + limit - 1)[offset] return [frame_summary[:2]] def extract_tb(tb, limit=0): frames = traceback.extract_tb(tb, limit=limit) frame_summary = frames[-1] return [frame_summary[:2]] else: extract_stack = traceback.extract_stack extract_tb = traceback.extract_tb # synthesize what would be returned by traceback.extract_stack at the call to # user's parse action 'func', so that we don't incur call penalty at parse time LINE_DIFF = 6 # IF ANY CODE CHANGES, EVEN JUST COMMENTS OR BLANK LINES, BETWEEN THE NEXT LINE AND # THE CALL TO FUNC INSIDE WRAPPER, LINE_DIFF MUST BE MODIFIED!!!! this_line = extract_stack(limit=2)[-1] pa_call_line_synth = (this_line[0], this_line[1] + LINE_DIFF) def wrapper(*args): while 1: try: ret = func(*args[limit[0]:]) foundArity[0] = True return ret except TypeError: # re-raise TypeErrors if they did not come from our arity testing if foundArity[0]: raise else: try: tb = sys.exc_info()[-1] if not extract_tb(tb, limit=2)[-1][:2] == pa_call_line_synth: raise finally: try: del tb except NameError: pass if limit[0] <= maxargs: limit[0] += 1 continue raise # copy func name to wrapper for sensible debug output func_name = "" try: func_name = getattr(func, '__name__', getattr(func, '__class__').__name__) except Exception: func_name = str(func) wrapper.__name__ = func_name return wrapper class ParserElement(object): """Abstract base level parser element class.""" DEFAULT_WHITE_CHARS = " \n\t\r" verbose_stacktrace = False @staticmethod def setDefaultWhitespaceChars(chars): r""" Overrides the default whitespace chars Example:: # default whitespace chars are space, and newline OneOrMore(Word(alphas)).parseString("abc def\nghi jkl") # -> ['abc', 'def', 'ghi', 'jkl'] # change to just treat newline as significant ParserElement.setDefaultWhitespaceChars(" \t") OneOrMore(Word(alphas)).parseString("abc def\nghi jkl") # -> ['abc', 'def'] """ ParserElement.DEFAULT_WHITE_CHARS = chars @staticmethod def inlineLiteralsUsing(cls): """ Set class to be used for inclusion of string literals into a parser. Example:: # default literal class used is Literal integer = Word(nums) date_str = integer("year") + '/' + integer("month") + '/' + integer("day") date_str.parseString("1999/12/31") # -> ['1999', '/', '12', '/', '31'] # change to Suppress ParserElement.inlineLiteralsUsing(Suppress) date_str = integer("year") + '/' + integer("month") + '/' + integer("day") date_str.parseString("1999/12/31") # -> ['1999', '12', '31'] """ ParserElement._literalStringClass = cls @classmethod def _trim_traceback(cls, tb): while tb.tb_next: tb = tb.tb_next return tb def __init__(self, savelist=False): self.parseAction = list() self.failAction = None # ~ self.name = "" # don't define self.name, let subclasses try/except upcall self.strRepr = None self.resultsName = None self.saveAsList = savelist self.skipWhitespace = True self.whiteChars = set(ParserElement.DEFAULT_WHITE_CHARS) self.copyDefaultWhiteChars = True self.mayReturnEmpty = False # used when checking for left-recursion self.keepTabs = False self.ignoreExprs = list() self.debug = False self.streamlined = False self.mayIndexError = True # used to optimize exception handling for subclasses that don't advance parse index self.errmsg = "" self.modalResults = True # used to mark results names as modal (report only last) or cumulative (list all) self.debugActions = (None, None, None) # custom debug actions self.re = None self.callPreparse = True # used to avoid redundant calls to preParse self.callDuringTry = False def copy(self): """ Make a copy of this :class:`ParserElement`. Useful for defining different parse actions for the same parsing pattern, using copies of the original parse element. Example:: integer = Word(nums).setParseAction(lambda toks: int(toks[0])) integerK = integer.copy().addParseAction(lambda toks: toks[0] * 1024) + Suppress("K") integerM = integer.copy().addParseAction(lambda toks: toks[0] * 1024 * 1024) + Suppress("M") print(OneOrMore(integerK | integerM | integer).parseString("5K 100 640K 256M")) prints:: [5120, 100, 655360, 268435456] Equivalent form of ``expr.copy()`` is just ``expr()``:: integerM = integer().addParseAction(lambda toks: toks[0] * 1024 * 1024) + Suppress("M") """ cpy = copy.copy(self) cpy.parseAction = self.parseAction[:] cpy.ignoreExprs = self.ignoreExprs[:] if self.copyDefaultWhiteChars: cpy.whiteChars = ParserElement.DEFAULT_WHITE_CHARS return cpy def setName(self, name): """ Define name for this expression, makes debugging and exception messages clearer. Example:: Word(nums).parseString("ABC") # -> Exception: Expected W:(0123...) (at char 0), (line:1, col:1) Word(nums).setName("integer").parseString("ABC") # -> Exception: Expected integer (at char 0), (line:1, col:1) """ self.name = name self.errmsg = "Expected " + self.name if __diag__.enable_debug_on_named_expressions: self.setDebug() return self def setResultsName(self, name, listAllMatches=False): """ Define name for referencing matching tokens as a nested attribute of the returned parse results. NOTE: this returns a *copy* of the original :class:`ParserElement` object; this is so that the client can define a basic element, such as an integer, and reference it in multiple places with different names. You can also set results names using the abbreviated syntax, ``expr("name")`` in place of ``expr.setResultsName("name")`` - see :class:`__call__`. Example:: date_str = (integer.setResultsName("year") + '/' + integer.setResultsName("month") + '/' + integer.setResultsName("day")) # equivalent form: date_str = integer("year") + '/' + integer("month") + '/' + integer("day") """ return self._setResultsName(name, listAllMatches) def _setResultsName(self, name, listAllMatches=False): newself = self.copy() if name.endswith("*"): name = name[:-1] listAllMatches = True newself.resultsName = name newself.modalResults = not listAllMatches return newself def setBreak(self, breakFlag=True): """Method to invoke the Python pdb debugger when this element is about to be parsed. Set ``breakFlag`` to True to enable, False to disable. """ if breakFlag: _parseMethod = self._parse def breaker(instring, loc, doActions=True, callPreParse=True): import pdb # this call to pdb.set_trace() is intentional, not a checkin error pdb.set_trace() return _parseMethod(instring, loc, doActions, callPreParse) breaker._originalParseMethod = _parseMethod self._parse = breaker else: if hasattr(self._parse, "_originalParseMethod"): self._parse = self._parse._originalParseMethod return self def setParseAction(self, *fns, **kwargs): """ Define one or more actions to perform when successfully matching parse element definition. Parse action fn is a callable method with 0-3 arguments, called as ``fn(s, loc, toks)`` , ``fn(loc, toks)`` , ``fn(toks)`` , or just ``fn()`` , where: - s = the original string being parsed (see note below) - loc = the location of the matching substring - toks = a list of the matched tokens, packaged as a :class:`ParseResults` object If the functions in fns modify the tokens, they can return them as the return value from fn, and the modified list of tokens will replace the original. Otherwise, fn does not need to return any value. If None is passed as the parse action, all previously added parse actions for this expression are cleared. Optional keyword arguments: - callDuringTry = (default= ``False``) indicate if parse action should be run during lookaheads and alternate testing Note: the default parsing behavior is to expand tabs in the input string before starting the parsing process. See :class:`parseString for more information on parsing strings containing ```` s, and suggested methods to maintain a consistent view of the parsed string, the parse location, and line and column positions within the parsed string. Example:: integer = Word(nums) date_str = integer + '/' + integer + '/' + integer date_str.parseString("1999/12/31") # -> ['1999', '/', '12', '/', '31'] # use parse action to convert to ints at parse time integer = Word(nums).setParseAction(lambda toks: int(toks[0])) date_str = integer + '/' + integer + '/' + integer # note that integer fields are now ints, not strings date_str.parseString("1999/12/31") # -> [1999, '/', 12, '/', 31] """ if list(fns) == [None,]: self.parseAction = [] else: if not all(callable(fn) for fn in fns): raise TypeError("parse actions must be callable") self.parseAction = list(map(_trim_arity, list(fns))) self.callDuringTry = kwargs.get("callDuringTry", False) return self def addParseAction(self, *fns, **kwargs): """ Add one or more parse actions to expression's list of parse actions. See :class:`setParseAction`. See examples in :class:`copy`. """ self.parseAction += list(map(_trim_arity, list(fns))) self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False) return self def addCondition(self, *fns, **kwargs): """Add a boolean predicate function to expression's list of parse actions. See :class:`setParseAction` for function call signatures. Unlike ``setParseAction``, functions passed to ``addCondition`` need to return boolean success/fail of the condition. Optional keyword arguments: - message = define a custom message to be used in the raised exception - fatal = if True, will raise ParseFatalException to stop parsing immediately; otherwise will raise ParseException Example:: integer = Word(nums).setParseAction(lambda toks: int(toks[0])) year_int = integer.copy() year_int.addCondition(lambda toks: toks[0] >= 2000, message="Only support years 2000 and later") date_str = year_int + '/' + integer + '/' + integer result = date_str.parseString("1999/12/31") # -> Exception: Only support years 2000 and later (at char 0), (line:1, col:1) """ for fn in fns: self.parseAction.append(conditionAsParseAction(fn, message=kwargs.get('message'), fatal=kwargs.get('fatal', False))) self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False) return self def setFailAction(self, fn): """Define action to perform if parsing fails at this expression. Fail acton fn is a callable function that takes the arguments ``fn(s, loc, expr, err)`` where: - s = string being parsed - loc = location where expression match was attempted and failed - expr = the parse expression that failed - err = the exception thrown The function returns no value. It may throw :class:`ParseFatalException` if it is desired to stop parsing immediately.""" self.failAction = fn return self def _skipIgnorables(self, instring, loc): exprsFound = True while exprsFound: exprsFound = False for e in self.ignoreExprs: try: while 1: loc, dummy = e._parse(instring, loc) exprsFound = True except ParseException: pass return loc def preParse(self, instring, loc): if self.ignoreExprs: loc = self._skipIgnorables(instring, loc) if self.skipWhitespace: wt = self.whiteChars instrlen = len(instring) while loc < instrlen and instring[loc] in wt: loc += 1 return loc def parseImpl(self, instring, loc, doActions=True): return loc, [] def postParse(self, instring, loc, tokenlist): return tokenlist # ~ @profile def _parseNoCache(self, instring, loc, doActions=True, callPreParse=True): TRY, MATCH, FAIL = 0, 1, 2 debugging = (self.debug) # and doActions) if debugging or self.failAction: # ~ print ("Match", self, "at loc", loc, "(%d, %d)" % (lineno(loc, instring), col(loc, instring))) if self.debugActions[TRY]: self.debugActions[TRY](instring, loc, self) try: if callPreParse and self.callPreparse: preloc = self.preParse(instring, loc) else: preloc = loc tokensStart = preloc if self.mayIndexError or preloc >= len(instring): try: loc, tokens = self.parseImpl(instring, preloc, doActions) except IndexError: raise ParseException(instring, len(instring), self.errmsg, self) else: loc, tokens = self.parseImpl(instring, preloc, doActions) except Exception as err: # ~ print ("Exception raised:", err) if self.debugActions[FAIL]: self.debugActions[FAIL](instring, tokensStart, self, err) if self.failAction: self.failAction(instring, tokensStart, self, err) raise else: if callPreParse and self.callPreparse: preloc = self.preParse(instring, loc) else: preloc = loc tokensStart = preloc if self.mayIndexError or preloc >= len(instring): try: loc, tokens = self.parseImpl(instring, preloc, doActions) except IndexError: raise ParseException(instring, len(instring), self.errmsg, self) else: loc, tokens = self.parseImpl(instring, preloc, doActions) tokens = self.postParse(instring, loc, tokens) retTokens = ParseResults(tokens, self.resultsName, asList=self.saveAsList, modal=self.modalResults) if self.parseAction and (doActions or self.callDuringTry): if debugging: try: for fn in self.parseAction: try: tokens = fn(instring, tokensStart, retTokens) except IndexError as parse_action_exc: exc = ParseException("exception raised in parse action") exc.__cause__ = parse_action_exc raise exc if tokens is not None and tokens is not retTokens: retTokens = ParseResults(tokens, self.resultsName, asList=self.saveAsList and isinstance(tokens, (ParseResults, list)), modal=self.modalResults) except Exception as err: # ~ print "Exception raised in user parse action:", err if self.debugActions[FAIL]: self.debugActions[FAIL](instring, tokensStart, self, err) raise else: for fn in self.parseAction: try: tokens = fn(instring, tokensStart, retTokens) except IndexError as parse_action_exc: exc = ParseException("exception raised in parse action") exc.__cause__ = parse_action_exc raise exc if tokens is not None and tokens is not retTokens: retTokens = ParseResults(tokens, self.resultsName, asList=self.saveAsList and isinstance(tokens, (ParseResults, list)), modal=self.modalResults) if debugging: # ~ print ("Matched", self, "->", retTokens.asList()) if self.debugActions[MATCH]: self.debugActions[MATCH](instring, tokensStart, loc, self, retTokens) return loc, retTokens def tryParse(self, instring, loc): try: return self._parse(instring, loc, doActions=False)[0] except ParseFatalException: raise ParseException(instring, loc, self.errmsg, self) def canParseNext(self, instring, loc): try: self.tryParse(instring, loc) except (ParseException, IndexError): return False else: return True class _UnboundedCache(object): def __init__(self): cache = {} self.not_in_cache = not_in_cache = object() def get(self, key): return cache.get(key, not_in_cache) def set(self, key, value): cache[key] = value def clear(self): cache.clear() def cache_len(self): return len(cache) self.get = types.MethodType(get, self) self.set = types.MethodType(set, self) self.clear = types.MethodType(clear, self) self.__len__ = types.MethodType(cache_len, self) if _OrderedDict is not None: class _FifoCache(object): def __init__(self, size): self.not_in_cache = not_in_cache = object() cache = _OrderedDict() def get(self, key): return cache.get(key, not_in_cache) def set(self, key, value): cache[key] = value while len(cache) > size: try: cache.popitem(False) except KeyError: pass def clear(self): cache.clear() def cache_len(self): return len(cache) self.get = types.MethodType(get, self) self.set = types.MethodType(set, self) self.clear = types.MethodType(clear, self) self.__len__ = types.MethodType(cache_len, self) else: class _FifoCache(object): def __init__(self, size): self.not_in_cache = not_in_cache = object() cache = {} key_fifo = collections.deque([], size) def get(self, key): return cache.get(key, not_in_cache) def set(self, key, value): cache[key] = value while len(key_fifo) > size: cache.pop(key_fifo.popleft(), None) key_fifo.append(key) def clear(self): cache.clear() key_fifo.clear() def cache_len(self): return len(cache) self.get = types.MethodType(get, self) self.set = types.MethodType(set, self) self.clear = types.MethodType(clear, self) self.__len__ = types.MethodType(cache_len, self) # argument cache for optimizing repeated calls when backtracking through recursive expressions packrat_cache = {} # this is set later by enabledPackrat(); this is here so that resetCache() doesn't fail packrat_cache_lock = RLock() packrat_cache_stats = [0, 0] # this method gets repeatedly called during backtracking with the same arguments - # we can cache these arguments and save ourselves the trouble of re-parsing the contained expression def _parseCache(self, instring, loc, doActions=True, callPreParse=True): HIT, MISS = 0, 1 lookup = (self, instring, loc, callPreParse, doActions) with ParserElement.packrat_cache_lock: cache = ParserElement.packrat_cache value = cache.get(lookup) if value is cache.not_in_cache: ParserElement.packrat_cache_stats[MISS] += 1 try: value = self._parseNoCache(instring, loc, doActions, callPreParse) except ParseBaseException as pe: # cache a copy of the exception, without the traceback cache.set(lookup, pe.__class__(*pe.args)) raise else: cache.set(lookup, (value[0], value[1].copy())) return value else: ParserElement.packrat_cache_stats[HIT] += 1 if isinstance(value, Exception): raise value return value[0], value[1].copy() _parse = _parseNoCache @staticmethod def resetCache(): ParserElement.packrat_cache.clear() ParserElement.packrat_cache_stats[:] = [0] * len(ParserElement.packrat_cache_stats) _packratEnabled = False @staticmethod def enablePackrat(cache_size_limit=128): """Enables "packrat" parsing, which adds memoizing to the parsing logic. Repeated parse attempts at the same string location (which happens often in many complex grammars) can immediately return a cached value, instead of re-executing parsing/validating code. Memoizing is done of both valid results and parsing exceptions. Parameters: - cache_size_limit - (default= ``128``) - if an integer value is provided will limit the size of the packrat cache; if None is passed, then the cache size will be unbounded; if 0 is passed, the cache will be effectively disabled. This speedup may break existing programs that use parse actions that have side-effects. For this reason, packrat parsing is disabled when you first import pyparsing. To activate the packrat feature, your program must call the class method :class:`ParserElement.enablePackrat`. For best results, call ``enablePackrat()`` immediately after importing pyparsing. Example:: import pyparsing pyparsing.ParserElement.enablePackrat() """ if not ParserElement._packratEnabled: ParserElement._packratEnabled = True if cache_size_limit is None: ParserElement.packrat_cache = ParserElement._UnboundedCache() else: ParserElement.packrat_cache = ParserElement._FifoCache(cache_size_limit) ParserElement._parse = ParserElement._parseCache def parseString(self, instring, parseAll=False): """ Execute the parse expression with the given string. This is the main interface to the client code, once the complete expression has been built. Returns the parsed data as a :class:`ParseResults` object, which may be accessed as a list, or as a dict or object with attributes if the given parser includes results names. If you want the grammar to require that the entire input string be successfully parsed, then set ``parseAll`` to True (equivalent to ending the grammar with ``StringEnd()``). Note: ``parseString`` implicitly calls ``expandtabs()`` on the input string, in order to report proper column numbers in parse actions. If the input string contains tabs and the grammar uses parse actions that use the ``loc`` argument to index into the string being parsed, you can ensure you have a consistent view of the input string by: - calling ``parseWithTabs`` on your grammar before calling ``parseString`` (see :class:`parseWithTabs`) - define your parse action using the full ``(s, loc, toks)`` signature, and reference the input string using the parse action's ``s`` argument - explictly expand the tabs in your input string before calling ``parseString`` Example:: Word('a').parseString('aaaaabaaa') # -> ['aaaaa'] Word('a').parseString('aaaaabaaa', parseAll=True) # -> Exception: Expected end of text """ ParserElement.resetCache() if not self.streamlined: self.streamline() # ~ self.saveAsList = True for e in self.ignoreExprs: e.streamline() if not self.keepTabs: instring = instring.expandtabs() try: loc, tokens = self._parse(instring, 0) if parseAll: loc = self.preParse(instring, loc) se = Empty() + StringEnd() se._parse(instring, loc) except ParseBaseException as exc: if ParserElement.verbose_stacktrace: raise else: # catch and re-raise exception from here, clearing out pyparsing internal stack trace if getattr(exc, '__traceback__', None) is not None: exc.__traceback__ = self._trim_traceback(exc.__traceback__) raise exc else: return tokens def scanString(self, instring, maxMatches=_MAX_INT, overlap=False): """ Scan the input string for expression matches. Each match will return the matching tokens, start location, and end location. May be called with optional ``maxMatches`` argument, to clip scanning after 'n' matches are found. If ``overlap`` is specified, then overlapping matches will be reported. Note that the start and end locations are reported relative to the string being parsed. See :class:`parseString` for more information on parsing strings with embedded tabs. Example:: source = "sldjf123lsdjjkf345sldkjf879lkjsfd987" print(source) for tokens, start, end in Word(alphas).scanString(source): print(' '*start + '^'*(end-start)) print(' '*start + tokens[0]) prints:: sldjf123lsdjjkf345sldkjf879lkjsfd987 ^^^^^ sldjf ^^^^^^^ lsdjjkf ^^^^^^ sldkjf ^^^^^^ lkjsfd """ if not self.streamlined: self.streamline() for e in self.ignoreExprs: e.streamline() if not self.keepTabs: instring = _ustr(instring).expandtabs() instrlen = len(instring) loc = 0 preparseFn = self.preParse parseFn = self._parse ParserElement.resetCache() matches = 0 try: while loc <= instrlen and matches < maxMatches: try: preloc = preparseFn(instring, loc) nextLoc, tokens = parseFn(instring, preloc, callPreParse=False) except ParseException: loc = preloc + 1 else: if nextLoc > loc: matches += 1 yield tokens, preloc, nextLoc if overlap: nextloc = preparseFn(instring, loc) if nextloc > loc: loc = nextLoc else: loc += 1 else: loc = nextLoc else: loc = preloc + 1 except ParseBaseException as exc: if ParserElement.verbose_stacktrace: raise else: # catch and re-raise exception from here, clearing out pyparsing internal stack trace if getattr(exc, '__traceback__', None) is not None: exc.__traceback__ = self._trim_traceback(exc.__traceback__) raise exc def transformString(self, instring): """ Extension to :class:`scanString`, to modify matching text with modified tokens that may be returned from a parse action. To use ``transformString``, define a grammar and attach a parse action to it that modifies the returned token list. Invoking ``transformString()`` on a target string will then scan for matches, and replace the matched text patterns according to the logic in the parse action. ``transformString()`` returns the resulting transformed string. Example:: wd = Word(alphas) wd.setParseAction(lambda toks: toks[0].title()) print(wd.transformString("now is the winter of our discontent made glorious summer by this sun of york.")) prints:: Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York. """ out = [] lastE = 0 # force preservation of s, to minimize unwanted transformation of string, and to # keep string locs straight between transformString and scanString self.keepTabs = True try: for t, s, e in self.scanString(instring): out.append(instring[lastE:s]) if t: if isinstance(t, ParseResults): out += t.asList() elif isinstance(t, list): out += t else: out.append(t) lastE = e out.append(instring[lastE:]) out = [o for o in out if o] return "".join(map(_ustr, _flatten(out))) except ParseBaseException as exc: if ParserElement.verbose_stacktrace: raise else: # catch and re-raise exception from here, clearing out pyparsing internal stack trace if getattr(exc, '__traceback__', None) is not None: exc.__traceback__ = self._trim_traceback(exc.__traceback__) raise exc def searchString(self, instring, maxMatches=_MAX_INT): """ Another extension to :class:`scanString`, simplifying the access to the tokens found to match the given parse expression. May be called with optional ``maxMatches`` argument, to clip searching after 'n' matches are found. Example:: # a capitalized word starts with an uppercase letter, followed by zero or more lowercase letters cap_word = Word(alphas.upper(), alphas.lower()) print(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity")) # the sum() builtin can be used to merge results into a single ParseResults object print(sum(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity"))) prints:: [['More'], ['Iron'], ['Lead'], ['Gold'], ['I'], ['Electricity']] ['More', 'Iron', 'Lead', 'Gold', 'I', 'Electricity'] """ try: return ParseResults([t for t, s, e in self.scanString(instring, maxMatches)]) except ParseBaseException as exc: if ParserElement.verbose_stacktrace: raise else: # catch and re-raise exception from here, clearing out pyparsing internal stack trace if getattr(exc, '__traceback__', None) is not None: exc.__traceback__ = self._trim_traceback(exc.__traceback__) raise exc def split(self, instring, maxsplit=_MAX_INT, includeSeparators=False): """ Generator method to split a string using the given expression as a separator. May be called with optional ``maxsplit`` argument, to limit the number of splits; and the optional ``includeSeparators`` argument (default= ``False``), if the separating matching text should be included in the split results. Example:: punc = oneOf(list(".,;:/-!?")) print(list(punc.split("This, this?, this sentence, is badly punctuated!"))) prints:: ['This', ' this', '', ' this sentence', ' is badly punctuated', ''] """ splits = 0 last = 0 for t, s, e in self.scanString(instring, maxMatches=maxsplit): yield instring[last:s] if includeSeparators: yield t[0] last = e yield instring[last:] def __add__(self, other): """ Implementation of + operator - returns :class:`And`. Adding strings to a ParserElement converts them to :class:`Literal`s by default. Example:: greet = Word(alphas) + "," + Word(alphas) + "!" hello = "Hello, World!" print (hello, "->", greet.parseString(hello)) prints:: Hello, World! -> ['Hello', ',', 'World', '!'] ``...`` may be used as a parse expression as a short form of :class:`SkipTo`. Literal('start') + ... + Literal('end') is equivalent to: Literal('start') + SkipTo('end')("_skipped*") + Literal('end') Note that the skipped text is returned with '_skipped' as a results name, and to support having multiple skips in the same parser, the value returned is a list of all skipped text. """ if other is Ellipsis: return _PendingSkip(self) if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return And([self, other]) def __radd__(self, other): """ Implementation of + operator when left operand is not a :class:`ParserElement` """ if other is Ellipsis: return SkipTo(self)("_skipped*") + self if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return other + self def __sub__(self, other): """ Implementation of - operator, returns :class:`And` with error stop """ if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return self + And._ErrorStop() + other def __rsub__(self, other): """ Implementation of - operator when left operand is not a :class:`ParserElement` """ if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return other - self def __mul__(self, other): """ Implementation of * operator, allows use of ``expr * 3`` in place of ``expr + expr + expr``. Expressions may also me multiplied by a 2-integer tuple, similar to ``{min, max}`` multipliers in regular expressions. Tuples may also include ``None`` as in: - ``expr*(n, None)`` or ``expr*(n, )`` is equivalent to ``expr*n + ZeroOrMore(expr)`` (read as "at least n instances of ``expr``") - ``expr*(None, n)`` is equivalent to ``expr*(0, n)`` (read as "0 to n instances of ``expr``") - ``expr*(None, None)`` is equivalent to ``ZeroOrMore(expr)`` - ``expr*(1, None)`` is equivalent to ``OneOrMore(expr)`` Note that ``expr*(None, n)`` does not raise an exception if more than n exprs exist in the input stream; that is, ``expr*(None, n)`` does not enforce a maximum number of expr occurrences. If this behavior is desired, then write ``expr*(None, n) + ~expr`` """ if other is Ellipsis: other = (0, None) elif isinstance(other, tuple) and other[:1] == (Ellipsis,): other = ((0, ) + other[1:] + (None,))[:2] if isinstance(other, int): minElements, optElements = other, 0 elif isinstance(other, tuple): other = tuple(o if o is not Ellipsis else None for o in other) other = (other + (None, None))[:2] if other[0] is None: other = (0, other[1]) if isinstance(other[0], int) and other[1] is None: if other[0] == 0: return ZeroOrMore(self) if other[0] == 1: return OneOrMore(self) else: return self * other[0] + ZeroOrMore(self) elif isinstance(other[0], int) and isinstance(other[1], int): minElements, optElements = other optElements -= minElements else: raise TypeError("cannot multiply 'ParserElement' and ('%s', '%s') objects", type(other[0]), type(other[1])) else: raise TypeError("cannot multiply 'ParserElement' and '%s' objects", type(other)) if minElements < 0: raise ValueError("cannot multiply ParserElement by negative value") if optElements < 0: raise ValueError("second tuple value must be greater or equal to first tuple value") if minElements == optElements == 0: raise ValueError("cannot multiply ParserElement by 0 or (0, 0)") if optElements: def makeOptionalList(n): if n > 1: return Optional(self + makeOptionalList(n - 1)) else: return Optional(self) if minElements: if minElements == 1: ret = self + makeOptionalList(optElements) else: ret = And([self] * minElements) + makeOptionalList(optElements) else: ret = makeOptionalList(optElements) else: if minElements == 1: ret = self else: ret = And([self] * minElements) return ret def __rmul__(self, other): return self.__mul__(other) def __or__(self, other): """ Implementation of | operator - returns :class:`MatchFirst` """ if other is Ellipsis: return _PendingSkip(self, must_skip=True) if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return MatchFirst([self, other]) def __ror__(self, other): """ Implementation of | operator when left operand is not a :class:`ParserElement` """ if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return other | self def __xor__(self, other): """ Implementation of ^ operator - returns :class:`Or` """ if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return Or([self, other]) def __rxor__(self, other): """ Implementation of ^ operator when left operand is not a :class:`ParserElement` """ if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return other ^ self def __and__(self, other): """ Implementation of & operator - returns :class:`Each` """ if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return Each([self, other]) def __rand__(self, other): """ Implementation of & operator when left operand is not a :class:`ParserElement` """ if isinstance(other, basestring): other = self._literalStringClass(other) if not isinstance(other, ParserElement): warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), SyntaxWarning, stacklevel=2) return None return other & self def __invert__(self): """ Implementation of ~ operator - returns :class:`NotAny` """ return NotAny(self) def __iter__(self): # must implement __iter__ to override legacy use of sequential access to __getitem__ to # iterate over a sequence raise TypeError('%r object is not iterable' % self.__class__.__name__) def __getitem__(self, key): """ use ``[]`` indexing notation as a short form for expression repetition: - ``expr[n]`` is equivalent to ``expr*n`` - ``expr[m, n]`` is equivalent to ``expr*(m, n)`` - ``expr[n, ...]`` or ``expr[n,]`` is equivalent to ``expr*n + ZeroOrMore(expr)`` (read as "at least n instances of ``expr``") - ``expr[..., n]`` is equivalent to ``expr*(0, n)`` (read as "0 to n instances of ``expr``") - ``expr[...]`` and ``expr[0, ...]`` are equivalent to ``ZeroOrMore(expr)`` - ``expr[1, ...]`` is equivalent to ``OneOrMore(expr)`` ``None`` may be used in place of ``...``. Note that ``expr[..., n]`` and ``expr[m, n]``do not raise an exception if more than ``n`` ``expr``s exist in the input stream. If this behavior is desired, then write ``expr[..., n] + ~expr``. """ # convert single arg keys to tuples try: if isinstance(key, str): key = (key,) iter(key) except TypeError: key = (key, key) if len(key) > 2: warnings.warn("only 1 or 2 index arguments supported ({0}{1})".format(key[:5], '... [{0}]'.format(len(key)) if len(key) > 5 else '')) # clip to 2 elements ret = self * tuple(key[:2]) return ret def __call__(self, name=None): """ Shortcut for :class:`setResultsName`, with ``listAllMatches=False``. If ``name`` is given with a trailing ``'*'`` character, then ``listAllMatches`` will be passed as ``True``. If ``name` is omitted, same as calling :class:`copy`. Example:: # these are equivalent userdata = Word(alphas).setResultsName("name") + Word(nums + "-").setResultsName("socsecno") userdata = Word(alphas)("name") + Word(nums + "-")("socsecno") """ if name is not None: return self._setResultsName(name) else: return self.copy() def suppress(self): """ Suppresses the output of this :class:`ParserElement`; useful to keep punctuation from cluttering up returned output. """ return Suppress(self) def leaveWhitespace(self): """ Disables the skipping of whitespace before matching the characters in the :class:`ParserElement`'s defined pattern. This is normally only used internally by the pyparsing module, but may be needed in some whitespace-sensitive grammars. """ self.skipWhitespace = False return self def setWhitespaceChars(self, chars): """ Overrides the default whitespace chars """ self.skipWhitespace = True self.whiteChars = chars self.copyDefaultWhiteChars = False return self def parseWithTabs(self): """ Overrides default behavior to expand ````s to spaces before parsing the input string. Must be called before ``parseString`` when the input grammar contains elements that match ```` characters. """ self.keepTabs = True return self def ignore(self, other): """ Define expression to be ignored (e.g., comments) while doing pattern matching; may be called repeatedly, to define multiple comment or other ignorable patterns. Example:: patt = OneOrMore(Word(alphas)) patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj'] patt.ignore(cStyleComment) patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj', 'lskjd'] """ if isinstance(other, basestring): other = Suppress(other) if isinstance(other, Suppress): if other not in self.ignoreExprs: self.ignoreExprs.append(other) else: self.ignoreExprs.append(Suppress(other.copy())) return self def setDebugActions(self, startAction, successAction, exceptionAction): """ Enable display of debugging messages while doing pattern matching. """ self.debugActions = (startAction or _defaultStartDebugAction, successAction or _defaultSuccessDebugAction, exceptionAction or _defaultExceptionDebugAction) self.debug = True return self def setDebug(self, flag=True): """ Enable display of debugging messages while doing pattern matching. Set ``flag`` to True to enable, False to disable. Example:: wd = Word(alphas).setName("alphaword") integer = Word(nums).setName("numword") term = wd | integer # turn on debugging for wd wd.setDebug() OneOrMore(term).parseString("abc 123 xyz 890") prints:: Match alphaword at loc 0(1,1) Matched alphaword -> ['abc'] Match alphaword at loc 3(1,4) Exception raised:Expected alphaword (at char 4), (line:1, col:5) Match alphaword at loc 7(1,8) Matched alphaword -> ['xyz'] Match alphaword at loc 11(1,12) Exception raised:Expected alphaword (at char 12), (line:1, col:13) Match alphaword at loc 15(1,16) Exception raised:Expected alphaword (at char 15), (line:1, col:16) The output shown is that produced by the default debug actions - custom debug actions can be specified using :class:`setDebugActions`. Prior to attempting to match the ``wd`` expression, the debugging message ``"Match at loc (,)"`` is shown. Then if the parse succeeds, a ``"Matched"`` message is shown, or an ``"Exception raised"`` message is shown. Also note the use of :class:`setName` to assign a human-readable name to the expression, which makes debugging and exception messages easier to understand - for instance, the default name created for the :class:`Word` expression without calling ``setName`` is ``"W:(ABCD...)"``. """ if flag: self.setDebugActions(_defaultStartDebugAction, _defaultSuccessDebugAction, _defaultExceptionDebugAction) else: self.debug = False return self def __str__(self): return self.name def __repr__(self): return _ustr(self) def streamline(self): self.streamlined = True self.strRepr = None return self def checkRecursion(self, parseElementList): pass def validate(self, validateTrace=None): """ Check defined expressions for valid structure, check for infinite recursive definitions. """ self.checkRecursion([]) def parseFile(self, file_or_filename, parseAll=False): """ Execute the parse expression on the given file or filename. If a filename is specified (instead of a file object), the entire file is opened, read, and closed before parsing. """ try: file_contents = file_or_filename.read() except AttributeError: with open(file_or_filename, "r") as f: file_contents = f.read() try: return self.parseString(file_contents, parseAll) except ParseBaseException as exc: if ParserElement.verbose_stacktrace: raise else: # catch and re-raise exception from here, clearing out pyparsing internal stack trace if getattr(exc, '__traceback__', None) is not None: exc.__traceback__ = self._trim_traceback(exc.__traceback__) raise exc def __eq__(self, other): if self is other: return True elif isinstance(other, basestring): return self.matches(other) elif isinstance(other, ParserElement): return vars(self) == vars(other) return False def __ne__(self, other): return not (self == other) def __hash__(self): return id(self) def __req__(self, other): return self == other def __rne__(self, other): return not (self == other) def matches(self, testString, parseAll=True): """ Method for quick testing of a parser against a test string. Good for simple inline microtests of sub expressions while building up larger parser. Parameters: - testString - to test against this expression for a match - parseAll - (default= ``True``) - flag to pass to :class:`parseString` when running tests Example:: expr = Word(nums) assert expr.matches("100") """ try: self.parseString(_ustr(testString), parseAll=parseAll) return True except ParseBaseException: return False def runTests(self, tests, parseAll=True, comment='#', fullDump=True, printResults=True, failureTests=False, postParse=None, file=None): """ Execute the parse expression on a series of test strings, showing each test, the parsed results or where the parse failed. Quick and easy way to run a parse expression against a list of sample strings. Parameters: - tests - a list of separate test strings, or a multiline string of test strings - parseAll - (default= ``True``) - flag to pass to :class:`parseString` when running tests - comment - (default= ``'#'``) - expression for indicating embedded comments in the test string; pass None to disable comment filtering - fullDump - (default= ``True``) - dump results as list followed by results names in nested outline; if False, only dump nested list - printResults - (default= ``True``) prints test output to stdout - failureTests - (default= ``False``) indicates if these tests are expected to fail parsing - postParse - (default= ``None``) optional callback for successful parse results; called as `fn(test_string, parse_results)` and returns a string to be added to the test output - file - (default=``None``) optional file-like object to which test output will be written; if None, will default to ``sys.stdout`` Returns: a (success, results) tuple, where success indicates that all tests succeeded (or failed if ``failureTests`` is True), and the results contain a list of lines of each test's output Example:: number_expr = pyparsing_common.number.copy() result = number_expr.runTests(''' # unsigned integer 100 # negative integer -100 # float with scientific notation 6.02e23 # integer with scientific notation 1e-12 ''') print("Success" if result[0] else "Failed!") result = number_expr.runTests(''' # stray character 100Z # missing leading digit before '.' -.100 # too many '.' 3.14.159 ''', failureTests=True) print("Success" if result[0] else "Failed!") prints:: # unsigned integer 100 [100] # negative integer -100 [-100] # float with scientific notation 6.02e23 [6.02e+23] # integer with scientific notation 1e-12 [1e-12] Success # stray character 100Z ^ FAIL: Expected end of text (at char 3), (line:1, col:4) # missing leading digit before '.' -.100 ^ FAIL: Expected {real number with scientific notation | real number | signed integer} (at char 0), (line:1, col:1) # too many '.' 3.14.159 ^ FAIL: Expected end of text (at char 4), (line:1, col:5) Success Each test string must be on a single line. If you want to test a string that spans multiple lines, create a test like this:: expr.runTest(r"this is a test\\n of strings that spans \\n 3 lines") (Note that this is a raw string literal, you must include the leading 'r'.) """ if isinstance(tests, basestring): tests = list(map(str.strip, tests.rstrip().splitlines())) if isinstance(comment, basestring): comment = Literal(comment) if file is None: file = sys.stdout print_ = file.write allResults = [] comments = [] success = True NL = Literal(r'\n').addParseAction(replaceWith('\n')).ignore(quotedString) BOM = u'\ufeff' for t in tests: if comment is not None and comment.matches(t, False) or comments and not t: comments.append(t) continue if not t: continue out = ['\n' + '\n'.join(comments) if comments else '', t] comments = [] try: # convert newline marks to actual newlines, and strip leading BOM if present t = NL.transformString(t.lstrip(BOM)) result = self.parseString(t, parseAll=parseAll) except ParseBaseException as pe: fatal = "(FATAL)" if isinstance(pe, ParseFatalException) else "" if '\n' in t: out.append(line(pe.loc, t)) out.append(' ' * (col(pe.loc, t) - 1) + '^' + fatal) else: out.append(' ' * pe.loc + '^' + fatal) out.append("FAIL: " + str(pe)) success = success and failureTests result = pe except Exception as exc: out.append("FAIL-EXCEPTION: " + str(exc)) success = success and failureTests result = exc else: success = success and not failureTests if postParse is not None: try: pp_value = postParse(t, result) if pp_value is not None: if isinstance(pp_value, ParseResults): out.append(pp_value.dump()) else: out.append(str(pp_value)) else: out.append(result.dump()) except Exception as e: out.append(result.dump(full=fullDump)) out.append("{0} failed: {1}: {2}".format(postParse.__name__, type(e).__name__, e)) else: out.append(result.dump(full=fullDump)) if printResults: if fullDump: out.append('') print_('\n'.join(out)) allResults.append((t, result)) return success, allResults class _PendingSkip(ParserElement): # internal placeholder class to hold a place were '...' is added to a parser element, # once another ParserElement is added, this placeholder will be replaced with a SkipTo def __init__(self, expr, must_skip=False): super(_PendingSkip, self).__init__() self.strRepr = str(expr + Empty()).replace('Empty', '...') self.name = self.strRepr self.anchor = expr self.must_skip = must_skip def __add__(self, other): skipper = SkipTo(other).setName("...")("_skipped*") if self.must_skip: def must_skip(t): if not t._skipped or t._skipped.asList() == ['']: del t[0] t.pop("_skipped", None) def show_skip(t): if t._skipped.asList()[-1:] == ['']: skipped = t.pop('_skipped') t['_skipped'] = 'missing <' + repr(self.anchor) + '>' return (self.anchor + skipper().addParseAction(must_skip) | skipper().addParseAction(show_skip)) + other return self.anchor + skipper + other def __repr__(self): return self.strRepr def parseImpl(self, *args): raise Exception("use of `...` expression without following SkipTo target expression") class Token(ParserElement): """Abstract :class:`ParserElement` subclass, for defining atomic matching patterns. """ def __init__(self): super(Token, self).__init__(savelist=False) class Empty(Token): """An empty token, will always match. """ def __init__(self): super(Empty, self).__init__() self.name = "Empty" self.mayReturnEmpty = True self.mayIndexError = False class NoMatch(Token): """A token that will never match. """ def __init__(self): super(NoMatch, self).__init__() self.name = "NoMatch" self.mayReturnEmpty = True self.mayIndexError = False self.errmsg = "Unmatchable token" def parseImpl(self, instring, loc, doActions=True): raise ParseException(instring, loc, self.errmsg, self) class Literal(Token): """Token to exactly match a specified string. Example:: Literal('blah').parseString('blah') # -> ['blah'] Literal('blah').parseString('blahfooblah') # -> ['blah'] Literal('blah').parseString('bla') # -> Exception: Expected "blah" For case-insensitive matching, use :class:`CaselessLiteral`. For keyword matching (force word break before and after the matched string), use :class:`Keyword` or :class:`CaselessKeyword`. """ def __init__(self, matchString): super(Literal, self).__init__() self.match = matchString self.matchLen = len(matchString) try: self.firstMatchChar = matchString[0] except IndexError: warnings.warn("null string passed to Literal; use Empty() instead", SyntaxWarning, stacklevel=2) self.__class__ = Empty self.name = '"%s"' % _ustr(self.match) self.errmsg = "Expected " + self.name self.mayReturnEmpty = False self.mayIndexError = False # Performance tuning: modify __class__ to select # a parseImpl optimized for single-character check if self.matchLen == 1 and type(self) is Literal: self.__class__ = _SingleCharLiteral def parseImpl(self, instring, loc, doActions=True): if instring[loc] == self.firstMatchChar and instring.startswith(self.match, loc): return loc + self.matchLen, self.match raise ParseException(instring, loc, self.errmsg, self) class _SingleCharLiteral(Literal): def parseImpl(self, instring, loc, doActions=True): if instring[loc] == self.firstMatchChar: return loc + 1, self.match raise ParseException(instring, loc, self.errmsg, self) _L = Literal ParserElement._literalStringClass = Literal class Keyword(Token): """Token to exactly match a specified string as a keyword, that is, it must be immediately followed by a non-keyword character. Compare with :class:`Literal`: - ``Literal("if")`` will match the leading ``'if'`` in ``'ifAndOnlyIf'``. - ``Keyword("if")`` will not; it will only match the leading ``'if'`` in ``'if x=1'``, or ``'if(y==2)'`` Accepts two optional constructor arguments in addition to the keyword string: - ``identChars`` is a string of characters that would be valid identifier characters, defaulting to all alphanumerics + "_" and "$" - ``caseless`` allows case-insensitive matching, default is ``False``. Example:: Keyword("start").parseString("start") # -> ['start'] Keyword("start").parseString("starting") # -> Exception For case-insensitive matching, use :class:`CaselessKeyword`. """ DEFAULT_KEYWORD_CHARS = alphanums + "_$" def __init__(self, matchString, identChars=None, caseless=False): super(Keyword, self).__init__() if identChars is None: identChars = Keyword.DEFAULT_KEYWORD_CHARS self.match = matchString self.matchLen = len(matchString) try: self.firstMatchChar = matchString[0] except IndexError: warnings.warn("null string passed to Keyword; use Empty() instead", SyntaxWarning, stacklevel=2) self.name = '"%s"' % self.match self.errmsg = "Expected " + self.name self.mayReturnEmpty = False self.mayIndexError = False self.caseless = caseless if caseless: self.caselessmatch = matchString.upper() identChars = identChars.upper() self.identChars = set(identChars) def parseImpl(self, instring, loc, doActions=True): if self.caseless: if ((instring[loc:loc + self.matchLen].upper() == self.caselessmatch) and (loc >= len(instring) - self.matchLen or instring[loc + self.matchLen].upper() not in self.identChars) and (loc == 0 or instring[loc - 1].upper() not in self.identChars)): return loc + self.matchLen, self.match else: if instring[loc] == self.firstMatchChar: if ((self.matchLen == 1 or instring.startswith(self.match, loc)) and (loc >= len(instring) - self.matchLen or instring[loc + self.matchLen] not in self.identChars) and (loc == 0 or instring[loc - 1] not in self.identChars)): return loc + self.matchLen, self.match raise ParseException(instring, loc, self.errmsg, self) def copy(self): c = super(Keyword, self).copy() c.identChars = Keyword.DEFAULT_KEYWORD_CHARS return c @staticmethod def setDefaultKeywordChars(chars): """Overrides the default Keyword chars """ Keyword.DEFAULT_KEYWORD_CHARS = chars class CaselessLiteral(Literal): """Token to match a specified string, ignoring case of letters. Note: the matched results will always be in the case of the given match string, NOT the case of the input text. Example:: OneOrMore(CaselessLiteral("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD', 'CMD'] (Contrast with example for :class:`CaselessKeyword`.) """ def __init__(self, matchString): super(CaselessLiteral, self).__init__(matchString.upper()) # Preserve the defining literal. self.returnString = matchString self.name = "'%s'" % self.returnString self.errmsg = "Expected " + self.name def parseImpl(self, instring, loc, doActions=True): if instring[loc:loc + self.matchLen].upper() == self.match: return loc + self.matchLen, self.returnString raise ParseException(instring, loc, self.errmsg, self) class CaselessKeyword(Keyword): """ Caseless version of :class:`Keyword`. Example:: OneOrMore(CaselessKeyword("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD'] (Contrast with example for :class:`CaselessLiteral`.) """ def __init__(self, matchString, identChars=None): super(CaselessKeyword, self).__init__(matchString, identChars, caseless=True) class CloseMatch(Token): """A variation on :class:`Literal` which matches "close" matches, that is, strings with at most 'n' mismatching characters. :class:`CloseMatch` takes parameters: - ``match_string`` - string to be matched - ``maxMismatches`` - (``default=1``) maximum number of mismatches allowed to count as a match The results from a successful parse will contain the matched text from the input string and the following named results: - ``mismatches`` - a list of the positions within the match_string where mismatches were found - ``original`` - the original match_string used to compare against the input string If ``mismatches`` is an empty list, then the match was an exact match. Example:: patt = CloseMatch("ATCATCGAATGGA") patt.parseString("ATCATCGAAXGGA") # -> (['ATCATCGAAXGGA'], {'mismatches': [[9]], 'original': ['ATCATCGAATGGA']}) patt.parseString("ATCAXCGAAXGGA") # -> Exception: Expected 'ATCATCGAATGGA' (with up to 1 mismatches) (at char 0), (line:1, col:1) # exact match patt.parseString("ATCATCGAATGGA") # -> (['ATCATCGAATGGA'], {'mismatches': [[]], 'original': ['ATCATCGAATGGA']}) # close match allowing up to 2 mismatches patt = CloseMatch("ATCATCGAATGGA", maxMismatches=2) patt.parseString("ATCAXCGAAXGGA") # -> (['ATCAXCGAAXGGA'], {'mismatches': [[4, 9]], 'original': ['ATCATCGAATGGA']}) """ def __init__(self, match_string, maxMismatches=1): super(CloseMatch, self).__init__() self.name = match_string self.match_string = match_string self.maxMismatches = maxMismatches self.errmsg = "Expected %r (with up to %d mismatches)" % (self.match_string, self.maxMismatches) self.mayIndexError = False self.mayReturnEmpty = False def parseImpl(self, instring, loc, doActions=True): start = loc instrlen = len(instring) maxloc = start + len(self.match_string) if maxloc <= instrlen: match_string = self.match_string match_stringloc = 0 mismatches = [] maxMismatches = self.maxMismatches for match_stringloc, s_m in enumerate(zip(instring[loc:maxloc], match_string)): src, mat = s_m if src != mat: mismatches.append(match_stringloc) if len(mismatches) > maxMismatches: break else: loc = match_stringloc + 1 results = ParseResults([instring[start:loc]]) results['original'] = match_string results['mismatches'] = mismatches return loc, results raise ParseException(instring, loc, self.errmsg, self) class Word(Token): """Token for matching words composed of allowed character sets. Defined with string containing all allowed initial characters, an optional string containing allowed body characters (if omitted, defaults to the initial character set), and an optional minimum, maximum, and/or exact length. The default value for ``min`` is 1 (a minimum value < 1 is not valid); the default values for ``max`` and ``exact`` are 0, meaning no maximum or exact length restriction. An optional ``excludeChars`` parameter can list characters that might be found in the input ``bodyChars`` string; useful to define a word of all printables except for one or two characters, for instance. :class:`srange` is useful for defining custom character set strings for defining ``Word`` expressions, using range notation from regular expression character sets. A common mistake is to use :class:`Word` to match a specific literal string, as in ``Word("Address")``. Remember that :class:`Word` uses the string argument to define *sets* of matchable characters. This expression would match "Add", "AAA", "dAred", or any other word made up of the characters 'A', 'd', 'r', 'e', and 's'. To match an exact literal string, use :class:`Literal` or :class:`Keyword`. pyparsing includes helper strings for building Words: - :class:`alphas` - :class:`nums` - :class:`alphanums` - :class:`hexnums` - :class:`alphas8bit` (alphabetic characters in ASCII range 128-255 - accented, tilded, umlauted, etc.) - :class:`punc8bit` (non-alphabetic characters in ASCII range 128-255 - currency, symbols, superscripts, diacriticals, etc.) - :class:`printables` (any non-whitespace character) Example:: # a word composed of digits integer = Word(nums) # equivalent to Word("0123456789") or Word(srange("0-9")) # a word with a leading capital, and zero or more lowercase capital_word = Word(alphas.upper(), alphas.lower()) # hostnames are alphanumeric, with leading alpha, and '-' hostname = Word(alphas, alphanums + '-') # roman numeral (not a strict parser, accepts invalid mix of characters) roman = Word("IVXLCDM") # any string of non-whitespace characters, except for ',' csv_value = Word(printables, excludeChars=",") """ def __init__(self, initChars, bodyChars=None, min=1, max=0, exact=0, asKeyword=False, excludeChars=None): super(Word, self).__init__() if excludeChars: excludeChars = set(excludeChars) initChars = ''.join(c for c in initChars if c not in excludeChars) if bodyChars: bodyChars = ''.join(c for c in bodyChars if c not in excludeChars) self.initCharsOrig = initChars self.initChars = set(initChars) if bodyChars: self.bodyCharsOrig = bodyChars self.bodyChars = set(bodyChars) else: self.bodyCharsOrig = initChars self.bodyChars = set(initChars) self.maxSpecified = max > 0 if min < 1: raise ValueError("cannot specify a minimum length < 1; use Optional(Word()) if zero-length word is permitted") self.minLen = min if max > 0: self.maxLen = max else: self.maxLen = _MAX_INT if exact > 0: self.maxLen = exact self.minLen = exact self.name = _ustr(self) self.errmsg = "Expected " + self.name self.mayIndexError = False self.asKeyword = asKeyword if ' ' not in self.initCharsOrig + self.bodyCharsOrig and (min == 1 and max == 0 and exact == 0): if self.bodyCharsOrig == self.initCharsOrig: self.reString = "[%s]+" % _escapeRegexRangeChars(self.initCharsOrig) elif len(self.initCharsOrig) == 1: self.reString = "%s[%s]*" % (re.escape(self.initCharsOrig), _escapeRegexRangeChars(self.bodyCharsOrig),) else: self.reString = "[%s][%s]*" % (_escapeRegexRangeChars(self.initCharsOrig), _escapeRegexRangeChars(self.bodyCharsOrig),) if self.asKeyword: self.reString = r"\b" + self.reString + r"\b" try: self.re = re.compile(self.reString) except Exception: self.re = None else: self.re_match = self.re.match self.__class__ = _WordRegex def parseImpl(self, instring, loc, doActions=True): if instring[loc] not in self.initChars: raise ParseException(instring, loc, self.errmsg, self) start = loc loc += 1 instrlen = len(instring) bodychars = self.bodyChars maxloc = start + self.maxLen maxloc = min(maxloc, instrlen) while loc < maxloc and instring[loc] in bodychars: loc += 1 throwException = False if loc - start < self.minLen: throwException = True elif self.maxSpecified and loc < instrlen and instring[loc] in bodychars: throwException = True elif self.asKeyword: if (start > 0 and instring[start - 1] in bodychars or loc < instrlen and instring[loc] in bodychars): throwException = True if throwException: raise ParseException(instring, loc, self.errmsg, self) return loc, instring[start:loc] def __str__(self): try: return super(Word, self).__str__() except Exception: pass if self.strRepr is None: def charsAsStr(s): if len(s) > 4: return s[:4] + "..." else: return s if self.initCharsOrig != self.bodyCharsOrig: self.strRepr = "W:(%s, %s)" % (charsAsStr(self.initCharsOrig), charsAsStr(self.bodyCharsOrig)) else: self.strRepr = "W:(%s)" % charsAsStr(self.initCharsOrig) return self.strRepr class _WordRegex(Word): def parseImpl(self, instring, loc, doActions=True): result = self.re_match(instring, loc) if not result: raise ParseException(instring, loc, self.errmsg, self) loc = result.end() return loc, result.group() class Char(_WordRegex): """A short-cut class for defining ``Word(characters, exact=1)``, when defining a match of any single character in a string of characters. """ def __init__(self, charset, asKeyword=False, excludeChars=None): super(Char, self).__init__(charset, exact=1, asKeyword=asKeyword, excludeChars=excludeChars) self.reString = "[%s]" % _escapeRegexRangeChars(''.join(self.initChars)) if asKeyword: self.reString = r"\b%s\b" % self.reString self.re = re.compile(self.reString) self.re_match = self.re.match class Regex(Token): r"""Token for matching strings that match a given regular expression. Defined with string specifying the regular expression in a form recognized by the stdlib Python `re module `_. If the given regex contains named groups (defined using ``(?P...)``), these will be preserved as named parse results. If instead of the Python stdlib re module you wish to use a different RE module (such as the `regex` module), you can replace it by either building your Regex object with a compiled RE that was compiled using regex: Example:: realnum = Regex(r"[+-]?\d+\.\d*") date = Regex(r'(?P\d{4})-(?P\d\d?)-(?P\d\d?)') # ref: https://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression roman = Regex(r"M{0,4}(CM|CD|D?{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})") # use regex module instead of stdlib re module to construct a Regex using # a compiled regular expression import regex parser = pp.Regex(regex.compile(r'[0-9]')) """ def __init__(self, pattern, flags=0, asGroupList=False, asMatch=False): """The parameters ``pattern`` and ``flags`` are passed to the ``re.compile()`` function as-is. See the Python `re module `_ module for an explanation of the acceptable patterns and flags. """ super(Regex, self).__init__() if isinstance(pattern, basestring): if not pattern: warnings.warn("null string passed to Regex; use Empty() instead", SyntaxWarning, stacklevel=2) self.pattern = pattern self.flags = flags try: self.re = re.compile(self.pattern, self.flags) self.reString = self.pattern except re.error: warnings.warn("invalid pattern (%s) passed to Regex" % pattern, SyntaxWarning, stacklevel=2) raise elif hasattr(pattern, 'pattern') and hasattr(pattern, 'match'): self.re = pattern self.pattern = self.reString = pattern.pattern self.flags = flags else: raise TypeError("Regex may only be constructed with a string or a compiled RE object") self.re_match = self.re.match self.name = _ustr(self) self.errmsg = "Expected " + self.name self.mayIndexError = False self.mayReturnEmpty = self.re_match("") is not None self.asGroupList = asGroupList self.asMatch = asMatch if self.asGroupList: self.parseImpl = self.parseImplAsGroupList if self.asMatch: self.parseImpl = self.parseImplAsMatch def parseImpl(self, instring, loc, doActions=True): result = self.re_match(instring, loc) if not result: raise ParseException(instring, loc, self.errmsg, self) loc = result.end() ret = ParseResults(result.group()) d = result.groupdict() if d: for k, v in d.items(): ret[k] = v return loc, ret def parseImplAsGroupList(self, instring, loc, doActions=True): result = self.re_match(instring, loc) if not result: raise ParseException(instring, loc, self.errmsg, self) loc = result.end() ret = result.groups() return loc, ret def parseImplAsMatch(self, instring, loc, doActions=True): result = self.re_match(instring, loc) if not result: raise ParseException(instring, loc, self.errmsg, self) loc = result.end() ret = result return loc, ret def __str__(self): try: return super(Regex, self).__str__() except Exception: pass if self.strRepr is None: self.strRepr = "Re:(%s)" % repr(self.pattern) return self.strRepr def sub(self, repl): r""" Return Regex with an attached parse action to transform the parsed result as if called using `re.sub(expr, repl, string) `_. Example:: make_html = Regex(r"(\w+):(.*?):").sub(r"<\1>\2") print(make_html.transformString("h1:main title:")) # prints "

main title

" """ if self.asGroupList: warnings.warn("cannot use sub() with Regex(asGroupList=True)", SyntaxWarning, stacklevel=2) raise SyntaxError() if self.asMatch and callable(repl): warnings.warn("cannot use sub() with a callable with Regex(asMatch=True)", SyntaxWarning, stacklevel=2) raise SyntaxError() if self.asMatch: def pa(tokens): return tokens[0].expand(repl) else: def pa(tokens): return self.re.sub(repl, tokens[0]) return self.addParseAction(pa) class QuotedString(Token): r""" Token for matching strings that are delimited by quoting characters. Defined with the following parameters: - quoteChar - string of one or more characters defining the quote delimiting string - escChar - character to escape quotes, typically backslash (default= ``None``) - escQuote - special quote sequence to escape an embedded quote string (such as SQL's ``""`` to escape an embedded ``"``) (default= ``None``) - multiline - boolean indicating whether quotes can span multiple lines (default= ``False``) - unquoteResults - boolean indicating whether the matched text should be unquoted (default= ``True``) - endQuoteChar - string of one or more characters defining the end of the quote delimited string (default= ``None`` => same as quoteChar) - convertWhitespaceEscapes - convert escaped whitespace (``'\t'``, ``'\n'``, etc.) to actual whitespace (default= ``True``) Example:: qs = QuotedString('"') print(qs.searchString('lsjdf "This is the quote" sldjf')) complex_qs = QuotedString('{{', endQuoteChar='}}') print(complex_qs.searchString('lsjdf {{This is the "quote"}} sldjf')) sql_qs = QuotedString('"', escQuote='""') print(sql_qs.searchString('lsjdf "This is the quote with ""embedded"" quotes" sldjf')) prints:: [['This is the quote']] [['This is the "quote"']] [['This is the quote with "embedded" quotes']] """ def __init__(self, quoteChar, escChar=None, escQuote=None, multiline=False, unquoteResults=True, endQuoteChar=None, convertWhitespaceEscapes=True): super(QuotedString, self).__init__() # remove white space from quote chars - wont work anyway quoteChar = quoteChar.strip() if not quoteChar: warnings.warn("quoteChar cannot be the empty string", SyntaxWarning, stacklevel=2) raise SyntaxError() if endQuoteChar is None: endQuoteChar = quoteChar else: endQuoteChar = endQuoteChar.strip() if not endQuoteChar: warnings.warn("endQuoteChar cannot be the empty string", SyntaxWarning, stacklevel=2) raise SyntaxError() self.quoteChar = quoteChar self.quoteCharLen = len(quoteChar) self.firstQuoteChar = quoteChar[0] self.endQuoteChar = endQuoteChar self.endQuoteCharLen = len(endQuoteChar) self.escChar = escChar self.escQuote = escQuote self.unquoteResults = unquoteResults self.convertWhitespaceEscapes = convertWhitespaceEscapes if multiline: self.flags = re.MULTILINE | re.DOTALL self.pattern = r'%s(?:[^%s%s]' % (re.escape(self.quoteChar), _escapeRegexRangeChars(self.endQuoteChar[0]), (escChar is not None and _escapeRegexRangeChars(escChar) or '')) else: self.flags = 0 self.pattern = r'%s(?:[^%s\n\r%s]' % (re.escape(self.quoteChar), _escapeRegexRangeChars(self.endQuoteChar[0]), (escChar is not None and _escapeRegexRangeChars(escChar) or '')) if len(self.endQuoteChar) > 1: self.pattern += ( '|(?:' + ')|(?:'.join("%s[^%s]" % (re.escape(self.endQuoteChar[:i]), _escapeRegexRangeChars(self.endQuoteChar[i])) for i in range(len(self.endQuoteChar) - 1, 0, -1)) + ')') if escQuote: self.pattern += (r'|(?:%s)' % re.escape(escQuote)) if escChar: self.pattern += (r'|(?:%s.)' % re.escape(escChar)) self.escCharReplacePattern = re.escape(self.escChar) + "(.)" self.pattern += (r')*%s' % re.escape(self.endQuoteChar)) try: self.re = re.compile(self.pattern, self.flags) self.reString = self.pattern self.re_match = self.re.match except re.error: warnings.warn("invalid pattern (%s) passed to Regex" % self.pattern, SyntaxWarning, stacklevel=2) raise self.name = _ustr(self) self.errmsg = "Expected " + self.name self.mayIndexError = False self.mayReturnEmpty = True def parseImpl(self, instring, loc, doActions=True): result = instring[loc] == self.firstQuoteChar and self.re_match(instring, loc) or None if not result: raise ParseException(instring, loc, self.errmsg, self) loc = result.end() ret = result.group() if self.unquoteResults: # strip off quotes ret = ret[self.quoteCharLen: -self.endQuoteCharLen] if isinstance(ret, basestring): # replace escaped whitespace if '\\' in ret and self.convertWhitespaceEscapes: ws_map = { r'\t': '\t', r'\n': '\n', r'\f': '\f', r'\r': '\r', } for wslit, wschar in ws_map.items(): ret = ret.replace(wslit, wschar) # replace escaped characters if self.escChar: ret = re.sub(self.escCharReplacePattern, r"\g<1>", ret) # replace escaped quotes if self.escQuote: ret = ret.replace(self.escQuote, self.endQuoteChar) return loc, ret def __str__(self): try: return super(QuotedString, self).__str__() except Exception: pass if self.strRepr is None: self.strRepr = "quoted string, starting with %s ending with %s" % (self.quoteChar, self.endQuoteChar) return self.strRepr class CharsNotIn(Token): """Token for matching words composed of characters *not* in a given set (will include whitespace in matched characters if not listed in the provided exclusion set - see example). Defined with string containing all disallowed characters, and an optional minimum, maximum, and/or exact length. The default value for ``min`` is 1 (a minimum value < 1 is not valid); the default values for ``max`` and ``exact`` are 0, meaning no maximum or exact length restriction. Example:: # define a comma-separated-value as anything that is not a ',' csv_value = CharsNotIn(',') print(delimitedList(csv_value).parseString("dkls,lsdkjf,s12 34,@!#,213")) prints:: ['dkls', 'lsdkjf', 's12 34', '@!#', '213'] """ def __init__(self, notChars, min=1, max=0, exact=0): super(CharsNotIn, self).__init__() self.skipWhitespace = False self.notChars = notChars if min < 1: raise ValueError("cannot specify a minimum length < 1; use " "Optional(CharsNotIn()) if zero-length char group is permitted") self.minLen = min if max > 0: self.maxLen = max else: self.maxLen = _MAX_INT if exact > 0: self.maxLen = exact self.minLen = exact self.name = _ustr(self) self.errmsg = "Expected " + self.name self.mayReturnEmpty = (self.minLen == 0) self.mayIndexError = False def parseImpl(self, instring, loc, doActions=True): if instring[loc] in self.notChars: raise ParseException(instring, loc, self.errmsg, self) start = loc loc += 1 notchars = self.notChars maxlen = min(start + self.maxLen, len(instring)) while loc < maxlen and instring[loc] not in notchars: loc += 1 if loc - start < self.minLen: raise ParseException(instring, loc, self.errmsg, self) return loc, instring[start:loc] def __str__(self): try: return super(CharsNotIn, self).__str__() except Exception: pass if self.strRepr is None: if len(self.notChars) > 4: self.strRepr = "!W:(%s...)" % self.notChars[:4] else: self.strRepr = "!W:(%s)" % self.notChars return self.strRepr class White(Token): """Special matching class for matching whitespace. Normally, whitespace is ignored by pyparsing grammars. This class is included when some whitespace structures are significant. Define with a string containing the whitespace characters to be matched; default is ``" \\t\\r\\n"``. Also takes optional ``min``, ``max``, and ``exact`` arguments, as defined for the :class:`Word` class. """ whiteStrs = { ' ' : '', '\t': '', '\n': '', '\r': '', '\f': '', u'\u00A0': '', u'\u1680': '', u'\u180E': '', u'\u2000': '', u'\u2001': '', u'\u2002': '', u'\u2003': '', u'\u2004': '', u'\u2005': '', u'\u2006': '', u'\u2007': '', u'\u2008': '', u'\u2009': '', u'\u200A': '', u'\u200B': '', u'\u202F': '', u'\u205F': '', u'\u3000': '', } def __init__(self, ws=" \t\r\n", min=1, max=0, exact=0): super(White, self).__init__() self.matchWhite = ws self.setWhitespaceChars("".join(c for c in self.whiteChars if c not in self.matchWhite)) # ~ self.leaveWhitespace() self.name = ("".join(White.whiteStrs[c] for c in self.matchWhite)) self.mayReturnEmpty = True self.errmsg = "Expected " + self.name self.minLen = min if max > 0: self.maxLen = max else: self.maxLen = _MAX_INT if exact > 0: self.maxLen = exact self.minLen = exact def parseImpl(self, instring, loc, doActions=True): if instring[loc] not in self.matchWhite: raise ParseException(instring, loc, self.errmsg, self) start = loc loc += 1 maxloc = start + self.maxLen maxloc = min(maxloc, len(instring)) while loc < maxloc and instring[loc] in self.matchWhite: loc += 1 if loc - start < self.minLen: raise ParseException(instring, loc, self.errmsg, self) return loc, instring[start:loc] class _PositionToken(Token): def __init__(self): super(_PositionToken, self).__init__() self.name = self.__class__.__name__ self.mayReturnEmpty = True self.mayIndexError = False class GoToColumn(_PositionToken): """Token to advance to a specific column of input text; useful for tabular report scraping. """ def __init__(self, colno): super(GoToColumn, self).__init__() self.col = colno def preParse(self, instring, loc): if col(loc, instring) != self.col: instrlen = len(instring) if self.ignoreExprs: loc = self._skipIgnorables(instring, loc) while loc < instrlen and instring[loc].isspace() and col(loc, instring) != self.col: loc += 1 return loc def parseImpl(self, instring, loc, doActions=True): thiscol = col(loc, instring) if thiscol > self.col: raise ParseException(instring, loc, "Text not in expected column", self) newloc = loc + self.col - thiscol ret = instring[loc: newloc] return newloc, ret class LineStart(_PositionToken): r"""Matches if current position is at the beginning of a line within the parse string Example:: test = '''\ AAA this line AAA and this line AAA but not this one B AAA and definitely not this one ''' for t in (LineStart() + 'AAA' + restOfLine).searchString(test): print(t) prints:: ['AAA', ' this line'] ['AAA', ' and this line'] """ def __init__(self): super(LineStart, self).__init__() self.errmsg = "Expected start of line" def parseImpl(self, instring, loc, doActions=True): if col(loc, instring) == 1: return loc, [] raise ParseException(instring, loc, self.errmsg, self) class LineEnd(_PositionToken): """Matches if current position is at the end of a line within the parse string """ def __init__(self): super(LineEnd, self).__init__() self.setWhitespaceChars(ParserElement.DEFAULT_WHITE_CHARS.replace("\n", "")) self.errmsg = "Expected end of line" def parseImpl(self, instring, loc, doActions=True): if loc < len(instring): if instring[loc] == "\n": return loc + 1, "\n" else: raise ParseException(instring, loc, self.errmsg, self) elif loc == len(instring): return loc + 1, [] else: raise ParseException(instring, loc, self.errmsg, self) class StringStart(_PositionToken): """Matches if current position is at the beginning of the parse string """ def __init__(self): super(StringStart, self).__init__() self.errmsg = "Expected start of text" def parseImpl(self, instring, loc, doActions=True): if loc != 0: # see if entire string up to here is just whitespace and ignoreables if loc != self.preParse(instring, 0): raise ParseException(instring, loc, self.errmsg, self) return loc, [] class StringEnd(_PositionToken): """Matches if current position is at the end of the parse string """ def __init__(self): super(StringEnd, self).__init__() self.errmsg = "Expected end of text" def parseImpl(self, instring, loc, doActions=True): if loc < len(instring): raise ParseException(instring, loc, self.errmsg, self) elif loc == len(instring): return loc + 1, [] elif loc > len(instring): return loc, [] else: raise ParseException(instring, loc, self.errmsg, self) class WordStart(_PositionToken): """Matches if the current position is at the beginning of a Word, and is not preceded by any character in a given set of ``wordChars`` (default= ``printables``). To emulate the ``\b`` behavior of regular expressions, use ``WordStart(alphanums)``. ``WordStart`` will also match at the beginning of the string being parsed, or at the beginning of a line. """ def __init__(self, wordChars=printables): super(WordStart, self).__init__() self.wordChars = set(wordChars) self.errmsg = "Not at the start of a word" def parseImpl(self, instring, loc, doActions=True): if loc != 0: if (instring[loc - 1] in self.wordChars or instring[loc] not in self.wordChars): raise ParseException(instring, loc, self.errmsg, self) return loc, [] class WordEnd(_PositionToken): """Matches if the current position is at the end of a Word, and is not followed by any character in a given set of ``wordChars`` (default= ``printables``). To emulate the ``\b`` behavior of regular expressions, use ``WordEnd(alphanums)``. ``WordEnd`` will also match at the end of the string being parsed, or at the end of a line. """ def __init__(self, wordChars=printables): super(WordEnd, self).__init__() self.wordChars = set(wordChars) self.skipWhitespace = False self.errmsg = "Not at the end of a word" def parseImpl(self, instring, loc, doActions=True): instrlen = len(instring) if instrlen > 0 and loc < instrlen: if (instring[loc] in self.wordChars or instring[loc - 1] not in self.wordChars): raise ParseException(instring, loc, self.errmsg, self) return loc, [] class ParseExpression(ParserElement): """Abstract subclass of ParserElement, for combining and post-processing parsed tokens. """ def __init__(self, exprs, savelist=False): super(ParseExpression, self).__init__(savelist) if isinstance(exprs, _generatorType): exprs = list(exprs) if isinstance(exprs, basestring): self.exprs = [self._literalStringClass(exprs)] elif isinstance(exprs, ParserElement): self.exprs = [exprs] elif isinstance(exprs, Iterable): exprs = list(exprs) # if sequence of strings provided, wrap with Literal if any(isinstance(expr, basestring) for expr in exprs): exprs = (self._literalStringClass(e) if isinstance(e, basestring) else e for e in exprs) self.exprs = list(exprs) else: try: self.exprs = list(exprs) except TypeError: self.exprs = [exprs] self.callPreparse = False def append(self, other): self.exprs.append(other) self.strRepr = None return self def leaveWhitespace(self): """Extends ``leaveWhitespace`` defined in base class, and also invokes ``leaveWhitespace`` on all contained expressions.""" self.skipWhitespace = False self.exprs = [e.copy() for e in self.exprs] for e in self.exprs: e.leaveWhitespace() return self def ignore(self, other): if isinstance(other, Suppress): if other not in self.ignoreExprs: super(ParseExpression, self).ignore(other) for e in self.exprs: e.ignore(self.ignoreExprs[-1]) else: super(ParseExpression, self).ignore(other) for e in self.exprs: e.ignore(self.ignoreExprs[-1]) return self def __str__(self): try: return super(ParseExpression, self).__str__() except Exception: pass if self.strRepr is None: self.strRepr = "%s:(%s)" % (self.__class__.__name__, _ustr(self.exprs)) return self.strRepr def streamline(self): super(ParseExpression, self).streamline() for e in self.exprs: e.streamline() # collapse nested And's of the form And(And(And(a, b), c), d) to And(a, b, c, d) # but only if there are no parse actions or resultsNames on the nested And's # (likewise for Or's and MatchFirst's) if len(self.exprs) == 2: other = self.exprs[0] if (isinstance(other, self.__class__) and not other.parseAction and other.resultsName is None and not other.debug): self.exprs = other.exprs[:] + [self.exprs[1]] self.strRepr = None self.mayReturnEmpty |= other.mayReturnEmpty self.mayIndexError |= other.mayIndexError other = self.exprs[-1] if (isinstance(other, self.__class__) and not other.parseAction and other.resultsName is None and not other.debug): self.exprs = self.exprs[:-1] + other.exprs[:] self.strRepr = None self.mayReturnEmpty |= other.mayReturnEmpty self.mayIndexError |= other.mayIndexError self.errmsg = "Expected " + _ustr(self) return self def validate(self, validateTrace=None): tmp = (validateTrace if validateTrace is not None else [])[:] + [self] for e in self.exprs: e.validate(tmp) self.checkRecursion([]) def copy(self): ret = super(ParseExpression, self).copy() ret.exprs = [e.copy() for e in self.exprs] return ret def _setResultsName(self, name, listAllMatches=False): if __diag__.warn_ungrouped_named_tokens_in_collection: for e in self.exprs: if isinstance(e, ParserElement) and e.resultsName: warnings.warn("{0}: setting results name {1!r} on {2} expression " "collides with {3!r} on contained expression".format("warn_ungrouped_named_tokens_in_collection", name, type(self).__name__, e.resultsName), stacklevel=3) return super(ParseExpression, self)._setResultsName(name, listAllMatches) class And(ParseExpression): """ Requires all given :class:`ParseExpression` s to be found in the given order. Expressions may be separated by whitespace. May be constructed using the ``'+'`` operator. May also be constructed using the ``'-'`` operator, which will suppress backtracking. Example:: integer = Word(nums) name_expr = OneOrMore(Word(alphas)) expr = And([integer("id"), name_expr("name"), integer("age")]) # more easily written as: expr = integer("id") + name_expr("name") + integer("age") """ class _ErrorStop(Empty): def __init__(self, *args, **kwargs): super(And._ErrorStop, self).__init__(*args, **kwargs) self.name = '-' self.leaveWhitespace() def __init__(self, exprs, savelist=True): exprs = list(exprs) if exprs and Ellipsis in exprs: tmp = [] for i, expr in enumerate(exprs): if expr is Ellipsis: if i < len(exprs) - 1: skipto_arg = (Empty() + exprs[i + 1]).exprs[-1] tmp.append(SkipTo(skipto_arg)("_skipped*")) else: raise Exception("cannot construct And with sequence ending in ...") else: tmp.append(expr) exprs[:] = tmp super(And, self).__init__(exprs, savelist) self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) self.setWhitespaceChars(self.exprs[0].whiteChars) self.skipWhitespace = self.exprs[0].skipWhitespace self.callPreparse = True def streamline(self): # collapse any _PendingSkip's if self.exprs: if any(isinstance(e, ParseExpression) and e.exprs and isinstance(e.exprs[-1], _PendingSkip) for e in self.exprs[:-1]): for i, e in enumerate(self.exprs[:-1]): if e is None: continue if (isinstance(e, ParseExpression) and e.exprs and isinstance(e.exprs[-1], _PendingSkip)): e.exprs[-1] = e.exprs[-1] + self.exprs[i + 1] self.exprs[i + 1] = None self.exprs = [e for e in self.exprs if e is not None] super(And, self).streamline() self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) return self def parseImpl(self, instring, loc, doActions=True): # pass False as last arg to _parse for first element, since we already # pre-parsed the string as part of our And pre-parsing loc, resultlist = self.exprs[0]._parse(instring, loc, doActions, callPreParse=False) errorStop = False for e in self.exprs[1:]: if isinstance(e, And._ErrorStop): errorStop = True continue if errorStop: try: loc, exprtokens = e._parse(instring, loc, doActions) except ParseSyntaxException: raise except ParseBaseException as pe: pe.__traceback__ = None raise ParseSyntaxException._from_exception(pe) except IndexError: raise ParseSyntaxException(instring, len(instring), self.errmsg, self) else: loc, exprtokens = e._parse(instring, loc, doActions) if exprtokens or exprtokens.haskeys(): resultlist += exprtokens return loc, resultlist def __iadd__(self, other): if isinstance(other, basestring): other = self._literalStringClass(other) return self.append(other) # And([self, other]) def checkRecursion(self, parseElementList): subRecCheckList = parseElementList[:] + [self] for e in self.exprs: e.checkRecursion(subRecCheckList) if not e.mayReturnEmpty: break def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "{" + " ".join(_ustr(e) for e in self.exprs) + "}" return self.strRepr class Or(ParseExpression): """Requires that at least one :class:`ParseExpression` is found. If two expressions match, the expression that matches the longest string will be used. May be constructed using the ``'^'`` operator. Example:: # construct Or using '^' operator number = Word(nums) ^ Combine(Word(nums) + '.' + Word(nums)) print(number.searchString("123 3.1416 789")) prints:: [['123'], ['3.1416'], ['789']] """ def __init__(self, exprs, savelist=False): super(Or, self).__init__(exprs, savelist) if self.exprs: self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) else: self.mayReturnEmpty = True def streamline(self): super(Or, self).streamline() if __compat__.collect_all_And_tokens: self.saveAsList = any(e.saveAsList for e in self.exprs) return self def parseImpl(self, instring, loc, doActions=True): maxExcLoc = -1 maxException = None matches = [] for e in self.exprs: try: loc2 = e.tryParse(instring, loc) except ParseException as err: err.__traceback__ = None if err.loc > maxExcLoc: maxException = err maxExcLoc = err.loc except IndexError: if len(instring) > maxExcLoc: maxException = ParseException(instring, len(instring), e.errmsg, self) maxExcLoc = len(instring) else: # save match among all matches, to retry longest to shortest matches.append((loc2, e)) if matches: # re-evaluate all matches in descending order of length of match, in case attached actions # might change whether or how much they match of the input. matches.sort(key=itemgetter(0), reverse=True) if not doActions: # no further conditions or parse actions to change the selection of # alternative, so the first match will be the best match best_expr = matches[0][1] return best_expr._parse(instring, loc, doActions) longest = -1, None for loc1, expr1 in matches: if loc1 <= longest[0]: # already have a longer match than this one will deliver, we are done return longest try: loc2, toks = expr1._parse(instring, loc, doActions) except ParseException as err: err.__traceback__ = None if err.loc > maxExcLoc: maxException = err maxExcLoc = err.loc else: if loc2 >= loc1: return loc2, toks # didn't match as much as before elif loc2 > longest[0]: longest = loc2, toks if longest != (-1, None): return longest if maxException is not None: maxException.msg = self.errmsg raise maxException else: raise ParseException(instring, loc, "no defined alternatives to match", self) def __ixor__(self, other): if isinstance(other, basestring): other = self._literalStringClass(other) return self.append(other) # Or([self, other]) def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "{" + " ^ ".join(_ustr(e) for e in self.exprs) + "}" return self.strRepr def checkRecursion(self, parseElementList): subRecCheckList = parseElementList[:] + [self] for e in self.exprs: e.checkRecursion(subRecCheckList) def _setResultsName(self, name, listAllMatches=False): if (not __compat__.collect_all_And_tokens and __diag__.warn_multiple_tokens_in_named_alternation): if any(isinstance(e, And) for e in self.exprs): warnings.warn("{0}: setting results name {1!r} on {2} expression " "may only return a single token for an And alternative, " "in future will return the full list of tokens".format( "warn_multiple_tokens_in_named_alternation", name, type(self).__name__), stacklevel=3) return super(Or, self)._setResultsName(name, listAllMatches) class MatchFirst(ParseExpression): """Requires that at least one :class:`ParseExpression` is found. If two expressions match, the first one listed is the one that will match. May be constructed using the ``'|'`` operator. Example:: # construct MatchFirst using '|' operator # watch the order of expressions to match number = Word(nums) | Combine(Word(nums) + '.' + Word(nums)) print(number.searchString("123 3.1416 789")) # Fail! -> [['123'], ['3'], ['1416'], ['789']] # put more selective expression first number = Combine(Word(nums) + '.' + Word(nums)) | Word(nums) print(number.searchString("123 3.1416 789")) # Better -> [['123'], ['3.1416'], ['789']] """ def __init__(self, exprs, savelist=False): super(MatchFirst, self).__init__(exprs, savelist) if self.exprs: self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) else: self.mayReturnEmpty = True def streamline(self): super(MatchFirst, self).streamline() if __compat__.collect_all_And_tokens: self.saveAsList = any(e.saveAsList for e in self.exprs) return self def parseImpl(self, instring, loc, doActions=True): maxExcLoc = -1 maxException = None for e in self.exprs: try: ret = e._parse(instring, loc, doActions) return ret except ParseException as err: if err.loc > maxExcLoc: maxException = err maxExcLoc = err.loc except IndexError: if len(instring) > maxExcLoc: maxException = ParseException(instring, len(instring), e.errmsg, self) maxExcLoc = len(instring) # only got here if no expression matched, raise exception for match that made it the furthest else: if maxException is not None: maxException.msg = self.errmsg raise maxException else: raise ParseException(instring, loc, "no defined alternatives to match", self) def __ior__(self, other): if isinstance(other, basestring): other = self._literalStringClass(other) return self.append(other) # MatchFirst([self, other]) def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "{" + " | ".join(_ustr(e) for e in self.exprs) + "}" return self.strRepr def checkRecursion(self, parseElementList): subRecCheckList = parseElementList[:] + [self] for e in self.exprs: e.checkRecursion(subRecCheckList) def _setResultsName(self, name, listAllMatches=False): if (not __compat__.collect_all_And_tokens and __diag__.warn_multiple_tokens_in_named_alternation): if any(isinstance(e, And) for e in self.exprs): warnings.warn("{0}: setting results name {1!r} on {2} expression " "may only return a single token for an And alternative, " "in future will return the full list of tokens".format( "warn_multiple_tokens_in_named_alternation", name, type(self).__name__), stacklevel=3) return super(MatchFirst, self)._setResultsName(name, listAllMatches) class Each(ParseExpression): """Requires all given :class:`ParseExpression` s to be found, but in any order. Expressions may be separated by whitespace. May be constructed using the ``'&'`` operator. Example:: color = oneOf("RED ORANGE YELLOW GREEN BLUE PURPLE BLACK WHITE BROWN") shape_type = oneOf("SQUARE CIRCLE TRIANGLE STAR HEXAGON OCTAGON") integer = Word(nums) shape_attr = "shape:" + shape_type("shape") posn_attr = "posn:" + Group(integer("x") + ',' + integer("y"))("posn") color_attr = "color:" + color("color") size_attr = "size:" + integer("size") # use Each (using operator '&') to accept attributes in any order # (shape and posn are required, color and size are optional) shape_spec = shape_attr & posn_attr & Optional(color_attr) & Optional(size_attr) shape_spec.runTests(''' shape: SQUARE color: BLACK posn: 100, 120 shape: CIRCLE size: 50 color: BLUE posn: 50,80 color:GREEN size:20 shape:TRIANGLE posn:20,40 ''' ) prints:: shape: SQUARE color: BLACK posn: 100, 120 ['shape:', 'SQUARE', 'color:', 'BLACK', 'posn:', ['100', ',', '120']] - color: BLACK - posn: ['100', ',', '120'] - x: 100 - y: 120 - shape: SQUARE shape: CIRCLE size: 50 color: BLUE posn: 50,80 ['shape:', 'CIRCLE', 'size:', '50', 'color:', 'BLUE', 'posn:', ['50', ',', '80']] - color: BLUE - posn: ['50', ',', '80'] - x: 50 - y: 80 - shape: CIRCLE - size: 50 color: GREEN size: 20 shape: TRIANGLE posn: 20,40 ['color:', 'GREEN', 'size:', '20', 'shape:', 'TRIANGLE', 'posn:', ['20', ',', '40']] - color: GREEN - posn: ['20', ',', '40'] - x: 20 - y: 40 - shape: TRIANGLE - size: 20 """ def __init__(self, exprs, savelist=True): super(Each, self).__init__(exprs, savelist) self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) self.skipWhitespace = True self.initExprGroups = True self.saveAsList = True def streamline(self): super(Each, self).streamline() self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) return self def parseImpl(self, instring, loc, doActions=True): if self.initExprGroups: self.opt1map = dict((id(e.expr), e) for e in self.exprs if isinstance(e, Optional)) opt1 = [e.expr for e in self.exprs if isinstance(e, Optional)] opt2 = [e for e in self.exprs if e.mayReturnEmpty and not isinstance(e, (Optional, Regex))] self.optionals = opt1 + opt2 self.multioptionals = [e.expr for e in self.exprs if isinstance(e, ZeroOrMore)] self.multirequired = [e.expr for e in self.exprs if isinstance(e, OneOrMore)] self.required = [e for e in self.exprs if not isinstance(e, (Optional, ZeroOrMore, OneOrMore))] self.required += self.multirequired self.initExprGroups = False tmpLoc = loc tmpReqd = self.required[:] tmpOpt = self.optionals[:] matchOrder = [] keepMatching = True while keepMatching: tmpExprs = tmpReqd + tmpOpt + self.multioptionals + self.multirequired failed = [] for e in tmpExprs: try: tmpLoc = e.tryParse(instring, tmpLoc) except ParseException: failed.append(e) else: matchOrder.append(self.opt1map.get(id(e), e)) if e in tmpReqd: tmpReqd.remove(e) elif e in tmpOpt: tmpOpt.remove(e) if len(failed) == len(tmpExprs): keepMatching = False if tmpReqd: missing = ", ".join(_ustr(e) for e in tmpReqd) raise ParseException(instring, loc, "Missing one or more required elements (%s)" % missing) # add any unmatched Optionals, in case they have default values defined matchOrder += [e for e in self.exprs if isinstance(e, Optional) and e.expr in tmpOpt] resultlist = [] for e in matchOrder: loc, results = e._parse(instring, loc, doActions) resultlist.append(results) finalResults = sum(resultlist, ParseResults([])) return loc, finalResults def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "{" + " & ".join(_ustr(e) for e in self.exprs) + "}" return self.strRepr def checkRecursion(self, parseElementList): subRecCheckList = parseElementList[:] + [self] for e in self.exprs: e.checkRecursion(subRecCheckList) class ParseElementEnhance(ParserElement): """Abstract subclass of :class:`ParserElement`, for combining and post-processing parsed tokens. """ def __init__(self, expr, savelist=False): super(ParseElementEnhance, self).__init__(savelist) if isinstance(expr, basestring): if issubclass(self._literalStringClass, Token): expr = self._literalStringClass(expr) else: expr = self._literalStringClass(Literal(expr)) self.expr = expr self.strRepr = None if expr is not None: self.mayIndexError = expr.mayIndexError self.mayReturnEmpty = expr.mayReturnEmpty self.setWhitespaceChars(expr.whiteChars) self.skipWhitespace = expr.skipWhitespace self.saveAsList = expr.saveAsList self.callPreparse = expr.callPreparse self.ignoreExprs.extend(expr.ignoreExprs) def parseImpl(self, instring, loc, doActions=True): if self.expr is not None: return self.expr._parse(instring, loc, doActions, callPreParse=False) else: raise ParseException("", loc, self.errmsg, self) def leaveWhitespace(self): self.skipWhitespace = False self.expr = self.expr.copy() if self.expr is not None: self.expr.leaveWhitespace() return self def ignore(self, other): if isinstance(other, Suppress): if other not in self.ignoreExprs: super(ParseElementEnhance, self).ignore(other) if self.expr is not None: self.expr.ignore(self.ignoreExprs[-1]) else: super(ParseElementEnhance, self).ignore(other) if self.expr is not None: self.expr.ignore(self.ignoreExprs[-1]) return self def streamline(self): super(ParseElementEnhance, self).streamline() if self.expr is not None: self.expr.streamline() return self def checkRecursion(self, parseElementList): if self in parseElementList: raise RecursiveGrammarException(parseElementList + [self]) subRecCheckList = parseElementList[:] + [self] if self.expr is not None: self.expr.checkRecursion(subRecCheckList) def validate(self, validateTrace=None): if validateTrace is None: validateTrace = [] tmp = validateTrace[:] + [self] if self.expr is not None: self.expr.validate(tmp) self.checkRecursion([]) def __str__(self): try: return super(ParseElementEnhance, self).__str__() except Exception: pass if self.strRepr is None and self.expr is not None: self.strRepr = "%s:(%s)" % (self.__class__.__name__, _ustr(self.expr)) return self.strRepr class FollowedBy(ParseElementEnhance): """Lookahead matching of the given parse expression. ``FollowedBy`` does *not* advance the parsing position within the input string, it only verifies that the specified parse expression matches at the current position. ``FollowedBy`` always returns a null token list. If any results names are defined in the lookahead expression, those *will* be returned for access by name. Example:: # use FollowedBy to match a label only if it is followed by a ':' data_word = Word(alphas) label = data_word + FollowedBy(':') attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) OneOrMore(attr_expr).parseString("shape: SQUARE color: BLACK posn: upper left").pprint() prints:: [['shape', 'SQUARE'], ['color', 'BLACK'], ['posn', 'upper left']] """ def __init__(self, expr): super(FollowedBy, self).__init__(expr) self.mayReturnEmpty = True def parseImpl(self, instring, loc, doActions=True): # by using self._expr.parse and deleting the contents of the returned ParseResults list # we keep any named results that were defined in the FollowedBy expression _, ret = self.expr._parse(instring, loc, doActions=doActions) del ret[:] return loc, ret class PrecededBy(ParseElementEnhance): """Lookbehind matching of the given parse expression. ``PrecededBy`` does not advance the parsing position within the input string, it only verifies that the specified parse expression matches prior to the current position. ``PrecededBy`` always returns a null token list, but if a results name is defined on the given expression, it is returned. Parameters: - expr - expression that must match prior to the current parse location - retreat - (default= ``None``) - (int) maximum number of characters to lookbehind prior to the current parse location If the lookbehind expression is a string, Literal, Keyword, or a Word or CharsNotIn with a specified exact or maximum length, then the retreat parameter is not required. Otherwise, retreat must be specified to give a maximum number of characters to look back from the current parse position for a lookbehind match. Example:: # VB-style variable names with type prefixes int_var = PrecededBy("#") + pyparsing_common.identifier str_var = PrecededBy("$") + pyparsing_common.identifier """ def __init__(self, expr, retreat=None): super(PrecededBy, self).__init__(expr) self.expr = self.expr().leaveWhitespace() self.mayReturnEmpty = True self.mayIndexError = False self.exact = False if isinstance(expr, str): retreat = len(expr) self.exact = True elif isinstance(expr, (Literal, Keyword)): retreat = expr.matchLen self.exact = True elif isinstance(expr, (Word, CharsNotIn)) and expr.maxLen != _MAX_INT: retreat = expr.maxLen self.exact = True elif isinstance(expr, _PositionToken): retreat = 0 self.exact = True self.retreat = retreat self.errmsg = "not preceded by " + str(expr) self.skipWhitespace = False self.parseAction.append(lambda s, l, t: t.__delitem__(slice(None, None))) def parseImpl(self, instring, loc=0, doActions=True): if self.exact: if loc < self.retreat: raise ParseException(instring, loc, self.errmsg) start = loc - self.retreat _, ret = self.expr._parse(instring, start) else: # retreat specified a maximum lookbehind window, iterate test_expr = self.expr + StringEnd() instring_slice = instring[max(0, loc - self.retreat):loc] last_expr = ParseException(instring, loc, self.errmsg) for offset in range(1, min(loc, self.retreat + 1)+1): try: # print('trying', offset, instring_slice, repr(instring_slice[loc - offset:])) _, ret = test_expr._parse(instring_slice, len(instring_slice) - offset) except ParseBaseException as pbe: last_expr = pbe else: break else: raise last_expr return loc, ret class NotAny(ParseElementEnhance): """Lookahead to disallow matching with the given parse expression. ``NotAny`` does *not* advance the parsing position within the input string, it only verifies that the specified parse expression does *not* match at the current position. Also, ``NotAny`` does *not* skip over leading whitespace. ``NotAny`` always returns a null token list. May be constructed using the '~' operator. Example:: AND, OR, NOT = map(CaselessKeyword, "AND OR NOT".split()) # take care not to mistake keywords for identifiers ident = ~(AND | OR | NOT) + Word(alphas) boolean_term = Optional(NOT) + ident # very crude boolean expression - to support parenthesis groups and # operation hierarchy, use infixNotation boolean_expr = boolean_term + ZeroOrMore((AND | OR) + boolean_term) # integers that are followed by "." are actually floats integer = Word(nums) + ~Char(".") """ def __init__(self, expr): super(NotAny, self).__init__(expr) # ~ self.leaveWhitespace() self.skipWhitespace = False # do NOT use self.leaveWhitespace(), don't want to propagate to exprs self.mayReturnEmpty = True self.errmsg = "Found unwanted token, " + _ustr(self.expr) def parseImpl(self, instring, loc, doActions=True): if self.expr.canParseNext(instring, loc): raise ParseException(instring, loc, self.errmsg, self) return loc, [] def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "~{" + _ustr(self.expr) + "}" return self.strRepr class _MultipleMatch(ParseElementEnhance): def __init__(self, expr, stopOn=None): super(_MultipleMatch, self).__init__(expr) self.saveAsList = True ender = stopOn if isinstance(ender, basestring): ender = self._literalStringClass(ender) self.stopOn(ender) def stopOn(self, ender): if isinstance(ender, basestring): ender = self._literalStringClass(ender) self.not_ender = ~ender if ender is not None else None return self def parseImpl(self, instring, loc, doActions=True): self_expr_parse = self.expr._parse self_skip_ignorables = self._skipIgnorables check_ender = self.not_ender is not None if check_ender: try_not_ender = self.not_ender.tryParse # must be at least one (but first see if we are the stopOn sentinel; # if so, fail) if check_ender: try_not_ender(instring, loc) loc, tokens = self_expr_parse(instring, loc, doActions, callPreParse=False) try: hasIgnoreExprs = (not not self.ignoreExprs) while 1: if check_ender: try_not_ender(instring, loc) if hasIgnoreExprs: preloc = self_skip_ignorables(instring, loc) else: preloc = loc loc, tmptokens = self_expr_parse(instring, preloc, doActions) if tmptokens or tmptokens.haskeys(): tokens += tmptokens except (ParseException, IndexError): pass return loc, tokens def _setResultsName(self, name, listAllMatches=False): if __diag__.warn_ungrouped_named_tokens_in_collection: for e in [self.expr] + getattr(self.expr, 'exprs', []): if isinstance(e, ParserElement) and e.resultsName: warnings.warn("{0}: setting results name {1!r} on {2} expression " "collides with {3!r} on contained expression".format("warn_ungrouped_named_tokens_in_collection", name, type(self).__name__, e.resultsName), stacklevel=3) return super(_MultipleMatch, self)._setResultsName(name, listAllMatches) class OneOrMore(_MultipleMatch): """Repetition of one or more of the given expression. Parameters: - expr - expression that must match one or more times - stopOn - (default= ``None``) - expression for a terminating sentinel (only required if the sentinel would ordinarily match the repetition expression) Example:: data_word = Word(alphas) label = data_word + FollowedBy(':') attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join)) text = "shape: SQUARE posn: upper left color: BLACK" OneOrMore(attr_expr).parseString(text).pprint() # Fail! read 'color' as data instead of next label -> [['shape', 'SQUARE color']] # use stopOn attribute for OneOrMore to avoid reading label string as part of the data attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) OneOrMore(attr_expr).parseString(text).pprint() # Better -> [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']] # could also be written as (attr_expr * (1,)).parseString(text).pprint() """ def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "{" + _ustr(self.expr) + "}..." return self.strRepr class ZeroOrMore(_MultipleMatch): """Optional repetition of zero or more of the given expression. Parameters: - expr - expression that must match zero or more times - stopOn - (default= ``None``) - expression for a terminating sentinel (only required if the sentinel would ordinarily match the repetition expression) Example: similar to :class:`OneOrMore` """ def __init__(self, expr, stopOn=None): super(ZeroOrMore, self).__init__(expr, stopOn=stopOn) self.mayReturnEmpty = True def parseImpl(self, instring, loc, doActions=True): try: return super(ZeroOrMore, self).parseImpl(instring, loc, doActions) except (ParseException, IndexError): return loc, [] def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "[" + _ustr(self.expr) + "]..." return self.strRepr class _NullToken(object): def __bool__(self): return False __nonzero__ = __bool__ def __str__(self): return "" class Optional(ParseElementEnhance): """Optional matching of the given expression. Parameters: - expr - expression that must match zero or more times - default (optional) - value to be returned if the optional expression is not found. Example:: # US postal code can be a 5-digit zip, plus optional 4-digit qualifier zip = Combine(Word(nums, exact=5) + Optional('-' + Word(nums, exact=4))) zip.runTests(''' # traditional ZIP code 12345 # ZIP+4 form 12101-0001 # invalid ZIP 98765- ''') prints:: # traditional ZIP code 12345 ['12345'] # ZIP+4 form 12101-0001 ['12101-0001'] # invalid ZIP 98765- ^ FAIL: Expected end of text (at char 5), (line:1, col:6) """ __optionalNotMatched = _NullToken() def __init__(self, expr, default=__optionalNotMatched): super(Optional, self).__init__(expr, savelist=False) self.saveAsList = self.expr.saveAsList self.defaultValue = default self.mayReturnEmpty = True def parseImpl(self, instring, loc, doActions=True): try: loc, tokens = self.expr._parse(instring, loc, doActions, callPreParse=False) except (ParseException, IndexError): if self.defaultValue is not self.__optionalNotMatched: if self.expr.resultsName: tokens = ParseResults([self.defaultValue]) tokens[self.expr.resultsName] = self.defaultValue else: tokens = [self.defaultValue] else: tokens = [] return loc, tokens def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is None: self.strRepr = "[" + _ustr(self.expr) + "]" return self.strRepr class SkipTo(ParseElementEnhance): """Token for skipping over all undefined text until the matched expression is found. Parameters: - expr - target expression marking the end of the data to be skipped - include - (default= ``False``) if True, the target expression is also parsed (the skipped text and target expression are returned as a 2-element list). - ignore - (default= ``None``) used to define grammars (typically quoted strings and comments) that might contain false matches to the target expression - failOn - (default= ``None``) define expressions that are not allowed to be included in the skipped test; if found before the target expression is found, the SkipTo is not a match Example:: report = ''' Outstanding Issues Report - 1 Jan 2000 # | Severity | Description | Days Open -----+----------+-------------------------------------------+----------- 101 | Critical | Intermittent system crash | 6 94 | Cosmetic | Spelling error on Login ('log|n') | 14 79 | Minor | System slow when running too many reports | 47 ''' integer = Word(nums) SEP = Suppress('|') # use SkipTo to simply match everything up until the next SEP # - ignore quoted strings, so that a '|' character inside a quoted string does not match # - parse action will call token.strip() for each matched token, i.e., the description body string_data = SkipTo(SEP, ignore=quotedString) string_data.setParseAction(tokenMap(str.strip)) ticket_expr = (integer("issue_num") + SEP + string_data("sev") + SEP + string_data("desc") + SEP + integer("days_open")) for tkt in ticket_expr.searchString(report): print tkt.dump() prints:: ['101', 'Critical', 'Intermittent system crash', '6'] - days_open: 6 - desc: Intermittent system crash - issue_num: 101 - sev: Critical ['94', 'Cosmetic', "Spelling error on Login ('log|n')", '14'] - days_open: 14 - desc: Spelling error on Login ('log|n') - issue_num: 94 - sev: Cosmetic ['79', 'Minor', 'System slow when running too many reports', '47'] - days_open: 47 - desc: System slow when running too many reports - issue_num: 79 - sev: Minor """ def __init__(self, other, include=False, ignore=None, failOn=None): super(SkipTo, self).__init__(other) self.ignoreExpr = ignore self.mayReturnEmpty = True self.mayIndexError = False self.includeMatch = include self.saveAsList = False if isinstance(failOn, basestring): self.failOn = self._literalStringClass(failOn) else: self.failOn = failOn self.errmsg = "No match found for " + _ustr(self.expr) def parseImpl(self, instring, loc, doActions=True): startloc = loc instrlen = len(instring) expr = self.expr expr_parse = self.expr._parse self_failOn_canParseNext = self.failOn.canParseNext if self.failOn is not None else None self_ignoreExpr_tryParse = self.ignoreExpr.tryParse if self.ignoreExpr is not None else None tmploc = loc while tmploc <= instrlen: if self_failOn_canParseNext is not None: # break if failOn expression matches if self_failOn_canParseNext(instring, tmploc): break if self_ignoreExpr_tryParse is not None: # advance past ignore expressions while 1: try: tmploc = self_ignoreExpr_tryParse(instring, tmploc) except ParseBaseException: break try: expr_parse(instring, tmploc, doActions=False, callPreParse=False) except (ParseException, IndexError): # no match, advance loc in string tmploc += 1 else: # matched skipto expr, done break else: # ran off the end of the input string without matching skipto expr, fail raise ParseException(instring, loc, self.errmsg, self) # build up return values loc = tmploc skiptext = instring[startloc:loc] skipresult = ParseResults(skiptext) if self.includeMatch: loc, mat = expr_parse(instring, loc, doActions, callPreParse=False) skipresult += mat return loc, skipresult class Forward(ParseElementEnhance): """Forward declaration of an expression to be defined later - used for recursive grammars, such as algebraic infix notation. When the expression is known, it is assigned to the ``Forward`` variable using the '<<' operator. Note: take care when assigning to ``Forward`` not to overlook precedence of operators. Specifically, '|' has a lower precedence than '<<', so that:: fwdExpr << a | b | c will actually be evaluated as:: (fwdExpr << a) | b | c thereby leaving b and c out as parseable alternatives. It is recommended that you explicitly group the values inserted into the ``Forward``:: fwdExpr << (a | b | c) Converting to use the '<<=' operator instead will avoid this problem. See :class:`ParseResults.pprint` for an example of a recursive parser created using ``Forward``. """ def __init__(self, other=None): super(Forward, self).__init__(other, savelist=False) def __lshift__(self, other): if isinstance(other, basestring): other = self._literalStringClass(other) self.expr = other self.strRepr = None self.mayIndexError = self.expr.mayIndexError self.mayReturnEmpty = self.expr.mayReturnEmpty self.setWhitespaceChars(self.expr.whiteChars) self.skipWhitespace = self.expr.skipWhitespace self.saveAsList = self.expr.saveAsList self.ignoreExprs.extend(self.expr.ignoreExprs) return self def __ilshift__(self, other): return self << other def leaveWhitespace(self): self.skipWhitespace = False return self def streamline(self): if not self.streamlined: self.streamlined = True if self.expr is not None: self.expr.streamline() return self def validate(self, validateTrace=None): if validateTrace is None: validateTrace = [] if self not in validateTrace: tmp = validateTrace[:] + [self] if self.expr is not None: self.expr.validate(tmp) self.checkRecursion([]) def __str__(self): if hasattr(self, "name"): return self.name if self.strRepr is not None: return self.strRepr # Avoid infinite recursion by setting a temporary strRepr self.strRepr = ": ..." # Use the string representation of main expression. retString = '...' try: if self.expr is not None: retString = _ustr(self.expr)[:1000] else: retString = "None" finally: self.strRepr = self.__class__.__name__ + ": " + retString return self.strRepr def copy(self): if self.expr is not None: return super(Forward, self).copy() else: ret = Forward() ret <<= self return ret def _setResultsName(self, name, listAllMatches=False): if __diag__.warn_name_set_on_empty_Forward: if self.expr is None: warnings.warn("{0}: setting results name {0!r} on {1} expression " "that has no contained expression".format("warn_name_set_on_empty_Forward", name, type(self).__name__), stacklevel=3) return super(Forward, self)._setResultsName(name, listAllMatches) class TokenConverter(ParseElementEnhance): """ Abstract subclass of :class:`ParseExpression`, for converting parsed results. """ def __init__(self, expr, savelist=False): super(TokenConverter, self).__init__(expr) # , savelist) self.saveAsList = False class Combine(TokenConverter): """Converter to concatenate all matching tokens to a single string. By default, the matching patterns must also be contiguous in the input string; this can be disabled by specifying ``'adjacent=False'`` in the constructor. Example:: real = Word(nums) + '.' + Word(nums) print(real.parseString('3.1416')) # -> ['3', '.', '1416'] # will also erroneously match the following print(real.parseString('3. 1416')) # -> ['3', '.', '1416'] real = Combine(Word(nums) + '.' + Word(nums)) print(real.parseString('3.1416')) # -> ['3.1416'] # no match when there are internal spaces print(real.parseString('3. 1416')) # -> Exception: Expected W:(0123...) """ def __init__(self, expr, joinString="", adjacent=True): super(Combine, self).__init__(expr) # suppress whitespace-stripping in contained parse expressions, but re-enable it on the Combine itself if adjacent: self.leaveWhitespace() self.adjacent = adjacent self.skipWhitespace = True self.joinString = joinString self.callPreparse = True def ignore(self, other): if self.adjacent: ParserElement.ignore(self, other) else: super(Combine, self).ignore(other) return self def postParse(self, instring, loc, tokenlist): retToks = tokenlist.copy() del retToks[:] retToks += ParseResults(["".join(tokenlist._asStringList(self.joinString))], modal=self.modalResults) if self.resultsName and retToks.haskeys(): return [retToks] else: return retToks class Group(TokenConverter): """Converter to return the matched tokens as a list - useful for returning tokens of :class:`ZeroOrMore` and :class:`OneOrMore` expressions. Example:: ident = Word(alphas) num = Word(nums) term = ident | num func = ident + Optional(delimitedList(term)) print(func.parseString("fn a, b, 100")) # -> ['fn', 'a', 'b', '100'] func = ident + Group(Optional(delimitedList(term))) print(func.parseString("fn a, b, 100")) # -> ['fn', ['a', 'b', '100']] """ def __init__(self, expr): super(Group, self).__init__(expr) self.saveAsList = True def postParse(self, instring, loc, tokenlist): return [tokenlist] class Dict(TokenConverter): """Converter to return a repetitive expression as a list, but also as a dictionary. Each element can also be referenced using the first token in the expression as its key. Useful for tabular report scraping when the first column can be used as a item key. Example:: data_word = Word(alphas) label = data_word + FollowedBy(':') attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join)) text = "shape: SQUARE posn: upper left color: light blue texture: burlap" attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) # print attributes as plain groups print(OneOrMore(attr_expr).parseString(text).dump()) # instead of OneOrMore(expr), parse using Dict(OneOrMore(Group(expr))) - Dict will auto-assign names result = Dict(OneOrMore(Group(attr_expr))).parseString(text) print(result.dump()) # access named fields as dict entries, or output as dict print(result['shape']) print(result.asDict()) prints:: ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap'] [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']] - color: light blue - posn: upper left - shape: SQUARE - texture: burlap SQUARE {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'} See more examples at :class:`ParseResults` of accessing fields by results name. """ def __init__(self, expr): super(Dict, self).__init__(expr) self.saveAsList = True def postParse(self, instring, loc, tokenlist): for i, tok in enumerate(tokenlist): if len(tok) == 0: continue ikey = tok[0] if isinstance(ikey, int): ikey = _ustr(tok[0]).strip() if len(tok) == 1: tokenlist[ikey] = _ParseResultsWithOffset("", i) elif len(tok) == 2 and not isinstance(tok[1], ParseResults): tokenlist[ikey] = _ParseResultsWithOffset(tok[1], i) else: dictvalue = tok.copy() # ParseResults(i) del dictvalue[0] if len(dictvalue) != 1 or (isinstance(dictvalue, ParseResults) and dictvalue.haskeys()): tokenlist[ikey] = _ParseResultsWithOffset(dictvalue, i) else: tokenlist[ikey] = _ParseResultsWithOffset(dictvalue[0], i) if self.resultsName: return [tokenlist] else: return tokenlist class Suppress(TokenConverter): """Converter for ignoring the results of a parsed expression. Example:: source = "a, b, c,d" wd = Word(alphas) wd_list1 = wd + ZeroOrMore(',' + wd) print(wd_list1.parseString(source)) # often, delimiters that are useful during parsing are just in the # way afterward - use Suppress to keep them out of the parsed output wd_list2 = wd + ZeroOrMore(Suppress(',') + wd) print(wd_list2.parseString(source)) prints:: ['a', ',', 'b', ',', 'c', ',', 'd'] ['a', 'b', 'c', 'd'] (See also :class:`delimitedList`.) """ def postParse(self, instring, loc, tokenlist): return [] def suppress(self): return self class OnlyOnce(object): """Wrapper for parse actions, to ensure they are only called once. """ def __init__(self, methodCall): self.callable = _trim_arity(methodCall) self.called = False def __call__(self, s, l, t): if not self.called: results = self.callable(s, l, t) self.called = True return results raise ParseException(s, l, "") def reset(self): self.called = False def traceParseAction(f): """Decorator for debugging parse actions. When the parse action is called, this decorator will print ``">> entering method-name(line:, , )"``. When the parse action completes, the decorator will print ``"<<"`` followed by the returned value, or any exception that the parse action raised. Example:: wd = Word(alphas) @traceParseAction def remove_duplicate_chars(tokens): return ''.join(sorted(set(''.join(tokens)))) wds = OneOrMore(wd).setParseAction(remove_duplicate_chars) print(wds.parseString("slkdjs sld sldd sdlf sdljf")) prints:: >>entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {})) < 3: thisFunc = paArgs[0].__class__.__name__ + '.' + thisFunc sys.stderr.write(">>entering %s(line: '%s', %d, %r)\n" % (thisFunc, line(l, s), l, t)) try: ret = f(*paArgs) except Exception as exc: sys.stderr.write("< ['aa', 'bb', 'cc'] delimitedList(Word(hexnums), delim=':', combine=True).parseString("AA:BB:CC:DD:EE") # -> ['AA:BB:CC:DD:EE'] """ dlName = _ustr(expr) + " [" + _ustr(delim) + " " + _ustr(expr) + "]..." if combine: return Combine(expr + ZeroOrMore(delim + expr)).setName(dlName) else: return (expr + ZeroOrMore(Suppress(delim) + expr)).setName(dlName) def countedArray(expr, intExpr=None): """Helper to define a counted list of expressions. This helper defines a pattern of the form:: integer expr expr expr... where the leading integer tells how many expr expressions follow. The matched tokens returns the array of expr tokens as a list - the leading count token is suppressed. If ``intExpr`` is specified, it should be a pyparsing expression that produces an integer value. Example:: countedArray(Word(alphas)).parseString('2 ab cd ef') # -> ['ab', 'cd'] # in this parser, the leading integer value is given in binary, # '10' indicating that 2 values are in the array binaryConstant = Word('01').setParseAction(lambda t: int(t[0], 2)) countedArray(Word(alphas), intExpr=binaryConstant).parseString('10 ab cd ef') # -> ['ab', 'cd'] """ arrayExpr = Forward() def countFieldParseAction(s, l, t): n = t[0] arrayExpr << (n and Group(And([expr] * n)) or Group(empty)) return [] if intExpr is None: intExpr = Word(nums).setParseAction(lambda t: int(t[0])) else: intExpr = intExpr.copy() intExpr.setName("arrayLen") intExpr.addParseAction(countFieldParseAction, callDuringTry=True) return (intExpr + arrayExpr).setName('(len) ' + _ustr(expr) + '...') def _flatten(L): ret = [] for i in L: if isinstance(i, list): ret.extend(_flatten(i)) else: ret.append(i) return ret def matchPreviousLiteral(expr): """Helper to define an expression that is indirectly defined from the tokens matched in a previous expression, that is, it looks for a 'repeat' of a previous expression. For example:: first = Word(nums) second = matchPreviousLiteral(first) matchExpr = first + ":" + second will match ``"1:1"``, but not ``"1:2"``. Because this matches a previous literal, will also match the leading ``"1:1"`` in ``"1:10"``. If this is not desired, use :class:`matchPreviousExpr`. Do *not* use with packrat parsing enabled. """ rep = Forward() def copyTokenToRepeater(s, l, t): if t: if len(t) == 1: rep << t[0] else: # flatten t tokens tflat = _flatten(t.asList()) rep << And(Literal(tt) for tt in tflat) else: rep << Empty() expr.addParseAction(copyTokenToRepeater, callDuringTry=True) rep.setName('(prev) ' + _ustr(expr)) return rep def matchPreviousExpr(expr): """Helper to define an expression that is indirectly defined from the tokens matched in a previous expression, that is, it looks for a 'repeat' of a previous expression. For example:: first = Word(nums) second = matchPreviousExpr(first) matchExpr = first + ":" + second will match ``"1:1"``, but not ``"1:2"``. Because this matches by expressions, will *not* match the leading ``"1:1"`` in ``"1:10"``; the expressions are evaluated first, and then compared, so ``"1"`` is compared with ``"10"``. Do *not* use with packrat parsing enabled. """ rep = Forward() e2 = expr.copy() rep <<= e2 def copyTokenToRepeater(s, l, t): matchTokens = _flatten(t.asList()) def mustMatchTheseTokens(s, l, t): theseTokens = _flatten(t.asList()) if theseTokens != matchTokens: raise ParseException('', 0, '') rep.setParseAction(mustMatchTheseTokens, callDuringTry=True) expr.addParseAction(copyTokenToRepeater, callDuringTry=True) rep.setName('(prev) ' + _ustr(expr)) return rep def _escapeRegexRangeChars(s): # ~ escape these chars: ^-[] for c in r"\^-[]": s = s.replace(c, _bslash + c) s = s.replace("\n", r"\n") s = s.replace("\t", r"\t") return _ustr(s) def oneOf(strs, caseless=False, useRegex=True, asKeyword=False): """Helper to quickly define a set of alternative Literals, and makes sure to do longest-first testing when there is a conflict, regardless of the input order, but returns a :class:`MatchFirst` for best performance. Parameters: - strs - a string of space-delimited literals, or a collection of string literals - caseless - (default= ``False``) - treat all literals as caseless - useRegex - (default= ``True``) - as an optimization, will generate a Regex object; otherwise, will generate a :class:`MatchFirst` object (if ``caseless=True`` or ``asKeyword=True``, or if creating a :class:`Regex` raises an exception) - asKeyword - (default=``False``) - enforce Keyword-style matching on the generated expressions Example:: comp_oper = oneOf("< = > <= >= !=") var = Word(alphas) number = Word(nums) term = var | number comparison_expr = term + comp_oper + term print(comparison_expr.searchString("B = 12 AA=23 B<=AA AA>12")) prints:: [['B', '=', '12'], ['AA', '=', '23'], ['B', '<=', 'AA'], ['AA', '>', '12']] """ if isinstance(caseless, basestring): warnings.warn("More than one string argument passed to oneOf, pass " "choices as a list or space-delimited string", stacklevel=2) if caseless: isequal = (lambda a, b: a.upper() == b.upper()) masks = (lambda a, b: b.upper().startswith(a.upper())) parseElementClass = CaselessKeyword if asKeyword else CaselessLiteral else: isequal = (lambda a, b: a == b) masks = (lambda a, b: b.startswith(a)) parseElementClass = Keyword if asKeyword else Literal symbols = [] if isinstance(strs, basestring): symbols = strs.split() elif isinstance(strs, Iterable): symbols = list(strs) else: warnings.warn("Invalid argument to oneOf, expected string or iterable", SyntaxWarning, stacklevel=2) if not symbols: return NoMatch() if not asKeyword: # if not producing keywords, need to reorder to take care to avoid masking # longer choices with shorter ones i = 0 while i < len(symbols) - 1: cur = symbols[i] for j, other in enumerate(symbols[i + 1:]): if isequal(other, cur): del symbols[i + j + 1] break elif masks(cur, other): del symbols[i + j + 1] symbols.insert(i, other) break else: i += 1 if not (caseless or asKeyword) and useRegex: # ~ print (strs, "->", "|".join([_escapeRegexChars(sym) for sym in symbols])) try: if len(symbols) == len("".join(symbols)): return Regex("[%s]" % "".join(_escapeRegexRangeChars(sym) for sym in symbols)).setName(' | '.join(symbols)) else: return Regex("|".join(re.escape(sym) for sym in symbols)).setName(' | '.join(symbols)) except Exception: warnings.warn("Exception creating Regex for oneOf, building MatchFirst", SyntaxWarning, stacklevel=2) # last resort, just use MatchFirst return MatchFirst(parseElementClass(sym) for sym in symbols).setName(' | '.join(symbols)) def dictOf(key, value): """Helper to easily and clearly define a dictionary by specifying the respective patterns for the key and value. Takes care of defining the :class:`Dict`, :class:`ZeroOrMore`, and :class:`Group` tokens in the proper order. The key pattern can include delimiting markers or punctuation, as long as they are suppressed, thereby leaving the significant key text. The value pattern can include named results, so that the :class:`Dict` results can include named token fields. Example:: text = "shape: SQUARE posn: upper left color: light blue texture: burlap" attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) print(OneOrMore(attr_expr).parseString(text).dump()) attr_label = label attr_value = Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join) # similar to Dict, but simpler call format result = dictOf(attr_label, attr_value).parseString(text) print(result.dump()) print(result['shape']) print(result.shape) # object attribute access works too print(result.asDict()) prints:: [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']] - color: light blue - posn: upper left - shape: SQUARE - texture: burlap SQUARE SQUARE {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'} """ return Dict(OneOrMore(Group(key + value))) def originalTextFor(expr, asString=True): """Helper to return the original, untokenized text for a given expression. Useful to restore the parsed fields of an HTML start tag into the raw tag text itself, or to revert separate tokens with intervening whitespace back to the original matching input text. By default, returns astring containing the original parsed text. If the optional ``asString`` argument is passed as ``False``, then the return value is a :class:`ParseResults` containing any results names that were originally matched, and a single token containing the original matched text from the input string. So if the expression passed to :class:`originalTextFor` contains expressions with defined results names, you must set ``asString`` to ``False`` if you want to preserve those results name values. Example:: src = "this is test bold text normal text " for tag in ("b", "i"): opener, closer = makeHTMLTags(tag) patt = originalTextFor(opener + SkipTo(closer) + closer) print(patt.searchString(src)[0]) prints:: [' bold text '] ['text'] """ locMarker = Empty().setParseAction(lambda s, loc, t: loc) endlocMarker = locMarker.copy() endlocMarker.callPreparse = False matchExpr = locMarker("_original_start") + expr + endlocMarker("_original_end") if asString: extractText = lambda s, l, t: s[t._original_start: t._original_end] else: def extractText(s, l, t): t[:] = [s[t.pop('_original_start'):t.pop('_original_end')]] matchExpr.setParseAction(extractText) matchExpr.ignoreExprs = expr.ignoreExprs return matchExpr def ungroup(expr): """Helper to undo pyparsing's default grouping of And expressions, even if all but one are non-empty. """ return TokenConverter(expr).addParseAction(lambda t: t[0]) def locatedExpr(expr): """Helper to decorate a returned token with its starting and ending locations in the input string. This helper adds the following results names: - locn_start = location where matched expression begins - locn_end = location where matched expression ends - value = the actual parsed results Be careful if the input text contains ```` characters, you may want to call :class:`ParserElement.parseWithTabs` Example:: wd = Word(alphas) for match in locatedExpr(wd).searchString("ljsdf123lksdjjf123lkkjj1222"): print(match) prints:: [[0, 'ljsdf', 5]] [[8, 'lksdjjf', 15]] [[18, 'lkkjj', 23]] """ locator = Empty().setParseAction(lambda s, l, t: l) return Group(locator("locn_start") + expr("value") + locator.copy().leaveWhitespace()("locn_end")) # convenience constants for positional expressions empty = Empty().setName("empty") lineStart = LineStart().setName("lineStart") lineEnd = LineEnd().setName("lineEnd") stringStart = StringStart().setName("stringStart") stringEnd = StringEnd().setName("stringEnd") _escapedPunc = Word(_bslash, r"\[]-*.$+^?()~ ", exact=2).setParseAction(lambda s, l, t: t[0][1]) _escapedHexChar = Regex(r"\\0?[xX][0-9a-fA-F]+").setParseAction(lambda s, l, t: unichr(int(t[0].lstrip(r'\0x'), 16))) _escapedOctChar = Regex(r"\\0[0-7]+").setParseAction(lambda s, l, t: unichr(int(t[0][1:], 8))) _singleChar = _escapedPunc | _escapedHexChar | _escapedOctChar | CharsNotIn(r'\]', exact=1) _charRange = Group(_singleChar + Suppress("-") + _singleChar) _reBracketExpr = Literal("[") + Optional("^").setResultsName("negate") + Group(OneOrMore(_charRange | _singleChar)).setResultsName("body") + "]" def srange(s): r"""Helper to easily define string ranges for use in Word construction. Borrows syntax from regexp '[]' string range definitions:: srange("[0-9]") -> "0123456789" srange("[a-z]") -> "abcdefghijklmnopqrstuvwxyz" srange("[a-z$_]") -> "abcdefghijklmnopqrstuvwxyz$_" The input string must be enclosed in []'s, and the returned string is the expanded character set joined into a single string. The values enclosed in the []'s may be: - a single character - an escaped character with a leading backslash (such as ``\-`` or ``\]``) - an escaped hex character with a leading ``'\x'`` (``\x21``, which is a ``'!'`` character) (``\0x##`` is also supported for backwards compatibility) - an escaped octal character with a leading ``'\0'`` (``\041``, which is a ``'!'`` character) - a range of any of the above, separated by a dash (``'a-z'``, etc.) - any combination of the above (``'aeiouy'``, ``'a-zA-Z0-9_$'``, etc.) """ _expanded = lambda p: p if not isinstance(p, ParseResults) else ''.join(unichr(c) for c in range(ord(p[0]), ord(p[1]) + 1)) try: return "".join(_expanded(part) for part in _reBracketExpr.parseString(s).body) except Exception: return "" def matchOnlyAtCol(n): """Helper method for defining parse actions that require matching at a specific column in the input text. """ def verifyCol(strg, locn, toks): if col(locn, strg) != n: raise ParseException(strg, locn, "matched token not at column %d" % n) return verifyCol def replaceWith(replStr): """Helper method for common parse actions that simply return a literal value. Especially useful when used with :class:`transformString` (). Example:: num = Word(nums).setParseAction(lambda toks: int(toks[0])) na = oneOf("N/A NA").setParseAction(replaceWith(math.nan)) term = na | num OneOrMore(term).parseString("324 234 N/A 234") # -> [324, 234, nan, 234] """ return lambda s, l, t: [replStr] def removeQuotes(s, l, t): """Helper parse action for removing quotation marks from parsed quoted strings. Example:: # by default, quotation marks are included in parsed results quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["'Now is the Winter of our Discontent'"] # use removeQuotes to strip quotation marks from parsed results quotedString.setParseAction(removeQuotes) quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["Now is the Winter of our Discontent"] """ return t[0][1:-1] def tokenMap(func, *args): """Helper to define a parse action by mapping a function to all elements of a ParseResults list. If any additional args are passed, they are forwarded to the given function as additional arguments after the token, as in ``hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))``, which will convert the parsed data to an integer using base 16. Example (compare the last to example in :class:`ParserElement.transformString`:: hex_ints = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16)) hex_ints.runTests(''' 00 11 22 aa FF 0a 0d 1a ''') upperword = Word(alphas).setParseAction(tokenMap(str.upper)) OneOrMore(upperword).runTests(''' my kingdom for a horse ''') wd = Word(alphas).setParseAction(tokenMap(str.title)) OneOrMore(wd).setParseAction(' '.join).runTests(''' now is the winter of our discontent made glorious summer by this sun of york ''') prints:: 00 11 22 aa FF 0a 0d 1a [0, 17, 34, 170, 255, 10, 13, 26] my kingdom for a horse ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE'] now is the winter of our discontent made glorious summer by this sun of york ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York'] """ def pa(s, l, t): return [func(tokn, *args) for tokn in t] try: func_name = getattr(func, '__name__', getattr(func, '__class__').__name__) except Exception: func_name = str(func) pa.__name__ = func_name return pa upcaseTokens = tokenMap(lambda t: _ustr(t).upper()) """(Deprecated) Helper parse action to convert tokens to upper case. Deprecated in favor of :class:`pyparsing_common.upcaseTokens`""" downcaseTokens = tokenMap(lambda t: _ustr(t).lower()) """(Deprecated) Helper parse action to convert tokens to lower case. Deprecated in favor of :class:`pyparsing_common.downcaseTokens`""" def _makeTags(tagStr, xml, suppress_LT=Suppress("<"), suppress_GT=Suppress(">")): """Internal helper to construct opening and closing tag expressions, given a tag name""" if isinstance(tagStr, basestring): resname = tagStr tagStr = Keyword(tagStr, caseless=not xml) else: resname = tagStr.name tagAttrName = Word(alphas, alphanums + "_-:") if xml: tagAttrValue = dblQuotedString.copy().setParseAction(removeQuotes) openTag = (suppress_LT + tagStr("tag") + Dict(ZeroOrMore(Group(tagAttrName + Suppress("=") + tagAttrValue))) + Optional("/", default=[False])("empty").setParseAction(lambda s, l, t: t[0] == '/') + suppress_GT) else: tagAttrValue = quotedString.copy().setParseAction(removeQuotes) | Word(printables, excludeChars=">") openTag = (suppress_LT + tagStr("tag") + Dict(ZeroOrMore(Group(tagAttrName.setParseAction(downcaseTokens) + Optional(Suppress("=") + tagAttrValue)))) + Optional("/", default=[False])("empty").setParseAction(lambda s, l, t: t[0] == '/') + suppress_GT) closeTag = Combine(_L("", adjacent=False) openTag.setName("<%s>" % resname) # add start results name in parse action now that ungrouped names are not reported at two levels openTag.addParseAction(lambda t: t.__setitem__("start" + "".join(resname.replace(":", " ").title().split()), t.copy())) closeTag = closeTag("end" + "".join(resname.replace(":", " ").title().split())).setName("" % resname) openTag.tag = resname closeTag.tag = resname openTag.tag_body = SkipTo(closeTag()) return openTag, closeTag def makeHTMLTags(tagStr): """Helper to construct opening and closing tag expressions for HTML, given a tag name. Matches tags in either upper or lower case, attributes with namespaces and with quoted or unquoted values. Example:: text = 'More info at the pyparsing wiki page' # makeHTMLTags returns pyparsing expressions for the opening and # closing tags as a 2-tuple a, a_end = makeHTMLTags("A") link_expr = a + SkipTo(a_end)("link_text") + a_end for link in link_expr.searchString(text): # attributes in the tag (like "href" shown here) are # also accessible as named results print(link.link_text, '->', link.href) prints:: pyparsing -> https://github.com/pyparsing/pyparsing/wiki """ return _makeTags(tagStr, False) def makeXMLTags(tagStr): """Helper to construct opening and closing tag expressions for XML, given a tag name. Matches tags only in the given upper/lower case. Example: similar to :class:`makeHTMLTags` """ return _makeTags(tagStr, True) def withAttribute(*args, **attrDict): """Helper to create a validating parse action to be used with start tags created with :class:`makeXMLTags` or :class:`makeHTMLTags`. Use ``withAttribute`` to qualify a starting tag with a required attribute value, to avoid false matches on common tags such as ```` or ``
``. Call ``withAttribute`` with a series of attribute names and values. Specify the list of filter attributes names and values as: - keyword arguments, as in ``(align="right")``, or - as an explicit dict with ``**`` operator, when an attribute name is also a Python reserved word, as in ``**{"class":"Customer", "align":"right"}`` - a list of name-value tuples, as in ``(("ns1:class", "Customer"), ("ns2:align", "right"))`` For attribute names with a namespace prefix, you must use the second form. Attribute names are matched insensitive to upper/lower case. If just testing for ``class`` (with or without a namespace), use :class:`withClass`. To verify that the attribute exists, but without specifying a value, pass ``withAttribute.ANY_VALUE`` as the value. Example:: html = '''
Some text
1 4 0 1 0
1,3 2,3 1,1
this has no type
''' div,div_end = makeHTMLTags("div") # only match div tag having a type attribute with value "grid" div_grid = div().setParseAction(withAttribute(type="grid")) grid_expr = div_grid + SkipTo(div | div_end)("body") for grid_header in grid_expr.searchString(html): print(grid_header.body) # construct a match with any div tag having a type attribute, regardless of the value div_any_type = div().setParseAction(withAttribute(type=withAttribute.ANY_VALUE)) div_expr = div_any_type + SkipTo(div | div_end)("body") for div_header in div_expr.searchString(html): print(div_header.body) prints:: 1 4 0 1 0 1 4 0 1 0 1,3 2,3 1,1 """ if args: attrs = args[:] else: attrs = attrDict.items() attrs = [(k, v) for k, v in attrs] def pa(s, l, tokens): for attrName, attrValue in attrs: if attrName not in tokens: raise ParseException(s, l, "no matching attribute " + attrName) if attrValue != withAttribute.ANY_VALUE and tokens[attrName] != attrValue: raise ParseException(s, l, "attribute '%s' has value '%s', must be '%s'" % (attrName, tokens[attrName], attrValue)) return pa withAttribute.ANY_VALUE = object() def withClass(classname, namespace=''): """Simplified version of :class:`withAttribute` when matching on a div class - made difficult because ``class`` is a reserved word in Python. Example:: html = '''
Some text
1 4 0 1 0
1,3 2,3 1,1
this <div> has no class
''' div,div_end = makeHTMLTags("div") div_grid = div().setParseAction(withClass("grid")) grid_expr = div_grid + SkipTo(div | div_end)("body") for grid_header in grid_expr.searchString(html): print(grid_header.body) div_any_type = div().setParseAction(withClass(withAttribute.ANY_VALUE)) div_expr = div_any_type + SkipTo(div | div_end)("body") for div_header in div_expr.searchString(html): print(div_header.body) prints:: 1 4 0 1 0 1 4 0 1 0 1,3 2,3 1,1 """ classattr = "%s:class" % namespace if namespace else "class" return withAttribute(**{classattr: classname}) opAssoc = SimpleNamespace() opAssoc.LEFT = object() opAssoc.RIGHT = object() def infixNotation(baseExpr, opList, lpar=Suppress('('), rpar=Suppress(')')): """Helper method for constructing grammars of expressions made up of operators working in a precedence hierarchy. Operators may be unary or binary, left- or right-associative. Parse actions can also be attached to operator expressions. The generated parser will also recognize the use of parentheses to override operator precedences (see example below). Note: if you define a deep operator list, you may see performance issues when using infixNotation. See :class:`ParserElement.enablePackrat` for a mechanism to potentially improve your parser performance. Parameters: - baseExpr - expression representing the most basic element for the nested - opList - list of tuples, one for each operator precedence level in the expression grammar; each tuple is of the form ``(opExpr, numTerms, rightLeftAssoc, parseAction)``, where: - opExpr is the pyparsing expression for the operator; may also be a string, which will be converted to a Literal; if numTerms is 3, opExpr is a tuple of two expressions, for the two operators separating the 3 terms - numTerms is the number of terms for this operator (must be 1, 2, or 3) - rightLeftAssoc is the indicator whether the operator is right or left associative, using the pyparsing-defined constants ``opAssoc.RIGHT`` and ``opAssoc.LEFT``. - parseAction is the parse action to be associated with expressions matching this operator expression (the parse action tuple member may be omitted); if the parse action is passed a tuple or list of functions, this is equivalent to calling ``setParseAction(*fn)`` (:class:`ParserElement.setParseAction`) - lpar - expression for matching left-parentheses (default= ``Suppress('(')``) - rpar - expression for matching right-parentheses (default= ``Suppress(')')``) Example:: # simple example of four-function arithmetic with ints and # variable names integer = pyparsing_common.signed_integer varname = pyparsing_common.identifier arith_expr = infixNotation(integer | varname, [ ('-', 1, opAssoc.RIGHT), (oneOf('* /'), 2, opAssoc.LEFT), (oneOf('+ -'), 2, opAssoc.LEFT), ]) arith_expr.runTests(''' 5+3*6 (5+3)*6 -2--11 ''', fullDump=False) prints:: 5+3*6 [[5, '+', [3, '*', 6]]] (5+3)*6 [[[5, '+', 3], '*', 6]] -2--11 [[['-', 2], '-', ['-', 11]]] """ # captive version of FollowedBy that does not do parse actions or capture results names class _FB(FollowedBy): def parseImpl(self, instring, loc, doActions=True): self.expr.tryParse(instring, loc) return loc, [] ret = Forward() lastExpr = baseExpr | (lpar + ret + rpar) for i, operDef in enumerate(opList): opExpr, arity, rightLeftAssoc, pa = (operDef + (None, ))[:4] termName = "%s term" % opExpr if arity < 3 else "%s%s term" % opExpr if arity == 3: if opExpr is None or len(opExpr) != 2: raise ValueError( "if numterms=3, opExpr must be a tuple or list of two expressions") opExpr1, opExpr2 = opExpr thisExpr = Forward().setName(termName) if rightLeftAssoc == opAssoc.LEFT: if arity == 1: matchExpr = _FB(lastExpr + opExpr) + Group(lastExpr + OneOrMore(opExpr)) elif arity == 2: if opExpr is not None: matchExpr = _FB(lastExpr + opExpr + lastExpr) + Group(lastExpr + OneOrMore(opExpr + lastExpr)) else: matchExpr = _FB(lastExpr + lastExpr) + Group(lastExpr + OneOrMore(lastExpr)) elif arity == 3: matchExpr = (_FB(lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr) + Group(lastExpr + OneOrMore(opExpr1 + lastExpr + opExpr2 + lastExpr))) else: raise ValueError("operator must be unary (1), binary (2), or ternary (3)") elif rightLeftAssoc == opAssoc.RIGHT: if arity == 1: # try to avoid LR with this extra test if not isinstance(opExpr, Optional): opExpr = Optional(opExpr) matchExpr = _FB(opExpr.expr + thisExpr) + Group(opExpr + thisExpr) elif arity == 2: if opExpr is not None: matchExpr = _FB(lastExpr + opExpr + thisExpr) + Group(lastExpr + OneOrMore(opExpr + thisExpr)) else: matchExpr = _FB(lastExpr + thisExpr) + Group(lastExpr + OneOrMore(thisExpr)) elif arity == 3: matchExpr = (_FB(lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr) + Group(lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr)) else: raise ValueError("operator must be unary (1), binary (2), or ternary (3)") else: raise ValueError("operator must indicate right or left associativity") if pa: if isinstance(pa, (tuple, list)): matchExpr.setParseAction(*pa) else: matchExpr.setParseAction(pa) thisExpr <<= (matchExpr.setName(termName) | lastExpr) lastExpr = thisExpr ret <<= lastExpr return ret operatorPrecedence = infixNotation """(Deprecated) Former name of :class:`infixNotation`, will be dropped in a future release.""" dblQuotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*') + '"').setName("string enclosed in double quotes") sglQuotedString = Combine(Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*") + "'").setName("string enclosed in single quotes") quotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*') + '"' | Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*") + "'").setName("quotedString using single or double quotes") unicodeString = Combine(_L('u') + quotedString.copy()).setName("unicode string literal") def nestedExpr(opener="(", closer=")", content=None, ignoreExpr=quotedString.copy()): """Helper method for defining nested lists enclosed in opening and closing delimiters ("(" and ")" are the default). Parameters: - opener - opening character for a nested list (default= ``"("``); can also be a pyparsing expression - closer - closing character for a nested list (default= ``")"``); can also be a pyparsing expression - content - expression for items within the nested lists (default= ``None``) - ignoreExpr - expression for ignoring opening and closing delimiters (default= :class:`quotedString`) If an expression is not provided for the content argument, the nested expression will capture all whitespace-delimited content between delimiters as a list of separate values. Use the ``ignoreExpr`` argument to define expressions that may contain opening or closing characters that should not be treated as opening or closing characters for nesting, such as quotedString or a comment expression. Specify multiple expressions using an :class:`Or` or :class:`MatchFirst`. The default is :class:`quotedString`, but if no expressions are to be ignored, then pass ``None`` for this argument. Example:: data_type = oneOf("void int short long char float double") decl_data_type = Combine(data_type + Optional(Word('*'))) ident = Word(alphas+'_', alphanums+'_') number = pyparsing_common.number arg = Group(decl_data_type + ident) LPAR, RPAR = map(Suppress, "()") code_body = nestedExpr('{', '}', ignoreExpr=(quotedString | cStyleComment)) c_function = (decl_data_type("type") + ident("name") + LPAR + Optional(delimitedList(arg), [])("args") + RPAR + code_body("body")) c_function.ignore(cStyleComment) source_code = ''' int is_odd(int x) { return (x%2); } int dec_to_hex(char hchar) { if (hchar >= '0' && hchar <= '9') { return (ord(hchar)-ord('0')); } else { return (10+ord(hchar)-ord('A')); } } ''' for func in c_function.searchString(source_code): print("%(name)s (%(type)s) args: %(args)s" % func) prints:: is_odd (int) args: [['int', 'x']] dec_to_hex (int) args: [['char', 'hchar']] """ if opener == closer: raise ValueError("opening and closing strings cannot be the same") if content is None: if isinstance(opener, basestring) and isinstance(closer, basestring): if len(opener) == 1 and len(closer) == 1: if ignoreExpr is not None: content = (Combine(OneOrMore(~ignoreExpr + CharsNotIn(opener + closer + ParserElement.DEFAULT_WHITE_CHARS, exact=1) ) ).setParseAction(lambda t: t[0].strip())) else: content = (empty.copy() + CharsNotIn(opener + closer + ParserElement.DEFAULT_WHITE_CHARS ).setParseAction(lambda t: t[0].strip())) else: if ignoreExpr is not None: content = (Combine(OneOrMore(~ignoreExpr + ~Literal(opener) + ~Literal(closer) + CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS, exact=1)) ).setParseAction(lambda t: t[0].strip())) else: content = (Combine(OneOrMore(~Literal(opener) + ~Literal(closer) + CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS, exact=1)) ).setParseAction(lambda t: t[0].strip())) else: raise ValueError("opening and closing arguments must be strings if no content expression is given") ret = Forward() if ignoreExpr is not None: ret <<= Group(Suppress(opener) + ZeroOrMore(ignoreExpr | ret | content) + Suppress(closer)) else: ret <<= Group(Suppress(opener) + ZeroOrMore(ret | content) + Suppress(closer)) ret.setName('nested %s%s expression' % (opener, closer)) return ret def indentedBlock(blockStatementExpr, indentStack, indent=True): """Helper method for defining space-delimited indentation blocks, such as those used to define block statements in Python source code. Parameters: - blockStatementExpr - expression defining syntax of statement that is repeated within the indented block - indentStack - list created by caller to manage indentation stack (multiple statementWithIndentedBlock expressions within a single grammar should share a common indentStack) - indent - boolean indicating whether block must be indented beyond the current level; set to False for block of left-most statements (default= ``True``) A valid block must contain at least one ``blockStatement``. Example:: data = ''' def A(z): A1 B = 100 G = A2 A2 A3 B def BB(a,b,c): BB1 def BBA(): bba1 bba2 bba3 C D def spam(x,y): def eggs(z): pass ''' indentStack = [1] stmt = Forward() identifier = Word(alphas, alphanums) funcDecl = ("def" + identifier + Group("(" + Optional(delimitedList(identifier)) + ")") + ":") func_body = indentedBlock(stmt, indentStack) funcDef = Group(funcDecl + func_body) rvalue = Forward() funcCall = Group(identifier + "(" + Optional(delimitedList(rvalue)) + ")") rvalue << (funcCall | identifier | Word(nums)) assignment = Group(identifier + "=" + rvalue) stmt << (funcDef | assignment | identifier) module_body = OneOrMore(stmt) parseTree = module_body.parseString(data) parseTree.pprint() prints:: [['def', 'A', ['(', 'z', ')'], ':', [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]], 'B', ['def', 'BB', ['(', 'a', 'b', 'c', ')'], ':', [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]], 'C', 'D', ['def', 'spam', ['(', 'x', 'y', ')'], ':', [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]] """ backup_stack = indentStack[:] def reset_stack(): indentStack[:] = backup_stack def checkPeerIndent(s, l, t): if l >= len(s): return curCol = col(l, s) if curCol != indentStack[-1]: if curCol > indentStack[-1]: raise ParseException(s, l, "illegal nesting") raise ParseException(s, l, "not a peer entry") def checkSubIndent(s, l, t): curCol = col(l, s) if curCol > indentStack[-1]: indentStack.append(curCol) else: raise ParseException(s, l, "not a subentry") def checkUnindent(s, l, t): if l >= len(s): return curCol = col(l, s) if not(indentStack and curCol in indentStack): raise ParseException(s, l, "not an unindent") if curCol < indentStack[-1]: indentStack.pop() NL = OneOrMore(LineEnd().setWhitespaceChars("\t ").suppress(), stopOn=StringEnd()) INDENT = (Empty() + Empty().setParseAction(checkSubIndent)).setName('INDENT') PEER = Empty().setParseAction(checkPeerIndent).setName('') UNDENT = Empty().setParseAction(checkUnindent).setName('UNINDENT') if indent: smExpr = Group(Optional(NL) + INDENT + OneOrMore(PEER + Group(blockStatementExpr) + Optional(NL), stopOn=StringEnd()) + UNDENT) else: smExpr = Group(Optional(NL) + OneOrMore(PEER + Group(blockStatementExpr) + Optional(NL), stopOn=StringEnd()) + UNDENT) smExpr.setFailAction(lambda a, b, c, d: reset_stack()) blockStatementExpr.ignore(_bslash + LineEnd()) return smExpr.setName('indented block') alphas8bit = srange(r"[\0xc0-\0xd6\0xd8-\0xf6\0xf8-\0xff]") punc8bit = srange(r"[\0xa1-\0xbf\0xd7\0xf7]") anyOpenTag, anyCloseTag = makeHTMLTags(Word(alphas, alphanums + "_:").setName('any tag')) _htmlEntityMap = dict(zip("gt lt amp nbsp quot apos".split(), '><& "\'')) commonHTMLEntity = Regex('&(?P' + '|'.join(_htmlEntityMap.keys()) +");").setName("common HTML entity") def replaceHTMLEntity(t): """Helper parser action to replace common HTML entities with their special characters""" return _htmlEntityMap.get(t.entity) # it's easy to get these comment structures wrong - they're very common, so may as well make them available cStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/').setName("C style comment") "Comment of the form ``/* ... */``" htmlComment = Regex(r"").setName("HTML comment") "Comment of the form ````" restOfLine = Regex(r".*").leaveWhitespace().setName("rest of line") dblSlashComment = Regex(r"//(?:\\\n|[^\n])*").setName("// comment") "Comment of the form ``// ... (to end of line)``" cppStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/' | dblSlashComment).setName("C++ style comment") "Comment of either form :class:`cStyleComment` or :class:`dblSlashComment`" javaStyleComment = cppStyleComment "Same as :class:`cppStyleComment`" pythonStyleComment = Regex(r"#.*").setName("Python style comment") "Comment of the form ``# ... (to end of line)``" _commasepitem = Combine(OneOrMore(Word(printables, excludeChars=',') + Optional(Word(" \t") + ~Literal(",") + ~LineEnd()))).streamline().setName("commaItem") commaSeparatedList = delimitedList(Optional(quotedString.copy() | _commasepitem, default="")).setName("commaSeparatedList") """(Deprecated) Predefined expression of 1 or more printable words or quoted strings, separated by commas. This expression is deprecated in favor of :class:`pyparsing_common.comma_separated_list`. """ # some other useful expressions - using lower-case class name since we are really using this as a namespace class pyparsing_common: """Here are some common low-level expressions that may be useful in jump-starting parser development: - numeric forms (:class:`integers`, :class:`reals`, :class:`scientific notation`) - common :class:`programming identifiers` - network addresses (:class:`MAC`, :class:`IPv4`, :class:`IPv6`) - ISO8601 :class:`dates` and :class:`datetime` - :class:`UUID` - :class:`comma-separated list` Parse actions: - :class:`convertToInteger` - :class:`convertToFloat` - :class:`convertToDate` - :class:`convertToDatetime` - :class:`stripHTMLTags` - :class:`upcaseTokens` - :class:`downcaseTokens` Example:: pyparsing_common.number.runTests(''' # any int or real number, returned as the appropriate type 100 -100 +100 3.14159 6.02e23 1e-12 ''') pyparsing_common.fnumber.runTests(''' # any int or real number, returned as float 100 -100 +100 3.14159 6.02e23 1e-12 ''') pyparsing_common.hex_integer.runTests(''' # hex numbers 100 FF ''') pyparsing_common.fraction.runTests(''' # fractions 1/2 -3/4 ''') pyparsing_common.mixed_integer.runTests(''' # mixed fractions 1 1/2 -3/4 1-3/4 ''') import uuid pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID)) pyparsing_common.uuid.runTests(''' # uuid 12345678-1234-5678-1234-567812345678 ''') prints:: # any int or real number, returned as the appropriate type 100 [100] -100 [-100] +100 [100] 3.14159 [3.14159] 6.02e23 [6.02e+23] 1e-12 [1e-12] # any int or real number, returned as float 100 [100.0] -100 [-100.0] +100 [100.0] 3.14159 [3.14159] 6.02e23 [6.02e+23] 1e-12 [1e-12] # hex numbers 100 [256] FF [255] # fractions 1/2 [0.5] -3/4 [-0.75] # mixed fractions 1 [1] 1/2 [0.5] -3/4 [-0.75] 1-3/4 [1.75] # uuid 12345678-1234-5678-1234-567812345678 [UUID('12345678-1234-5678-1234-567812345678')] """ convertToInteger = tokenMap(int) """ Parse action for converting parsed integers to Python int """ convertToFloat = tokenMap(float) """ Parse action for converting parsed numbers to Python float """ integer = Word(nums).setName("integer").setParseAction(convertToInteger) """expression that parses an unsigned integer, returns an int""" hex_integer = Word(hexnums).setName("hex integer").setParseAction(tokenMap(int, 16)) """expression that parses a hexadecimal integer, returns an int""" signed_integer = Regex(r'[+-]?\d+').setName("signed integer").setParseAction(convertToInteger) """expression that parses an integer with optional leading sign, returns an int""" fraction = (signed_integer().setParseAction(convertToFloat) + '/' + signed_integer().setParseAction(convertToFloat)).setName("fraction") """fractional expression of an integer divided by an integer, returns a float""" fraction.addParseAction(lambda t: t[0]/t[-1]) mixed_integer = (fraction | signed_integer + Optional(Optional('-').suppress() + fraction)).setName("fraction or mixed integer-fraction") """mixed integer of the form 'integer - fraction', with optional leading integer, returns float""" mixed_integer.addParseAction(sum) real = Regex(r'[+-]?(?:\d+\.\d*|\.\d+)').setName("real number").setParseAction(convertToFloat) """expression that parses a floating point number and returns a float""" sci_real = Regex(r'[+-]?(?:\d+(?:[eE][+-]?\d+)|(?:\d+\.\d*|\.\d+)(?:[eE][+-]?\d+)?)').setName("real number with scientific notation").setParseAction(convertToFloat) """expression that parses a floating point number with optional scientific notation and returns a float""" # streamlining this expression makes the docs nicer-looking number = (sci_real | real | signed_integer).streamline() """any numeric expression, returns the corresponding Python type""" fnumber = Regex(r'[+-]?\d+\.?\d*([eE][+-]?\d+)?').setName("fnumber").setParseAction(convertToFloat) """any int or real number, returned as float""" identifier = Word(alphas + '_', alphanums + '_').setName("identifier") """typical code identifier (leading alpha or '_', followed by 0 or more alphas, nums, or '_')""" ipv4_address = Regex(r'(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}').setName("IPv4 address") "IPv4 address (``0.0.0.0 - 255.255.255.255``)" _ipv6_part = Regex(r'[0-9a-fA-F]{1,4}').setName("hex_integer") _full_ipv6_address = (_ipv6_part + (':' + _ipv6_part) * 7).setName("full IPv6 address") _short_ipv6_address = (Optional(_ipv6_part + (':' + _ipv6_part) * (0, 6)) + "::" + Optional(_ipv6_part + (':' + _ipv6_part) * (0, 6)) ).setName("short IPv6 address") _short_ipv6_address.addCondition(lambda t: sum(1 for tt in t if pyparsing_common._ipv6_part.matches(tt)) < 8) _mixed_ipv6_address = ("::ffff:" + ipv4_address).setName("mixed IPv6 address") ipv6_address = Combine((_full_ipv6_address | _mixed_ipv6_address | _short_ipv6_address).setName("IPv6 address")).setName("IPv6 address") "IPv6 address (long, short, or mixed form)" mac_address = Regex(r'[0-9a-fA-F]{2}([:.-])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}').setName("MAC address") "MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)" @staticmethod def convertToDate(fmt="%Y-%m-%d"): """ Helper to create a parse action for converting parsed date string to Python datetime.date Params - - fmt - format to be passed to datetime.strptime (default= ``"%Y-%m-%d"``) Example:: date_expr = pyparsing_common.iso8601_date.copy() date_expr.setParseAction(pyparsing_common.convertToDate()) print(date_expr.parseString("1999-12-31")) prints:: [datetime.date(1999, 12, 31)] """ def cvt_fn(s, l, t): try: return datetime.strptime(t[0], fmt).date() except ValueError as ve: raise ParseException(s, l, str(ve)) return cvt_fn @staticmethod def convertToDatetime(fmt="%Y-%m-%dT%H:%M:%S.%f"): """Helper to create a parse action for converting parsed datetime string to Python datetime.datetime Params - - fmt - format to be passed to datetime.strptime (default= ``"%Y-%m-%dT%H:%M:%S.%f"``) Example:: dt_expr = pyparsing_common.iso8601_datetime.copy() dt_expr.setParseAction(pyparsing_common.convertToDatetime()) print(dt_expr.parseString("1999-12-31T23:59:59.999")) prints:: [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)] """ def cvt_fn(s, l, t): try: return datetime.strptime(t[0], fmt) except ValueError as ve: raise ParseException(s, l, str(ve)) return cvt_fn iso8601_date = Regex(r'(?P\d{4})(?:-(?P\d\d)(?:-(?P\d\d))?)?').setName("ISO8601 date") "ISO8601 date (``yyyy-mm-dd``)" iso8601_datetime = Regex(r'(?P\d{4})-(?P\d\d)-(?P\d\d)[T ](?P\d\d):(?P\d\d)(:(?P\d\d(\.\d*)?)?)?(?PZ|[+-]\d\d:?\d\d)?').setName("ISO8601 datetime") "ISO8601 datetime (``yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)``) - trailing seconds, milliseconds, and timezone optional; accepts separating ``'T'`` or ``' '``" uuid = Regex(r'[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}').setName("UUID") "UUID (``xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx``)" _html_stripper = anyOpenTag.suppress() | anyCloseTag.suppress() @staticmethod def stripHTMLTags(s, l, tokens): """Parse action to remove HTML tags from web page HTML source Example:: # strip HTML links from normal text text = 'More info at the
pyparsing wiki page' td, td_end = makeHTMLTags("TD") table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)("body") + td_end print(table_text.parseString(text).body) Prints:: More info at the pyparsing wiki page """ return pyparsing_common._html_stripper.transformString(tokens[0]) _commasepitem = Combine(OneOrMore(~Literal(",") + ~LineEnd() + Word(printables, excludeChars=',') + Optional(White(" \t")))).streamline().setName("commaItem") comma_separated_list = delimitedList(Optional(quotedString.copy() | _commasepitem, default='') ).setName("comma separated list") """Predefined expression of 1 or more printable words or quoted strings, separated by commas.""" upcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).upper())) """Parse action to convert tokens to upper case.""" downcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).lower())) """Parse action to convert tokens to lower case.""" class _lazyclassproperty(object): def __init__(self, fn): self.fn = fn self.__doc__ = fn.__doc__ self.__name__ = fn.__name__ def __get__(self, obj, cls): if cls is None: cls = type(obj) if not hasattr(cls, '_intern') or any(cls._intern is getattr(superclass, '_intern', []) for superclass in cls.__mro__[1:]): cls._intern = {} attrname = self.fn.__name__ if attrname not in cls._intern: cls._intern[attrname] = self.fn(cls) return cls._intern[attrname] class unicode_set(object): """ A set of Unicode characters, for language-specific strings for ``alphas``, ``nums``, ``alphanums``, and ``printables``. A unicode_set is defined by a list of ranges in the Unicode character set, in a class attribute ``_ranges``, such as:: _ranges = [(0x0020, 0x007e), (0x00a0, 0x00ff),] A unicode set can also be defined using multiple inheritance of other unicode sets:: class CJK(Chinese, Japanese, Korean): pass """ _ranges = [] @classmethod def _get_chars_for_ranges(cls): ret = [] for cc in cls.__mro__: if cc is unicode_set: break for rr in cc._ranges: ret.extend(range(rr[0], rr[-1] + 1)) return [unichr(c) for c in sorted(set(ret))] @_lazyclassproperty def printables(cls): "all non-whitespace characters in this range" return u''.join(filterfalse(unicode.isspace, cls._get_chars_for_ranges())) @_lazyclassproperty def alphas(cls): "all alphabetic characters in this range" return u''.join(filter(unicode.isalpha, cls._get_chars_for_ranges())) @_lazyclassproperty def nums(cls): "all numeric digit characters in this range" return u''.join(filter(unicode.isdigit, cls._get_chars_for_ranges())) @_lazyclassproperty def alphanums(cls): "all alphanumeric characters in this range" return cls.alphas + cls.nums class pyparsing_unicode(unicode_set): """ A namespace class for defining common language unicode_sets. """ _ranges = [(32, sys.maxunicode)] class Latin1(unicode_set): "Unicode set for Latin-1 Unicode Character Range" _ranges = [(0x0020, 0x007e), (0x00a0, 0x00ff),] class LatinA(unicode_set): "Unicode set for Latin-A Unicode Character Range" _ranges = [(0x0100, 0x017f),] class LatinB(unicode_set): "Unicode set for Latin-B Unicode Character Range" _ranges = [(0x0180, 0x024f),] class Greek(unicode_set): "Unicode set for Greek Unicode Character Ranges" _ranges = [ (0x0370, 0x03ff), (0x1f00, 0x1f15), (0x1f18, 0x1f1d), (0x1f20, 0x1f45), (0x1f48, 0x1f4d), (0x1f50, 0x1f57), (0x1f59,), (0x1f5b,), (0x1f5d,), (0x1f5f, 0x1f7d), (0x1f80, 0x1fb4), (0x1fb6, 0x1fc4), (0x1fc6, 0x1fd3), (0x1fd6, 0x1fdb), (0x1fdd, 0x1fef), (0x1ff2, 0x1ff4), (0x1ff6, 0x1ffe), ] class Cyrillic(unicode_set): "Unicode set for Cyrillic Unicode Character Range" _ranges = [(0x0400, 0x04ff)] class Chinese(unicode_set): "Unicode set for Chinese Unicode Character Range" _ranges = [(0x4e00, 0x9fff), (0x3000, 0x303f),] class Japanese(unicode_set): "Unicode set for Japanese Unicode Character Range, combining Kanji, Hiragana, and Katakana ranges" _ranges = [] class Kanji(unicode_set): "Unicode set for Kanji Unicode Character Range" _ranges = [(0x4E00, 0x9Fbf), (0x3000, 0x303f),] class Hiragana(unicode_set): "Unicode set for Hiragana Unicode Character Range" _ranges = [(0x3040, 0x309f),] class Katakana(unicode_set): "Unicode set for Katakana Unicode Character Range" _ranges = [(0x30a0, 0x30ff),] class Korean(unicode_set): "Unicode set for Korean Unicode Character Range" _ranges = [(0xac00, 0xd7af), (0x1100, 0x11ff), (0x3130, 0x318f), (0xa960, 0xa97f), (0xd7b0, 0xd7ff), (0x3000, 0x303f),] class CJK(Chinese, Japanese, Korean): "Unicode set for combined Chinese, Japanese, and Korean (CJK) Unicode Character Range" pass class Thai(unicode_set): "Unicode set for Thai Unicode Character Range" _ranges = [(0x0e01, 0x0e3a), (0x0e3f, 0x0e5b),] class Arabic(unicode_set): "Unicode set for Arabic Unicode Character Range" _ranges = [(0x0600, 0x061b), (0x061e, 0x06ff), (0x0700, 0x077f),] class Hebrew(unicode_set): "Unicode set for Hebrew Unicode Character Range" _ranges = [(0x0590, 0x05ff),] class Devanagari(unicode_set): "Unicode set for Devanagari Unicode Character Range" _ranges = [(0x0900, 0x097f), (0xa8e0, 0xa8ff)] pyparsing_unicode.Japanese._ranges = (pyparsing_unicode.Japanese.Kanji._ranges + pyparsing_unicode.Japanese.Hiragana._ranges + pyparsing_unicode.Japanese.Katakana._ranges) # define ranges in language character sets if PY_3: setattr(pyparsing_unicode, u"العربية", pyparsing_unicode.Arabic) setattr(pyparsing_unicode, u"中文", pyparsing_unicode.Chinese) setattr(pyparsing_unicode, u"кириллица", pyparsing_unicode.Cyrillic) setattr(pyparsing_unicode, u"Ελληνικά", pyparsing_unicode.Greek) setattr(pyparsing_unicode, u"עִברִית", pyparsing_unicode.Hebrew) setattr(pyparsing_unicode, u"日本語", pyparsing_unicode.Japanese) setattr(pyparsing_unicode.Japanese, u"漢字", pyparsing_unicode.Japanese.Kanji) setattr(pyparsing_unicode.Japanese, u"カタカナ", pyparsing_unicode.Japanese.Katakana) setattr(pyparsing_unicode.Japanese, u"ひらがな", pyparsing_unicode.Japanese.Hiragana) setattr(pyparsing_unicode, u"한국어", pyparsing_unicode.Korean) setattr(pyparsing_unicode, u"ไทย", pyparsing_unicode.Thai) setattr(pyparsing_unicode, u"देवनागरी", pyparsing_unicode.Devanagari) class pyparsing_test: """ namespace class for classes useful in writing unit tests """ class reset_pyparsing_context: """ Context manager to be used when writing unit tests that modify pyparsing config values: - packrat parsing - default whitespace characters. - default keyword characters - literal string auto-conversion class - __diag__ settings Example: with reset_pyparsing_context(): # test that literals used to construct a grammar are automatically suppressed ParserElement.inlineLiteralsUsing(Suppress) term = Word(alphas) | Word(nums) group = Group('(' + term[...] + ')') # assert that the '()' characters are not included in the parsed tokens self.assertParseAndCheckLisst(group, "(abc 123 def)", ['abc', '123', 'def']) # after exiting context manager, literals are converted to Literal expressions again """ def __init__(self): self._save_context = {} def save(self): self._save_context["default_whitespace"] = ParserElement.DEFAULT_WHITE_CHARS self._save_context["default_keyword_chars"] = Keyword.DEFAULT_KEYWORD_CHARS self._save_context[ "literal_string_class" ] = ParserElement._literalStringClass self._save_context["packrat_enabled"] = ParserElement._packratEnabled self._save_context["packrat_parse"] = ParserElement._parse self._save_context["__diag__"] = { name: getattr(__diag__, name) for name in __diag__._all_names } self._save_context["__compat__"] = { "collect_all_And_tokens": __compat__.collect_all_And_tokens } return self def restore(self): # reset pyparsing global state if ( ParserElement.DEFAULT_WHITE_CHARS != self._save_context["default_whitespace"] ): ParserElement.setDefaultWhitespaceChars( self._save_context["default_whitespace"] ) Keyword.DEFAULT_KEYWORD_CHARS = self._save_context["default_keyword_chars"] ParserElement.inlineLiteralsUsing( self._save_context["literal_string_class"] ) for name, value in self._save_context["__diag__"].items(): setattr(__diag__, name, value) ParserElement._packratEnabled = self._save_context["packrat_enabled"] ParserElement._parse = self._save_context["packrat_parse"] __compat__.collect_all_And_tokens = self._save_context["__compat__"] def __enter__(self): return self.save() def __exit__(self, *args): return self.restore() class TestParseResultsAsserts: """ A mixin class to add parse results assertion methods to normal unittest.TestCase classes. """ def assertParseResultsEquals( self, result, expected_list=None, expected_dict=None, msg=None ): """ Unit test assertion to compare a ParseResults object with an optional expected_list, and compare any defined results names with an optional expected_dict. """ if expected_list is not None: self.assertEqual(expected_list, result.asList(), msg=msg) if expected_dict is not None: self.assertEqual(expected_dict, result.asDict(), msg=msg) def assertParseAndCheckList( self, expr, test_string, expected_list, msg=None, verbose=True ): """ Convenience wrapper assert to test a parser element and input string, and assert that the resulting ParseResults.asList() is equal to the expected_list. """ result = expr.parseString(test_string, parseAll=True) if verbose: print(result.dump()) self.assertParseResultsEquals(result, expected_list=expected_list, msg=msg) def assertParseAndCheckDict( self, expr, test_string, expected_dict, msg=None, verbose=True ): """ Convenience wrapper assert to test a parser element and input string, and assert that the resulting ParseResults.asDict() is equal to the expected_dict. """ result = expr.parseString(test_string, parseAll=True) if verbose: print(result.dump()) self.assertParseResultsEquals(result, expected_dict=expected_dict, msg=msg) def assertRunTestResults( self, run_tests_report, expected_parse_results=None, msg=None ): """ Unit test assertion to evaluate output of ParserElement.runTests(). If a list of list-dict tuples is given as the expected_parse_results argument, then these are zipped with the report tuples returned by runTests and evaluated using assertParseResultsEquals. Finally, asserts that the overall runTests() success value is True. :param run_tests_report: tuple(bool, [tuple(str, ParseResults or Exception)]) returned from runTests :param expected_parse_results (optional): [tuple(str, list, dict, Exception)] """ run_test_success, run_test_results = run_tests_report if expected_parse_results is not None: merged = [ (rpt[0], rpt[1], expected) for rpt, expected in zip(run_test_results, expected_parse_results) ] for test_string, result, expected in merged: # expected should be a tuple containing a list and/or a dict or an exception, # and optional failure message string # an empty tuple will skip any result validation fail_msg = next( (exp for exp in expected if isinstance(exp, str)), None ) expected_exception = next( ( exp for exp in expected if isinstance(exp, type) and issubclass(exp, Exception) ), None, ) if expected_exception is not None: with self.assertRaises( expected_exception=expected_exception, msg=fail_msg or msg ): if isinstance(result, Exception): raise result else: expected_list = next( (exp for exp in expected if isinstance(exp, list)), None ) expected_dict = next( (exp for exp in expected if isinstance(exp, dict)), None ) if (expected_list, expected_dict) != (None, None): self.assertParseResultsEquals( result, expected_list=expected_list, expected_dict=expected_dict, msg=fail_msg or msg, ) else: # warning here maybe? print("no validation for {!r}".format(test_string)) # do this last, in case some specific test results can be reported instead self.assertTrue( run_test_success, msg=msg if msg is not None else "failed runTests" ) @contextmanager def assertRaisesParseException(self, exc_type=ParseException, msg=None): with self.assertRaises(exc_type, msg=msg): yield if __name__ == "__main__": selectToken = CaselessLiteral("select") fromToken = CaselessLiteral("from") ident = Word(alphas, alphanums + "_$") columnName = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens) columnNameList = Group(delimitedList(columnName)).setName("columns") columnSpec = ('*' | columnNameList) tableName = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens) tableNameList = Group(delimitedList(tableName)).setName("tables") simpleSQL = selectToken("command") + columnSpec("columns") + fromToken + tableNameList("tables") # demo runTests method, including embedded comments in test string simpleSQL.runTests(""" # '*' as column list and dotted table name select * from SYS.XYZZY # caseless match on "SELECT", and casts back to "select" SELECT * from XYZZY, ABC # list of column names, and mixed case SELECT keyword Select AA,BB,CC from Sys.dual # multiple tables Select A, B, C from Sys.dual, Table2 # invalid SELECT keyword - should fail Xelect A, B, C from Sys.dual # incomplete command - should fail Select # invalid column name - should fail Select ^^^ frox Sys.dual """) pyparsing_common.number.runTests(""" 100 -100 +100 3.14159 6.02e23 1e-12 """) # any int or real number, returned as float pyparsing_common.fnumber.runTests(""" 100 -100 +100 3.14159 6.02e23 1e-12 """) pyparsing_common.hex_integer.runTests(""" 100 FF """) import uuid pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID)) pyparsing_common.uuid.runTests(""" 12345678-1234-5678-1234-567812345678 """) ================================================ FILE: shotgun_api3/lib/requirements.txt ================================================ # Copyright (c) 2009-2019, Shotgun Software Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # - Neither the name of the Shotgun Software Inc nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # This file is unused. It is left there so Github can warn us is a CVE is # released for our dependencies. httplib2==0.22.0 certifi==2026.1.4 pyparsing==2.4.7 ================================================ FILE: shotgun_api3/lib/sgtimezone.py ================================================ #! /opt/local/bin/python # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. # ---------------------------------------------------------------------------- # SG_TIMEZONE module # this is rolled into the this shotgun api file to avoid having to require # current users of api2 to install new modules and modify PYTHONPATH info. # ---------------------------------------------------------------------------- from datetime import tzinfo, timedelta import time as _time class SgTimezone(object): ''' Shotgun's server infrastructure is configured for Coordinated Universal Time (UTC). In order to provide relevant local timestamps to users, we wrap the datetime module's tzinfo to provide convenient conversion methods. ''' ZERO = timedelta(0) STDOFFSET = timedelta(seconds=-_time.timezone) if _time.daylight: DSTOFFSET = timedelta(seconds=-_time.altzone) else: DSTOFFSET = STDOFFSET DSTDIFF = DSTOFFSET - STDOFFSET def __init__(self): self.utc = UTC() self.local = LocalTimezone() @classmethod def UTC(cls): ''' For backwards compatibility, from when UTC was a nested class, we allow instantiation via SgTimezone ''' return UTC() @classmethod def LocalTimezone(cls): ''' For backwards compatibility, from when LocalTimezone was a nested class, we allow instantiation via SgTimezone ''' return LocalTimezone() class UTC(tzinfo): ''' Implementation of datetime's tzinfo to provide consistent calculated offsets against Coordinated Universal Time (UTC) ''' def utcoffset(self, dt): return SgTimezone.ZERO def tzname(self, dt): return "UTC" def dst(self, dt): return SgTimezone.ZERO class LocalTimezone(tzinfo): ''' Implementation of datetime's tzinfo to provide convenient conversion between Shotgun server time and local user time ''' def utcoffset(self, dt): ''' Difference between the user's local timezone and UTC timezone in seconds ''' if self._isdst(dt): return SgTimezone.DSTOFFSET else: return SgTimezone.STDOFFSET def dst(self, dt): ''' Daylight savings time (dst) offset in seconds ''' if self._isdst(dt): return SgTimezone.DSTDIFF else: return SgTimezone.ZERO def tzname(self, dt): ''' Name of the user's local timezone, including a reference to daylight savings time (dst) if applicable ''' return _time.tzname[self._isdst(dt)] def _isdst(self, dt): ''' Calculate whether the timestamp in question was in daylight savings ''' tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1) stamp = _time.mktime(tt) tt = _time.localtime(stamp) return tt.tm_isdst > 0 ================================================ FILE: shotgun_api3/py.typed ================================================ ================================================ FILE: shotgun_api3/shotgun.py ================================================ #!/usr/bin/env python """ ----------------------------------------------------------------------------- Copyright (c) 2009-2019, Shotgun Software Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Shotgun Software Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ from __future__ import annotations # Required for compatibility with Python 3.7 import base64 import copy import datetime import json import http.client # Used for secure file upload import http.cookiejar # used for attachment upload import io import logging import mimetypes import os import re import shutil # used for attachment download import ssl import stat # used for attachment upload import sys import time import urllib.error import urllib.parse import urllib.request import uuid # used for attachment upload import xml.etree.ElementTree from typing import ( Any, BinaryIO, Dict, Iterable, List, Optional, Tuple, TypeVar, Union, ) # Import Error and ResponseError (even though they're unused in this file) since they need # to be exposed as part of the API. from xmlrpc.client import Error, ProtocolError, ResponseError # noqa from .lib.httplib2 import Http, ProxyInfo, socks from .lib.sgtimezone import SgTimezone LOG = logging.getLogger("shotgun_api3") """ Logging instance for shotgun_api3 Provides a logging instance where log messages are sent during execution. This instance has no handler associated with it. .. seealso:: :ref:`logging` """ LOG.setLevel(logging.WARN) # mimetypes imported in version specific imports mimetypes.add_type("video/webm", ".webm") # webm and mp4 seem to be missing mimetypes.add_type("video/mp4", ".mp4") # from some OS/distros SG_TIMEZONE = SgTimezone() SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION = False # ---------------------------------------------------------------------------- # Version __version__ = "3.10.0" # ---------------------------------------------------------------------------- # Types T = TypeVar("T") if sys.version_info < (3, 9): OrderItem = Dict GroupingItem = Dict BaseEntity = Dict else: from typing import TypedDict class OrderItem(TypedDict): field_name: str direction: str class GroupingItem(TypedDict): field: str type: str direction: str class BaseEntity(TypedDict, total=False): id: int type: str # ---------------------------------------------------------------------------- # Errors class ShotgunError(Exception): """ Base for all Shotgun API Errors. """ pass class ShotgunFileDownloadError(ShotgunError): """ Exception for file download-related errors. """ pass class ShotgunThumbnailNotReady(ShotgunError): """ Exception for when trying to use a 'pending thumbnail' (aka transient thumbnail) in an operation """ pass class Fault(ShotgunError): """ Exception when server-side exception detected. """ pass class AuthenticationFault(Fault): """ Exception when the server side reports an error related to authentication. """ pass class MissingTwoFactorAuthenticationFault(Fault): """ Exception when the server side reports an error related to missing two-factor authentication credentials. """ pass class UserCredentialsNotAllowedForSSOAuthenticationFault(Fault): """ Exception when the server is configured to use SSO. It is not possible to use a username/password pair to authenticate on such server. """ pass class UserCredentialsNotAllowedForOxygenAuthenticationFault(Fault): """ Exception when the server is configured to use Oxygen. It is not possible to use a username/password pair to authenticate on such server. """ pass # ---------------------------------------------------------------------------- # API class ServerCapabilities(object): """ Container for the servers capabilities, such as version enabled features. .. warning:: This class is part of the internal API and its interfaces may change at any time in the future. Therefore, usage of this class is discouraged. """ def __init__(self, host: str, meta: Dict[str, Any]) -> None: """ ServerCapabilities.__init__ :param str host: Host name for the server excluding protocol. :param dict meta: dict of meta data for the server returned from the info() api method. :ivar str host: :ivar dict server_info: :ivar tuple version: Simple version of the Shotgun server. ``(major, minor, rev)`` :ivar bool is_dev: ``True`` if server is running a development version of the Shotgun codebase. """ # Server host name self.host = host self.server_info = meta # Version from server is major.minor.rev or major.minor.rev."Dev" # Store version as tuple and check dev flag try: self.version = meta.get("version", None) except AttributeError: self.version = None if not self.version: raise ShotgunError( "The Flow Production Tracking Server didn't respond with a version number. " "This may be because you are running an older version of " "Flow Production Tracking against a more recent version of the Flow Production Tracking API. " "For more information, please contact the Autodesk support." ) if len(self.version) > 3 and self.version[3] == "Dev": self.is_dev = True else: self.is_dev = False self.version = tuple(self.version[:3]) self._ensure_json_supported() def _ensure_support(self, feature: Dict[str, Any], raise_hell: bool = True) -> bool: """ Checks the server version supports a given feature, raises an exception if it does not. :param dict feature: dict where **version** key contains a 3 integer tuple indicating the supported server version and **label** key contains a human-readable label str:: { 'version': (5, 4, 4), 'label': 'project parameter } :param bool raise_hell: Whether to raise an exception if the feature is not supported. Defaults to ``True`` :raises: :class:`ShotgunError` if the current server version does not support ``feature`` """ if not self.version or self.version < feature["version"]: if raise_hell: raise ShotgunError( "%s requires server version %s or higher, " "server is %s" % ( feature["label"], _version_str(feature["version"]), _version_str(self.version), ) ) return False else: return True def _ensure_json_supported(self) -> None: """ Ensures server has support for JSON API endpoint added in v2.4.0. """ self._ensure_support({"version": (2, 4, 0), "label": "JSON API"}) def ensure_include_archived_projects(self) -> None: """ Ensures server has support for archived Projects feature added in v5.3.14. """ self._ensure_support( {"version": (5, 3, 14), "label": "include_archived_projects parameter"} ) def ensure_per_project_customization(self) -> bool: """ Ensures server has support for per-project customization feature added in v5.4.4. """ return self._ensure_support( {"version": (5, 4, 4), "label": "project parameter"}, True ) def ensure_support_for_additional_filter_presets(self) -> bool: """ Ensures server has support for additional filter presets feature added in v7.0.0. """ return self._ensure_support( {"version": (7, 0, 0), "label": "additional_filter_presets parameter"}, True ) def ensure_user_following_support(self) -> bool: """ Ensures server has support for listing items a user is following, added in v7.0.12. """ return self._ensure_support( {"version": (7, 0, 12), "label": "user_following parameter"}, True ) def ensure_paging_info_without_counts_support(self) -> bool: """ Ensures server has support for optimized pagination, added in v7.4.0. """ return self._ensure_support( {"version": (7, 4, 0), "label": "optimized pagination"}, False ) def ensure_return_image_urls_support(self) -> bool: """ Ensures server has support for returning thumbnail URLs without additional round-trips, added in v3.3.0. """ return self._ensure_support( {"version": (3, 3, 0), "label": "return thumbnail URLs"}, False ) def __str__(self) -> str: return "ServerCapabilities: host %s, version %s, is_dev %s" % ( self.host, self.version, self.is_dev, ) class ClientCapabilities(object): """ Container for the client capabilities. .. warning:: This class is part of the internal API and its interfaces may change at any time in the future. Therefore, usage of this class is discouraged. :ivar str platform: The current client platform. Valid values are ``mac``, ``linux``, ``windows``, or ``None`` (if the current platform couldn't be determined). :ivar str local_path_field: The PTR field used for local file paths. This is calculated using the value of ``platform``. Ex. ``local_path_mac``. :ivar str py_version: Simple version of Python executable as a string. Eg. ``3.9``. :ivar str ssl_version: Version of OpenSSL installed. Eg. ``OpenSSL 1.0.2g 1 Mar 2016``. """ def __init__(self): system = sys.platform.lower() if system == "darwin": self.platform = "mac" elif system.startswith("linux"): self.platform = "linux" elif system == "win32": self.platform = "windows" else: self.platform = None if self.platform: self.local_path_field = "local_path_%s" % (self.platform) else: self.local_path_field = None self.py_version = ".".join(str(x) for x in sys.version_info[:2]) self.ssl_version = ssl.OPENSSL_VERSION def __str__(self): return ( "ClientCapabilities: platform %s, local_path_field %s, " "py_verison %s, ssl version %s" % (self.platform, self.local_path_field, self.py_version, self.ssl_version) ) class _Config(object): """ Container for the client configuration. """ def __init__(self, sg: "Shotgun"): """ :param sg: Shotgun connection. """ self._sg = sg self.max_rpc_attempts = 3 # rpc_attempt_interval stores the number of milliseconds to wait between # request retries. By default, this will be 3000 milliseconds. You can # override this by setting this property on the config like so: # # sg = Shotgun(site_name, script_name, script_key) # sg.config.rpc_attempt_interval = 1000 # adjusting default interval # # Or by setting the ``SHOTGUN_API_RETRY_INTERVAL`` environment variable. # In the case that the environment variable is already set, setting the # property on the config will override it. self.rpc_attempt_interval = 3000 # From http://docs.python.org/2.6/library/httplib.html: # If the optional timeout parameter is given, blocking operations # (like connection attempts) will timeout after that many seconds # (if it is not given, the global default timeout setting is used) self.timeout_secs: Optional[float] = None self.api_ver = "api3" self.convert_datetimes_to_utc = True self._records_per_page: Optional[int] = None self.api_key: Optional[str] = None self.script_name: Optional[str] = None self.user_login: Optional[str] = None self.user_password: Optional[str] = None self.auth_token: Optional[str] = None self.sudo_as_login: Optional[str] = None # Authentication parameters to be folded into final auth_params dict self.extra_auth_params: Optional[Dict[str, Any]] = None # uuid as a string self.session_uuid: Optional[str] = None self.scheme: Optional[str] = None self.server: Optional[str] = None self.api_path: Optional[str] = None # The raw_http_proxy reflects the exact string passed in # to the Shotgun constructor. This can be useful if you # need to construct a Shotgun API instance based on # another Shotgun API instance. self.raw_http_proxy: Optional[str] = None # if a proxy server is being used, the proxy_handler # below will contain a urllib2.ProxyHandler instance # which can be used whenever a request needs to be made. self.proxy_handler: Optional["urllib.request.ProxyHandler"] = None self.proxy_server: Optional[str] = None self.proxy_port = 8080 self.proxy_user: Optional[str] = None self.proxy_pass: Optional[str] = None self.session_token: Optional[str] = None self.authorization: Optional[str] = None self.localized = False def set_server_params(self, base_url: str) -> None: """ Set the different server related fields based on the passed in URL. This will impact the following attributes: - scheme: http or https - api_path: usually /api3/json - server: usually something.shotgunstudio.com :param str base_url: The server URL. :raises ValueError: Raised if protocol is not http or https. """ self.scheme, self.server, api_base, _, _ = urllib.parse.urlsplit(base_url) if self.scheme not in ("http", "https"): raise ValueError("base_url must use http or https got '%s'" % base_url) self.api_path = urllib.parse.urljoin( urllib.parse.urljoin(api_base or "/", self.api_ver + "/"), "json" ) @property def records_per_page(self) -> int: """ The records per page value from the server. """ if self._records_per_page is None: # Check for api_max_entities_per_page in the server info and change the record per page # value if it is supplied. self._records_per_page = ( self._sg.server_info.get("api_max_entities_per_page") or 500 ) return self._records_per_page class Shotgun(object): """ Shotgun Client connection. """ # reg ex from # http://underground.infovark.com/2008/07/22/iso-date-validation-regex/ # Note a length check is done before checking the reg ex _DATE_PATTERN = re.compile(r"^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])$") _DATE_TIME_PATTERN = re.compile( r"^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])" r"(\D?([01]\d|2[0-3])\D?([0-5]\d)\D?([0-5]\d)?\D?(\d{3})?)?$" ) _MULTIPART_UPLOAD_CHUNK_SIZE = 20000000 MAX_ATTEMPTS = 3 # Retries on failure BACKOFF = 0.75 # Seconds to wait before retry, times the attempt number def __init__( self, base_url: str, script_name: Optional[str] = None, api_key: Optional[str] = None, convert_datetimes_to_utc: bool = True, http_proxy: Optional[str] = None, connect: bool = True, ca_certs: Optional[str] = None, login: Optional[str] = None, password: Optional[str] = None, sudo_as_login: Optional[str] = None, session_token: Optional[str] = None, auth_token: Optional[str] = None, ) -> None: """ Initializes a new instance of the Shotgun client. :param str base_url: http or https url of the Shotgun server. Do not include the trailing slash:: https://example.shotgunstudio.com :param str script_name: name of the Script entity used to authenticate to the server. If provided, then ``api_key`` must be as well, and neither ``login`` nor ``password`` can be provided. .. seealso:: :ref:`authentication` :param str api_key: API key for the provided ``script_name``. Used to authenticate to the server. If provided, then ``script_name`` must be as well, and neither ``login`` nor ``password`` can be provided. .. seealso:: :ref:`authentication` :param bool convert_datetimes_to_utc: (optional) When ``True``, datetime values are converted from local time to UTC time before being sent to the server. Datetimes received from the server are then converted back to local time. When ``False`` the client should use UTC date time values. Default is ``True``. :param str http_proxy: (optional) URL for a proxy server to use for all connections. The expected str format is ``[username:password@]111.222.333.444[:8080]``. Examples:: 192.168.0.1 192.168.0.1:8888 joe:user@192.168.0.1:8888 :param bool connect: (optional) When ``True``, as soon as the :class:`~shotgun_api3.Shotgun` instance is created, a connection will be made to the Shotgun server to determine the server capabilities and confirm this version of the client is compatible with the server version. This is mostly used for testing. Default is ``True``. :param str ca_certs: (optional) path to an external SSL certificates file. By default, the Shotgun API will use its own built-in certificates file which stores root certificates for the most common Certificate Authorities (CAs). If you are using a corporate or internal CA, or are packaging an application into an executable, it may be necessary to point to your own certificates file. You can do this by passing in the full path to the file via this parameter or by setting the environment variable ``SHOTGUN_API_CACERTS``. In the case both are set, this parameter will take precedence. :param str login: The user login str to use to authenticate to the server when using user-based authentication. If provided, then ``password`` must be as well, and neither ``script_name`` nor ``api_key`` can be provided. .. seealso:: :ref:`authentication` :param str password: The password str to use to authenticate to the server when using user-based authentication. If provided, then ``login`` must be as well and neither ``script_name`` nor ``api_key`` can be provided. See :ref:`authentication` for more info. :param str sudo_as_login: A user login string for the user whose permissions will be applied to all actions. Event log entries will be generated showing this user performing all actions with an additional extra meta-data parameter ``sudo_actual_user`` indicating the script or user that is actually authenticated. :param str session_token: The session token to use to authenticate to the server. This can be used as an alternative to authenticating with a script user or regular user. You can retrieve the session token by running the :meth:`~shotgun_api3.Shotgun.get_session_token()` method. .. todo: Add this info to the Authentication section of the docs :param str auth_token: The authentication token required to authenticate to a server with two-factor authentication turned on. If provided, then ``login`` and ``password`` must be provided as well, and neither ``script_name`` nor ``api_key`` can be provided. .. note:: These tokens can be short lived so a session is established right away if an ``auth_token`` is provided. A :class:`~shotgun_api3.MissingTwoFactorAuthenticationFault` will be raised if the ``auth_token`` is invalid. .. todo: Add this info to the Authentication section of the docs """ # verify authentication arguments if session_token is not None: if script_name is not None or api_key is not None: raise ValueError( "cannot provide both session_token " "and script_name/api_key" ) if login is not None or password is not None: raise ValueError( "cannot provide both session_token " "and login/password" ) if login is not None or password is not None: if script_name is not None or api_key is not None: raise ValueError( "cannot provide both login/password " "and script_name/api_key" ) if login is None: raise ValueError("password provided without login") if password is None: raise ValueError("login provided without password") if script_name is not None or api_key is not None: if script_name is None: raise ValueError("api_key provided without script_name") if api_key is None: raise ValueError("script_name provided without api_key") if auth_token is not None: if login is None or password is None: raise ValueError( "must provide a user login and password with an auth_token" ) if script_name is not None or api_key is not None: raise ValueError("cannot provide an auth_code with script_name/api_key") if not any([session_token, script_name, api_key, login, password]): if connect: raise ValueError( "must provide login/password, session_token or script_name/api_key" ) self.config: _Config = _Config(self) self.config.api_key = api_key self.config.script_name = script_name self.config.user_login = login self.config.user_password = password self.config.auth_token = auth_token self.config.session_token = session_token self.config.sudo_as_login = sudo_as_login self.config.convert_datetimes_to_utc = convert_datetimes_to_utc self.config.raw_http_proxy = http_proxy try: self.config.rpc_attempt_interval = int( os.environ.get("SHOTGUN_API_RETRY_INTERVAL", 3000) ) except ValueError: retry_interval = os.environ.get("SHOTGUN_API_RETRY_INTERVAL", 3000) raise ValueError( "Invalid value '%s' found in environment variable " "SHOTGUN_API_RETRY_INTERVAL, must be int." % retry_interval ) if self.config.rpc_attempt_interval < 0: raise ValueError( "Value of SHOTGUN_API_RETRY_INTERVAL must be positive, " "got '%s'." % self.config.rpc_attempt_interval ) global SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION if ( os.environ.get("SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION", "0") .strip() .lower() == "1" ): SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION = True self._connection: Optional[Http] = None self.__ca_certs = self._get_certs_file(ca_certs) self.base_url = (base_url or "").lower() self.config.set_server_params(self.base_url) # if the service contains user information strip it out # copied from the xmlrpclib which turned the user:password into # and auth header # Do NOT self._split_url(self.base_url) here, as it contains the lower # case version of the base_url argument. Doing so would base64.encodebytes # the lowercase version of the credentials. auth, self.config.server = self._split_url(base_url) if auth: auth = base64.encodebytes( urllib.parse.unquote(auth).encode("utf-8") ).decode("utf-8") self.config.authorization = "Basic " + auth.strip() # foo:bar@123.456.789.012:3456 if http_proxy: # check if we're using authentication. Start from the end since # there might be @ in the user's password. p = http_proxy.rsplit("@", 1) if len(p) > 1: self.config.proxy_user, self.config.proxy_pass = p[0].split(":", 1) proxy_server = p[1] else: proxy_server = http_proxy proxy_netloc_list = proxy_server.split(":", 1) self.config.proxy_server = proxy_netloc_list[0] if len(proxy_netloc_list) > 1: try: self.config.proxy_port = int(proxy_netloc_list[1]) except ValueError: raise ValueError( "Invalid http_proxy address '%s'. Valid " "format is '123.456.789.012' or '123.456.789.012:3456'" ". If no port is specified, a default of %d will be " "used." % (http_proxy, self.config.proxy_port) ) # now populate self.config.proxy_handler if self.config.proxy_user and self.config.proxy_pass: auth_string = "%s:%s@" % ( self.config.proxy_user, self.config.proxy_pass, ) else: auth_string = "" proxy_addr = "http://%s%s:%d" % ( auth_string, self.config.proxy_server, self.config.proxy_port, ) self.config.proxy_handler = urllib.request.ProxyHandler( {self.config.scheme: proxy_addr} ) self.client_caps = ClientCapabilities() # this relies on self.client_caps being set first self.reset_user_agent() self._server_caps: Optional[ServerCapabilities] = None # test to ensure the the server supports the json API # call to server will only be made once and will raise error if connect: self.server_caps # When using auth_token in a 2FA scenario we need to switch to session-based # authentication because the auth token will no longer be valid after a first use. if self.config.auth_token is not None: self.config.session_token = self.get_session_token() self.config.user_login = None self.config.user_password = None self.config.auth_token = None def _split_url(self, base_url: str) -> Tuple[Optional[str], Optional[str]]: """ Extract the hostname:port and username/password/token from base_url sent when connect to the API. In python 3.8 `urllib.parse.splituser` was deprecated warning devs to use `urllib.parse.urlparse`. """ if (sys.version_info.major, sys.version_info.minor) >= (3, 8): auth = None results = urllib.parse.urlparse(base_url) server = results.hostname if results.port: server = "{}:{}".format(server, results.port) if results.username: auth = results.username if results.password: auth = "{}:{}".format(auth, results.password) else: auth, server = urllib.parse.splituser( urllib.parse.urlsplit(base_url).netloc ) return auth, server # ======================================================================== # API Functions @property def server_info(self) -> Dict[str, Any]: """ Property containing server information. >>> sg.server_info {'full_version': [6, 3, 15, 0], 'version': [6, 3, 15], ...} .. note:: Beyond ``full_version`` and ``version`` which differ by the inclusion of the bugfix number, you should expect these values to be unsupported and for internal use only. :returns: dict of server information from :class:`ServerCapabilities` object :rtype: dict """ return self.server_caps.server_info @property def server_caps(self) -> ServerCapabilities: """ Property containing :class:`ServerCapabilities` object. >>> sg.server_caps :returns: :class:`ServerCapabilities` object that describe the server the client is connected to. :rtype: :class:`ServerCapabilities` object """ if not self._server_caps or (self._server_caps.host != self.config.server): self._server_caps = ServerCapabilities(self.config.server, self.info()) return self._server_caps def connect(self) -> None: """ Connect client to the server if it is not already connected. .. note:: The client will automatically connect to the server on demand. You only need to call this function if you wish to confirm the client can connect. """ self._get_connection() self.info() return def close(self) -> None: """ Close the current connection to the server. If the client needs to connect again it will do so automatically. """ self._close_connection() return def info(self) -> Dict[str, Any]: """ Get API-related metadata from the Shotgun server. >>> sg.info() {'full_version': [8, 2, 1, 0], 'version': [8, 2, 1], 'user_authentication_method': 'default', ...} :: Token Value -------- --------- full_version An ordered array of the full Shotgun version. [major, minor, patch, hotfix] version An ordered array of the Shotgun version. [major, minor, patch] user_authentication_method Indicates the authentication method used by Shotgun. Will be one of the following values: default: regular username/password. ldap: username/password from the company's LDAP. saml2: SSO used, over SAML2. .. note:: Beyond the documented tokens, you should expect the other values to be unsupported and for internal use only. :returns: dict of the server metadata. :rtype: dict """ return self._call_rpc("info", None, include_auth_params=False) def find_one( self, entity_type: str, filters: Union[List, Tuple, Dict[str, Any]], fields: Optional[List[str]] = None, order: Optional[List[OrderItem]] = None, filter_operator: Optional[str] = None, retired_only: bool = False, include_archived_projects: bool = True, additional_filter_presets: Optional[List[Dict[str, Any]]] = None, ) -> Optional[BaseEntity]: """ Shortcut for :meth:`~shotgun_api3.Shotgun.find` with ``limit=1`` so it returns a single result. >>> sg.find_one("Asset", [["id", "is", 32]], ["id", "code", "sg_status_list"]) {'code': 'Gopher', 'id': 32, 'sg_status_list': 'ip', 'type': 'Asset'} :param str entity_type: Shotgun entity type as a string to find. :param list filters: list of filters to apply to the query. .. seealso:: :ref:`filter_syntax` :param list fields: Optional list of fields to include in each entity record returned. Defaults to ``["id"]``. :param list order: Optional list of fields to order the results by. List has the format:: [ {'field_name':'foo', 'direction':'asc'}, {'field_name':'bar', 'direction':'desc'} ] Defaults to sorting by ``id`` in ascending order. :param str filter_operator: Operator to apply to the filters. Supported values are ``"all"`` and ``"any"``. These are just another way of defining if the query is an AND or OR query. Defaults to ``"all"``. :param bool retired_only: Optional boolean when ``True`` will return only entities that have been retired. Defaults to ``False`` which returns only entities which have not been retired. There is no option to return both retired and non-retired entities in the same query. :param bool include_archived_projects: Optional boolean flag to include entities whose projects have been archived. Defaults to ``True``. :param list additional_filter_presets: Optional list of presets to further filter the result set, list has the form:: [{ "preset_name": , : , ... }] Note that these filters are ANDed together and ANDed with the 'filter' argument. For details on supported presets and the format of this parameter see :ref:`additional_filter_presets` :returns: Dictionary representing a single matching entity with the requested fields, and the defaults ``"id"`` and ``"type"`` which are always included. .. seealso:: :ref:`entity-fields` :rtype: dict """ results = self.find( entity_type, filters, fields, order, filter_operator, 1, retired_only, include_archived_projects=include_archived_projects, additional_filter_presets=additional_filter_presets, ) if results: return results[0] return None def find( self, entity_type: str, filters: Union[List, Tuple, Dict[str, Any]], fields: Optional[List[str]] = None, order: Optional[List[OrderItem]] = None, filter_operator: Optional[str] = None, limit: int = 0, retired_only: bool = False, page: int = 0, include_archived_projects: bool = True, additional_filter_presets: Optional[List[Dict[str, Any]]] = None, ) -> List[BaseEntity]: """ Find entities matching the given filters. >>> # Find Character Assets in Sequence 100_FOO >>> # ------------- >>> fields = ['id', 'code', 'sg_asset_type'] >>> sequence_id = 2 # Sequence "100_FOO" >>> project_id = 4 # Demo Project >>> filters = [ ... ['project', 'is', {'type': 'Project', 'id': project_id}], ... ['sg_asset_type', 'is', 'Character'], ... ['sequences', 'is', {'type': 'Sequence', 'id': sequence_id}] ... ] >>> assets= sg.find("Asset",filters,fields) [{'code': 'Gopher', 'id': 32, 'sg_asset_type': 'Character', 'type': 'Asset'}, {'code': 'Cow', 'id': 33, 'sg_asset_type': 'Character', 'type': 'Asset'}, {'code': 'Bird_1', 'id': 35, 'sg_asset_type': 'Character', 'type': 'Asset'}, {'code': 'Bird_2', 'id': 36, 'sg_asset_type': 'Character', 'type': 'Asset'}, {'code': 'Bird_3', 'id': 37, 'sg_asset_type': 'Character', 'type': 'Asset'}, {'code': 'Raccoon', 'id': 45, 'sg_asset_type': 'Character', 'type': 'Asset'}, {'code': 'Wet Gopher', 'id': 149, 'sg_asset_type': 'Character', 'type': 'Asset'}] You can drill through single entity links to filter on fields or display linked fields. This is often called "deep linking" or using "dot notation". .. seealso:: :ref:`filter_syntax` >>> # Find Versions created by Tasks in the Animation Pipeline Step >>> # ------------- >>> fields = ['id', 'code'] >>> pipeline_step_id = 2 # Animation Step ID >>> project_id = 4 # Demo Project >>> # you can drill through single-entity link fields >>> filters = [ ... ['project','is', {'type': 'Project','id': project_id}], ... ['sg_task.Task.step.Step.id', 'is', pipeline_step_id] >>> ] >>> sg.find("Version", filters, fields) [{'code': 'scene_010_anim_v001', 'id': 42, 'type': 'Version'}, {'code': 'scene_010_anim_v002', 'id': 134, 'type': 'Version'}, {'code': 'bird_v001', 'id': 137, 'type': 'Version'}, {'code': 'birdAltBlue_v002', 'id': 236, 'type': 'Version'}] :param str entity_type: Shotgun entity type to find. :param list filters: list of filters to apply to the query. .. seealso:: :ref:`filter_syntax`, :ref:`combining-related-queries` :param list fields: Optional list of fields to include in each entity record returned. Defaults to ``["id"]``. .. seealso:: :ref:`combining-related-queries` :param list order: Optional list of dictionaries defining how to order the results of the query. Each dictionary contains the ``field_name`` to order by and the ``direction`` to sort:: [ {'field_name':'foo', 'direction':'asc'}, {'field_name':'bar', 'direction':'desc'} ] Defaults to sorting by ``id`` in ascending order. :param str filter_operator: Operator to apply to the filters. Supported values are ``"all"`` and ``"any"``. These are just another way of defining if the query is an AND or OR query. Defaults to ``"all"``. :param int limit: Optional limit to the number of entities to return. Defaults to ``0`` which returns all entities that match. :param int page: Optional page of results to return. Use this together with the ``limit`` parameter to control how your query results are paged. Defaults to ``0`` which returns all entities that match. :param bool retired_only: Optional boolean when ``True`` will return only entities that have been retired. Defaults to ``False`` which returns only entities which have not been retired. There is no option to return both retired and non-retired entities in the same query. :param bool include_archived_projects: Optional boolean flag to include entities whose projects have been archived. Defaults to ``True``. :param list additional_filter_presets: Optional list of presets to further filter the result set, list has the form:: [{ "preset_name": , : , ... }] Note that these filters are ANDed together and ANDed with the 'filter' argument. For details on supported presets and the format of this parameter see :ref:`additional_filter_presets` :returns: list of dictionaries representing each entity with the requested fields, and the defaults ``"id"`` and ``"type"`` which are always included. .. seealso:: :ref:`entity-fields` :rtype: list """ if not isinstance(limit, int) or limit < 0: raise ValueError("limit parameter must be a positive integer") if not isinstance(page, int) or page < 0: raise ValueError("page parameter must be a positive integer") if isinstance(filters, (list, tuple)): filters = _translate_filters(filters, filter_operator) elif filter_operator: # TODO: Not sure if this test is correct, replicated from prev api raise ShotgunError( "Deprecated: Use of filter_operator for find() is not valid any more." " See the documentation on find()" ) if not include_archived_projects: # This defaults to True on the server (no argument is sent) # So we only need to check the server version if it is False self.server_caps.ensure_include_archived_projects() if additional_filter_presets: self.server_caps.ensure_support_for_additional_filter_presets() params = self._construct_read_parameters( entity_type, fields, filters, retired_only, order, include_archived_projects, additional_filter_presets, ) if self.server_caps.ensure_return_image_urls_support(): params["api_return_image_urls"] = True if self.server_caps.ensure_paging_info_without_counts_support(): paging_info_param = "return_paging_info_without_counts" else: paging_info_param = "return_paging_info" params[paging_info_param] = False if limit and limit <= self.config.records_per_page: params["paging"]["entities_per_page"] = limit # If page isn't set and the limit doesn't require pagination, # then trigger the faster code path. if page == 0: page = 1 # if page is specified, then only return the page of records requested if page != 0: params["paging"]["current_page"] = page records = self._call_rpc("read", params).get("entities", []) return self._parse_records(records) params[paging_info_param] = True records = [] if self.server_caps.ensure_paging_info_without_counts_support(): has_next_page = True while has_next_page: result = self._call_rpc("read", params) records.extend(result.get("entities")) if limit and len(records) >= limit: records = records[:limit] break has_next_page = result["paging_info"]["has_next_page"] params["paging"]["current_page"] += 1 else: result = self._call_rpc("read", params) while result.get("entities"): records.extend(result.get("entities")) if limit and len(records) >= limit: records = records[:limit] break if len(records) == result["paging_info"]["entity_count"]: break params["paging"]["current_page"] += 1 result = self._call_rpc("read", params) return self._parse_records(records) def _construct_read_parameters( self, entity_type: str, fields: Optional[List[str]], filters: Dict[str, Any], retired_only: bool, order: Optional[List[Dict[str, Any]]], include_archived_projects: bool, additional_filter_presets: Optional[List[Dict[str, Any]]], ) -> Dict[str, Any]: params: Dict[str, Any] = {} params["type"] = entity_type params["return_fields"] = fields or ["id"] params["filters"] = filters params["return_only"] = (retired_only and "retired") or "active" params["paging"] = { "entities_per_page": self.config.records_per_page, "current_page": 1, } if additional_filter_presets: params["additional_filter_presets"] = additional_filter_presets if include_archived_projects is False: # Defaults to True on the server, so only pass it if it's False params["include_archived_projects"] = False if order: sort_list = [] for sort in order: if "column" in sort: # TODO: warn about deprecation of 'column' param name sort["field_name"] = sort["column"] sort.setdefault("direction", "asc") sort_list.append( {"field_name": sort["field_name"], "direction": sort["direction"]} ) params["sorts"] = sort_list return params def _add_project_param( self, params: Dict[str, Any], project_entity ) -> Dict[str, Any]: if project_entity and self.server_caps.ensure_per_project_customization(): params["project"] = project_entity return params def _translate_update_params( self, entity_type: str, entity_id: int, data: Dict, multi_entity_update_modes: Optional[Dict], ) -> Dict[str, Any]: global SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION def optimize_field(field_dict): if SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION: return field_dict return {k: _optimize_filter_field(v) for k, v in field_dict.items()} full_fields = self._dict_to_list( data, extra_data=self._dict_to_extra_data( multi_entity_update_modes, "multi_entity_update_mode" ), ) return { "type": entity_type, "id": entity_id, "fields": [optimize_field(field_dict) for field_dict in full_fields], } def summarize( self, entity_type: str, filters: Union[List, Dict[str, Any]], summary_fields: List[Dict[str, str]], filter_operator: Optional[str] = None, grouping: Optional[List[GroupingItem]] = None, include_archived_projects: bool = True, ) -> Dict[str, Any]: """ Summarize field data returned by a query. This provides the same functionality as the summaries in the UI. You can specify one or more fields to summarize, choose the summary type for each, and optionally group the results which will return summary information for each group as well as the total for the query. **Example: Count all Assets for a Project** >>> sg.summarize(entity_type='Asset', ... filters = [['project', 'is', {'type':'Project', 'id':4}]], ... summary_fields=[{'field':'id', 'type':'count'}]) {'groups': [], 'summaries': {'id': 15}} ``summaries`` contains the total summary for the query. Each key is the field summarized and the value is the result of the summary operation for the entire result set. .. note:: You cannot perform more than one summary on a field at a time, but you can summarize several different fields in the same call. **Example: Count all Assets for a Project, grouped by sg_asset_type** >>> sg.summarize(entity_type='Asset', ... filters=[['project', 'is', {'type': 'Project', 'id': 4}]], ... summary_fields=[{'field': 'id', 'type': 'count'}], ... grouping=[{'field': 'sg_asset_type', 'type': 'exact', 'direction': 'asc'}]) {'groups': [{'group_name': 'Character','group_value': 'Character', 'summaries': {'id': 3}}, {'group_name': 'Environment','group_value': 'Environment', 'summaries': {'id': 3}}, {'group_name': 'Matte Painting', 'group_value': 'Matte Painting', 'summaries': {'id': 1}}, {'group_name': 'Prop', 'group_value': 'Prop', 'summaries': {'id': 4}}, {'group_name': 'Vehicle', 'group_value': 'Vehicle', 'summaries': {'id': 4}}], 'summaries': {'id': 15}} - ``summaries`` contains the total summary for the query. - ``groups`` contains the summary for each group. - ``group_name`` is the display name for the group. - ``group_value`` is the actual value of the grouping value. This is often the same as ``group_name`` but in the case when grouping by entity, the ``group_name`` may be ``PuppyA`` and the group_value would be ``{'type':'Asset','id':922,'name':'PuppyA'}``. - ``summaries`` contains the summary calculation dict for each field requested. **Example: Count all Tasks for a Sequence and find the latest due_date** >>> sg.summarize(entity_type='Task', ... filters = [ ... ['entity.Shot.sg_sequence', 'is', {'type':'Sequence', 'id':2}], ... ['sg_status_list', 'is_not', 'na']], ... summary_fields=[{'field':'id', 'type':'count'}, ... {'field':'due_date','type':'latest'}]) {'groups': [], 'summaries': {'due_date': '2013-07-05', 'id': 30}} This shows that the there are 30 Tasks for Shots in the Sequence and the latest ``due_date`` of any Task is ``2013-07-05``. **Example: Count all Tasks for a Sequence, find the latest due_date and group by Shot** >>> sg.summarize(entity_type='Task', ... filters = [ ... ['entity.Shot.sg_sequence', 'is', {'type': 'Sequence', 'id': 2}], ... ['sg_status_list', 'is_not', 'na']], ... summary_fields=[{'field': 'id', 'type': 'count'}, {'field': 'due_date', 'type': 'latest'}], ... grouping=[{'field': 'entity', 'type': 'exact', 'direction': 'asc'}])) {'groups': [{'group_name': 'shot_010', 'group_value': {'id': 2, 'name': 'shot_010', 'type': 'Shot', 'valid': 'valid'}, 'summaries': {'due_date': '2013-06-18', 'id': 10}}, {'group_name': 'shot_020', 'group_value': {'id': 3, 'name': 'shot_020', 'type': 'Shot', 'valid': 'valid'}, 'summaries': {'due_date': '2013-06-28', 'id': 10}}, {'group_name': 'shot_030', 'group_value': {'id': 4, 'name': 'shot_030', 'type': 'Shot', 'valid': 'valid'}, 'summaries': {'due_date': '2013-07-05', 'id': 10}}], 'summaries': {'due_date': '2013-07-05', 'id': 30}} This shows that the there are 30 Tasks for Shots in the Sequence and the latest ``due_date`` of any Task is ``2013-07-05``. Because the summary is grouped by ``entity``, we can also see the summaries for each Shot returned. Each Shot has 10 Tasks and the latest ``due_date`` for each Shot. The difference between ``group_name`` and ``group_value`` is highlighted in this example as the name of the Shot is different from its value. **Example: Count all Tasks for a Sequence, find the latest due_date, group by Shot and Pipeline Step** >>> sg.summarize(entity_type='Task', ... filters = [ ... ['entity.Shot.sg_sequence', 'is', {'type': 'Sequence', 'id': 2}], ... ['sg_status_list', 'is_not', 'na']], ... summary_fields=[{'field': 'id', 'type': 'count'}, ... {'field': 'due_date', 'type': 'latest'}], ... grouping=[{'field': 'entity', 'type': 'exact', 'direction': 'asc'}, ... {'field': 'step', 'type': 'exact', 'direction': 'asc'}]) {'groups': [{'group_name': 'shot_010', 'group_value': {'id': 2, 'name': 'shot_010', 'type': 'Shot', 'valid': 'valid'}, 'groups': [{'group_name': 'Client', 'group_value': {'id': 1, 'name': 'Client', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-05-04', 'id': 1}}, {'group_name': 'Online', 'group_value': {'id': 2, 'name': 'Online', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-05-05', 'id': 1}}, ... ... truncated for brevity ... {'group_name': 'Comp', 'group_value': {'id': 8, 'name': 'Comp', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-06-18', 'id': 1}}], 'summaries': {'due_date': '2013-06-18', 'id': 10}}, {'group_name': 'shot_020', 'group_value': {'id': 3, 'name': 'shot_020', 'type': 'Shot', 'valid': 'valid'}, 'groups': [{'group_name': 'Client', 'group_value': {'id': 1, 'name': 'Client', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-05-15', 'id': 1}}, {'group_name': 'Online', 'group_value': {'id': 2, 'name': 'Online', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-05-16', 'id': 1}}, ... ... truncated for brevity ... {'group_name': 'Comp', 'group_value': {'id': 8, 'name': 'Comp', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-06-28', 'id': 1}}], 'summaries': {'due_date': '2013-06-28', 'id': 10}}, {'group_name': 'shot_030', 'group_value': {'id': 4, 'name': 'shot_030', 'type': 'Shot', 'valid': 'valid'}, 'groups': [{'group_name': 'Client', 'group_value': {'id': 1, 'name': 'Client', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-05-20', 'id': 1}}, {'group_name': 'Online', 'group_value': {'id': 2, 'name': 'Online', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-05-21', 'id': 1}}, ... ... truncated for brevity ... {'group_name': 'Comp', 'group_value': {'id': 8, 'name': 'Comp', 'type': 'Step', 'valid': 'valid'}, 'summaries': {'due_date': '2013-07-05', 'id': 1}}], 'summaries': {'due_date': '2013-07-05', 'id': 10}}], 'summaries': {'due_date': '2013-07-05', 'id': 30}} When grouping my more than one field, the grouping structure is repeated for each sub-group and summary values are returned for each group on each level. :param str entity_type: The entity type to summarize :param list filters: A list of conditions used to filter the find query. Uses the same syntax as :meth:`~shotgun_api3.Shotgun.find` method. :param list summary_fields: A list of dictionaries with the following keys: :field: The internal Shotgun field name you are summarizing. :type: The type of summary you are performing on the field. Summary types can be any of ``record_count``, ``count``, ``sum``, ``maximum``, ``minimum``, ``average``, ``earliest``, ``latest``, ``percentage``, ``status_percentage``, ``status_list``, ``checked``, ``unchecked`` depending on the type of field you're summarizing. :param str filter_operator: Operator to apply to the filters. Supported values are ``"all"`` and ``"any"``. These are just another way of defining if the query is an AND or OR query. Defaults to ``"all"``. :param list grouping: Optional list of dicts with the following keys: :field: a string indicating the internal Shotgun field name on ``entity_type`` to group results by. :type: A string indicating the type of grouping to perform for each group. Valid types depend on the type of field you are grouping on and can be one of ``exact``, ``tens``, ``hundreds``, ``thousands``, ``tensofthousands``, ``hundredsofthousands``, ``millions``, ``day``, ``week``, ``month``, ``quarter``,``year``, ``clustered_date``, ``oneday``, ``fivedays``, ``entitytype``, ``firstletter``. :direction: A string that sets the order to display the grouped results. Valid options are ``asc`` and ``desc``. Defaults to ``asc``. :returns: dictionary containing grouping and summaries keys. :rtype: dict """ if not isinstance(grouping, list) and grouping is not None: msg = "summarize() 'grouping' parameter must be a list or None" raise ValueError(msg) if isinstance(filters, (list, tuple)): filters = _translate_filters(filters, filter_operator) if not include_archived_projects: # This defaults to True on the server (no argument is sent) # So we only need to check the server version if it is False self.server_caps.ensure_include_archived_projects() params = {"type": entity_type, "summaries": summary_fields, "filters": filters} if include_archived_projects is False: # Defaults to True on the server, so only pass it if it's False params["include_archived_projects"] = False if grouping is not None: params["grouping"] = grouping records = self._call_rpc("summarize", params) return records def create( self, entity_type: str, data: Dict[str, Any], return_fields: Optional[List[str]] = None, ) -> Dict[str, Any]: """ Create a new entity of the specified ``entity_type``. >>> data = { ... "project": {"type": "Project", "id": 161}, ... "sg_sequence": {"type": "Sequence", "id": 109}, ... "code": "001_100", ... 'sg_status_list': "ip" ... } >>> sg.create('Shot', data) {'code': '001_100', 'id': 2557, 'project': {'id': 161, 'name': 'Pied Piper', 'type': 'Project'}, 'sg_sequence': {'id': 109, 'name': 'Sequence 001', 'type': 'Sequence'}, 'sg_status_list': 'ip', 'type': 'Shot'} :param str entity_type: Shotgun entity type to create. :param dict data: Dictionary of fields and corresponding values to set on the new entity. If ``image`` or ``filmstrip_image`` fields are provided, the file path will be uploaded to the server automatically. :param list return_fields: Optional list of additional field values to return from the new entity. Defaults to ``id`` field. .. seealso:: :ref:`combining-related-queries` :returns: Shotgun entity dictionary containing the field/value pairs of all of the fields set from the ``data`` parameter as well as the defaults ``type`` and ``id``. If any additional fields were provided using the ``return_fields`` parameter, these would be included as well. .. seealso:: :ref:`entity-fields` :rtype: dict """ data = data.copy() if not return_fields: return_fields = ["id"] upload_image = None if "image" in data: upload_image = data.pop("image") upload_filmstrip_image = None if "filmstrip_image" in data: if not self.server_caps.version or self.server_caps.version < (3, 1, 0): raise ShotgunError( "Filmstrip thumbnail support requires server version 3.1 or " "higher, server is %s" % (self.server_caps.version,) ) upload_filmstrip_image = data.pop("filmstrip_image") params = { "type": entity_type, "fields": self._dict_to_list(data), "return_fields": return_fields, } record = self._call_rpc("create", params, first=True) result = self._parse_records(record)[0] if upload_image: self.upload_thumbnail(entity_type, result["id"], upload_image) image = self.find_one( entity_type, [["id", "is", result.get("id")]], fields=["image"] ) result["image"] = image.get("image") if upload_filmstrip_image: self.upload_filmstrip_thumbnail( entity_type, result["id"], upload_filmstrip_image ) filmstrip = self.find_one( entity_type, [["id", "is", result.get("id")]], fields=["filmstrip_image"], ) result["filmstrip_image"] = filmstrip.get("filmstrip_image") return result def update( self, entity_type: str, entity_id: int, data: Dict[str, Any], multi_entity_update_modes: Optional[Dict[str, Any]] = None, ) -> BaseEntity: """ Update the specified entity with the supplied data. >>> shots = [ ... {'type':'Shot', 'id':'40435'}, ... {'type':'Shot', 'id':'40438'}, ... {'type':'Shot', 'id':'40441'}] >>> data = { ... 'shots': shots_asset_is_in, ... 'sg_status_list':'rev'} >>> sg.update("Asset", 55, data) {'type': 'Shot', 'id': 55, 'sg_status_`list`': 'rev', 'shots': [{'id': 40435, 'name': '100_010', 'type': 'Shot', 'valid': 'valid'}, {'id': 40438, 'name': '100_040', 'type': 'Shot', 'valid': 'valid'}, {'id': 40441, 'name': '100_070', 'type': 'Shot', 'valid': 'valid'}] } :param str entity_type: Entity type to update. :param id entity_id: id of the entity to update. :param dict data: key/value pairs where key is the field name and value is the value to set for that field. This method does not restrict the updating of fields hidden in the web UI via the Project Tracking Settings panel. :param dict multi_entity_update_modes: Optional dict indicating what update mode to use when updating a multi-entity link field. The keys in the dict are the fields to set the mode for, and the values from the dict are one of ``set``, ``add``, or ``remove``. Defaults to ``set``. :: multi_entity_update_modes={"shots": "add", "assets": "remove"} :returns: Dictionary of the fields updated, with the default keys `type` and `id` added as well. :rtype: dict """ data = data.copy() upload_image = None if "image" in data and data["image"] is not None: upload_image = data.pop("image") upload_filmstrip_image = None if "filmstrip_image" in data: if not self.server_caps.version or self.server_caps.version < (3, 1, 0): raise ShotgunError( "Filmstrip thumbnail support requires server version 3.1 or " "higher, server is %s" % (self.server_caps.version,) ) upload_filmstrip_image = data.pop("filmstrip_image") if data: params = self._translate_update_params( entity_type, entity_id, data, multi_entity_update_modes ) record = self._call_rpc("update", params) result = self._parse_records(record)[0] else: result = {"id": entity_id, "type": entity_type} if upload_image: self.upload_thumbnail(entity_type, entity_id, upload_image) image = self.find_one( entity_type, [["id", "is", result.get("id")]], fields=["image"] ) result["image"] = image.get("image") if upload_filmstrip_image: self.upload_filmstrip_thumbnail( entity_type, result["id"], upload_filmstrip_image ) filmstrip = self.find_one( entity_type, [["id", "is", result.get("id")]], fields=["filmstrip_image"], ) result["filmstrip_image"] = filmstrip.get("filmstrip_image") return result def delete(self, entity_type: str, entity_id: int) -> bool: """ Retire the specified entity. Entities in Shotgun are not "deleted" destructively, they are instead, "retired". This means they are placed in the trash where they are no longer accessible to users. The entity can be brought back to life using :meth:`~shotgun_api3.Shotgun.revive`. >>> sg.delete("Shot", 2557) True :param str entity_type: Shotgun entity type to delete. :param id entity_id: ``id`` of the entity to delete. :returns: ``True`` if the entity was deleted, ``False`` otherwise (for example, if the entity was already deleted). :rtype: bool :raises: :class:`Fault` if entity does not exist (deleted or not). """ params = {"type": entity_type, "id": entity_id} return self._call_rpc("delete", params) def revive(self, entity_type: str, entity_id: int) -> bool: """ Revive an entity that has previously been deleted. >>> sg.revive("Shot", 860) True :param str entity_type: Shotgun entity type to revive. :param int entity_id: id of the entity to revive. :returns: ``True`` if the entity was revived, ``False`` otherwise (e.g. if the entity is not currently retired). :rtype: bool """ params = {"type": entity_type, "id": entity_id} return self._call_rpc("revive", params) def batch(self, requests: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """ Make a batch request of several :meth:`~shotgun_api3.Shotgun.create`, :meth:`~shotgun_api3.Shotgun.update`, and :meth:`~shotgun_api3.Shotgun.delete` calls. All requests are performed within a transaction, so either all will complete or none will. Ex. Make a bunch of shots:: batch_data = [] for i in range(1,100): data = { "code": "shot_%04d" % i, "project": project } batch_data.append({"request_type": "create", "entity_type": "Shot", "data": data}) sg.batch(batch_data) Example output:: [{'code': 'shot_0001', 'type': 'Shot', 'id': 3624, 'project': {'id': 4, 'name': 'Demo Project', 'type': 'Project'}}, ... ... and a bunch more ... ... {'code': 'shot_0099', 'type': 'Shot', 'id': 3722, 'project': {'id': 4, 'name': 'Demo Project', 'type': 'Project'}}] Ex. All three types of requests in one batch:: batch_data = [ {"request_type": "create", "entity_type": "Shot", "data": {"code": "New Shot 1", "project": project}}, {"request_type": "update", "entity_type": "Shot", "entity_id": 3624, "data": {"code": "Changed 1"}}, {"request_type": "delete", "entity_type": "Shot", "entity_id": 3624} ] sg.batch(batch_data) Example output:: [{'code': 'New Shot 1', 'type': 'Shot', 'id': 3723, 'project': {'id': 4, 'name': 'Demo Project', 'type': 'Project'}}, {'code': 'Changed 1', 'type': 'Shot', 'id': 3624}, True] :param list requests: A list of dict's of the form which have a request_type key and also specifies: - create: ``entity_type``, data dict of fields to set - update: ``entity_type``, ``entity_id``, data dict of fields to set, and optionally ``multi_entity_update_modes`` - delete: ``entity_type`` and entity_id :returns: A list of values for each operation. Create and update requests return a dict of the fields updated. Delete requests return ``True`` if the entity was deleted. :rtype: list """ if not isinstance(requests, list): raise ShotgunError( "batch() expects a list. Instead was sent a %s" % type(requests) ) # If we have no requests, just return an empty list immediately. # Nothing to process means nothing to get results of. if len(requests) == 0: return [] calls = [] def _required_keys(message, required_keys, data): missing = set(required_keys) - set(data.keys()) if missing: raise ShotgunError( "%s missing required key: %s. " "Value was: %s." % (message, ", ".join(missing), data) ) for req in requests: _required_keys("Batched request", ["request_type", "entity_type"], req) request_params = { "request_type": req["request_type"], "type": req["entity_type"], } if req["request_type"] == "create": _required_keys("Batched create request", ["data"], req) request_params["fields"] = self._dict_to_list(req["data"]) request_params["return_fields"] = req.get("return_fields") or ["id"] elif req["request_type"] == "update": _required_keys("Batched update request", ["entity_id", "data"], req) request_params["id"] = req["entity_id"] request_params["fields"] = self._dict_to_list( req["data"], extra_data=self._dict_to_extra_data( req.get("multi_entity_update_modes"), "multi_entity_update_mode" ), ) if "multi_entity_update_mode" in req: request_params["multi_entity_update_mode"] = req[ "multi_entity_update_mode" ] elif req["request_type"] == "delete": _required_keys("Batched delete request", ["entity_id"], req) request_params["id"] = req["entity_id"] else: raise ShotgunError( "Invalid request_type '%s' for batch" % (req["request_type"]) ) calls.append(request_params) records = self._call_rpc("batch", calls) return self._parse_records(records) def work_schedule_read( self, start_date: str, end_date: str, project: Optional[Dict[str, Any]] = None, user: Optional[Dict[str, Any]] = None, ) -> Dict[str, Any]: """ Return the work day rules for a given date range. .. versionadded:: 3.0.9 Requires Shotgun server v3.2.0+ This returns the defined WorkDayRules between the ``start_date`` and ``end_date`` inclusive as a dict where the key is the date and the value is another dict describing the rule for that date. Rules are represented by a dict with the following keys: :description: the description entered into the work day rule exception if applicable. :reason: one of six options: - STUDIO_WORK_WEEK: standard studio schedule applies - STUDIO_EXCEPTION: studio-wide exception applies - PROJECT_WORK_WEEK: standard project schedule applies - PROJECT_EXCEPTION: project-specific exception applies - USER_WORK_WEEK: standard user work week applies - USER_EXCEPTION: user-specific exception applies :working: boolean indicating whether it is a "working" day or not. >>> sg.work_schedule_read("2015-12-21", "2015-12-25") {'2015-12-21': {'description': None, 'reason': 'STUDIO_WORK_WEEK', 'working': True}, '2015-12-22': {'description': None, 'reason': 'STUDIO_WORK_WEEK', 'working': True}, '2015-12-23': {'description': None, 'reason': 'STUDIO_WORK_WEEK', 'working': True}, '2015-12-24': {'description': 'Closed for Christmas Eve', 'reason': 'STUDIO_EXCEPTION', 'working': False}, '2015-12-25': {'description': 'Closed for Christmas', 'reason': 'STUDIO_EXCEPTION', 'working': False}} :param str start_date: Start date of date range. ``YYYY-MM-DD`` :param str end_date: End date of date range. ``YYYY-MM-DD`` :param dict project: Optional Project entity to query `WorkDayRules` for. :param dict user: Optional HumanUser entity to query WorkDayRules for. :returns: Complex dict containing each date and the WorkDayRule defined for that date between the ``start_date`` and ``end date`` inclusive. See above for details. :rtype: dict """ if not self.server_caps.version or self.server_caps.version < (3, 2, 0): raise ShotgunError( "Work schedule support requires server version 3.2 or " "higher, server is %s" % (self.server_caps.version,) ) if not isinstance(start_date, str) or not isinstance(end_date, str): raise ShotgunError( "The start_date and end_date arguments must be strings in YYYY-MM-DD format" ) params = dict( start_date=start_date, end_date=end_date, project=project, user=user ) return self._call_rpc("work_schedule_read", params) def work_schedule_update( self, date: str, working: bool, description: Optional[str] = None, project: Optional[Dict[str, Any]] = None, user: Optional[Dict[str, Any]] = None, recalculate_field: Optional[str] = None, ) -> Dict[str, Any]: """ Update the work schedule for a given date. .. versionadded:: 3.0.9 Requires Shotgun server v3.2.0+ If neither ``project`` nor ``user`` are passed in, the studio work schedule will be updated. ``project`` and ``user`` can only be used exclusively of each other. >>> sg.work_schedule_update ("2015-12-31", working=False, ... description="Studio closed for New Years Eve", project=None, ... user=None, recalculate_field=None) {'date': '2015-12-31', 'description': "Studio closed for New Years Eve", 'project': None, 'user': None, 'working': False} :param str date: Date of WorkDayRule to update. ``YYY-MM-DD`` :param bool working: Indicates whether the day is a working day or not. :param str description: Optional reason for time off. :param dict project: Optional Project entity to assign the rule to. Cannot be used with the ``user`` param. :param dict user: Optional HumanUser entity to assign the rule to. Cannot be used with the ``project`` param. :param str recalculate_field: Optional schedule field that will be recalculated on Tasks when they are affected by a change in working schedule. Options are ``due_date`` or ``duration``. Defaults to the value set in the Shotgun web application's Site Preferences. :returns: dict containing key/value pairs for each value of the work day rule updated. :rtype: dict """ if not self.server_caps.version or self.server_caps.version < (3, 2, 0): raise ShotgunError( "Work schedule support requires server version 3.2 or " "higher, server is %s" % (self.server_caps.version,) ) if not isinstance(date, str): raise ShotgunError("The date argument must be string in YYYY-MM-DD format") params = dict( date=date, working=working, description=description, project=project, user=user, recalculate_field=recalculate_field, ) return self._call_rpc("work_schedule_update", params) def export_page(self, page_id, format, layout_name=None): """ Export the specified page to the given format. This method allows you to export a page to CSV. Respective layout or page should be marked as API Exportable in the Flow Production Tracking UI. If ``layout_name`` is not passed in, the default layout name will be used. For more information, see `documentation `_ . >>> sg.export_page(12345, "csv", layout_name="My Layout") "ID,Name,Status\\n1,Shot 001,ip\\n2, Shot 002,rev\\n" >>> sg.export_page(12345, "csv") "ID,Name,Status\\n1,Shot 001,ip\\n2,Shot 002,rev\\n" :param int page_id: The ID of the page to export. :param str format: The format to export the page to. Supported format is ``"csv"``. :param str layout_name: Optional layout name. This should be the name of the layout seen in the Flow Production Tracking UI. :returns: string containing data of the given page. :rtype: string """ params = dict(format=format, page_id=page_id, layout_name=layout_name) return self._call_rpc("export_page", params) def follow(self, user: Dict[str, Any], entity: Dict[str, Any]) -> Dict[str, Any]: """ Add the entity to the user's followed entities. If the user is already following the entity, the method will succeed but nothing will be changed on the server-side. >>> sg.follow({"type": "HumanUser", "id": 42}, {"type": "Shot", "id": 2050}) {'followed': True, 'user': {'type': 'HumanUser', 'id': 42}, 'entity': {'type': 'Shot', 'id': 2050}} :param dict user: User entity that will follow the entity. :param dict entity: Shotgun entity to be followed. :returns: dict with ``"followed": True`` as well as key/values for the params that were passed in. :rtype: dict """ if not self.server_caps.version or self.server_caps.version < (5, 1, 22): raise ShotgunError( "Follow support requires server version 5.2 or " "higher, server is %s" % (self.server_caps.version,) ) params = dict(user=user, entity=entity) return self._call_rpc("follow", params) def unfollow(self, user: Dict[str, Any], entity: Dict[str, Any]) -> Dict[str, Any]: """ Remove entity from the user's followed entities. This does nothing if the user is not following the entity. >>> sg.unfollow({"type": "HumanUser", "id": 42}, {"type": "Shot", "id": 2050}) {'entity': {'type': 'Shot', 'id': 2050}, 'user': {'type': 'HumanUser', 'id': 42}, 'unfollowed': True} :param dict user: User entity that will unfollow the entity. :param dict entity: Entity to be unfollowed :returns: dict with ``"unfollowed": True`` as well as key/values for the params that were passed in. :rtype: dict """ if not self.server_caps.version or self.server_caps.version < (5, 1, 22): raise ShotgunError( "Follow support requires server version 5.2 or " "higher, server is %s" % (self.server_caps.version,) ) params = dict(user=user, entity=entity) return self._call_rpc("unfollow", params) def followers(self, entity: Dict[str, Any]) -> List[Dict[str, Any]]: """ Return all followers for an entity. >>> sg.followers({"type": "Shot", "id": 2050}) [{'status': 'act', 'valid': 'valid', 'type': 'HumanUser', 'name': 'Richard Hendriks', 'id': 42}, {'status': 'act', 'valid': 'valid', 'type': 'HumanUser', 'name': 'Bertram Gilfoyle', 'id': 33}, {'status': 'act', 'valid': 'valid', 'type': 'HumanUser', 'name': 'Dinesh Chugtai', 'id': 57}] :param dict entity: Entity to find followers of. :returns: list of dicts representing each user following the entity :rtype: list :versionadded: """ if not self.server_caps.version or self.server_caps.version < (5, 1, 22): raise ShotgunError( "Follow support requires server version 5.2 or " "higher, server is %s" % (self.server_caps.version,) ) params = dict(entity=entity) return self._call_rpc("followers", params) def following( self, user: Dict[str, Any], project: Optional[Dict[str, Any]] = None, entity_type: Optional[str] = None, ) -> List[BaseEntity]: """ Return all entity instances a user is following. Optionally, a project and/or entity_type can be supplied to restrict returned results. >>> user = {"type": "HumanUser", "id": 1234} >>> project = {"type": "Project", "id": 1234} >>> entity_type = "Task" >>> sg.following(user, project=project, entity_type=entity_type) [{"type":"Task", "id":1}, {"type":"Task", "id":2}, {"type":"Task", "id":3}] :param dict user: Find what this person is following. :param dict project: Optional filter to only return results from a specific project. :param str entity_type: Optional filter to only return results from one entity type. :returns: list of dictionaries, each containing entity type & id's being followed. :rtype: list """ self.server_caps.ensure_user_following_support() params = {"user": user} if project: params["project"] = project if entity_type: params["entity_type"] = entity_type return self._call_rpc("following", params) def schema_entity_read( self, project_entity: Optional[BaseEntity] = None ) -> Dict[str, Dict[str, Any]]: """ Return all active entity types, their display names, and their visibility. If the project parameter is specified, the schema visibility for the given project is being returned. If the project parameter is omitted or set to ``None``, a full listing is returned where per-project entity type visibility settings are not considered. >>> sg.schema_entity_read() {'ActionMenuItem': {'name': {'editable': False, 'value': 'Action Menu Item'}, 'visible': {'editable': False, 'value': True}}, 'ApiUser': {'name': {'editable': False, 'value': 'Script'}, 'visible': {'editable': False, 'value': True}}, 'AppWelcomeUserConnection': {'name': {'editable': False, 'value': 'App Welcome User Connection'}, 'visible': {'editable': False, 'value': True}}, 'Asset': {'name': {'editable': False, 'value': 'Asset'}, 'visible': {'editable': False, 'value': True}}, 'AssetAssetConnection': {'name': {'editable': False, 'value': 'Asset Asset Connection'}, 'visible': {'editable': False, 'value': True}}, '...' } :param dict project_entity: Optional Project entity specifying which project to return the listing for. If omitted or set to ``None``, per-project visibility settings are not taken into consideration and the global list is returned. Example: ``{'type': 'Project', 'id': 3}`` :returns: dict of Entity Type to dict containing the display name. :rtype: dict .. note:: The returned display names for this method will be localized when the ``localize`` Shotgun config property is set to ``True``. See :ref:`localization` for more information. """ params: Dict[str, Any] = {} params = self._add_project_param(params, project_entity) if params: return self._call_rpc("schema_entity_read", params) else: return self._call_rpc("schema_entity_read", None) def schema_read( self, project_entity: Optional[BaseEntity] = None ) -> Dict[str, Dict[str, Any]]: """ Get the schema for all fields on all entities. .. note:: If ``project_entity`` is not specified, everything is reported as visible. >>> sg.schema_read() {'ActionMenuItem': {'created_at': {'data_type': {'editable': False, 'value': 'date_time'}, 'description': {'editable': True, 'value': ''}, 'editable': {'editable': False, 'value': False}, 'entity_type': {'editable': False, 'value': 'ActionMenuItem'}, 'mandatory': {'editable': False, 'value': False}, 'name': {'editable': True, 'value': 'Date Created'}, 'properties': {'default_value': {'editable': False, 'value': None}, 'summary_default': {'editable': True, 'value': 'none'}}, 'unique': {'editable': False, 'value': False}, 'visible': {'editable': False, 'value': True}}, 'created_by': {'data_type': {'editable': False,'value': 'entity'}, 'description': {'editable': True,'value': ''}, 'editable': {'editable': False,'value': False}, 'entity_type': {'editable': False,'value': 'ActionMenuItem'}, 'mandatory': {'editable': False,'value': False}, 'name': {'editable': True,'value': 'Created by'}, 'properties': {'default_value': {'editable': False,'value': None}, 'summary_default': {'editable': True,'value': 'none'}, 'valid_types': {'editable': True,'value': ['HumanUser','ApiUser']}}, 'unique': {'editable': False,'value': False}, 'visible': {'editable': False,'value': True}}, ... ... ... ... 'Version': {'client_approved': {'data_type': {'editable': False,'value': 'checkbox'}, 'description': {'editable': True,'value': ''}, 'editable': {'editable': False,'value': True}, 'entity_type': {'editable': False,'value': 'Version'}, 'mandatory': {'editable': False,'value': False}, 'name': {'editable': True,'value': 'Client Approved'}, 'properties': {'default_value': {'editable': False,'value': False}, 'summary_default': {'editable': False,'value': 'none'}}, 'unique': {'editable': False,'value': False}, 'visible': {'editable': False,'value': True}}, ... ... ... ... } :param dict project_entity: Optional, Project entity specifying which project to return the listing for. If omitted or set to ``None``, per-project visibility settings are not taken into consideration and the global list is returned. Example: ``{'type': 'Project', 'id': 3}``. Defaults to ``None``. :returns: A nested dict object containing a key/value pair for all fields of all entity types. Properties that are ``'editable': True``, can be updated using the :meth:`~shotgun_api3.Shotgun.schema_field_update` method. :rtype: dict .. note:: The returned display names for this method will be localized when the ``localize`` Shotgun config property is set to ``True``. See :ref:`localization` for more information. """ params: Dict[str, Any] = {} params = self._add_project_param(params, project_entity) if params: return self._call_rpc("schema_read", params) else: return self._call_rpc("schema_read", None) def schema_field_read( self, entity_type: str, field_name: Optional[str] = None, project_entity: Optional[BaseEntity] = None, ) -> Dict[str, Dict[str, Any]]: """ Get schema for all fields on the specified entity type or just the field name specified if provided. .. note:: Unlike how the results of a :meth:`~shotgun_api3.Shotgun.find` can be pumped into a :meth:`~shotgun_api3.Shotgun.create` or :meth:`~shotgun_api3.Shotgun.update`, the results of :meth:`~shotgun_api3.Shotgun.schema_field_read` are not compatible with the format used for :meth:`~shotgun_api3.Shotgun.schema_field_create` or :meth:`~shotgun_api3.Shotgun.schema_field_update`. If you need to pipe the results from :meth:`~shotgun_api3.Shotgun.schema_field_read` into a :meth:`~shotgun_api3.Shotgun.schema_field_create` or :meth:`~shotgun_api3.Shotgun.schema_field_update`, you will need to reformat the data in your script. .. note:: If you don't specify a ``project_entity``, everything is reported as visible. .. note:: The returned display names for this method will be localized when the ``localize`` Shotgun config property is set to ``True``. See :ref:`localization` for more information. >>> sg.schema_field_read('Asset', 'shots') {'shots': {'data_type': {'editable': False, 'value': 'multi_entity'}, 'description': {'editable': True, 'value': ''}, 'editable': {'editable': False, 'value': True}, 'entity_type': {'editable': False, 'value': 'Asset'}, 'mandatory': {'editable': False, 'value': False}, 'name': {'editable': True, 'value': 'Shots'}, 'properties': {'default_value': {'editable': False, 'value': None}, 'summary_default': {'editable': True, 'value': 'none'}, 'valid_types': {'editable': True, 'value': ['Shot']}}, 'unique': {'editable': False, 'value': False}, 'visible': {'editable': False, 'value': True}}} :param str entity_type: Entity type to get the schema for. :param str field_name: Optional internal Shotgun name of the field to get the schema definition for. If this parameter is excluded or set to ``None``, data structures of all fields will be returned. Defaults to ``None``. Example: ``sg_temp_field``. :param dict project_entity: Optional Project entity specifying which project to return the listing for. If omitted or set to ``None``, per-project visibility settings are not taken into consideration and the global list is returned. Example: ``{'type': 'Project', 'id': 3}`` :returns: a nested dict object containing a key/value pair for the ``field_name`` specified and its properties, or if no field_name is specified, for all the fields of the ``entity_type``. Properties that are ``'editable': True``, can be updated using the :meth:`~shotgun_api3.Shotgun.schema_field_update` method. :rtype: dict """ params = { "type": entity_type, } if field_name: params["field_name"] = field_name params = self._add_project_param(params, project_entity) return self._call_rpc("schema_field_read", params) def schema_field_create( self, entity_type: str, data_type: str, display_name: str, properties: Optional[Dict[str, Any]] = None, ) -> str: """ Create a field for the specified entity type. .. note:: If the internal Shotgun field name computed from the provided ``display_name`` already exists, the internal Shotgun field name will automatically be appended with ``_1`` in order to create a unique name. The integer suffix will be incremented by 1 until a unique name is found. >>> properties = {"summary_default": "count", "description": "Complexity breakdown of Asset"} >>> sg.schema_field_create("Asset", "text", "Complexity", properties) 'sg_complexity' :param str entity_type: Entity type to add the field to. :param str data_type: Shotgun data type for the new field. :param str display_name: Specifies the display name of the field you are creating. The system name will be created from this display name and returned upon successful creation. :param dict properties: Dict of valid properties for the new field. Use this to specify other field properties such as the 'description' or 'summary_default'. :returns: The internal Shotgun name for the new field, this is different to the ``display_name`` parameter passed in. :rtype: str """ params = { "type": entity_type, "data_type": data_type, "properties": [{"property_name": "name", "value": display_name}], } params["properties"].extend( self._dict_to_list(properties, key_name="property_name", value_name="value") ) return self._call_rpc("schema_field_create", params) def schema_field_update( self, entity_type: str, field_name: str, properties: Dict[str, Any], project_entity: Optional[BaseEntity] = None, ) -> bool: """ Update the properties for the specified field on an entity. .. note:: Although the property name may be the key in a nested dictionary, like 'summary_default', it is treated no differently than keys that are up one level, like 'description'. >>> properties = {"name": "Test Number Field Renamed", "summary_default": "sum", ... "description": "this is only a test"} >>> sg.schema_field_update("Asset", "sg_test_number", properties) True :param str entity_type: Entity type of field to update. :param str field_name: Internal Shotgun name of the field to update. :param dict properties: Dictionary with key/value pairs where the key is the property to be updated and the value is the new value. :param dict project_entity: Optional Project entity specifying which project to modify the ``visible`` property for. If ``visible`` is present in ``properties`` and ``project_entity`` is not set, an exception will be raised. Example: ``{'type': 'Project', 'id': 3}`` :returns: ``True`` if the field was updated. .. note:: The ``project_entity`` parameter can only affect the state of the ``visible`` property and has no impact on other properties. :rtype: bool """ params = { "type": entity_type, "field_name": field_name, "properties": [ {"property_name": k, "value": v} for k, v in (properties or {}).items() ], } params = self._add_project_param(params, project_entity) return self._call_rpc("schema_field_update", params) def schema_field_delete(self, entity_type: str, field_name: str) -> bool: """ Delete the specified field from the entity type. >>> sg.schema_field_delete("Asset", "sg_temp_field") True :param str entity_type: Entity type to delete the field from. :param str field_name: Internal Shotgun name of the field to delete. :returns: ``True`` if the field was deleted. :rtype: bool """ params = {"type": entity_type, "field_name": field_name} return self._call_rpc("schema_field_delete", params) def add_user_agent(self, agent: str) -> None: """ Add agent to the user-agent header. Appends agent to the user-agent string sent with every API request. >>> sg.add_user_agent("my_tool 1.0") :param str agent: string to append to user-agent. """ self._user_agents.append(agent) def reset_user_agent(self) -> None: """ Reset user agent to the default value. Example default user-agent:: shotgun-json (3.0.17); Python 2.6 (Mac); ssl OpenSSL 1.0.2d 9 Jul 2015 (validate) """ ua_platform = "Unknown" if self.client_caps.platform is not None: ua_platform = self.client_caps.platform.capitalize() # create ssl validation string based on settings self._user_agents = [ "shotgun-json (%s)" % __version__, "Python %s (%s)" % (self.client_caps.py_version, ua_platform), "ssl %s" % (self.client_caps.ssl_version), ] def set_session_uuid(self, session_uuid: str) -> None: """ Set the browser session_uuid in the current Shotgun API instance. When this is set, any events generated by the API will include the ``session_uuid`` value on the corresponding EventLogEntries. If there is a current browser session open with this ``session_uuid``, the browser will display updates for these events. >>> sg.set_session_uuid("5a1d49b0-0c69-11e0-a24c-003048d17544") :param str session_uuid: The uuid of the browser session to be updated. """ self.config.session_uuid = session_uuid return def share_thumbnail( self, entities: List[Dict[str, Any]], thumbnail_path: Optional[str] = None, source_entity: Optional[BaseEntity] = None, filmstrip_thumbnail: bool = False, **kwargs: Any, ) -> int: """ Associate a thumbnail with more than one Shotgun entity. .. versionadded:: 3.0.9 Requires Shotgun server v4.0.0+ Share the thumbnail from between entities without requiring uploading the thumbnail file multiple times. You can use this in two ways: 1) Upload an image to set as the thumbnail on multiple entities. 2) Update multiple entities to point to an existing entity's thumbnail. .. note:: When sharing a filmstrip thumbnail, it is required to have a static thumbnail in place before the filmstrip will be displayed in the Shotgun web UI. If the :ref:`thumbnail is still processing and is using a placeholder `, this method will error. Simple use case: >>> thumb = '/data/show/ne2/100_110/anim/01.mlk-02b.jpg' >>> e = [{'type': 'Version', 'id': 123}, {'type': 'Version', 'id': 456}] >>> sg.share_thumbnail(entities=e, thumbnail_path=thumb) 4271 >>> e = [{'type': 'Version', 'id': 123}, {'type': 'Version', 'id': 456}] >>> sg.share_thumbnail(entities=e, source_entity={'type':'Version', 'id': 789}) 4271 :param list entities: The entities to update to point to the shared thumbnail provided in standard entity dict format:: [{'type': 'Version', 'id': 123}, {'type': 'Version', 'id': 456}] :param str thumbnail_path: The full path to the local thumbnail file to upload and share. Required if ``source_entity`` is not provided. :param dict source_entity: The entity whos thumbnail will be the source for sharing. Required if ``source_entity`` is not provided. :param bool filmstrip_thumbnail: ``True`` to share the filmstrip thumbnail. ``False`` to share the static thumbnail. Defaults to ``False``. :returns: ``id`` of the Attachment entity representing the source thumbnail that is shared. :rtype: int :raises: :class:`ShotgunError` if not supported by server version or improperly called, or :class:`ShotgunThumbnailNotReady` if thumbnail is still pending. """ if not self.server_caps.version or self.server_caps.version < (4, 0, 0): raise ShotgunError( "Thumbnail sharing support requires server " "version 4.0 or higher, server is %s" % (self.server_caps.version,) ) if not isinstance(entities, list) or len(entities) == 0: raise ShotgunError( "'entities' parameter must be a list of entity " "hashes and may not be empty" ) for e in entities: if not isinstance(e, dict) or "id" not in e or "type" not in e: raise ShotgunError( "'entities' parameter must be a list of " "entity hashes with at least 'type' and 'id' keys.\nInvalid " "entity: %s" % e ) if (not thumbnail_path and not source_entity) or ( thumbnail_path and source_entity ): raise ShotgunError( "You must supply either thumbnail_path OR source_entity." ) # upload thumbnail if thumbnail_path: source_entity = entities.pop(0) if filmstrip_thumbnail: thumb_id = self.upload_filmstrip_thumbnail( source_entity["type"], source_entity["id"], thumbnail_path, **kwargs ) else: thumb_id = self.upload_thumbnail( source_entity["type"], source_entity["id"], thumbnail_path, **kwargs ) else: if ( not isinstance(source_entity, dict) or "id" not in source_entity or "type" not in source_entity ): raise ShotgunError( "'source_entity' parameter must be a dict " "with at least 'type' and 'id' keys.\nGot: %s (%s)" % (source_entity, type(source_entity)) ) # only 1 entity in list and we already uploaded the thumbnail to it if len(entities) == 0: return thumb_id # update entities with source_entity thumbnail entities_str = [] for e in entities: entities_str.append("%s_%s" % (e["type"], e["id"])) # format for post request if filmstrip_thumbnail: filmstrip_thumbnail = 1 params = { "entities": ",".join(entities_str), "source_entity": "%s_%s" % (source_entity["type"], source_entity["id"]), "filmstrip_thumbnail": filmstrip_thumbnail, } url = urllib.parse.urlunparse( ( self.config.scheme, self.config.server, "/upload/share_thumbnail", None, None, None, ) ) result = self._send_form(url, params) if result.startswith("1:"): # clearing thumbnail returns no attachment_id try: attachment_id = int(result.split(":", 2)[1].split("\n", 1)[0]) except ValueError: attachment_id = None elif result.startswith("2"): raise ShotgunThumbnailNotReady("Unable to share thumbnail: %s" % result) else: raise ShotgunError("Unable to share thumbnail: %s" % result) return attachment_id def upload_thumbnail( self, entity_type: str, entity_id: int, path: str, **kwargs: Any ) -> int: """ Upload a file from a local path and assign it as the thumbnail for the specified entity. .. note:: Images will automatically be re-sized on the server to generate a size-appropriate image file. However, the original file is retained as well and is accessible when you click on the thumbnail image in the web UI. If you are using a local install of Shotgun and have not enabled S3, this can eat up disk space if you're uploading really large source images for your thumbnails. You can un-set (aka clear) a thumbnail on an entity using the :meth:`~shotgun_api3.Shotgun.update` method and setting the **image** field to ``None``. This will also unset the ``filmstrip_thumbnail`` field if it is set. Supported image file types include ``.jpg` and ``.png`` (preferred) but will also accept. ``.gif```, ``.tif``, ``.tiff``, ``.bmp``, ``.exr``, ``.dpx``, and ``.tga``. This method wraps over :meth:`~shotgun_api3.Shotgun.upload`. Additional keyword arguments passed to this method will be forwarded to the :meth:`~shotgun_api3.Shotgun.upload` method. :param str entity_type: Entity type to set the thumbnail for. :param int entity_id: Id of the entity to set the thumbnail for. :param str path: Full path to the thumbnail file on disk. :returns: Id of the new attachment :rtype: int """ return self.upload( entity_type, entity_id, path, field_name="thumb_image", **kwargs ) def upload_filmstrip_thumbnail( self, entity_type: str, entity_id: int, path: str, **kwargs: Any ) -> int: """ Upload filmstrip thumbnail to specified entity. .. versionadded:: 3.0.9 Requires Shotgun server v3.1.0+ Uploads a file from a local directory and assigns it as the filmstrip thumbnail for the specified entity. The image must be a horizontal strip of any number of frames that are exactly 240 pixels wide. Therefore the whole strip must be an exact multiple of 240 pixels in width. The height can be anything (and will depend on the aspect ratio of the frames). Any image file type that works for thumbnails will work for filmstrip thumbnails. Filmstrip thumbnails will only be visible in the Thumbnail field on an entity if a regular thumbnail image is also uploaded to the entity. The standard thumbnail is displayed by default as the poster frame. Then, on hover, the filmstrip thumbnail is displayed and updated based on your horizontal cursor position for scrubbing. On mouseout, the default thumbnail is displayed again as the poster frame. The url for a filmstrip thumbnail on an entity is available by querying for the ``filmstrip_image field``. You can un-set (aka clear) a thumbnail on an entity using the :meth:`~shotgun_api3.Shotgun.update` method and setting the **image** field to ``None``. This will also unset the ``filmstrip_thumbnail`` field if it is set. This method wraps over :meth:`~shotgun_api3.Shotgun.upload`. Additional keyword arguments passed to this method will be forwarded to the :meth:`~shotgun_api3.Shotgun.upload` method. >>> filmstrip_thumbnail = '/data/show/ne2/100_110/anim/01.mlk-02b_filmstrip.jpg' >>> sg.upload_filmstrip_thumbnail("Version", 27, filmstrip_thumbnail) 87 :param str entity_type: Entity type to set the filmstrip thumbnail for. :param int entity_id: Id of the entity to set the filmstrip thumbnail for. :param str path: Full path to the filmstrip thumbnail file on disk. :returns: Id of the new Attachment entity created for the filmstrip thumbnail :rtype: int """ if not self.server_caps.version or self.server_caps.version < (3, 1, 0): raise ShotgunError( "Filmstrip thumbnail support requires server version 3.1 or " "higher, server is %s" % (self.server_caps.version,) ) return self.upload( entity_type, entity_id, path, field_name="filmstrip_thumb_image", **kwargs ) def upload( self, entity_type: str, entity_id: int, path: str, field_name: Optional[str] = None, display_name: Optional[str] = None, tag_list: Optional[str] = None, ) -> int: """ Upload a file to the specified entity. Creates an Attachment entity for the file in Shotgun and links it to the specified entity. You can optionally store the file in a field on the entity, change the display name, and assign tags to the Attachment. .. note:: Make sure to have retries for file uploads. Failures when uploading will occasionally happen. When it does, immediately retrying to upload usually works >>> mov_file = '/data/show/ne2/100_110/anim/01.mlk-02b.mov' >>> sg.upload("Shot", 423, mov_file, field_name="sg_latest_quicktime", ... display_name="Latest QT") 72 :param str entity_type: Entity type to link the upload to. :param int entity_id: Id of the entity to link the upload to. :param str path: Full path to an existing non-empty file on disk to upload. :param str field_name: The internal Shotgun field name on the entity to store the file in. This field must be a File/Link field type. :param str display_name: The display name to use for the file. Defaults to the file name. :param str tag_list: comma-separated string of tags to assign to the file. :returns: Id of the Attachment entity that was created for the image. :rtype: int :raises: :class:`ShotgunError` on upload failure. """ # Basic validations of the file to upload. path = os.path.abspath(os.path.expanduser(path or "")) # We need to check for string encodings that we aren't going to be able # to support later in the upload process. If the given path wasn't already # unicode, we will try to decode it as utf-8, and if that fails then we # have to raise a sane exception. This will always work for ascii and utf-8 # encoded strings, but will fail on some others if the string includes non # ascii characters. if not isinstance(path, str): try: path = path.decode("utf-8") except UnicodeDecodeError: raise ShotgunError( "Could not upload the given file path. It is encoded as " "something other than utf-8 or ascii. To upload this file, " "it can be string encoded as utf-8, or given as unicode: %s" % path ) if not os.path.isfile(path): raise ShotgunError("Path must be a valid file, got '%s'" % path) if os.path.getsize(path) == 0: raise ShotgunError("Path cannot be an empty file: '%s'" % path) is_thumbnail = field_name in [ "thumb_image", "filmstrip_thumb_image", "image", "filmstrip_image", ] # Supported types can be directly uploaded to Cloud storage if self._requires_direct_s3_upload(entity_type, field_name): return self._upload_to_storage( entity_type, entity_id, path, field_name, display_name, tag_list, is_thumbnail, ) else: return self._upload_to_sg( entity_type, entity_id, path, field_name, display_name, tag_list, is_thumbnail, ) def _upload_to_storage( self, entity_type: str, entity_id: int, path: str, field_name: Optional[str], display_name: Optional[str], tag_list: Optional[str], is_thumbnail: bool, ) -> int: """ Internal function to upload a file to the Cloud storage and link it to the specified entity. :param str entity_type: Entity type to link the upload to. :param int entity_id: Id of the entity to link the upload to. :param str path: Full path to an existing non-empty file on disk to upload. :param str field_name: The internal Shotgun field name on the entity to store the file in. This field must be a File/Link field type. :param str display_name: The display name to use for the file. Defaults to the file name. :param str tag_list: comma-separated string of tags to assign to the file. :param bool is_thumbnail: indicates if the attachment is a thumbnail. :returns: Id of the Attachment entity that was created for the image. :rtype: int """ filename = os.path.basename(path) # Step 1: get the upload url is_multipart_upload = os.path.getsize(path) > self._MULTIPART_UPLOAD_CHUNK_SIZE upload_info = self._get_attachment_upload_info( is_thumbnail, filename, is_multipart_upload ) # Step 2: upload the file # We upload large files in multiple parts because it is more robust # (and required when using S3 storage) if is_multipart_upload: self._multipart_upload_file_to_storage(path, upload_info) else: self._upload_file_to_storage(path, upload_info["upload_url"]) # Step 3: create the attachment url = urllib.parse.urlunparse( ( self.config.scheme, self.config.server, "/upload/api_link_file", None, None, None, ) ) params = { "entity_type": entity_type, "entity_id": entity_id, "upload_link_info": upload_info["upload_info"], } params.update(self._auth_params()) if is_thumbnail: if field_name == "filmstrip_thumb_image" or field_name == "filmstrip_image": params["filmstrip"] = True else: if display_name is None: display_name = filename # we allow linking to nothing for generic reference use cases if field_name is not None: params["field_name"] = field_name params["display_name"] = display_name # None gets converted to a string and added as a tag... if tag_list: params["tag_list"] = tag_list result = self._send_form(url, params) if not result.startswith("1"): raise ShotgunError( "Could not upload file successfully, but " "not sure why.\nPath: %s\nUrl: %s\nError: %s" % (path, url, result) ) LOG.debug("Attachment linked to content on Cloud storage") attachment_id = int(result.split(":", 2)[1].split("\n", 1)[0]) return attachment_id def _upload_to_sg( self, entity_type: str, entity_id: int, path: str, field_name: Optional[str], display_name: Optional[str], tag_list: Optional[str], is_thumbnail: bool, ) -> int: """ Internal function to upload a file to Shotgun and link it to the specified entity. :param str entity_type: Entity type to link the upload to. :param int entity_id: Id of the entity to link the upload to. :param str path: Full path to an existing non-empty file on disk to upload. :param str field_name: The internal Shotgun field name on the entity to store the file in. This field must be a File/Link field type. :param str display_name: The display name to use for the file. Defaults to the file name. :param str tag_list: comma-separated string of tags to assign to the file. :param bool is_thumbnail: indicates if the attachment is a thumbnail. :returns: Id of the Attachment entity that was created for the image. :rtype: int """ params = { "entity_type": entity_type, "entity_id": entity_id, } params.update(self._auth_params()) if is_thumbnail: url = urllib.parse.urlunparse( ( self.config.scheme, self.config.server, "/upload/publish_thumbnail", None, None, None, ) ) params["thumb_image"] = open(path, "rb") if field_name == "filmstrip_thumb_image" or field_name == "filmstrip_image": params["filmstrip"] = True else: url = urllib.parse.urlunparse( ( self.config.scheme, self.config.server, "/upload/upload_file", None, None, None, ) ) if display_name is None: display_name = os.path.basename(path) # we allow linking to nothing for generic reference use cases if field_name is not None: params["field_name"] = field_name params["display_name"] = display_name # None gets converted to a string and added as a tag... if tag_list: params["tag_list"] = tag_list params["file"] = open(path, "rb") result = self._send_form(url, params) if not result.startswith("1"): raise ShotgunError( "Could not upload file successfully, but " "not sure why.\nPath: %s\nUrl: %s\nError: %s" % (path, url, result) ) attachment_id = int(result.split(":", 2)[1].split("\n", 1)[0]) return attachment_id def _get_attachment_upload_info( self, is_thumbnail: bool, filename: str, is_multipart_upload: bool ) -> Dict[str, Any]: """ Internal function to get the information needed to upload a file to Cloud storage. :param bool is_thumbnail: indicates if the attachment is a thumbnail. :param str filename: name of the file that will be uploaded. :param bool is_multipart_upload: Indicates if we want multi-part upload information back. :returns: dictionary containing upload details from the server. These details are used throughout the upload process. :rtype: dict """ if is_thumbnail: upload_type = "Thumbnail" else: upload_type = "Attachment" params = {"upload_type": upload_type, "filename": filename} params["multipart_upload"] = is_multipart_upload upload_url = "/upload/api_get_upload_link_info" url = urllib.parse.urlunparse( (self.config.scheme, self.config.server, upload_url, None, None, None) ) upload_info = self._send_form(url, params) if not upload_info.startswith("1"): raise ShotgunError( "Could not get upload_url but " "not sure why.\nPath: %s\nUrl: %s\nError: %s" % (filename, url, upload_info) ) LOG.debug("Completed rpc call to %s" % (upload_url)) upload_info_parts = upload_info.split("\n") return { "upload_url": upload_info_parts[1], "timestamp": upload_info_parts[2], "upload_type": upload_info_parts[3], "upload_id": upload_info_parts[4], "upload_info": upload_info, } def download_attachment( self, attachment: Union[Dict[str, Any], bool] = False, file_path: Optional[str] = None, attachment_id: Optional[int] = None, ) -> Union[str, bytes, None]: """ Download the file associated with a Shotgun Attachment. >>> version = sg.find_one("Version", [["id", "is", 7115]], ["sg_uploaded_movie"]) >>> local_file_path = "/var/tmp/%s" % version["sg_uploaded_movie"]["name"] >>> sg.download_attachment(version["sg_uploaded_movie"], file_path=local_file_path) /var/tmp/100b_scene_output_v032.mov .. warning:: On older (< v5.1.0) Shotgun versions, non-downloadable files on Shotgun don't raise exceptions, they cause a server error which returns a 200 with the page content. :param dict attachment: Usually a dictionary representing an Attachment entity. The dictionary should have a ``url`` key that specifies the download url. Optionally, the dictionary can be a standard entity hash format with ``id`` and ``type`` keys as long as ``"type"=="Attachment"``. This is only supported for backwards compatibility (#22150). If an int value is passed in, the Attachment entity with the matching id will be downloaded from the Shotgun server. :param str file_path: Optional file path to write the data directly to local disk. This avoids loading all of the data in memory and saves the file locally at the given path. :param id attachment_id: (deprecated) Optional ``id`` of the Attachment entity in Shotgun to download. .. note: This parameter exists only for backwards compatibility for scripts specifying the parameter with keywords. :returns: If ``file_path`` is provided, returns the path to the file on disk. If ``file_path`` is ``None``, returns the actual data of the file, as bytes. :rtype: str | bytes """ # backwards compatibility when passed via keyword argument if attachment is False: if type(attachment_id) == int: attachment = attachment_id else: raise TypeError( "Missing parameter 'attachment'. Expected a " "dict, int, NoneType value or" "an int for parameter attachment_id" ) # write to disk if file_path: try: fp = open(file_path, "wb") except IOError as e: raise IOError( "Unable to write Attachment to disk using " "file_path. %s" % e ) url = self.get_attachment_download_url(attachment) if url is None: return None cookie_handler = None if self.config.server in url: # We only need to set the auth cookie for downloads from Shotgun server cookie_handler = self.get_auth_cookie_handler() opener = self._build_opener(cookie_handler) try: request = urllib.request.Request(url) request.add_header("user-agent", "; ".join(self._user_agents)) req = opener.open(request) if file_path: shutil.copyfileobj(req, fp) else: attachment = req.read() # 400 [sg] Attachment id doesn't exist or is a local file # 403 [s3] link is invalid except urllib.error.URLError as e: if file_path: fp.close() err = "Failed to open %s\n%s" % (url, e) if hasattr(e, "code"): if e.code == 400: err += "\nAttachment may not exist or is a local file?" elif e.code == 403: # Only parse the body if it is an Amazon S3 url. if ( url.find("s3.amazonaws.com") != -1 and e.headers["content-type"] == "application/xml" ): body = [ line.decode("utf-8") if isinstance(line, bytes) else line for line in e.readlines() ] if body: try: root = xml.etree.ElementTree.fromstring("".join(body)) message_elem = root.find(".//Message") if message_elem is not None and message_elem.text: err = f"{err} - {message_elem.text}" except xml.etree.ElementTree.ParseError: err = f"{err}\n{''.join(body)}\n" elif e.code == 409 or e.code == 410: # we may be dealing with a file that is pending/failed a malware scan, e.g: # 409: This file is undergoing a malware scan, please try again in a few minutes # 410: File scanning has detected malware and the file has been quarantined lines = e.readlines() if lines: err += "\n%s\n" % "".join(lines) raise ShotgunFileDownloadError(err) else: if file_path: if not fp.closed: fp.close() return file_path else: return attachment def get_auth_cookie_handler(self) -> urllib.request.HTTPCookieProcessor: """ Return an urllib cookie handler containing a cookie for FPTR authentication. Looks up session token and sets that in a cookie in the :mod:`urllib2` handler. This is used internally for downloading attachments from FPTR. """ sid = self.get_session_token() cj = http.cookiejar.LWPCookieJar() c = http.cookiejar.Cookie( "0", "_session_id", sid, None, False, self.config.server, False, False, "/", True, False, None, True, None, None, {}, ) cj.set_cookie(c) return urllib.request.HTTPCookieProcessor(cj) def get_attachment_download_url( self, attachment: Optional[Union[int, dict[str, Any]]] ) -> str: """ Return the URL for downloading provided Attachment. :param mixed attachment: Usually a dict representing An Attachment entity in Shotgun to return the download url for. If the ``url`` key is present, it will be used as-is for the download url. If the ``url`` key is not present, a url will be constructed pointing at the current Shotgun server for downloading the Attachment entity using the ``id``. If ``None`` is passed in, it is silently ignored in order to avoid raising an error when results from a :meth:`~shotgun_api3.Shotgun.find` are passed off to :meth:`~shotgun_api3.Shotgun.download_attachment` .. note:: Support for passing in an int representing the Attachment ``id`` is deprecated :returns: the download URL for the Attachment or ``None`` if ``None`` was passed to ``attachment`` parameter. :rtype: str """ # TODO: Support for a standard entity hash should be removed: #22150 attachment_id = None if isinstance(attachment, int): attachment_id = attachment elif isinstance(attachment, dict): try: url = attachment["url"] except KeyError: if ( "id" in attachment and "type" in attachment and attachment["type"] == "Attachment" ): attachment_id = attachment["id"] else: raise ValueError("Missing 'url' key in Attachment dict") elif attachment is None: url = None else: raise TypeError( "Unable to determine download url. Expected " "dict, int, or NoneType. Instead got %s" % type(attachment) ) if attachment_id: url = urllib.parse.urlunparse( ( self.config.scheme, self.config.server, "/file_serve/attachment/%s" % urllib.parse.quote(str(attachment_id)), None, None, None, ) ) return url def authenticate_human_user( self, user_login: str, user_password: str, auth_token: Optional[str] = None ) -> Union[Dict[str, Any], None]: """ Authenticate Shotgun HumanUser. Authenticates a user given the login, password, and optionally, one-time auth token (when two-factor authentication is required). The user must be a ``HumanUser`` entity and the account must be active. >>> sg.authenticate_human_user("rhendriks", "c0mPre$Hi0n", None) {"type": "HumanUser", "id": 123, "name": "Richard Hendriks"} :param str user_login: Login name of Shotgun HumanUser :param str user_password: Password for Shotgun HumanUser :param str auth_token: One-time token required to authenticate Shotgun HumanUser when two-factor authentication is turned on. :returns: Standard Shotgun dictionary representing the HumanUser if authentication succeeded. ``None`` if authentication failed for any reason. :rtype: dict """ if not user_login: raise ValueError("Please supply a username to authenticate.") if not user_password: raise ValueError("Please supply a password for the user.") # Override permissions on Config obj original_login = self.config.user_login original_password = self.config.user_password original_auth_token = self.config.auth_token self.config.user_login = user_login self.config.user_password = user_password self.config.auth_token = auth_token try: return self.find_one( "HumanUser", [["sg_status_list", "is", "act"], ["login", "is", user_login]], ["id", "login"], "", "all", ) finally: self.config.user_login = original_login self.config.user_password = original_password self.config.auth_token = original_auth_token def update_project_last_accessed( self, project: Dict[str, Any], user: Optional[Dict[str, Any]] = None ) -> None: """ Update a Project's ``last_accessed_by_current_user`` field to the current timestamp. This helps keep track of the recent Projects each user has worked on and enables scripts and apps to use this information to display "Recent Projects" for users as a convenience. .. versionadded:: Requires Shotgun v5.3.20+ >>> sg.update_project_last_accessed({"type": "Project", "id": 66}, ... {"type": "HumanUser", "id": 43}) :param dict project: Standard Project entity dictionary :param dict user: Standard user entity dictionary. This is optional if the current API instance is using user-based authenitcation, or has specified ``sudo_as_login``. In these cases, if ``user`` is not provided, the ``sudo_as_login`` value or ``login`` value from the current instance will be used instead. """ if self.server_caps.version and self.server_caps.version < (5, 3, 20): raise ShotgunError( "update_project_last_accessed requires server version 5.3.20 or " "higher, server is %s" % (self.server_caps.version,) ) if not user: # Try to use sudo as user if present if self.config.sudo_as_login: user = self.find_one( "HumanUser", [["login", "is", self.config.sudo_as_login]] ) # Try to use login if present if self.config.user_login: user = self.find_one( "HumanUser", [["login", "is", self.config.user_login]] ) params = { "project_id": project["id"], } if user: params["user_id"] = user["id"] record = self._call_rpc("update_project_last_accessed_by_current_user", params) self._parse_records(record)[0] def note_thread_read( self, note_id: int, entity_fields: Optional[Dict[str, Any]] = None ) -> List[Dict[str, Any]]: """ Return the full conversation for a given note, including Replies and Attachments. Returns a complex data structure on the following form:: [{'content': 'Please add more awesomeness to the color grading.', 'created_at': '2015-07-14 21:33:28 UTC', 'created_by': {'id': 38, 'name': 'John Pink', 'status': 'act', 'type': 'HumanUser', 'valid': 'valid'}, 'id': 6013, 'type': 'Note'}, {'created_at': '2015-07-14 21:33:32 UTC', 'created_by': {'id': 38, 'name': 'John Pink', 'status': 'act', 'type': 'HumanUser', 'valid': 'valid'}, 'id': 159, 'type': 'Attachment'}, {'content': 'More awesomeness added', 'created_at': '2015-07-14 21:54:51 UTC', 'id': 5, 'type': 'Reply', 'user': {'id': 38, 'name': 'David Blue', 'status': 'act', 'type': 'HumanUser', 'valid': 'valid'}}] The list is returned in descending chronological order. If you wish to include additional fields beyond the ones that are returned by default, you can specify these in an entity_fields dictionary. This dictionary should be keyed by entity type and each key should contain a list of fields to retrieve, for example:: { "Note": ["created_by.HumanUser.image", "addressings_to", "playlist", "user" ], "Reply": ["content"], "Attachment": ["filmstrip_image", "local_storage", "this_file", "image"] } :param int note_id: The id for the note to be retrieved :param dict entity_fields: Additional fields to retrieve as part of the request. See above for details. :returns: A list of dictionaries. See above for example. :rtype: list """ if self.server_caps.version and self.server_caps.version < (6, 2, 0): raise ShotgunError( "note_thread requires server version 6.2.0 or " "higher, server is %s" % (self.server_caps.version,) ) entity_fields = entity_fields or {} if not isinstance(entity_fields, dict): raise ValueError("entity_fields parameter must be a dictionary") params = {"note_id": note_id, "entity_fields": entity_fields} record = self._call_rpc("note_thread_contents", params) result = self._parse_records(record) return result def text_search( self, text: str, entity_types: Dict[str, Any], project_ids: Optional[List] = None, limit: Optional[int] = None, ) -> Dict[str, Any]: """ Search across the specified entity types for the given text. This method can be used to implement auto completion or a Shotgun global search. The method requires a text input phrase that is at least three characters long, or an exception will be raised. Several ways to limit the results of the query are available: - Using the ``project_ids`` parameter, you can provide a list of Project ids to search across. Leaving this at its default value of ``None`` will search across all Shotgun data. - You need to define which subset of entity types to search using the ``entity_types`` parameter. Each of these entity types can be associated with a filter query to further reduce the list of matches. The filter list is using the standard filter syntax used by for example the :meth:`~shotgun_api3.Shotgun.find` method. **Example: Constrain the search to all Tasks but Character Assets only** >>> entity_types = { ... "Asset": [["sg_asset_type", "is", "Character"]], ... "Task": [] ... } >>> sg.text_search("bunny", entity_types) {'matches': [{'id': 734, 'type': 'Asset', 'name': 'Bunny', 'project_id': 65, 'image': 'https://...', 'links': ['', ''], 'status': 'fin'}, ... {'id': 558, 'type': 'Task' 'name': 'FX', 'project_id': 65, 'image': 'https://...', 'links': ['Shot', 'bunny_010_0010'], 'status': 'fin'}], 'terms': ['bunny']} The links field will contain information about any linked entity. This is useful when, for example, presenting Tasks and you want to display what Shot or Asset the Task is associated with. :param str text: Text to search for. This must be at least three characters long, or an exception will be raised. :param dict entity_types: Dictionary to specify which entity types to search across. See above for usage examples. :param list project_ids: List of Projects to search. By default, all projects will be searched. :param int limit: Specify the maximum number of matches to return. :returns: A complex dictionary structure, see above for example. :rtype: dict """ if self.server_caps.version and self.server_caps.version < (6, 2, 0): raise ShotgunError( "auto_complete requires server version 6.2.0 or " "higher, server is %s" % (self.server_caps.version,) ) # convert entity_types structure into the form # that the API endpoint expects if not isinstance(entity_types, dict): raise ValueError("entity_types parameter must be a dictionary") api_entity_types = {} for entity_type, filter_list in entity_types.items(): if isinstance(filter_list, (list, tuple)): resolved_filters = _translate_filters(filter_list, filter_operator=None) api_entity_types[entity_type] = resolved_filters else: raise ValueError( "value of entity_types['%s'] must " "be a list or tuple." % entity_type ) project_ids = project_ids or [] params = { "text": text, "entity_types": api_entity_types, "project_ids": project_ids, "max_results": limit, } record = self._call_rpc("query_display_name_cache", params) result = self._parse_records(record)[0] return result def activity_stream_read( self, entity_type: str, entity_id: int, entity_fields: Optional[Dict[str, Any]] = None, min_id: Optional[int] = None, max_id: Optional[int] = None, limit: Optional[int] = None, ) -> Dict[str, Any]: """ Retrieve activity stream data from Shotgun. This data corresponds to the data that is displayed in the Activity tab for an entity in the Shotgun Web UI. A complex data structure on the following form will be returned from Shotgun:: {'earliest_update_id': 50, 'entity_id': 65, 'entity_type': 'Project', 'latest_update_id': 79, 'updates': [{'created_at': '2015-07-15 11:06:55 UTC', 'created_by': {'id': 38, 'image': '6641', 'name': 'John Smith', 'status': 'act', 'type': 'HumanUser'}, 'id': 79, 'meta': {'entity_id': 6004, 'entity_type': 'Version', 'type': 'new_entity'}, 'primary_entity': {'id': 6004, 'name': 'Review_turntable_v2', 'status': 'rev', 'type': 'Version'}, 'read': False, 'update_type': 'create'}, {...}, ] } The main payload of the return data can be found inside the 'updates' key, containing a list of dictionaries. This list is always returned in descending date order. Each item may contain different fields depending on their update type. The primary_entity key represents the main Shotgun entity that is associated with the update. By default, this entity is returned with a set of standard fields. By using the entity_fields parameter, you can extend the returned data to include additional fields. If for example you wanted to return the asset type for all assets and the linked sequence for all Shots, pass the following entity_fields:: {"Shot": ["sg_sequence"], "Asset": ["sg_asset_type"]} Deep queries can be used in this syntax if you want to traverse into connected data. :param str entity_type: Entity type to retrieve activity stream for :param int entity_id: Entity id to retrieve activity stream for :param list entity_fields: List of additional fields to include. See above for details :param int max_id: Do not retrieve ids greater than this id. This is useful when implementing paging. :param int min_id: Do not retrieve ids lesser than this id. This is useful when implementing caching of the event stream data and you want to "top up" an existing cache. :param int limit: Limit the number of returned records. If not specified, the system default will be used. :returns: A complex activity stream data structure. See above for details. :rtype: dict """ if self.server_caps.version and self.server_caps.version < (6, 2, 0): raise ShotgunError( "activity_stream requires server version 6.2.0 or " "higher, server is %s" % (self.server_caps.version,) ) # set up parameters to send to server. entity_fields = entity_fields or {} if not isinstance(entity_fields, dict): raise ValueError("entity_fields parameter must be a dictionary") params = { "type": entity_type, "id": entity_id, "max_id": max_id, "min_id": min_id, "limit": limit, "entity_fields": entity_fields, } record = self._call_rpc("activity_stream", params) result = self._parse_records(record)[0] return result def nav_expand(self, path: str, seed_entity_field=None, entity_fields=None): """ Expand the navigation hierarchy for the supplied path. .. warning:: This is an experimental method that is not officially part of the python-api. Usage of this method is discouraged. This method's name, arguments, and argument types may change at any point. """ return self._call_rpc( "nav_expand", { "path": path, "seed_entity_field": seed_entity_field, "entity_fields": entity_fields, }, ) def nav_search_string( self, root_path: str, search_string: str, seed_entity_field=None ): """ Search function adapted to work with the navigation hierarchy. .. warning:: This is an experimental method that is not officially part of the python-api. Usage of this method is discouraged. This method's name, arguments, and argument types may change at any point. """ return self._call_rpc( "nav_search", { "root_path": root_path, "seed_entity_field": seed_entity_field, "search_criteria": {"search_string": search_string}, }, ) def nav_search_entity( self, root_path: str, entity: Dict[str, Any], seed_entity_field: Optional[Dict[str, Any]] = None, ): """ Search function adapted to work with the navigation hierarchy. .. warning:: This is an experimental method that is not officially part of the python-api. Usage of this method is discouraged. This method's name, arguments, and argument types may change at any point. """ return self._call_rpc( "nav_search", { "root_path": root_path, "seed_entity_field": seed_entity_field, "search_criteria": {"entity": entity}, }, ) def get_session_token(self) -> str: """ Get the session token associated with the current session. If a session token has already been established, this is returned, otherwise a new one is generated on the server and returned. >>> sg.get_session_token() dd638be7d07c39fa73d935a775558a50 :returns: String containing a session token. :rtype: str """ if self.config.session_token: return self.config.session_token rv = self._call_rpc("get_session_token", None) session_token = (rv or {}).get("session_id") if not session_token: raise RuntimeError("Could not extract session_id from %s", rv) self.config.session_token = session_token return session_token def preferences_read(self, prefs: Optional[List] = None) -> Dict[str, Any]: """ Get a subset of the site preferences. >>> sg.preferences_read() { "pref_name": "pref value" } :param list prefs: An optional list of preference names to return. :returns: Dictionary of preferences and their values. :rtype: dict """ if self.server_caps.version and self.server_caps.version < (7, 10, 0): raise ShotgunError( "preferences_read requires server version 7.10.0 or " "higher, server is %s" % (self.server_caps.version,) ) prefs = prefs or [] return self._call_rpc("preferences_read", {"prefs": prefs}) def user_subscriptions_read(self) -> List: """ Get the list of user subscriptions. :returns: A list of user subscriptions where each subscription is a dictionary containing the ``humanUserId`` and ``subscription`` fields. :rtype: list """ return self._call_rpc("user_subscriptions_read", None) def user_subscriptions_create( self, users: List[Dict[str, Union[str, List[str], None]]] ) -> bool: """ Assign subscriptions to users. :param list users: list of user subscriptions to assign. Each subscription must be a dictionary with the ``humanUserId`` and ``subscription`` fields. The ``subscription`` is either ``None``, a single string, or an array of strings with subscription information. :returns: ``True`` if the request succedeed, ``False`` if otherwise. :rtype: bool """ response = self._call_rpc("user_subscriptions_create", {"users": users}) if not isinstance(response, dict): return False return response.get("status") == "success" def _build_opener(self, handler) -> urllib.request.OpenerDirector: """ Build urllib2 opener with appropriate proxy handler. """ handlers = [] if self.__ca_certs: handlers.append( urllib.request.HTTPSHandler( context=ssl.create_default_context( cafile=self.__ca_certs, ), ), ) if self.config.proxy_handler: handlers.append(self.config.proxy_handler) if handler is not None: handlers.append(handler) return urllib.request.build_opener(*handlers) @classmethod def _get_certs_file(cls, ca_certs): """ The following method tells the API where to look for certificate authorities certificates (we will be referring to these as CAC from now on). Here's how the Python API interacts with those. Auth and CRUD operations ======================== These operations are executed with httplib2. httplib2 ships with a list of CACs instead of asking Python's ssl module for them. Upload/Downloads ================ These operations are executed using urllib2. urllib2 asks a Python module called `ssl` for CACs. We have bundled certifi with the API so that we can be sure the certs are correct at the time of the API release. This does however mean when the certs change we must update the API to contain the latest certifi. This approach is preferable to not using certifi since, on Windows, ssl searches for CACs in the Windows Certificate Store, on Linux/macOS, it asks the OpenSSL library linked with Python for CACs. Depending on how Python was compiled for a given DCC, Python may be linked against the OpenSSL from the OS or a copy of OpenSSL distributed with the DCC. This impacts which versions of the certificates are available to Python, as an OS level OpenSSL will be aware of system wide certificates that have been added, while an OpenSSL that comes with a DCC is likely bundling a list of certificates that get update with each release and may not contain system wide certificates. Using custom CACs ================= When a user requires a non-standard CAC, the SHOTGUN_API_CACERTS environment variable allows to provide an alternate location for the CACs. :param ca_certs: A default cert can be provided :return: The cert file path to use. """ if ca_certs is not None: # certs were provided up front so use these return ca_certs elif "SHOTGUN_API_CACERTS" in os.environ: return os.environ.get("SHOTGUN_API_CACERTS") else: # No certs have been specifically provided fallback to using the # certs shipped with this API. # We bundle certifi with this API so that we have a higher chance # of using an uptodate certificate, rather than relying # on the certs that are bundled with Python or the OS in some cases. # However we can't use certifi.where() since that searches for the # cacert.pem file using the sys.path and this means that if another # copy of certifi can be found first, then it won't use ours. # So we manually generate the path to the cert, but still use certifi # to make it easier for updating the bundled cert with the API. cur_dir = os.path.dirname(os.path.abspath(__file__)) # Now add the rest of the path to the cert file. cert_file = os.path.join(cur_dir, "lib", "certifi", "cacert.pem") return cert_file # Deprecated methods from old wrapper def schema(self, entity_type): """ .. deprecated:: 3.0.0 Use :meth:`~shotgun_api3.Shotgun.schema_field_read` instead. """ raise ShotgunError( "Deprecated: use schema_field_read('%s') instead" % entity_type ) def entity_types(self): """ .. deprecated:: 3.0.0 Use :meth:`~shotgun_api3.Shotgun.schema_entity_read` instead. """ raise ShotgunError("Deprecated: use schema_entity_read() instead") # ======================================================================== # RPC Functions def _call_rpc( self, method: str, params: Any, include_auth_params: bool = True, first: bool = False, ) -> Any: """ Call the specified method on the Shotgun Server sending the supplied payload. """ LOG.debug("Starting rpc call to %s with params %s" % (method, params)) params = self._transform_outbound(params) payload = self._build_payload( method, params, include_auth_params=include_auth_params ) encoded_payload = self._encode_payload(payload) req_headers = { "content-type": "application/json; charset=utf-8", "connection": "keep-alive", } if self.config.localized is True: req_headers["locale"] = "auto" attempt = 1 while attempt <= self.MAX_ATTEMPTS: http_status, resp_headers, body = self._make_call( "POST", self.config.api_path, encoded_payload, req_headers, ) LOG.debug("Completed rpc call to %s" % (method)) try: self._parse_http_status(http_status) except ProtocolError as e: e.headers = resp_headers # We've seen some rare instances of PTR returning 502 for issues that # appear to be caused by something internal to PTR. We're going to # allow for limited retries for those specifically. if attempt != self.MAX_ATTEMPTS and e.errcode in [502, 504]: LOG.debug("Got a 502 or 504 response. Waiting and retrying...") time.sleep(float(attempt) * self.BACKOFF) attempt += 1 continue elif e.errcode == 403: # 403 is returned with custom error page when api access is blocked e.errmsg += ": %s" % body raise else: break response = self._decode_response(resp_headers, body) self._response_errors(response) response = self._transform_inbound(response) if not isinstance(response, dict) or "results" not in response: return response results = response.get("results") if first and isinstance(results, list): return results[0] return results def _auth_params(self) -> Dict[str, Any]: """ Return a dictionary of the authentication parameters being used. """ # Used to authenticate HumanUser credentials if self.config.user_login and self.config.user_password: auth_params = { "user_login": str(self.config.user_login), "user_password": str(self.config.user_password), } if self.config.auth_token: auth_params["auth_token"] = str(self.config.auth_token) # Use script name instead elif self.config.script_name and self.config.api_key: auth_params = { "script_name": str(self.config.script_name), "script_key": str(self.config.api_key), } # Authenticate using session_id elif self.config.session_token: if self.server_caps.version and self.server_caps.version < (5, 3, 0): raise ShotgunError( "Session token based authentication requires server version " "5.3.0 or higher, server is %s" % (self.server_caps.version,) ) auth_params = {"session_token": str(self.config.session_token)} # Request server side to raise exception for expired sessions. # This was added in as part of Shotgun 5.4.4 if self.server_caps.version and self.server_caps.version > (5, 4, 3): auth_params["reject_if_expired"] = True else: raise ValueError("invalid auth params") if self.config.session_uuid: auth_params["session_uuid"] = self.config.session_uuid # Make sure sudo_as_login is supported by server version if self.config.sudo_as_login: if self.server_caps.version and self.server_caps.version < (5, 3, 12): raise ShotgunError( "Option 'sudo_as_login' requires server version 5.3.12 or " "higher, server is %s" % (self.server_caps.version,) ) auth_params["sudo_as_login"] = self.config.sudo_as_login if self.config.extra_auth_params: auth_params.update(self.config.extra_auth_params) return auth_params def _sanitize_auth_params(self, params: Dict[str, Any]) -> Dict[str, Any]: """ Given an authentication parameter dictionary, sanitize any sensitive information and return the sanitized dict copy. """ sanitized_params = copy.copy(params) for k in ["user_password", "script_key", "session_token"]: if k in sanitized_params: sanitized_params[k] = "********" return sanitized_params def _build_payload( self, method: str, params, include_auth_params: bool = True ) -> Dict[str, Any]: """ Build the payload to be send to the rpc endpoint. """ if not method: raise ValueError("method is empty") call_params = [] if include_auth_params: auth_params = self._auth_params() call_params.append(auth_params) if params: call_params.append(params) return {"method_name": method, "params": call_params} def _encode_payload(self, payload) -> bytes: """ Encode the payload to a string to be passed to the rpc endpoint. The payload is json encoded as a unicode string if the content requires it. The unicode string is then encoded as 'utf-8' as it must be in a single byte encoding to go over the wire. """ return json.dumps(payload, ensure_ascii=False).encode("utf-8") def _make_call( self, verb: str, path: str, body, headers: Optional[Dict[str, Any]] ) -> Tuple[Tuple[int, str], Dict[str, Any], str]: """ Make an HTTP call to the server. Handles retry and failure. """ attempt = 0 req_headers = {} req_headers["user-agent"] = "; ".join(self._user_agents) if self.config.authorization: req_headers["Authorization"] = self.config.authorization req_headers.update(headers or {}) body = body or None max_rpc_attempts = self.config.max_rpc_attempts rpc_attempt_interval = self.config.rpc_attempt_interval / 1000.0 while attempt < max_rpc_attempts: attempt += 1 try: return self._http_request(verb, path, body, req_headers) except ssl.SSLEOFError as e: # SG-34910 - EOF occurred in violation of protocol (_ssl.c:2426) # This issue seems to be related to proxy and keep alive. # It looks like, sometimes, the proxy drops the connection on # the TCP/TLS level despites the keep-alive. So we need to close # the connection and make a new attempt. LOG.debug("SSLEOFError: {}".format(e)) self._close_connection() if attempt == max_rpc_attempts: LOG.debug("Request failed. Giving up after %d attempts." % attempt) raise except (ssl.SSLError, ssl.CertificateError) as e: self._close_connection() if attempt == max_rpc_attempts: LOG.debug("Request failed. Giving up after %d attempts." % attempt) raise except Exception as e: self._close_connection() LOG.debug(f"Request failed. Reason: {e}", exc_info=True) raise LOG.debug( "Request failed, attempt %d of %d. Retrying in %.2f seconds..." % (attempt, max_rpc_attempts, rpc_attempt_interval) ) time.sleep(rpc_attempt_interval) def _http_request( self, verb: str, path: str, body, headers: Dict[str, Any] ) -> Tuple[Tuple[int, str], Dict[str, Any], str]: """ Make the actual HTTP request. """ url = urllib.parse.urlunparse( (self.config.scheme, self.config.server, path, None, None, None) ) LOG.debug("Request is %s:%s" % (verb, url)) LOG.debug("Request headers are %s" % headers) LOG.debug("Request body is %s" % body) conn = self._get_connection() resp, content = conn.request(url, method=verb, body=body, headers=headers) # http response code is handled else where http_status = (resp.status, resp.reason) resp_headers = dict((k.lower(), v) for k, v in resp.items()) resp_body = content LOG.debug("Response status is %s %s" % http_status) LOG.debug("Response headers are %s" % resp_headers) LOG.debug("Response body is %s" % resp_body) return (http_status, resp_headers, resp_body) def _make_upload_request( self, request, opener: "urllib.request.OpenerDirector" ) -> "urllib.request._UrlopenRet": """ Open the given request object, return the response, raises URLError on protocol errors. """ try: result = opener.open(request) except urllib.error.HTTPError: raise return result def _parse_http_status(self, status: Tuple) -> None: """ Parse the status returned from the http request. :param tuple status: Tuple of (code, reason). :raises: RuntimeError if the http status is non success. """ error_code = status[0] errmsg = status[1] if status[0] >= 300: headers = "HTTP error from server" if status[0] == 503: errmsg = "Flow Production Tracking is currently down for maintenance or too busy to reply. Please try again later." raise ProtocolError(self.config.server, error_code, errmsg, headers) return def _decode_response( self, headers: Dict[str, Any], body: str ) -> Union[str, Dict[str, Any]]: """ Decode the response from the server from the wire format to a python data structure. :param dict headers: Headers from the server. :param str body: Raw response body from the server. :returns: If the content-type starts with application/json or text/javascript the body is json decoded. Otherwise the raw body is returned. :rtype: str """ if not body: return body ct = (headers.get("content-type") or "application/json").lower() if ct.startswith("application/json") or ct.startswith("text/javascript"): return self._json_loads(body) return body def _json_loads(self, body: str) -> Any: return json.loads(body) def _response_errors(self, sg_response): """ Raise any API errors specified in the response. :raises ShotgunError: If the server response contains an exception. """ # error code for authentication related problems ERR_AUTH = 102 # error code when 2FA authentication is required but no 2FA token provided. ERR_2FA = 106 # error code when SSO is activated on the site, preventing the use of username/password for authentication. ERR_SSO = 108 # error code when Oxygen is activated on the site, preventing the use of username/password for authentication. ERR_OXYG = 110 if isinstance(sg_response, dict) and sg_response.get("exception"): if sg_response.get("error_code") == ERR_AUTH: raise AuthenticationFault( sg_response.get("message", "Unknown Authentication Error") ) elif sg_response.get("error_code") == ERR_2FA: raise MissingTwoFactorAuthenticationFault( sg_response.get("message", "Unknown 2FA Authentication Error") ) elif sg_response.get("error_code") == ERR_SSO: raise UserCredentialsNotAllowedForSSOAuthenticationFault( sg_response.get( "message", "Authentication using username/password is not " "allowed for an SSO-enabled Flow Production Tracking site", ) ) elif sg_response.get("error_code") == ERR_OXYG: raise UserCredentialsNotAllowedForOxygenAuthenticationFault( sg_response.get( "message", "Authentication using username/password is not " "allowed for an Autodesk Identity enabled Flow Production Tracking site", ) ) else: # raise general Fault raise Fault(sg_response.get("message", "Unknown Error")) return def _visit_data(self, data: T, visitor) -> T: """ Walk the data (simple python types) and call the visitor. """ if not data: return data recursive = self._visit_data if isinstance(data, list): return [recursive(i, visitor) for i in data] # type: ignore[return-value] if isinstance(data, tuple): return tuple(recursive(i, visitor) for i in data) # type: ignore[return-value] if isinstance(data, dict): return dict((k, recursive(v, visitor)) for k, v in data.items()) # type: ignore[return-value] return visitor(data) def _transform_outbound(self, data: T) -> T: """ Transform data types or values before they are sent by the client. - changes timezones - converts dates and times to strings """ if self.config.convert_datetimes_to_utc: def _change_tz(value): if value.tzinfo is None: value = value.replace(tzinfo=SG_TIMEZONE.local) return value.astimezone(SG_TIMEZONE.utc) else: _change_tz = None local_now = datetime.datetime.now() def _outbound_visitor(value): if isinstance(value, datetime.datetime): if _change_tz: value = _change_tz(value) return value.strftime("%Y-%m-%dT%H:%M:%SZ") if isinstance(value, datetime.date): # existing code did not tz transform dates. return value.strftime("%Y-%m-%d") if isinstance(value, datetime.time): value = local_now.replace( hour=value.hour, minute=value.minute, second=value.second, microsecond=value.microsecond, ) if _change_tz: value = _change_tz(value) return value.strftime("%Y-%m-%dT%H:%M:%SZ") return value return self._visit_data(data, _outbound_visitor) def _transform_inbound(self, data: T) -> T: """ Transforms data types or values after they are received from the server. """ # NOTE: The time zone is removed from the time after it is transformed # to the local time, otherwise it will fail to compare to datetimes # that do not have a time zone. if self.config.convert_datetimes_to_utc: def _change_tz(x): return x.replace(tzinfo=SG_TIMEZONE.utc).astimezone(SG_TIMEZONE.local) else: _change_tz = None def _inbound_visitor(value): if isinstance(value, str): if len(value) == 20 and self._DATE_TIME_PATTERN.match(value): try: value = datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%SZ") except ValueError: return value if _change_tz: return _change_tz(value) return value return value return self._visit_data(data, _inbound_visitor) # ======================================================================== # Connection Functions def _get_connection(self) -> Http: """ Return the current connection or creates a new connection to the current server. """ if self._connection is not None: return self._connection if self.config.proxy_server: pi = ProxyInfo( socks.PROXY_TYPE_HTTP, self.config.proxy_server, self.config.proxy_port, proxy_user=self.config.proxy_user, proxy_pass=self.config.proxy_pass, ) self._connection = Http( timeout=self.config.timeout_secs, ca_certs=self.__ca_certs, proxy_info=pi, ) else: self._connection = Http( timeout=self.config.timeout_secs, ca_certs=self.__ca_certs, proxy_info=None, ) return self._connection def _close_connection(self) -> None: """ Close the current connection. """ if self._connection is None: return for conn in self._connection.connections.values(): try: conn.close() except Exception: pass self._connection.connections.clear() self._connection = None return # ======================================================================== # Utility def _parse_records(self, records: List) -> List: """ Parse 'records' returned from the api to do local modifications: - Insert thumbnail urls - Insert local file paths. - Revert < html entities that may be the result of input sanitization mechanisms back to a litteral < character. :param records: List of records (dicts) to process or a single record. :returns: A list of the records processed. """ if not records: return [] if not isinstance(records, (list, tuple)): records = [ records, ] for rec in records: # skip results that aren't entity dictionaries if not isinstance(rec, dict): continue # iterate over each item and check each field for possible injection for k, v in rec.items(): if not v: continue # Check for html entities in strings if isinstance(v, str): rec[k] = rec[k].replace("<", "<") # check for thumbnail for older version (<3.3.0) of shotgun if ( k == "image" and self.server_caps.version and self.server_caps.version < (3, 3, 0) ): rec["image"] = self._build_thumb_url(rec["type"], rec["id"]) continue if ( isinstance(v, dict) and v.get("link_type") == "local" and self.client_caps.local_path_field in v ): local_path = v[self.client_caps.local_path_field] v["local_path"] = local_path v["url"] = "file://%s" % (local_path or "",) return records def _build_thumb_url(self, entity_type: str, entity_id: int) -> str: """ Return the URL for the thumbnail of an entity given the entity type and the entity id. Note: This makes a call to the server for every thumbnail. :param entity_type: Entity type the id is for. :param entity_id: id of the entity to get the thumbnail for. :returns: Fully qualified url to the thumbnail. """ # Example response from the end point # curl "https://foo.com/upload/get_thumbnail_url?entity_type=Version&entity_id=1" # 1 # /files/0000/0000/0012/232/shot_thumb.jpg.jpg entity_info = { "e_type": urllib.parse.quote(entity_type), "e_id": urllib.parse.quote(str(entity_id)), } url = ( "/upload/get_thumbnail_url?" + "entity_type=%(e_type)s&entity_id=%(e_id)s" % entity_info ) body = self._make_call("GET", url, None, None)[2] code, thumb_url = body.splitlines() code = int(code) # code of 0 means error, second line is the error code if code == 0: raise ShotgunError(thumb_url) if code == 1: return urllib.parse.urlunparse( ( self.config.scheme, self.config.server, thumb_url.strip(), None, None, None, ) ) # Comments in prev version said we can get this sometimes. raise RuntimeError("Unknown code %s %s" % (code, thumb_url)) def _dict_to_list( self, d: Optional[Dict[str, Any]], key_name: str = "field_name", value_name: str = "value", extra_data=None, ) -> List[Dict[str, Any]]: """ Utility function to convert a dict into a list dicts using the key_name and value_name keys. e.g. d {'foo' : 'bar'} changed to [{'field_name':'foo', 'value':'bar'}] Any dictionary passed in via extra_data will be merged into the resulting dictionary. e.g. d as above and extra_data of {'foo': {'thing1': 'value1'}} changes into [{'field_name': 'foo', 'value': 'bar', 'thing1': 'value1'}] """ ret = [] for k, v in (d or {}).items(): d = {key_name: k, value_name: v} d.update((extra_data or {}).get(k, {})) ret.append(d) return ret def _dict_to_extra_data( self, d: Optional[Dict[str, Any]], key_name="value" ) -> Dict[str, Any]: """ Utility function to convert a dict into a dict compatible with the extra_data arg of _dict_to_list. e.g. d {'foo' : 'bar'} changed to {'foo': {"value": 'bar'}] """ return dict([(k, {key_name: v}) for (k, v) in (d or {}).items()]) def _upload_file_to_storage(self, path: str, storage_url: str) -> None: """ Internal function to upload an entire file to the Cloud storage. :param str path: Full path to an existing non-empty file on disk to upload. :param str storage_url: Target URL for the uploaded file. """ filename = os.path.basename(path) fd = open(path, "rb") try: content_type = mimetypes.guess_type(filename)[0] content_type = content_type or "application/octet-stream" file_size = os.fstat(fd.fileno())[stat.ST_SIZE] self._upload_data_to_storage(fd, content_type, file_size, storage_url) finally: fd.close() LOG.debug("File uploaded to Cloud storage: %s", filename) def _multipart_upload_file_to_storage( self, path: str, upload_info: Dict[str, Any] ) -> None: """ Internal function to upload a file to the Cloud storage in multiple parts. :param str path: Full path to an existing non-empty file on disk to upload. :param dict upload_info: Contains details received from the server, about the upload. """ fd = open(path, "rb") try: content_type = mimetypes.guess_type(path)[0] content_type = content_type or "application/octet-stream" file_size = os.fstat(fd.fileno())[stat.ST_SIZE] filename = os.path.basename(path) etags = [] part_number = 1 bytes_read = 0 chunk_size = self._MULTIPART_UPLOAD_CHUNK_SIZE while bytes_read < file_size: data = fd.read(chunk_size) data_size = len(data) # keep data as a stream so that we don't need to worry how it was # encoded. data = io.BytesIO(data) bytes_read += data_size part_url = self._get_upload_part_link( upload_info, filename, part_number ) etags.append( self._upload_data_to_storage( data, content_type, data_size, part_url ) ) part_number += 1 self._complete_multipart_upload(upload_info, filename, etags) finally: fd.close() LOG.debug("File uploaded in multiple parts to Cloud storage: %s", path) def _get_upload_part_link( self, upload_info: Dict[str, Any], filename: str, part_number: int ) -> str: """ Internal function to get the url to upload the next part of a file to the Cloud storage, in a multi-part upload process. :param dict upload_info: Contains details received from the server, about the upload. :param str filename: Name of the file for which we want the link. :param int part_number: Part number for the link. :returns: upload url. :rtype: str """ params = { "upload_type": upload_info["upload_type"], "filename": filename, "timestamp": upload_info["timestamp"], "upload_id": upload_info["upload_id"], "part_number": part_number, } url = urllib.parse.urlunparse( ( self.config.scheme, self.config.server, "/upload/api_get_upload_link_for_part", None, None, None, ) ) result = self._send_form(url, params) # Response is of the form: 1\n (for success) or 0\n (for failure). # In case of success, we know we the second line of the response contains the # requested URL. if not result.startswith("1"): raise ShotgunError("Unable get upload part link: %s" % result) LOG.debug("Got next upload link from server for multipart upload.") return result.split("\n", 2)[1] def _upload_data_to_storage( self, data: BinaryIO, content_type: str, size: int, storage_url: str ) -> str: """ Internal function to upload data to Cloud storage. :param stream data: Contains details received from the server, about the upload. :param str content_type: Content type of the data stream. :param int size: Number of bytes in the data stream. :param str storage_url: Target URL for the uploaded file. :returns: upload url. :rtype: str """ attempt = 1 while attempt <= self.MAX_ATTEMPTS: try: opener = self._build_opener(urllib.request.HTTPHandler) request = urllib.request.Request(storage_url, data=data) request.add_header("Content-Type", content_type) request.add_header("Content-Length", size) request.get_method = lambda: "PUT" result = self._make_upload_request(request, opener) LOG.debug("Completed request to %s" % request.get_method()) except urllib.error.HTTPError as e: if attempt != self.MAX_ATTEMPTS and e.code in [500, 503]: LOG.debug("Got a %s response. Waiting and retrying..." % e.code) time.sleep(float(attempt) * self.BACKOFF) attempt += 1 continue elif e.code in [500, 503]: raise ShotgunError( "Got a %s response when uploading to %s: %s" % (e.code, storage_url, e) ) else: raise ShotgunError( "Unanticipated error occurred uploading to %s: %s" % (storage_url, e) ) except urllib.error.URLError as e: LOG.debug("Got a '%s' response. Waiting and retrying..." % e) time.sleep(float(attempt) * self.BACKOFF) attempt += 1 continue else: break else: raise ShotgunError("Max attempts limit reached.") etag = result.info()["Etag"] LOG.debug("Part upload completed successfully.") return etag def _complete_multipart_upload( self, upload_info: Dict[str, Any], filename: str, etags: Iterable[str] ) -> None: """ Internal function to complete a multi-part upload to the Cloud storage. :param dict upload_info: Contains details received from the server, about the upload. :param str filename: Name of the file for which we want to complete the upload. :param tuple etags: Contains the etag of each uploaded file part. """ params = { "upload_type": upload_info["upload_type"], "filename": filename, "timestamp": upload_info["timestamp"], "upload_id": upload_info["upload_id"], "etags": ",".join(etags), } url = urllib.parse.urlunparse( ( self.config.scheme, self.config.server, "/upload/api_complete_multipart_upload", None, None, None, ) ) result = self._send_form(url, params) # Response is of the form: 1\n or 0\n to indicate success or failure of the call. if not result.startswith("1"): raise ShotgunError("Unable get upload part link: %s" % result) def _requires_direct_s3_upload( self, entity_type: str, field_name: Optional[str] ) -> bool: """ Internal function that determines if an entity_type + field_name combination should be uploaded to cloud storage. The info endpoint should return `s3_enabled_upload_types` which contains an object like the following: { 'Version': ['sg_uploaded_movie'], 'Attachment': '*', '*': ['this_file'] } :param str entity_type: The entity type of the file being uploaded. :param str field_name: The matching field name for the file being uploaded. :returns: Whether the field + entity type combination should be uploaded to cloud storage. :rtype: bool """ supported_s3_types = self.server_info.get("s3_enabled_upload_types") or {} supported_fields = supported_s3_types.get(entity_type) or [] supported_star_fields = supported_s3_types.get("*") or [] # If direct uploads are enabled if self.server_info.get("s3_direct_uploads_enabled", False): # If field_name is part of a supported entity_type if field_name in supported_fields or field_name in supported_star_fields: return True # If supported_fields is a string or a list with * if isinstance(supported_fields, list) and "*" in supported_fields: return True elif supported_fields == "*": return True # If supported_star_fields is a list containing * or * as a string if isinstance(supported_star_fields, list) and "*" in supported_star_fields: return True elif supported_star_fields == "*": return True # Support direct upload for old versions of shotgun return entity_type == "Version" and field_name == "sg_uploaded_movie" else: return False def _send_form(self, url: str, params: Dict[str, Any]) -> str: """ Utility function to send a Form to Shotgun and process any HTTP errors that could occur. :param url: endpoint where the form is sent. :param params: form data :returns: result from the server. """ params.update(self._auth_params()) attempt = 1 while attempt <= self.MAX_ATTEMPTS: # Perform the request try: opener = self._build_opener(FormPostHandler) resp = opener.open(url, params) result = resp.read() # response headers are in str(resp.info()).splitlines() except urllib.error.URLError as e: LOG.debug("Got a %s response. Waiting and retrying..." % e) time.sleep(float(attempt) * self.BACKOFF) attempt += 1 continue except urllib.error.HTTPError as e: if e.code == 500: raise ShotgunError( "Server encountered an internal error. " "\n%s\n(%s)\n%s\n\n" % (url, self._sanitize_auth_params(params), e) ) else: raise ShotgunError("Unanticipated error occurred %s" % (e)) if isinstance(result, bytes): result = result.decode("utf-8") return result else: raise ShotgunError("Max attempts limit reached.") # Helpers from the previous API, left as is. # Based on http://code.activestate.com/recipes/146306/ class FormPostHandler(urllib.request.BaseHandler): """ Handler for multipart form data """ handler_order = urllib.request.HTTPHandler.handler_order - 10 # needs to run first def http_request(self, request): data = request.data if data is not None and not isinstance(data, str): files = [] params = [] for key, value in data.items(): if isinstance(value, io.IOBase): files.append((key, value)) else: params.append((key, value)) if not files: data = urllib.parse.urlencode(params, True).encode("utf-8") # sequencing on else: boundary, data = self.encode(params, files) content_type = "multipart/form-data; boundary=%s" % boundary request.add_unredirected_header("Content-Type", content_type) request.data = data return request def encode(self, params, files, boundary=None, buffer=None): if boundary is None: # Per https://stackoverflow.com/a/27174474 # use a random string as the boundary if none was provided -- # use uuid since mimetools no longer exists in Python 3. # We'll do this across both python 2/3 rather than add more branching. boundary = uuid.uuid4() if buffer is None: buffer = io.BytesIO() for key, value in params: if isinstance(key, bytes): key = key.decode("utf-8") if isinstance(value, bytes): value = value.decode("utf-8") elif not isinstance(value, str): # If value is not a string (e.g. int) cast to text value = str(value) buffer.write(f"--{boundary}\r\n".encode("utf-8")) buffer.write( f'Content-Disposition: form-data; name="{key}"'.encode("utf-8") ) buffer.write(f"\r\n\r\n{value}\r\n".encode("utf-8")) for key, fd in files: # On Windows, it's possible that we were forced to open a file # with non-ascii characters as unicode. In that case, we need to # encode it as a utf-8 string to remove unicode from the equation. # If we don't, the mix of unicode and strings going into the # buffer can cause UnicodeEncodeErrors to be raised. filename = ( fd.name.decode("utf-8") if isinstance(fd.name, bytes) else fd.name ) filename = filename.split("/")[-1] if isinstance(key, bytes): key = key.decode("utf-8") content_type = mimetypes.guess_type(filename)[0] content_type = content_type or "application/octet-stream" file_size = os.fstat(fd.fileno())[stat.ST_SIZE] buffer.write(f"--{boundary}\r\n".encode("utf-8")) c_dis = 'Content-Disposition: form-data; name="%s"; filename="%s"%s' content_disposition = c_dis % (key, filename, "\r\n") buffer.write(content_disposition.encode("utf-8")) buffer.write(f"Content-Type: {content_type}\r\n".encode("utf-8")) buffer.write(f"Content-Length: {file_size}\r\n".encode("utf-8")) buffer.write(b"\r\n") fd.seek(0) shutil.copyfileobj(fd, buffer) buffer.write(b"\r\n") buffer.write(f"--{boundary}--\r\n\r\n".encode("utf-8")) buffer = buffer.getvalue() return boundary, buffer def https_request(self, request): return self.http_request(request) def _translate_filters(filters: Union[List, Tuple], filter_operator) -> Dict[str, Any]: """ Translate filters params into data structure expected by rpc call. """ wrapped_filters = {"filter_operator": filter_operator or "all", "filters": filters} return _translate_filters_dict(wrapped_filters) def _translate_filters_dict(sg_filter: Dict[str, Any]) -> Dict[str, Any]: new_filters = {} filter_operator = sg_filter.get("filter_operator") if filter_operator == "all" or filter_operator == "and": new_filters["logical_operator"] = "and" elif filter_operator == "any" or filter_operator == "or": new_filters["logical_operator"] = "or" else: raise ShotgunError("Invalid filter_operator %s" % filter_operator) if not isinstance(sg_filter["filters"], (list, tuple)): raise ShotgunError( "Invalid filters, expected a list or a tuple, got %s" % sg_filter["filters"] ) new_filters["conditions"] = _translate_filters_list(sg_filter["filters"]) return new_filters def _translate_filters_list(filters): conditions = [] for sg_filter in filters: if isinstance(sg_filter, (list, tuple)): conditions.append(_translate_filters_simple(sg_filter)) elif isinstance(sg_filter, dict): conditions.append(_translate_filters_dict(sg_filter)) else: raise ShotgunError( "Invalid filters, expected a list, tuple or dict, got %s" % sg_filter ) return conditions def _translate_filters_simple(sg_filter): condition = {"path": sg_filter[0], "relation": sg_filter[1]} values = sg_filter[2:] if len(values) == 1 and isinstance(values[0], (list, tuple)): values = values[0] # Payload optimization: Do not send a full object # just send the `type` and `id` when combining related queries global SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION if ( not SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION and condition["path"] != "id" and condition["relation"] in ["is", "is_not", "in", "not_in"] and isinstance(values[0], dict) ): values = [_optimize_filter_field(v) for v in values] condition["values"] = values return condition def _version_str(version) -> str: """ Convert a tuple of int's to a '.' separated str. """ return ".".join(map(str, version)) def _optimize_filter_field( field_value: Union[Dict[str, Any], List], recursive: bool = True ) -> Union[Dict, List]: """ For an FPT entity, returns a new dictionary with only the type, id, and other allowed keys. If case of any processing error, the original dictionary is returned. At least `type` and `id` keys are required to do the optimization """ allowed_keys = { "id", "type", "url", "name", "content_type", "local_path", "storage", "relative_path", } if isinstance(field_value, dict) and "id" in field_value and "type" in field_value: return {key: field_value[key] for key in allowed_keys if key in field_value} elif recursive and isinstance(field_value, list): return [_optimize_filter_field(fv, recursive=False) for fv in field_value] return field_value ================================================ FILE: software_credits ================================================ The Flow Production Tracking Python API uses the following software. Thanks to their creators, license information below. ============================== PYTHON ============================== Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation. All rights reserved. Copyright (c) 2000 BeOpen.com. All rights reserved. Copyright (c) 1995-2001 Corporation for National Research Initiatives. All rights reserved. Copyright (c) 1991-1995 Stichting Mathematisch Centrum. All rights reserved. 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 2.7.17 software in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 2.7.17 alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright © 2001-2020 Python Software Foundation; All Rights Reserved" are retained in Python 2.7.17 alone or in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python 2.7.17 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 2.7.17. 4. PSF is making Python 2.7.17 available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.7.17 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.7.17 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.7.17, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By copying, installing or otherwise using Python 2.7.17, Licensee agrees to be bound by the terms and conditions of this License Agreement. ============================== Certifi ============================== Copyright © 2024 Contributors This Autodesk software contains the unmodified python-certifi 2024.07.04 package. The use and distribution terms for this software are covered by the Mozilla Public License 2.0 (https://www.mozilla.org/en-US/MPL/2.0/ ). By using this software in any fashion, you are agreeing to be bound by the terms of this license. The source code for python-certifi is available from https://github.com/certifi/python-certifi/releases/tag/2024.07.04 ============================== Httplib2 ============================== Httplib2 Software License Copyright (c) 2006 by Joe Gregorio Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ============================== pyparsing ============================== Copyright (c) 2003-2019 Paul T. McGuire Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ============================== SIX ============================== Copyright (c) 2010-2020 Benjamin Peterson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: tests/__init__.py ================================================ ================================================ FILE: tests/base.py ================================================ """Base class for Flow Production Tracking API tests.""" import configparser import contextlib import json import os import random import re import time import unittest import unittest.mock import urllib.error import shotgun_api3 as api from shotgun_api3.shotgun import ServerCapabilities THUMBNAIL_MAX_ATTEMPTS = 30 THUMBNAIL_RETRY_INTERVAL = 10 TRANSIENT_IMAGE_PATH = "images/status/transient" class TestBase(unittest.TestCase): """Base class for tests. Sets up mocking and database test data.""" human_user = None project = None shot = None asset = None version = None note = None playlist = None task = None human_password = None server_url = None server_address = None session_token = None def __init__(self, *args, **kws): unittest.TestCase.__init__(self, *args, **kws) self.connect = False @classmethod def setUpClass(cls): """ Loads the configuration file from disk. """ # Since the file is read and never modified, we will only read # it once in memory and be done. cls.config = SgTestConfig() cur_folder = os.path.dirname(os.path.abspath(__file__)) config_path = os.path.join(cur_folder, "config") cls.config.read_config(config_path) if cls.config.jenkins: cls.auth_args = dict( login=cls.config.human_login, password=cls.config.human_password ) else: cls.auth_args = dict( script_name=cls.config.script_name, api_key=cls.config.api_key ) def setUp(self, auth_mode="ApiUser"): # When running the tests from a pull request from a client, the Shotgun # site URL won't be set, so do not attempt to run the test. if not self.config.server_url: self.skipTest("Shotgun site URL is not set. Skipping this test.") self.human_login = self.config.human_login self.human_password = self.config.human_password self.server_url = self.config.server_url self.script_name = self.config.script_name self.api_key = self.config.api_key self.http_proxy = self.config.http_proxy self.session_uuid = self.config.session_uuid if auth_mode == "ApiUser": self.sg = api.Shotgun( self.config.server_url, self.config.script_name, self.config.api_key, http_proxy=self.config.http_proxy, connect=self.connect, ) elif auth_mode == "HumanUser": self.sg = api.Shotgun( self.config.server_url, login=self.human_login, password=self.human_password, http_proxy=self.config.http_proxy, connect=self.connect, ) elif auth_mode == "SessionToken": # first make an instance based on script key/name so # we can generate a session token sg = api.Shotgun( self.config.server_url, http_proxy=self.config.http_proxy, **self.auth_args, ) self.session_token = sg.get_session_token() # now log in using session token self.sg = api.Shotgun( self.config.server_url, session_token=self.session_token, http_proxy=self.config.http_proxy, connect=self.connect, ) else: raise ValueError("Unknown value for auth_mode: %s" % auth_mode) if self.config.session_uuid: self.sg.set_session_uuid(self.config.session_uuid) def tearDown(self): self.sg = None class MockTestBase(TestBase): """Test base for tests mocking server interactions.""" def setUp(self): super().setUp() # TODO see if there is another way to stop sg connecting self._setup_mock() self._setup_mock_data() def _setup_mock(self, s3_status_code_error=503): """Setup mocking on the ShotgunClient to stop it calling a live server""" # Replace the function used to make the final call to the server # eaiser than mocking the http connection + response self.sg._http_request = unittest.mock.Mock( spec=api.Shotgun._http_request, return_value=((200, "OK"), {}, None) ) # Replace the function used to make the final call to the S3 server, and simulate # the exception HTTPError raised with 503 status errors self.sg._make_upload_request = unittest.mock.Mock( spec=api.Shotgun._make_upload_request, side_effect=urllib.error.HTTPError( "url", s3_status_code_error, "The server is currently down or to busy to reply." "Please try again later.", {}, None, ), ) # also replace the function that is called to get the http connection # to avoid calling the server. OK to return a mock as we will not use # it self.mock_conn = unittest.mock.Mock(spec=api.lib.httplib2.Http) # The Http objects connection property is a dict of connections # it is holding self.mock_conn.connections = dict() self.sg._connection = self.mock_conn self.sg._get_connection = unittest.mock.Mock(return_value=self.mock_conn) # create the server caps directly to say we have the correct version self.sg._server_caps = ServerCapabilities( self.sg.config.server, {"version": [2, 4, 0]} ) # prevent waiting for backoff self.sg.BACKOFF = 0 def _mock_http(self, data, headers=None, status=None): """Setup a mock response from the PTR server. Only has an affect if the server has been mocked. """ # test for a mock object rather than config.mock as some tests # force the mock to be created if not isinstance(self.sg._http_request, unittest.mock.Mock): return if not isinstance(data, str): data = json.dumps( data, ensure_ascii=False, ) resp_headers = { "cache-control": "no-cache", "connection": "close", "content-length": (data and str(len(data))) or 0, "content-type": "application/json; charset=utf-8", "date": "Wed, 13 Apr 2011 04:18:58 GMT", "server": "Apache/2.2.3 (CentOS)", "status": "200 OK", } if headers: resp_headers.update(headers) if not status: status = (200, "OK") # create a new mock to reset call list etc. self._setup_mock() self.sg._http_request.return_value = (status, resp_headers, data) def _assert_http_method(self, method, params, check_auth=True): """Asserts _http_request is called with the method and params.""" args, _ = self.sg._http_request.call_args arg_body = args[2] assert isinstance(arg_body, bytes) arg_body = json.loads(arg_body) arg_params = arg_body.get("params") self.assertEqual(method, arg_body["method_name"]) if check_auth: auth = arg_params[0] self.assertEqual(self.script_name, auth["script_name"]) self.assertEqual(self.api_key, auth["script_key"]) if params: rpc_args = arg_params[len(arg_params) - 1] self.assertEqual(params, rpc_args) def _setup_mock_data(self): self.human_user = { "id": 1, "login": self.config.human_login, "type": "HumanUser", } self.project = {"id": 2, "name": self.config.project_name, "type": "Project"} self.shot = {"id": 3, "code": self.config.shot_code, "type": "Shot"} self.asset = {"id": 4, "code": self.config.asset_code, "type": "Asset"} self.version = {"id": 5, "code": self.config.version_code, "type": "Version"} self.playlist = {"id": 7, "code": self.config.playlist_code, "type": "Playlist"} class LiveTestBase(TestBase): """Test base for tests relying on connection to server.""" def setUp(self, auth_mode=None): if not auth_mode: auth_mode = "HumanUser" if self.config.jenkins else "ApiUser" super().setUp(auth_mode) if ( self.sg.server_caps.version and self.sg.server_caps.version >= (3, 3, 0) and ( self.sg.server_caps.host.startswith("0.0.0.0") or self.sg.server_caps.host.startswith("127.0.0.1") ) ): self.server_address = re.sub( "^0.0.0.0|127.0.0.1", "localhost", self.sg.server_caps.host ) else: self.server_address = self.sg.server_caps.host @classmethod def setUpClass(cls): """ Sets up common and recurring operations for all tests. """ # The code below simply retrieves entities from Shotgun, or creates # them the very first time the test suite is run againt the site. # As such, since the operation is read-only, there's no sense # reloading stuff from Shotgun over and over again during each test. # As such, we are using setUpClass to load them once during the # entire duration of the tests. super(LiveTestBase, cls).setUpClass() # When running the tests from a pull request from a client, the Shotgun # site URL won't be set, so do not attempt to connect to Shotgun. if cls.config.server_url: sg = api.Shotgun( cls.config.server_url, **cls.auth_args, ) cls.sg_version = tuple(sg.info()["version"][:3]) cls._setup_db(cls.config, sg) @classmethod def _setup_db(cls, config, sg): data = {"name": cls.config.project_name} cls.project = _find_or_create_entity(sg, "Project", data) data = { "name": cls.config.human_name, "login": cls.config.human_login, "password_proxy": cls.config.human_password, } if cls.sg_version >= (3, 0, 0): data["locked_until"] = None cls.human_user = _find_or_create_entity(sg, "HumanUser", data) data = {"code": cls.config.asset_code, "project": cls.project} keys = ["code"] cls.asset = _find_or_create_entity(sg, "Asset", data, keys) data = { "project": cls.project, "code": cls.config.version_code, "entity": cls.asset, "user": cls.human_user, "sg_frames_aspect_ratio": 13.3, "frame_count": 33, } keys = ["code", "project"] cls.version = _find_or_create_entity(sg, "Version", data, keys) keys = ["code", "project"] data = {"code": cls.config.shot_code, "project": cls.project} cls.shot = _find_or_create_entity(sg, "Shot", data, keys) keys = ["project", "user"] data = {"project": cls.project, "user": cls.human_user, "content": "anything"} cls.note = _find_or_create_entity(sg, "Note", data, keys) keys = ["code", "project"] data = {"project": cls.project, "code": cls.config.playlist_code} cls.playlist = _find_or_create_entity(sg, "Playlist", data, keys) keys = ["code", "entity_type"] data = {"code": "wrapper test step", "entity_type": "Shot"} cls.step = _find_or_create_entity(sg, "Step", data, keys) keys = ["project", "entity", "content"] data = { "project": cls.project, "entity": cls.asset, "content": cls.config.task_content, "color": "Black", "due_date": "1968-10-13", "task_assignees": [cls.human_user], "sg_status_list": "ip", } cls.task = _find_or_create_entity(sg, "Task", data, keys) keys = ["code"] data = { "code": "api wrapper test storage", "mac_path": "nowhere", "windows_path": "nowhere", "linux_path": "nowhere", } cls.local_storage = _find_or_create_entity(sg, "LocalStorage", data, keys) @contextlib.contextmanager def gen_entity(self, entity_type, **kwargs): # Helper creator if entity_type == "HumanUser": if "login" not in kwargs: kwargs["login"] = "test-python-api-{rnd}" if "sg_status_list" not in kwargs: kwargs["sg_status_list"] = "dis" if "password_proxy" not in kwargs: kwargs["password_proxy"] = self.config.human_password item_rnd = random.randrange(100, 999) for k in kwargs: if isinstance(kwargs[k], str): kwargs[k] = kwargs[k].format(rnd=item_rnd) entity = self.sg.create(entity_type, kwargs, return_fields=list(kwargs.keys())) try: yield entity finally: rv = self.sg.delete(entity_type, entity["id"]) assert rv == True def find_one_await_thumbnail( self, entity_type, filters, fields=["image"], thumbnail_field_name="image", **kwargs ): attempts = 0 while attempts < THUMBNAIL_MAX_ATTEMPTS: result = self.sg.find_one(entity_type, filters, fields=fields, **kwargs) if TRANSIENT_IMAGE_PATH in result.get(thumbnail_field_name, ""): return result time.sleep(THUMBNAIL_RETRY_INTERVAL) attempts += 1 else: if self.config.jenkins: self.skipTest("Jenkins test timed out waiting for thumbnail") class HumanUserAuthLiveTestBase(LiveTestBase): """ Test base for relying on a Shotgun connection authenticate through the configured login/password pair. """ def setUp(self): super().setUp("HumanUser") class SessionTokenAuthLiveTestBase(LiveTestBase): """ Test base for relying on a Shotgun connection authenticate through the configured session_token parameter. """ def setUp(self): super().setUp("SessionToken") class SgTestConfig(object): """Reads test config and holds values""" def __init__(self): for key in self.config_keys(): # Look for any environment variables that match our test # configuration naming of "SG_{KEY}". Default is None. value = os.environ.get("SG_%s" % (str(key).upper())) if key in ["mock"]: value = (value is None) or (str(value).lower() in ["true", "1"]) setattr(self, key, value) def config_keys(self): return [ "api_key", "asset_code", "http_proxy", "human_login", "human_name", "human_password", "mock", "project_name", "script_name", "server_url", "session_uuid", "shot_code", "task_content", "version_code", "playlist_code", "jenkins", ] def read_config(self, config_path): config_parser = configparser.ConfigParser() config_parser.read(config_path) for section in config_parser.sections(): for option in config_parser.options(section): # We only care about the configuration file if an environment # variable has not already been set if not getattr(self, option, None): value = config_parser.get(section, option) setattr(self, option, value) def _find_or_create_entity(sg, entity_type, data, identifyiers=None): """Finds or creates entities. @params: sg - shogun_json.Shotgun instance entity_type - entity type data - dictionary of data for the entity identifyiers -list of subset of keys from data which should be used to uniquely identity the entity @returns dicitonary of the entity values """ identifyiers = identifyiers or ["name"] fields = list(data.keys()) filters = [[key, "is", data[key]] for key in identifyiers] entity = sg.find_one(entity_type, filters, fields=fields) entity = entity or sg.create(entity_type, data, return_fields=fields) assert entity return entity ================================================ FILE: tests/empty.txt ================================================ ================================================ FILE: tests/example_config ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. # Example server and login information to use for tests which require a live server. # This file should be renamed to config and the appropriate values should be added. [SERVER_INFO] # Full url to the Flow Production Tracking server # e.g. https://my-site.shotgrid.autodesk.com # be careful to not end server_url with a "/", or some tests may fail server_url : http://0.0.0.0:3000 # script name as key as listed in admin panel for your server script_name : test script name api_key : test script api key http_proxy : session_uuid : [TEST_DATA] project_name : PTR unittest project human_name : Sg unittest human human_login : sgunittesthuman human_password : human password asset_code : Sg unittest asset version_code : Sg unittest version shot_code : Sg unittest shot task_content : Sg unittest task playlist_code : Sg unittest playlist ================================================ FILE: tests/mockgun/schema.pickle ================================================ (dp0 S'Playlist' p1 (dp2 S'open_notes_count' p3 (dp4 S'mandatory' p5 (dp6 S'editable' p7 I00 sS'value' p8 I00 ssS'name' p9 (dp10 S'editable' p11 I01 sS'value' p12 S'Open Notes Count' p13 ssS'data_type' p14 (dp15 S'editable' p16 I00 sS'value' p17 S'text' p18 ssS'entity_type' p19 (dp20 S'editable' p21 I00 sS'value' p22 S'Playlist' p23 ssS'editable' p24 (dp25 S'editable' p26 I00 sS'value' p27 I00 ssS'unique' p28 (dp29 S'editable' p30 I00 sS'value' p31 I00 ssS'properties' p32 (dp33 S'default_value' p34 (dp35 S'editable' p36 I00 sS'value' p37 NssS'summary_default' p38 (dp39 S'editable' p40 I01 sS'value' p41 S'none' p42 sssS'description' p43 (dp44 S'editable' p45 I01 sS'value' p46 S'' p47 sssS'code' p48 (dp49 S'mandatory' p50 (dp51 S'editable' p52 I00 sS'value' p53 I01 ssS'name' p54 (dp55 S'editable' p56 I01 sS'value' p57 S'Playlist Name' p58 ssS'data_type' p59 (dp60 S'editable' p61 I00 sS'value' p62 S'text' p63 ssS'entity_type' p64 (dp65 S'editable' p66 I00 sS'value' p67 S'Playlist' p68 ssS'editable' p69 (dp70 S'editable' p71 I00 sS'value' p72 I01 ssS'unique' p73 (dp74 S'editable' p75 I00 sS'value' p76 I00 ssS'properties' p77 (dp78 S'default_value' p79 (dp80 S'editable' p81 I00 sS'value' p82 NssS'summary_default' p83 (dp84 S'editable' p85 I01 sS'value' p86 S'none' p87 sssS'description' p88 (dp89 S'editable' p90 I01 sS'value' p91 g47 sssS'open_notes' p92 (dp93 S'mandatory' p94 (dp95 S'editable' p96 I00 sS'value' p97 I00 ssS'name' p98 (dp99 S'editable' p100 I01 sS'value' p101 S'Open Notes' p102 ssS'data_type' p103 (dp104 S'editable' p105 I00 sS'value' p106 S'multi_entity' p107 ssS'entity_type' p108 (dp109 S'editable' p110 I00 sS'value' p111 S'Playlist' p112 ssS'editable' p113 (dp114 S'editable' p115 I00 sS'value' p116 I00 ssS'unique' p117 (dp118 S'editable' p119 I00 sS'value' p120 I00 ssS'properties' p121 (dp122 S'default_value' p123 (dp124 S'editable' p125 I00 sS'value' p126 NssS'summary_default' p127 (dp128 S'editable' p129 I01 sS'value' p130 S'none' p131 ssS'valid_types' p132 (dp133 S'editable' p134 I01 sS'value' p135 (lp136 S'Note' p137 asssS'description' p138 (dp139 S'editable' p140 I01 sS'value' p141 g47 sssS'description' p142 (dp143 S'mandatory' p144 (dp145 S'editable' p146 I00 sS'value' p147 I00 ssS'name' p148 (dp149 S'editable' p150 I01 sS'value' p151 S'Description' p152 ssS'data_type' p153 (dp154 S'editable' p155 I00 sS'value' p156 S'text' p157 ssS'entity_type' p158 (dp159 S'editable' p160 I00 sS'value' p161 S'Playlist' p162 ssS'editable' p163 (dp164 S'editable' p165 I00 sS'value' p166 I01 ssS'unique' p167 (dp168 S'editable' p169 I00 sS'value' p170 I00 ssS'properties' p171 (dp172 S'default_value' p173 (dp174 S'editable' p175 I00 sS'value' p176 NssS'summary_default' p177 (dp178 S'editable' p179 I01 sS'value' p180 S'none' p181 sssS'description' p182 (dp183 S'editable' p184 I01 sS'value' p185 g47 sssS'versions' p186 (dp187 S'mandatory' p188 (dp189 S'editable' p190 I00 sS'value' p191 I00 ssS'name' p192 (dp193 S'editable' p194 I01 sS'value' p195 S'Versions' p196 ssS'data_type' p197 (dp198 S'editable' p199 I00 sS'value' p200 S'multi_entity' p201 ssS'entity_type' p202 (dp203 S'editable' p204 I00 sS'value' p205 S'Playlist' p206 ssS'editable' p207 (dp208 S'editable' p209 I00 sS'value' p210 I01 ssS'unique' p211 (dp212 S'editable' p213 I00 sS'value' p214 I00 ssS'properties' p215 (dp216 S'default_value' p217 (dp218 S'editable' p219 I00 sS'value' p220 NssS'summary_default' p221 (dp222 S'editable' p223 I01 sS'value' p224 S'none' p225 ssS'valid_types' p226 (dp227 S'editable' p228 I01 sS'value' p229 (lp230 S'Version' p231 asssS'description' p232 (dp233 S'editable' p234 I01 sS'value' p235 g47 sssS'notes' p236 (dp237 S'mandatory' p238 (dp239 S'editable' p240 I00 sS'value' p241 I00 ssS'name' p242 (dp243 S'editable' p244 I01 sS'value' p245 S'Notes' p246 ssS'data_type' p247 (dp248 S'editable' p249 I00 sS'value' p250 S'multi_entity' p251 ssS'entity_type' p252 (dp253 S'editable' p254 I00 sS'value' p255 S'Playlist' p256 ssS'editable' p257 (dp258 S'editable' p259 I00 sS'value' p260 I01 ssS'unique' p261 (dp262 S'editable' p263 I00 sS'value' p264 I00 ssS'properties' p265 (dp266 S'default_value' p267 (dp268 S'editable' p269 I00 sS'value' p270 NssS'summary_default' p271 (dp272 S'editable' p273 I01 sS'value' p274 S'none' p275 ssS'valid_types' p276 (dp277 S'editable' p278 I01 sS'value' p279 (lp280 S'Note' p281 asssS'description' p282 (dp283 S'editable' p284 I01 sS'value' p285 g47 sssS'media_center_viewed_by_current_user_at' p286 (dp287 S'mandatory' p288 (dp289 S'editable' p290 I00 sS'value' p291 I00 ssS'name' p292 (dp293 S'editable' p294 I01 sS'value' p295 S'Media Center Date Viewed' p296 ssS'data_type' p297 (dp298 S'editable' p299 I00 sS'value' p300 S'date_time' p301 ssS'entity_type' p302 (dp303 S'editable' p304 I00 sS'value' p305 S'Playlist' p306 ssS'editable' p307 (dp308 S'editable' p309 I00 sS'value' p310 I00 ssS'unique' p311 (dp312 S'editable' p313 I00 sS'value' p314 I00 ssS'properties' p315 (dp316 S'default_value' p317 (dp318 S'editable' p319 I00 sS'value' p320 NssS'summary_default' p321 (dp322 S'editable' p323 I00 sS'value' p324 S'none' p325 sssS'description' p326 (dp327 S'editable' p328 I01 sS'value' p329 g47 sssS'sg_status' p330 (dp331 S'mandatory' p332 (dp333 S'editable' p334 I00 sS'value' p335 I00 ssS'name' p336 (dp337 S'editable' p338 I01 sS'value' p339 S'Status' p340 ssS'data_type' p341 (dp342 S'editable' p343 I00 sS'value' p344 S'status_list' p345 ssS'entity_type' p346 (dp347 S'editable' p348 I00 sS'value' p349 S'Playlist' p350 ssS'editable' p351 (dp352 S'editable' p353 I00 sS'value' p354 I01 ssS'unique' p355 (dp356 S'editable' p357 I00 sS'value' p358 I00 ssS'properties' p359 (dp360 S'default_value' p361 (dp362 S'editable' p363 I01 sS'value' p364 S'opn' p365 ssS'valid_values' p366 (dp367 S'editable' p368 I01 sS'value' p369 (lp370 S'clsd' p371 aS'ip' p372 aS'opn' p373 assS'summary_default' p374 (dp375 S'editable' p376 I01 sS'value' p377 S'none' p378 sssS'description' p379 (dp380 S'editable' p381 I01 sS'value' p382 g47 sssS'updated_at' p383 (dp384 S'mandatory' p385 (dp386 S'editable' p387 I00 sS'value' p388 I00 ssS'name' p389 (dp390 S'editable' p391 I01 sS'value' p392 S'Date Updated' p393 ssS'data_type' p394 (dp395 S'editable' p396 I00 sS'value' p397 S'date_time' p398 ssS'entity_type' p399 (dp400 S'editable' p401 I00 sS'value' p402 S'Playlist' p403 ssS'editable' p404 (dp405 S'editable' p406 I00 sS'value' p407 I00 ssS'unique' p408 (dp409 S'editable' p410 I00 sS'value' p411 I00 ssS'properties' p412 (dp413 S'default_value' p414 (dp415 S'editable' p416 I00 sS'value' p417 NssS'summary_default' p418 (dp419 S'editable' p420 I01 sS'value' p421 S'none' p422 sssS'description' p423 (dp424 S'editable' p425 I01 sS'value' p426 g47 sssS'created_by' p427 (dp428 S'mandatory' p429 (dp430 S'editable' p431 I00 sS'value' p432 I00 ssS'name' p433 (dp434 S'editable' p435 I01 sS'value' p436 S'Created by' p437 ssS'data_type' p438 (dp439 S'editable' p440 I00 sS'value' p441 S'entity' p442 ssS'entity_type' p443 (dp444 S'editable' p445 I00 sS'value' p446 S'Playlist' p447 ssS'editable' p448 (dp449 S'editable' p450 I00 sS'value' p451 I00 ssS'unique' p452 (dp453 S'editable' p454 I00 sS'value' p455 I00 ssS'properties' p456 (dp457 S'default_value' p458 (dp459 S'editable' p460 I00 sS'value' p461 NssS'summary_default' p462 (dp463 S'editable' p464 I01 sS'value' p465 S'none' p466 ssS'valid_types' p467 (dp468 S'editable' p469 I01 sS'value' p470 (lp471 S'HumanUser' p472 aS'ApiUser' p473 asssS'description' p474 (dp475 S'editable' p476 I01 sS'value' p477 g47 sssS'id' p478 (dp479 S'mandatory' p480 (dp481 S'editable' p482 I00 sS'value' p483 I00 ssS'name' p484 (dp485 S'editable' p486 I01 sS'value' p487 S'Id' p488 ssS'data_type' p489 (dp490 S'editable' p491 I00 sS'value' p492 S'number' p493 ssS'entity_type' p494 (dp495 S'editable' p496 I00 sS'value' p497 S'Playlist' p498 ssS'editable' p499 (dp500 S'editable' p501 I00 sS'value' p502 I00 ssS'unique' p503 (dp504 S'editable' p505 I00 sS'value' p506 I00 ssS'properties' p507 (dp508 S'default_value' p509 (dp510 S'editable' p511 I00 sS'value' p512 NssS'summary_default' p513 (dp514 S'editable' p515 I01 sS'value' p516 S'none' p517 sssS'description' p518 (dp519 S'editable' p520 I01 sS'value' p521 g47 sssS'project' p522 (dp523 S'mandatory' p524 (dp525 S'editable' p526 I00 sS'value' p527 I00 ssS'name' p528 (dp529 S'editable' p530 I01 sS'value' p531 S'Project' p532 ssS'data_type' p533 (dp534 S'editable' p535 I00 sS'value' p536 S'entity' p537 ssS'entity_type' p538 (dp539 S'editable' p540 I00 sS'value' p541 S'Playlist' p542 ssS'editable' p543 (dp544 S'editable' p545 I00 sS'value' p546 I01 ssS'unique' p547 (dp548 S'editable' p549 I00 sS'value' p550 I00 ssS'properties' p551 (dp552 S'default_value' p553 (dp554 S'editable' p555 I00 sS'value' p556 NssS'summary_default' p557 (dp558 S'editable' p559 I01 sS'value' p560 S'none' p561 ssS'valid_types' p562 (dp563 S'editable' p564 I01 sS'value' p565 (lp566 S'Project' p567 asssS'description' p568 (dp569 S'editable' p570 I01 sS'value' p571 g47 sssS'filmstrip_image' p572 (dp573 S'mandatory' p574 (dp575 S'editable' p576 I00 sS'value' p577 I00 ssS'name' p578 (dp579 S'editable' p580 I01 sS'value' p581 S'Filmstrip Thumbnail' p582 ssS'data_type' p583 (dp584 S'editable' p585 I00 sS'value' p586 S'image' p587 ssS'entity_type' p588 (dp589 S'editable' p590 I00 sS'value' p591 S'Playlist' p592 ssS'editable' p593 (dp594 S'editable' p595 I00 sS'value' p596 I01 ssS'unique' p597 (dp598 S'editable' p599 I00 sS'value' p600 I00 ssS'properties' p601 (dp602 S'default_value' p603 (dp604 S'editable' p605 I00 sS'value' p606 NssS'summary_default' p607 (dp608 S'editable' p609 I01 sS'value' p610 S'none' p611 sssS'description' p612 (dp613 S'editable' p614 I01 sS'value' p615 g47 sssS'sg_date_and_time' p616 (dp617 S'mandatory' p618 (dp619 S'editable' p620 I00 sS'value' p621 I00 ssS'name' p622 (dp623 S'editable' p624 I01 sS'value' p625 S'Date and Time' p626 ssS'data_type' p627 (dp628 S'editable' p629 I00 sS'value' p630 S'date_time' p631 ssS'entity_type' p632 (dp633 S'editable' p634 I00 sS'value' p635 S'Playlist' p636 ssS'editable' p637 (dp638 S'editable' p639 I00 sS'value' p640 I01 ssS'unique' p641 (dp642 S'editable' p643 I00 sS'value' p644 I00 ssS'properties' p645 (dp646 S'default_value' p647 (dp648 S'editable' p649 I00 sS'value' p650 NssS'summary_default' p651 (dp652 S'editable' p653 I01 sS'value' p654 S'none' p655 sssS'description' p656 (dp657 S'editable' p658 I01 sS'value' p659 g47 sssS'image' p660 (dp661 S'mandatory' p662 (dp663 S'editable' p664 I00 sS'value' p665 I00 ssS'name' p666 (dp667 S'editable' p668 I01 sS'value' p669 S'Thumbnail' p670 ssS'data_type' p671 (dp672 S'editable' p673 I00 sS'value' p674 S'image' p675 ssS'entity_type' p676 (dp677 S'editable' p678 I00 sS'value' p679 S'Playlist' p680 ssS'editable' p681 (dp682 S'editable' p683 I00 sS'value' p684 I01 ssS'unique' p685 (dp686 S'editable' p687 I00 sS'value' p688 I00 ssS'properties' p689 (dp690 S'default_value' p691 (dp692 S'editable' p693 I00 sS'value' p694 NssS'summary_default' p695 (dp696 S'editable' p697 I01 sS'value' p698 S'none' p699 sssS'description' p700 (dp701 S'editable' p702 I01 sS'value' p703 g47 sssS'current_user_favorite' p704 (dp705 S'mandatory' p706 (dp707 S'editable' p708 I00 sS'value' p709 I00 ssS'name' p710 (dp711 S'editable' p712 I01 sS'value' p713 S'Favorite' p714 ssS'data_type' p715 (dp716 S'editable' p717 I00 sS'value' p718 S'checkbox' p719 ssS'entity_type' p720 (dp721 S'editable' p722 I00 sS'value' p723 S'Playlist' p724 ssS'editable' p725 (dp726 S'editable' p727 I00 sS'value' p728 I01 ssS'unique' p729 (dp730 S'editable' p731 I00 sS'value' p732 I00 ssS'properties' p733 (dp734 S'default_value' p735 (dp736 S'editable' p737 I00 sS'value' p738 NssS'summary_default' p739 (dp740 S'editable' p741 I01 sS'value' p742 S'none' p743 sssS'description' p744 (dp745 S'editable' p746 I01 sS'value' p747 g47 sssS'cached_display_name' p748 (dp749 S'mandatory' p750 (dp751 S'editable' p752 I00 sS'value' p753 I00 ssS'name' p754 (dp755 S'editable' p756 I01 sS'value' p757 S'Cached Display Name' p758 ssS'data_type' p759 (dp760 S'editable' p761 I00 sS'value' p762 S'text' p763 ssS'entity_type' p764 (dp765 S'editable' p766 I00 sS'value' p767 S'Playlist' p768 ssS'editable' p769 (dp770 S'editable' p771 I00 sS'value' p772 I01 ssS'unique' p773 (dp774 S'editable' p775 I00 sS'value' p776 I00 ssS'properties' p777 (dp778 S'default_value' p779 (dp780 S'editable' p781 I00 sS'value' p782 NssS'summary_default' p783 (dp784 S'editable' p785 I00 sS'value' p786 S'none' p787 sssS'description' p788 (dp789 S'editable' p790 I01 sS'value' p791 g47 sssS'tag_list' p792 (dp793 S'mandatory' p794 (dp795 S'editable' p796 I00 sS'value' p797 I00 ssS'name' p798 (dp799 S'editable' p800 I01 sS'value' p801 S'Tags' p802 ssS'data_type' p803 (dp804 S'editable' p805 I00 sS'value' p806 S'tag_list' p807 ssS'entity_type' p808 (dp809 S'editable' p810 I00 sS'value' p811 S'Playlist' p812 ssS'editable' p813 (dp814 S'editable' p815 I00 sS'value' p816 I01 ssS'unique' p817 (dp818 S'editable' p819 I00 sS'value' p820 I00 ssS'properties' p821 (dp822 S'default_value' p823 (dp824 S'editable' p825 I00 sS'value' p826 NssS'summary_default' p827 (dp828 S'editable' p829 I01 sS'value' p830 S'none' p831 ssS'valid_types' p832 (dp833 S'editable' p834 I01 sS'value' p835 (lp836 S'Tag' p837 asssS'description' p838 (dp839 S'editable' p840 I01 sS'value' p841 g47 sssS'media_center_viewed_by_current_user' p842 (dp843 S'mandatory' p844 (dp845 S'editable' p846 I00 sS'value' p847 I00 ssS'name' p848 (dp849 S'editable' p850 I01 sS'value' p851 S'Media Center Viewed/Unviewed' p852 ssS'data_type' p853 (dp854 S'editable' p855 I00 sS'value' p856 S'list' p857 ssS'entity_type' p858 (dp859 S'editable' p860 I00 sS'value' p861 S'Playlist' p862 ssS'editable' p863 (dp864 S'editable' p865 I00 sS'value' p866 I01 ssS'unique' p867 (dp868 S'editable' p869 I00 sS'value' p870 I00 ssS'properties' p871 (dp872 S'default_value' p873 (dp874 S'editable' p875 I00 sS'value' p876 NssS'valid_values' p877 (dp878 S'editable' p879 I00 sS'value' p880 (lp881 S'read' p882 aS'unread' p883 assS'summary_default' p884 (dp885 S'editable' p886 I00 sS'value' p887 S'none' p888 sssS'description' p889 (dp890 S'editable' p891 I01 sS'value' p892 g47 sssS'created_at' p893 (dp894 S'mandatory' p895 (dp896 S'editable' p897 I00 sS'value' p898 I00 ssS'name' p899 (dp900 S'editable' p901 I01 sS'value' p902 S'Date Created' p903 ssS'data_type' p904 (dp905 S'editable' p906 I00 sS'value' p907 S'date_time' p908 ssS'entity_type' p909 (dp910 S'editable' p911 I00 sS'value' p912 S'Playlist' p913 ssS'editable' p914 (dp915 S'editable' p916 I00 sS'value' p917 I00 ssS'unique' p918 (dp919 S'editable' p920 I00 sS'value' p921 I00 ssS'properties' p922 (dp923 S'default_value' p924 (dp925 S'editable' p926 I00 sS'value' p927 NssS'summary_default' p928 (dp929 S'editable' p930 I01 sS'value' p931 S'none' p932 sssS'description' p933 (dp934 S'editable' p935 I01 sS'value' p936 g47 sssS'updated_by' p937 (dp938 S'mandatory' p939 (dp940 S'editable' p941 I00 sS'value' p942 I00 ssS'name' p943 (dp944 S'editable' p945 I01 sS'value' p946 S'Updated by' p947 ssS'data_type' p948 (dp949 S'editable' p950 I00 sS'value' p951 S'entity' p952 ssS'entity_type' p953 (dp954 S'editable' p955 I00 sS'value' p956 S'Playlist' p957 ssS'editable' p958 (dp959 S'editable' p960 I00 sS'value' p961 I00 ssS'unique' p962 (dp963 S'editable' p964 I00 sS'value' p965 I00 ssS'properties' p966 (dp967 S'default_value' p968 (dp969 S'editable' p970 I00 sS'value' p971 NssS'summary_default' p972 (dp973 S'editable' p974 I01 sS'value' p975 S'none' p976 ssS'valid_types' p977 (dp978 S'editable' p979 I01 sS'value' p980 (lp981 S'HumanUser' p982 aS'ApiUser' p983 asssS'description' p984 (dp985 S'editable' p986 I01 sS'value' p987 g47 ssssS'AppWelcomeUserConnection' p988 (dp989 S'cached_display_name' p990 (dp991 S'mandatory' p992 (dp993 S'editable' p994 I00 sS'value' p995 I00 ssS'name' p996 (dp997 S'editable' p998 I01 sS'value' p999 S'Cached Display Name' p1000 ssS'data_type' p1001 (dp1002 S'editable' p1003 I00 sS'value' p1004 S'text' p1005 ssS'entity_type' p1006 (dp1007 S'editable' p1008 I00 sS'value' p1009 S'AppWelcomeUserConnection' p1010 ssS'editable' p1011 (dp1012 S'editable' p1013 I00 sS'value' p1014 I01 ssS'unique' p1015 (dp1016 S'editable' p1017 I00 sS'value' p1018 I00 ssS'properties' p1019 (dp1020 S'default_value' p1021 (dp1022 S'editable' p1023 I00 sS'value' p1024 NssS'summary_default' p1025 (dp1026 S'editable' p1027 I00 sS'value' p1028 S'none' p1029 sssS'description' p1030 (dp1031 S'editable' p1032 I01 sS'value' p1033 g47 sssS'app_welcome' p1034 (dp1035 S'mandatory' p1036 (dp1037 S'editable' p1038 I00 sS'value' p1039 I00 ssS'name' p1040 (dp1041 S'editable' p1042 I01 sS'value' p1043 S'App Welcome' p1044 ssS'data_type' p1045 (dp1046 S'editable' p1047 I00 sS'value' p1048 S'entity' p1049 ssS'entity_type' p1050 (dp1051 S'editable' p1052 I00 sS'value' p1053 S'AppWelcomeUserConnection' p1054 ssS'editable' p1055 (dp1056 S'editable' p1057 I00 sS'value' p1058 I01 ssS'unique' p1059 (dp1060 S'editable' p1061 I00 sS'value' p1062 I00 ssS'properties' p1063 (dp1064 S'default_value' p1065 (dp1066 S'editable' p1067 I00 sS'value' p1068 NssS'summary_default' p1069 (dp1070 S'editable' p1071 I00 sS'value' p1072 S'none' p1073 ssS'valid_types' p1074 (dp1075 S'editable' p1076 I00 sS'value' p1077 (lp1078 S'AppWelcome' p1079 asssS'description' p1080 (dp1081 S'editable' p1082 I01 sS'value' p1083 g47 sssS'id' p1084 (dp1085 S'mandatory' p1086 (dp1087 S'editable' p1088 I00 sS'value' p1089 I00 ssS'name' p1090 (dp1091 S'editable' p1092 I01 sS'value' p1093 S'Id' p1094 ssS'data_type' p1095 (dp1096 S'editable' p1097 I00 sS'value' p1098 S'number' p1099 ssS'entity_type' p1100 (dp1101 S'editable' p1102 I00 sS'value' p1103 S'AppWelcomeUserConnection' p1104 ssS'editable' p1105 (dp1106 S'editable' p1107 I00 sS'value' p1108 I00 ssS'unique' p1109 (dp1110 S'editable' p1111 I00 sS'value' p1112 I00 ssS'properties' p1113 (dp1114 S'default_value' p1115 (dp1116 S'editable' p1117 I00 sS'value' p1118 NssS'summary_default' p1119 (dp1120 S'editable' p1121 I00 sS'value' p1122 S'none' p1123 sssS'description' p1124 (dp1125 S'editable' p1126 I01 sS'value' p1127 g47 sssS'user' p1128 (dp1129 S'mandatory' p1130 (dp1131 S'editable' p1132 I00 sS'value' p1133 I00 ssS'name' p1134 (dp1135 S'editable' p1136 I01 sS'value' p1137 S'User' p1138 ssS'data_type' p1139 (dp1140 S'editable' p1141 I00 sS'value' p1142 S'entity' p1143 ssS'entity_type' p1144 (dp1145 S'editable' p1146 I00 sS'value' p1147 S'AppWelcomeUserConnection' p1148 ssS'editable' p1149 (dp1150 S'editable' p1151 I00 sS'value' p1152 I01 ssS'unique' p1153 (dp1154 S'editable' p1155 I00 sS'value' p1156 I00 ssS'properties' p1157 (dp1158 S'default_value' p1159 (dp1160 S'editable' p1161 I00 sS'value' p1162 NssS'summary_default' p1163 (dp1164 S'editable' p1165 I00 sS'value' p1166 S'none' p1167 ssS'valid_types' p1168 (dp1169 S'editable' p1170 I00 sS'value' p1171 (lp1172 S'HumanUser' p1173 asssS'description' p1174 (dp1175 S'editable' p1176 I01 sS'value' p1177 g47 ssssS'Group' p1178 (dp1179 S'open_notes_count' p1180 (dp1181 S'mandatory' p1182 (dp1183 S'editable' p1184 I00 sS'value' p1185 I00 ssS'name' p1186 (dp1187 S'editable' p1188 I01 sS'value' p1189 S'Open Notes Count' p1190 ssS'data_type' p1191 (dp1192 S'editable' p1193 I00 sS'value' p1194 S'text' p1195 ssS'entity_type' p1196 (dp1197 S'editable' p1198 I00 sS'value' p1199 S'Group' p1200 ssS'editable' p1201 (dp1202 S'editable' p1203 I00 sS'value' p1204 I00 ssS'unique' p1205 (dp1206 S'editable' p1207 I00 sS'value' p1208 I00 ssS'properties' p1209 (dp1210 S'default_value' p1211 (dp1212 S'editable' p1213 I00 sS'value' p1214 NssS'summary_default' p1215 (dp1216 S'editable' p1217 I01 sS'value' p1218 S'none' p1219 sssS'description' p1220 (dp1221 S'editable' p1222 I01 sS'value' p1223 g47 sssS'code' p1224 (dp1225 S'mandatory' p1226 (dp1227 S'editable' p1228 I00 sS'value' p1229 I01 ssS'name' p1230 (dp1231 S'editable' p1232 I01 sS'value' p1233 S'Group Name' p1234 ssS'data_type' p1235 (dp1236 S'editable' p1237 I00 sS'value' p1238 S'text' p1239 ssS'entity_type' p1240 (dp1241 S'editable' p1242 I00 sS'value' p1243 S'Group' p1244 ssS'editable' p1245 (dp1246 S'editable' p1247 I00 sS'value' p1248 I01 ssS'unique' p1249 (dp1250 S'editable' p1251 I00 sS'value' p1252 I00 ssS'properties' p1253 (dp1254 S'default_value' p1255 (dp1256 S'editable' p1257 I00 sS'value' p1258 NssS'summary_default' p1259 (dp1260 S'editable' p1261 I01 sS'value' p1262 S'none' p1263 sssS'description' p1264 (dp1265 S'editable' p1266 I01 sS'value' p1267 g47 sssS'open_notes' p1268 (dp1269 S'mandatory' p1270 (dp1271 S'editable' p1272 I00 sS'value' p1273 I00 ssS'name' p1274 (dp1275 S'editable' p1276 I01 sS'value' p1277 S'Open Notes' p1278 ssS'data_type' p1279 (dp1280 S'editable' p1281 I00 sS'value' p1282 S'multi_entity' p1283 ssS'entity_type' p1284 (dp1285 S'editable' p1286 I00 sS'value' p1287 S'Group' p1288 ssS'editable' p1289 (dp1290 S'editable' p1291 I00 sS'value' p1292 I00 ssS'unique' p1293 (dp1294 S'editable' p1295 I00 sS'value' p1296 I00 ssS'properties' p1297 (dp1298 S'default_value' p1299 (dp1300 S'editable' p1301 I00 sS'value' p1302 NssS'summary_default' p1303 (dp1304 S'editable' p1305 I01 sS'value' p1306 S'none' p1307 ssS'valid_types' p1308 (dp1309 S'editable' p1310 I01 sS'value' p1311 (lp1312 S'Note' p1313 asssS'description' p1314 (dp1315 S'editable' p1316 I01 sS'value' p1317 g47 sssS'users' p1318 (dp1319 S'mandatory' p1320 (dp1321 S'editable' p1322 I00 sS'value' p1323 I00 ssS'name' p1324 (dp1325 S'editable' p1326 I01 sS'value' p1327 S'Users' p1328 ssS'data_type' p1329 (dp1330 S'editable' p1331 I00 sS'value' p1332 S'multi_entity' p1333 ssS'entity_type' p1334 (dp1335 S'editable' p1336 I00 sS'value' p1337 S'Group' p1338 ssS'editable' p1339 (dp1340 S'editable' p1341 I00 sS'value' p1342 I01 ssS'unique' p1343 (dp1344 S'editable' p1345 I00 sS'value' p1346 I00 ssS'properties' p1347 (dp1348 S'default_value' p1349 (dp1350 S'editable' p1351 I00 sS'value' p1352 NssS'summary_default' p1353 (dp1354 S'editable' p1355 I01 sS'value' p1356 S'none' p1357 ssS'valid_types' p1358 (dp1359 S'editable' p1360 I01 sS'value' p1361 (lp1362 S'HumanUser' p1363 asssS'description' p1364 (dp1365 S'editable' p1366 I01 sS'value' p1367 g47 sssS'created_at' p1368 (dp1369 S'mandatory' p1370 (dp1371 S'editable' p1372 I00 sS'value' p1373 I00 ssS'name' p1374 (dp1375 S'editable' p1376 I01 sS'value' p1377 S'Date Created' p1378 ssS'data_type' p1379 (dp1380 S'editable' p1381 I00 sS'value' p1382 S'date_time' p1383 ssS'entity_type' p1384 (dp1385 S'editable' p1386 I00 sS'value' p1387 S'Group' p1388 ssS'editable' p1389 (dp1390 S'editable' p1391 I00 sS'value' p1392 I00 ssS'unique' p1393 (dp1394 S'editable' p1395 I00 sS'value' p1396 I00 ssS'properties' p1397 (dp1398 S'default_value' p1399 (dp1400 S'editable' p1401 I00 sS'value' p1402 NssS'summary_default' p1403 (dp1404 S'editable' p1405 I01 sS'value' p1406 S'none' p1407 sssS'description' p1408 (dp1409 S'editable' p1410 I01 sS'value' p1411 g47 sssS'updated_at' p1412 (dp1413 S'mandatory' p1414 (dp1415 S'editable' p1416 I00 sS'value' p1417 I00 ssS'name' p1418 (dp1419 S'editable' p1420 I01 sS'value' p1421 S'Date Updated' p1422 ssS'data_type' p1423 (dp1424 S'editable' p1425 I00 sS'value' p1426 S'date_time' p1427 ssS'entity_type' p1428 (dp1429 S'editable' p1430 I00 sS'value' p1431 S'Group' p1432 ssS'editable' p1433 (dp1434 S'editable' p1435 I00 sS'value' p1436 I00 ssS'unique' p1437 (dp1438 S'editable' p1439 I00 sS'value' p1440 I00 ssS'properties' p1441 (dp1442 S'default_value' p1443 (dp1444 S'editable' p1445 I00 sS'value' p1446 NssS'summary_default' p1447 (dp1448 S'editable' p1449 I01 sS'value' p1450 S'none' p1451 sssS'description' p1452 (dp1453 S'editable' p1454 I01 sS'value' p1455 g47 sssS'created_by' p1456 (dp1457 S'mandatory' p1458 (dp1459 S'editable' p1460 I00 sS'value' p1461 I00 ssS'name' p1462 (dp1463 S'editable' p1464 I01 sS'value' p1465 S'Created by' p1466 ssS'data_type' p1467 (dp1468 S'editable' p1469 I00 sS'value' p1470 S'entity' p1471 ssS'entity_type' p1472 (dp1473 S'editable' p1474 I00 sS'value' p1475 S'Group' p1476 ssS'editable' p1477 (dp1478 S'editable' p1479 I00 sS'value' p1480 I00 ssS'unique' p1481 (dp1482 S'editable' p1483 I00 sS'value' p1484 I00 ssS'properties' p1485 (dp1486 S'default_value' p1487 (dp1488 S'editable' p1489 I00 sS'value' p1490 NssS'summary_default' p1491 (dp1492 S'editable' p1493 I01 sS'value' p1494 S'none' p1495 ssS'valid_types' p1496 (dp1497 S'editable' p1498 I01 sS'value' p1499 (lp1500 S'HumanUser' p1501 aS'ApiUser' p1502 asssS'description' p1503 (dp1504 S'editable' p1505 I01 sS'value' p1506 g47 sssS'id' p1507 (dp1508 S'mandatory' p1509 (dp1510 S'editable' p1511 I00 sS'value' p1512 I00 ssS'name' p1513 (dp1514 S'editable' p1515 I01 sS'value' p1516 S'Id' p1517 ssS'data_type' p1518 (dp1519 S'editable' p1520 I00 sS'value' p1521 S'number' p1522 ssS'entity_type' p1523 (dp1524 S'editable' p1525 I00 sS'value' p1526 S'Group' p1527 ssS'editable' p1528 (dp1529 S'editable' p1530 I00 sS'value' p1531 I00 ssS'unique' p1532 (dp1533 S'editable' p1534 I00 sS'value' p1535 I00 ssS'properties' p1536 (dp1537 S'default_value' p1538 (dp1539 S'editable' p1540 I00 sS'value' p1541 NssS'summary_default' p1542 (dp1543 S'editable' p1544 I01 sS'value' p1545 S'none' p1546 sssS'description' p1547 (dp1548 S'editable' p1549 I01 sS'value' p1550 g47 sssS'cached_display_name' p1551 (dp1552 S'mandatory' p1553 (dp1554 S'editable' p1555 I00 sS'value' p1556 I00 ssS'name' p1557 (dp1558 S'editable' p1559 I01 sS'value' p1560 S'Cached Display Name' p1561 ssS'data_type' p1562 (dp1563 S'editable' p1564 I00 sS'value' p1565 S'text' p1566 ssS'entity_type' p1567 (dp1568 S'editable' p1569 I00 sS'value' p1570 S'Group' p1571 ssS'editable' p1572 (dp1573 S'editable' p1574 I00 sS'value' p1575 I01 ssS'unique' p1576 (dp1577 S'editable' p1578 I00 sS'value' p1579 I00 ssS'properties' p1580 (dp1581 S'default_value' p1582 (dp1583 S'editable' p1584 I00 sS'value' p1585 NssS'summary_default' p1586 (dp1587 S'editable' p1588 I00 sS'value' p1589 S'none' p1590 sssS'description' p1591 (dp1592 S'editable' p1593 I01 sS'value' p1594 g47 sssS'tag_list' p1595 (dp1596 S'mandatory' p1597 (dp1598 S'editable' p1599 I00 sS'value' p1600 I00 ssS'name' p1601 (dp1602 S'editable' p1603 I01 sS'value' p1604 S'Tags' p1605 ssS'data_type' p1606 (dp1607 S'editable' p1608 I00 sS'value' p1609 S'tag_list' p1610 ssS'entity_type' p1611 (dp1612 S'editable' p1613 I00 sS'value' p1614 S'Group' p1615 ssS'editable' p1616 (dp1617 S'editable' p1618 I00 sS'value' p1619 I01 ssS'unique' p1620 (dp1621 S'editable' p1622 I00 sS'value' p1623 I00 ssS'properties' p1624 (dp1625 S'default_value' p1626 (dp1627 S'editable' p1628 I00 sS'value' p1629 NssS'summary_default' p1630 (dp1631 S'editable' p1632 I01 sS'value' p1633 S'none' p1634 ssS'valid_types' p1635 (dp1636 S'editable' p1637 I01 sS'value' p1638 (lp1639 S'Tag' p1640 asssS'description' p1641 (dp1642 S'editable' p1643 I01 sS'value' p1644 g47 sssS'notes' p1645 (dp1646 S'mandatory' p1647 (dp1648 S'editable' p1649 I00 sS'value' p1650 I00 ssS'name' p1651 (dp1652 S'editable' p1653 I01 sS'value' p1654 S'Notes' p1655 ssS'data_type' p1656 (dp1657 S'editable' p1658 I00 sS'value' p1659 S'multi_entity' p1660 ssS'entity_type' p1661 (dp1662 S'editable' p1663 I00 sS'value' p1664 S'Group' p1665 ssS'editable' p1666 (dp1667 S'editable' p1668 I00 sS'value' p1669 I01 ssS'unique' p1670 (dp1671 S'editable' p1672 I00 sS'value' p1673 I00 ssS'properties' p1674 (dp1675 S'default_value' p1676 (dp1677 S'editable' p1678 I00 sS'value' p1679 NssS'summary_default' p1680 (dp1681 S'editable' p1682 I01 sS'value' p1683 S'none' p1684 ssS'valid_types' p1685 (dp1686 S'editable' p1687 I01 sS'value' p1688 (lp1689 S'Note' p1690 asssS'description' p1691 (dp1692 S'editable' p1693 I01 sS'value' p1694 g47 sssS'updated_by' p1695 (dp1696 S'mandatory' p1697 (dp1698 S'editable' p1699 I00 sS'value' p1700 I00 ssS'name' p1701 (dp1702 S'editable' p1703 I01 sS'value' p1704 S'Updated by' p1705 ssS'data_type' p1706 (dp1707 S'editable' p1708 I00 sS'value' p1709 S'entity' p1710 ssS'entity_type' p1711 (dp1712 S'editable' p1713 I00 sS'value' p1714 S'Group' p1715 ssS'editable' p1716 (dp1717 S'editable' p1718 I00 sS'value' p1719 I00 ssS'unique' p1720 (dp1721 S'editable' p1722 I00 sS'value' p1723 I00 ssS'properties' p1724 (dp1725 S'default_value' p1726 (dp1727 S'editable' p1728 I00 sS'value' p1729 NssS'summary_default' p1730 (dp1731 S'editable' p1732 I01 sS'value' p1733 S'none' p1734 ssS'valid_types' p1735 (dp1736 S'editable' p1737 I01 sS'value' p1738 (lp1739 S'HumanUser' p1740 aS'ApiUser' p1741 asssS'description' p1742 (dp1743 S'editable' p1744 I01 sS'value' p1745 g47 ssssS'PhysicalAssetMocapTakeConnection' p1746 (dp1747 S'physical_asset' p1748 (dp1749 S'mandatory' p1750 (dp1751 S'editable' p1752 I00 sS'value' p1753 I00 ssS'name' p1754 (dp1755 S'editable' p1756 I01 sS'value' p1757 S'Physical Asset' p1758 ssS'data_type' p1759 (dp1760 S'editable' p1761 I00 sS'value' p1762 S'entity' p1763 ssS'entity_type' p1764 (dp1765 S'editable' p1766 I00 sS'value' p1767 S'PhysicalAssetMocapTakeConnection' p1768 ssS'editable' p1769 (dp1770 S'editable' p1771 I00 sS'value' p1772 I00 ssS'unique' p1773 (dp1774 S'editable' p1775 I00 sS'value' p1776 I00 ssS'properties' p1777 (dp1778 S'default_value' p1779 (dp1780 S'editable' p1781 I00 sS'value' p1782 NssS'summary_default' p1783 (dp1784 S'editable' p1785 I00 sS'value' p1786 S'none' p1787 ssS'valid_types' p1788 (dp1789 S'editable' p1790 I00 sS'value' p1791 (lp1792 S'PhysicalAsset' p1793 asssS'description' p1794 (dp1795 S'editable' p1796 I01 sS'value' p1797 g47 sssS'mocap_take' p1798 (dp1799 S'mandatory' p1800 (dp1801 S'editable' p1802 I00 sS'value' p1803 I00 ssS'name' p1804 (dp1805 S'editable' p1806 I01 sS'value' p1807 S'Mocap Take' p1808 ssS'data_type' p1809 (dp1810 S'editable' p1811 I00 sS'value' p1812 S'entity' p1813 ssS'entity_type' p1814 (dp1815 S'editable' p1816 I00 sS'value' p1817 S'PhysicalAssetMocapTakeConnection' p1818 ssS'editable' p1819 (dp1820 S'editable' p1821 I00 sS'value' p1822 I00 ssS'unique' p1823 (dp1824 S'editable' p1825 I00 sS'value' p1826 I00 ssS'properties' p1827 (dp1828 S'default_value' p1829 (dp1830 S'editable' p1831 I00 sS'value' p1832 NssS'summary_default' p1833 (dp1834 S'editable' p1835 I00 sS'value' p1836 S'none' p1837 ssS'valid_types' p1838 (dp1839 S'editable' p1840 I00 sS'value' p1841 (lp1842 S'MocapTake' p1843 asssS'description' p1844 (dp1845 S'editable' p1846 I01 sS'value' p1847 g47 sssS'cached_display_name' p1848 (dp1849 S'mandatory' p1850 (dp1851 S'editable' p1852 I00 sS'value' p1853 I00 ssS'name' p1854 (dp1855 S'editable' p1856 I01 sS'value' p1857 S'Cached Display Name' p1858 ssS'data_type' p1859 (dp1860 S'editable' p1861 I00 sS'value' p1862 S'text' p1863 ssS'entity_type' p1864 (dp1865 S'editable' p1866 I00 sS'value' p1867 S'PhysicalAssetMocapTakeConnection' p1868 ssS'editable' p1869 (dp1870 S'editable' p1871 I00 sS'value' p1872 I01 ssS'unique' p1873 (dp1874 S'editable' p1875 I00 sS'value' p1876 I00 ssS'properties' p1877 (dp1878 S'default_value' p1879 (dp1880 S'editable' p1881 I00 sS'value' p1882 NssS'summary_default' p1883 (dp1884 S'editable' p1885 I00 sS'value' p1886 S'none' p1887 sssS'description' p1888 (dp1889 S'editable' p1890 I01 sS'value' p1891 g47 sssS'id' p1892 (dp1893 S'mandatory' p1894 (dp1895 S'editable' p1896 I00 sS'value' p1897 I01 ssS'name' p1898 (dp1899 S'editable' p1900 I01 sS'value' p1901 S'Id' p1902 ssS'data_type' p1903 (dp1904 S'editable' p1905 I00 sS'value' p1906 S'number' p1907 ssS'entity_type' p1908 (dp1909 S'editable' p1910 I00 sS'value' p1911 S'PhysicalAssetMocapTakeConnection' p1912 ssS'editable' p1913 (dp1914 S'editable' p1915 I00 sS'value' p1916 I00 ssS'unique' p1917 (dp1918 S'editable' p1919 I00 sS'value' p1920 I00 ssS'properties' p1921 (dp1922 S'default_value' p1923 (dp1924 S'editable' p1925 I00 sS'value' p1926 NssS'summary_default' p1927 (dp1928 S'editable' p1929 I00 sS'value' p1930 S'none' p1931 sssS'description' p1932 (dp1933 S'editable' p1934 I01 sS'value' p1935 g47 ssssS'CustomEntity05' p1936 (dp1937 S'open_notes_count' p1938 (dp1939 S'mandatory' p1940 (dp1941 S'editable' p1942 I00 sS'value' p1943 I00 ssS'name' p1944 (dp1945 S'editable' p1946 I01 sS'value' p1947 S'Open Notes Count' p1948 ssS'data_type' p1949 (dp1950 S'editable' p1951 I00 sS'value' p1952 S'text' p1953 ssS'entity_type' p1954 (dp1955 S'editable' p1956 I00 sS'value' p1957 S'CustomEntity05' p1958 ssS'editable' p1959 (dp1960 S'editable' p1961 I00 sS'value' p1962 I00 ssS'unique' p1963 (dp1964 S'editable' p1965 I00 sS'value' p1966 I00 ssS'properties' p1967 (dp1968 S'default_value' p1969 (dp1970 S'editable' p1971 I00 sS'value' p1972 NssS'summary_default' p1973 (dp1974 S'editable' p1975 I01 sS'value' p1976 S'none' p1977 sssS'description' p1978 (dp1979 S'editable' p1980 I01 sS'value' p1981 g47 sssS'code' p1982 (dp1983 S'mandatory' p1984 (dp1985 S'editable' p1986 I00 sS'value' p1987 I01 ssS'name' p1988 (dp1989 S'editable' p1990 I01 sS'value' p1991 S'Custom Entity05 Name' p1992 ssS'data_type' p1993 (dp1994 S'editable' p1995 I00 sS'value' p1996 S'text' p1997 ssS'entity_type' p1998 (dp1999 S'editable' p2000 I00 sS'value' p2001 S'CustomEntity05' p2002 ssS'editable' p2003 (dp2004 S'editable' p2005 I00 sS'value' p2006 I01 ssS'unique' p2007 (dp2008 S'editable' p2009 I00 sS'value' p2010 I00 ssS'properties' p2011 (dp2012 S'default_value' p2013 (dp2014 S'editable' p2015 I00 sS'value' p2016 NssS'summary_default' p2017 (dp2018 S'editable' p2019 I01 sS'value' p2020 S'none' p2021 sssS'description' p2022 (dp2023 S'editable' p2024 I01 sS'value' p2025 g47 sssS'open_notes' p2026 (dp2027 S'mandatory' p2028 (dp2029 S'editable' p2030 I00 sS'value' p2031 I00 ssS'name' p2032 (dp2033 S'editable' p2034 I01 sS'value' p2035 S'Open Notes' p2036 ssS'data_type' p2037 (dp2038 S'editable' p2039 I00 sS'value' p2040 S'multi_entity' p2041 ssS'entity_type' p2042 (dp2043 S'editable' p2044 I00 sS'value' p2045 S'CustomEntity05' p2046 ssS'editable' p2047 (dp2048 S'editable' p2049 I00 sS'value' p2050 I00 ssS'unique' p2051 (dp2052 S'editable' p2053 I00 sS'value' p2054 I00 ssS'properties' p2055 (dp2056 S'default_value' p2057 (dp2058 S'editable' p2059 I00 sS'value' p2060 NssS'summary_default' p2061 (dp2062 S'editable' p2063 I01 sS'value' p2064 S'none' p2065 ssS'valid_types' p2066 (dp2067 S'editable' p2068 I01 sS'value' p2069 (lp2070 S'Note' p2071 asssS'description' p2072 (dp2073 S'editable' p2074 I01 sS'value' p2075 g47 sssS'description' p2076 (dp2077 S'mandatory' p2078 (dp2079 S'editable' p2080 I00 sS'value' p2081 I00 ssS'name' p2082 (dp2083 S'editable' p2084 I01 sS'value' p2085 S'Description' p2086 ssS'data_type' p2087 (dp2088 S'editable' p2089 I00 sS'value' p2090 S'text' p2091 ssS'entity_type' p2092 (dp2093 S'editable' p2094 I00 sS'value' p2095 S'CustomEntity05' p2096 ssS'editable' p2097 (dp2098 S'editable' p2099 I00 sS'value' p2100 I01 ssS'unique' p2101 (dp2102 S'editable' p2103 I00 sS'value' p2104 I00 ssS'properties' p2105 (dp2106 S'default_value' p2107 (dp2108 S'editable' p2109 I00 sS'value' p2110 NssS'summary_default' p2111 (dp2112 S'editable' p2113 I01 sS'value' p2114 S'none' p2115 sssS'description' p2116 (dp2117 S'editable' p2118 I01 sS'value' p2119 g47 sssS'created_at' p2120 (dp2121 S'mandatory' p2122 (dp2123 S'editable' p2124 I00 sS'value' p2125 I00 ssS'name' p2126 (dp2127 S'editable' p2128 I01 sS'value' p2129 S'Date Created' p2130 ssS'data_type' p2131 (dp2132 S'editable' p2133 I00 sS'value' p2134 S'date_time' p2135 ssS'entity_type' p2136 (dp2137 S'editable' p2138 I00 sS'value' p2139 S'CustomEntity05' p2140 ssS'editable' p2141 (dp2142 S'editable' p2143 I00 sS'value' p2144 I00 ssS'unique' p2145 (dp2146 S'editable' p2147 I00 sS'value' p2148 I00 ssS'properties' p2149 (dp2150 S'default_value' p2151 (dp2152 S'editable' p2153 I00 sS'value' p2154 NssS'summary_default' p2155 (dp2156 S'editable' p2157 I01 sS'value' p2158 S'none' p2159 sssS'description' p2160 (dp2161 S'editable' p2162 I01 sS'value' p2163 g47 sssS'updated_at' p2164 (dp2165 S'mandatory' p2166 (dp2167 S'editable' p2168 I00 sS'value' p2169 I00 ssS'name' p2170 (dp2171 S'editable' p2172 I01 sS'value' p2173 S'Date Updated' p2174 ssS'data_type' p2175 (dp2176 S'editable' p2177 I00 sS'value' p2178 S'date_time' p2179 ssS'entity_type' p2180 (dp2181 S'editable' p2182 I00 sS'value' p2183 S'CustomEntity05' p2184 ssS'editable' p2185 (dp2186 S'editable' p2187 I00 sS'value' p2188 I00 ssS'unique' p2189 (dp2190 S'editable' p2191 I00 sS'value' p2192 I00 ssS'properties' p2193 (dp2194 S'default_value' p2195 (dp2196 S'editable' p2197 I00 sS'value' p2198 NssS'summary_default' p2199 (dp2200 S'editable' p2201 I01 sS'value' p2202 S'none' p2203 sssS'description' p2204 (dp2205 S'editable' p2206 I01 sS'value' p2207 g47 sssS'created_by' p2208 (dp2209 S'mandatory' p2210 (dp2211 S'editable' p2212 I00 sS'value' p2213 I00 ssS'name' p2214 (dp2215 S'editable' p2216 I01 sS'value' p2217 S'Created by' p2218 ssS'data_type' p2219 (dp2220 S'editable' p2221 I00 sS'value' p2222 S'entity' p2223 ssS'entity_type' p2224 (dp2225 S'editable' p2226 I00 sS'value' p2227 S'CustomEntity05' p2228 ssS'editable' p2229 (dp2230 S'editable' p2231 I00 sS'value' p2232 I00 ssS'unique' p2233 (dp2234 S'editable' p2235 I00 sS'value' p2236 I00 ssS'properties' p2237 (dp2238 S'default_value' p2239 (dp2240 S'editable' p2241 I00 sS'value' p2242 NssS'summary_default' p2243 (dp2244 S'editable' p2245 I01 sS'value' p2246 S'none' p2247 ssS'valid_types' p2248 (dp2249 S'editable' p2250 I01 sS'value' p2251 (lp2252 S'HumanUser' p2253 aS'ApiUser' p2254 asssS'description' p2255 (dp2256 S'editable' p2257 I01 sS'value' p2258 g47 sssS'project' p2259 (dp2260 S'mandatory' p2261 (dp2262 S'editable' p2263 I00 sS'value' p2264 I00 ssS'name' p2265 (dp2266 S'editable' p2267 I01 sS'value' p2268 S'Project' p2269 ssS'data_type' p2270 (dp2271 S'editable' p2272 I00 sS'value' p2273 S'entity' p2274 ssS'entity_type' p2275 (dp2276 S'editable' p2277 I00 sS'value' p2278 S'CustomEntity05' p2279 ssS'editable' p2280 (dp2281 S'editable' p2282 I00 sS'value' p2283 I01 ssS'unique' p2284 (dp2285 S'editable' p2286 I00 sS'value' p2287 I00 ssS'properties' p2288 (dp2289 S'default_value' p2290 (dp2291 S'editable' p2292 I00 sS'value' p2293 NssS'summary_default' p2294 (dp2295 S'editable' p2296 I01 sS'value' p2297 S'none' p2298 ssS'valid_types' p2299 (dp2300 S'editable' p2301 I01 sS'value' p2302 (lp2303 S'Project' p2304 asssS'description' p2305 (dp2306 S'editable' p2307 I01 sS'value' p2308 g47 sssS'filmstrip_image' p2309 (dp2310 S'mandatory' p2311 (dp2312 S'editable' p2313 I00 sS'value' p2314 I00 ssS'name' p2315 (dp2316 S'editable' p2317 I01 sS'value' p2318 S'Filmstrip Thumbnail' p2319 ssS'data_type' p2320 (dp2321 S'editable' p2322 I00 sS'value' p2323 S'image' p2324 ssS'entity_type' p2325 (dp2326 S'editable' p2327 I00 sS'value' p2328 S'CustomEntity05' p2329 ssS'editable' p2330 (dp2331 S'editable' p2332 I00 sS'value' p2333 I01 ssS'unique' p2334 (dp2335 S'editable' p2336 I00 sS'value' p2337 I00 ssS'properties' p2338 (dp2339 S'default_value' p2340 (dp2341 S'editable' p2342 I00 sS'value' p2343 NssS'summary_default' p2344 (dp2345 S'editable' p2346 I01 sS'value' p2347 S'none' p2348 sssS'description' p2349 (dp2350 S'editable' p2351 I01 sS'value' p2352 g47 sssS'sg_status_list' p2353 (dp2354 S'mandatory' p2355 (dp2356 S'editable' p2357 I00 sS'value' p2358 I00 ssS'name' p2359 (dp2360 S'editable' p2361 I01 sS'value' p2362 S'Status' p2363 ssS'data_type' p2364 (dp2365 S'editable' p2366 I00 sS'value' p2367 S'status_list' p2368 ssS'entity_type' p2369 (dp2370 S'editable' p2371 I00 sS'value' p2372 S'CustomEntity05' p2373 ssS'editable' p2374 (dp2375 S'editable' p2376 I00 sS'value' p2377 I01 ssS'unique' p2378 (dp2379 S'editable' p2380 I00 sS'value' p2381 I00 ssS'properties' p2382 (dp2383 S'default_value' p2384 (dp2385 S'editable' p2386 I01 sS'value' p2387 S'wtg' p2388 ssS'valid_values' p2389 (dp2390 S'editable' p2391 I01 sS'value' p2392 (lp2393 S'cmpt' p2394 aS'ip' p2395 aS'wtg' p2396 assS'summary_default' p2397 (dp2398 S'editable' p2399 I01 sS'value' p2400 S'none' p2401 sssS'description' p2402 (dp2403 S'editable' p2404 I01 sS'value' p2405 g47 sssS'notes' p2406 (dp2407 S'mandatory' p2408 (dp2409 S'editable' p2410 I00 sS'value' p2411 I00 ssS'name' p2412 (dp2413 S'editable' p2414 I01 sS'value' p2415 S'Notes' p2416 ssS'data_type' p2417 (dp2418 S'editable' p2419 I00 sS'value' p2420 S'multi_entity' p2421 ssS'entity_type' p2422 (dp2423 S'editable' p2424 I00 sS'value' p2425 S'CustomEntity05' p2426 ssS'editable' p2427 (dp2428 S'editable' p2429 I00 sS'value' p2430 I01 ssS'unique' p2431 (dp2432 S'editable' p2433 I00 sS'value' p2434 I00 ssS'properties' p2435 (dp2436 S'default_value' p2437 (dp2438 S'editable' p2439 I00 sS'value' p2440 NssS'summary_default' p2441 (dp2442 S'editable' p2443 I01 sS'value' p2444 S'none' p2445 ssS'valid_types' p2446 (dp2447 S'editable' p2448 I01 sS'value' p2449 (lp2450 S'Note' p2451 asssS'description' p2452 (dp2453 S'editable' p2454 I01 sS'value' p2455 g47 sssS'image' p2456 (dp2457 S'mandatory' p2458 (dp2459 S'editable' p2460 I00 sS'value' p2461 I00 ssS'name' p2462 (dp2463 S'editable' p2464 I01 sS'value' p2465 S'Thumbnail' p2466 ssS'data_type' p2467 (dp2468 S'editable' p2469 I00 sS'value' p2470 S'image' p2471 ssS'entity_type' p2472 (dp2473 S'editable' p2474 I00 sS'value' p2475 S'CustomEntity05' p2476 ssS'editable' p2477 (dp2478 S'editable' p2479 I00 sS'value' p2480 I01 ssS'unique' p2481 (dp2482 S'editable' p2483 I00 sS'value' p2484 I00 ssS'properties' p2485 (dp2486 S'default_value' p2487 (dp2488 S'editable' p2489 I00 sS'value' p2490 NssS'summary_default' p2491 (dp2492 S'editable' p2493 I01 sS'value' p2494 S'none' p2495 sssS'description' p2496 (dp2497 S'editable' p2498 I01 sS'value' p2499 g47 sssS'cached_display_name' p2500 (dp2501 S'mandatory' p2502 (dp2503 S'editable' p2504 I00 sS'value' p2505 I00 ssS'name' p2506 (dp2507 S'editable' p2508 I01 sS'value' p2509 S'Cached Display Name' p2510 ssS'data_type' p2511 (dp2512 S'editable' p2513 I00 sS'value' p2514 S'text' p2515 ssS'entity_type' p2516 (dp2517 S'editable' p2518 I00 sS'value' p2519 S'CustomEntity05' p2520 ssS'editable' p2521 (dp2522 S'editable' p2523 I00 sS'value' p2524 I01 ssS'unique' p2525 (dp2526 S'editable' p2527 I00 sS'value' p2528 I00 ssS'properties' p2529 (dp2530 S'default_value' p2531 (dp2532 S'editable' p2533 I00 sS'value' p2534 NssS'summary_default' p2535 (dp2536 S'editable' p2537 I00 sS'value' p2538 S'none' p2539 sssS'description' p2540 (dp2541 S'editable' p2542 I01 sS'value' p2543 g47 sssS'tag_list' p2544 (dp2545 S'mandatory' p2546 (dp2547 S'editable' p2548 I00 sS'value' p2549 I00 ssS'name' p2550 (dp2551 S'editable' p2552 I01 sS'value' p2553 S'Tags' p2554 ssS'data_type' p2555 (dp2556 S'editable' p2557 I00 sS'value' p2558 S'tag_list' p2559 ssS'entity_type' p2560 (dp2561 S'editable' p2562 I00 sS'value' p2563 S'CustomEntity05' p2564 ssS'editable' p2565 (dp2566 S'editable' p2567 I00 sS'value' p2568 I01 ssS'unique' p2569 (dp2570 S'editable' p2571 I00 sS'value' p2572 I00 ssS'properties' p2573 (dp2574 S'default_value' p2575 (dp2576 S'editable' p2577 I00 sS'value' p2578 NssS'summary_default' p2579 (dp2580 S'editable' p2581 I01 sS'value' p2582 S'none' p2583 ssS'valid_types' p2584 (dp2585 S'editable' p2586 I01 sS'value' p2587 (lp2588 S'Tag' p2589 asssS'description' p2590 (dp2591 S'editable' p2592 I01 sS'value' p2593 g47 sssS'id' p2594 (dp2595 S'mandatory' p2596 (dp2597 S'editable' p2598 I00 sS'value' p2599 I00 ssS'name' p2600 (dp2601 S'editable' p2602 I01 sS'value' p2603 S'Id' p2604 ssS'data_type' p2605 (dp2606 S'editable' p2607 I00 sS'value' p2608 S'number' p2609 ssS'entity_type' p2610 (dp2611 S'editable' p2612 I00 sS'value' p2613 S'CustomEntity05' p2614 ssS'editable' p2615 (dp2616 S'editable' p2617 I00 sS'value' p2618 I00 ssS'unique' p2619 (dp2620 S'editable' p2621 I00 sS'value' p2622 I00 ssS'properties' p2623 (dp2624 S'default_value' p2625 (dp2626 S'editable' p2627 I00 sS'value' p2628 NssS'summary_default' p2629 (dp2630 S'editable' p2631 I01 sS'value' p2632 S'none' p2633 sssS'description' p2634 (dp2635 S'editable' p2636 I01 sS'value' p2637 g47 sssS'updated_by' p2638 (dp2639 S'mandatory' p2640 (dp2641 S'editable' p2642 I00 sS'value' p2643 I00 ssS'name' p2644 (dp2645 S'editable' p2646 I01 sS'value' p2647 S'Updated by' p2648 ssS'data_type' p2649 (dp2650 S'editable' p2651 I00 sS'value' p2652 S'entity' p2653 ssS'entity_type' p2654 (dp2655 S'editable' p2656 I00 sS'value' p2657 S'CustomEntity05' p2658 ssS'editable' p2659 (dp2660 S'editable' p2661 I00 sS'value' p2662 I00 ssS'unique' p2663 (dp2664 S'editable' p2665 I00 sS'value' p2666 I00 ssS'properties' p2667 (dp2668 S'default_value' p2669 (dp2670 S'editable' p2671 I00 sS'value' p2672 NssS'summary_default' p2673 (dp2674 S'editable' p2675 I01 sS'value' p2676 S'none' p2677 ssS'valid_types' p2678 (dp2679 S'editable' p2680 I01 sS'value' p2681 (lp2682 S'HumanUser' p2683 aS'ApiUser' p2684 asssS'description' p2685 (dp2686 S'editable' p2687 I01 sS'value' p2688 g47 ssssS'Note' p2689 (dp2690 S'project' p2691 (dp2692 S'mandatory' p2693 (dp2694 S'editable' p2695 I00 sS'value' p2696 I00 ssS'name' p2697 (dp2698 S'editable' p2699 I01 sS'value' p2700 S'Project' p2701 ssS'data_type' p2702 (dp2703 S'editable' p2704 I00 sS'value' p2705 S'entity' p2706 ssS'entity_type' p2707 (dp2708 S'editable' p2709 I00 sS'value' p2710 S'Note' p2711 ssS'editable' p2712 (dp2713 S'editable' p2714 I00 sS'value' p2715 I01 ssS'unique' p2716 (dp2717 S'editable' p2718 I00 sS'value' p2719 I00 ssS'properties' p2720 (dp2721 S'default_value' p2722 (dp2723 S'editable' p2724 I00 sS'value' p2725 NssS'summary_default' p2726 (dp2727 S'editable' p2728 I01 sS'value' p2729 S'none' p2730 ssS'valid_types' p2731 (dp2732 S'editable' p2733 I01 sS'value' p2734 (lp2735 S'Project' p2736 asssS'description' p2737 (dp2738 S'editable' p2739 I01 sS'value' p2740 g47 sssS'playlist' p2741 (dp2742 S'mandatory' p2743 (dp2744 S'editable' p2745 I00 sS'value' p2746 I00 ssS'name' p2747 (dp2748 S'editable' p2749 I01 sS'value' p2750 S'Playlist' p2751 ssS'data_type' p2752 (dp2753 S'editable' p2754 I00 sS'value' p2755 S'entity' p2756 ssS'entity_type' p2757 (dp2758 S'editable' p2759 I00 sS'value' p2760 S'Note' p2761 ssS'editable' p2762 (dp2763 S'editable' p2764 I00 sS'value' p2765 I01 ssS'unique' p2766 (dp2767 S'editable' p2768 I00 sS'value' p2769 I00 ssS'properties' p2770 (dp2771 S'default_value' p2772 (dp2773 S'editable' p2774 I00 sS'value' p2775 NssS'summary_default' p2776 (dp2777 S'editable' p2778 I00 sS'value' p2779 S'none' p2780 ssS'valid_types' p2781 (dp2782 S'editable' p2783 I00 sS'value' p2784 (lp2785 S'Playlist' p2786 asssS'description' p2787 (dp2788 S'editable' p2789 I01 sS'value' p2790 g47 sssS'tasks' p2791 (dp2792 S'mandatory' p2793 (dp2794 S'editable' p2795 I00 sS'value' p2796 I00 ssS'name' p2797 (dp2798 S'editable' p2799 I01 sS'value' p2800 S'Tasks' p2801 ssS'data_type' p2802 (dp2803 S'editable' p2804 I00 sS'value' p2805 S'multi_entity' p2806 ssS'entity_type' p2807 (dp2808 S'editable' p2809 I00 sS'value' p2810 S'Note' p2811 ssS'editable' p2812 (dp2813 S'editable' p2814 I00 sS'value' p2815 I01 ssS'unique' p2816 (dp2817 S'editable' p2818 I00 sS'value' p2819 I00 ssS'properties' p2820 (dp2821 S'default_value' p2822 (dp2823 S'editable' p2824 I00 sS'value' p2825 NssS'summary_default' p2826 (dp2827 S'editable' p2828 I01 sS'value' p2829 S'none' p2830 ssS'valid_types' p2831 (dp2832 S'editable' p2833 I01 sS'value' p2834 (lp2835 S'Task' p2836 asssS'description' p2837 (dp2838 S'editable' p2839 I01 sS'value' p2840 g47 sssS'note_links' p2841 (dp2842 S'mandatory' p2843 (dp2844 S'editable' p2845 I00 sS'value' p2846 I00 ssS'name' p2847 (dp2848 S'editable' p2849 I01 sS'value' p2850 S'Links' p2851 ssS'data_type' p2852 (dp2853 S'editable' p2854 I00 sS'value' p2855 S'multi_entity' p2856 ssS'entity_type' p2857 (dp2858 S'editable' p2859 I00 sS'value' p2860 S'Note' p2861 ssS'editable' p2862 (dp2863 S'editable' p2864 I00 sS'value' p2865 I01 ssS'unique' p2866 (dp2867 S'editable' p2868 I00 sS'value' p2869 I00 ssS'properties' p2870 (dp2871 S'default_value' p2872 (dp2873 S'editable' p2874 I00 sS'value' p2875 NssS'summary_default' p2876 (dp2877 S'editable' p2878 I01 sS'value' p2879 S'none' p2880 ssS'valid_types' p2881 (dp2882 S'editable' p2883 I01 sS'value' p2884 (lp2885 S'Asset' p2886 aS'Shot' p2887 aS'Version' p2888 aS'Group' p2889 aS'TaskTemplate' p2890 aS'Playlist' p2891 aS'Booking' p2892 aS'Department' p2893 aS'Phase' p2894 aS'Sequence' p2895 aS'PublishedFile' p2896 aS'TankPublishedFile' p2897 aS'CustomEntity01' p2898 aS'Scene' p2899 aS'CustomEntity02' p2900 aS'CustomEntity03' p2901 aS'CustomEntity04' p2902 aS'CustomEntity05' p2903 aS'CustomNonProjectEntity01' p2904 aS'CustomNonProjectEntity02' p2905 aS'CustomNonProjectEntity03' p2906 aS'Element' p2907 aS'AssetLibrary' p2908 asssS'description' p2909 (dp2910 S'editable' p2911 I01 sS'value' p2912 g47 sssS'attachments' p2913 (dp2914 S'mandatory' p2915 (dp2916 S'editable' p2917 I00 sS'value' p2918 I00 ssS'name' p2919 (dp2920 S'editable' p2921 I01 sS'value' p2922 S'Attachments' p2923 ssS'data_type' p2924 (dp2925 S'editable' p2926 I00 sS'value' p2927 S'multi_entity' p2928 ssS'entity_type' p2929 (dp2930 S'editable' p2931 I00 sS'value' p2932 S'Note' p2933 ssS'editable' p2934 (dp2935 S'editable' p2936 I00 sS'value' p2937 I01 ssS'unique' p2938 (dp2939 S'editable' p2940 I00 sS'value' p2941 I00 ssS'properties' p2942 (dp2943 S'default_value' p2944 (dp2945 S'editable' p2946 I00 sS'value' p2947 NssS'summary_default' p2948 (dp2949 S'editable' p2950 I01 sS'value' p2951 S'none' p2952 ssS'valid_types' p2953 (dp2954 S'editable' p2955 I01 sS'value' p2956 (lp2957 S'Attachment' p2958 asssS'description' p2959 (dp2960 S'editable' p2961 I01 sS'value' p2962 g47 sssS'addressings_cc' p2963 (dp2964 S'mandatory' p2965 (dp2966 S'editable' p2967 I00 sS'value' p2968 I00 ssS'name' p2969 (dp2970 S'editable' p2971 I01 sS'value' p2972 S'Cc' p2973 ssS'data_type' p2974 (dp2975 S'editable' p2976 I00 sS'value' p2977 S'multi_entity' p2978 ssS'entity_type' p2979 (dp2980 S'editable' p2981 I00 sS'value' p2982 S'Note' p2983 ssS'editable' p2984 (dp2985 S'editable' p2986 I00 sS'value' p2987 I01 ssS'unique' p2988 (dp2989 S'editable' p2990 I00 sS'value' p2991 I00 ssS'properties' p2992 (dp2993 S'default_value' p2994 (dp2995 S'editable' p2996 I00 sS'value' p2997 NssS'summary_default' p2998 (dp2999 S'editable' p3000 I01 sS'value' p3001 S'none' p3002 ssS'valid_types' p3003 (dp3004 S'editable' p3005 I01 sS'value' p3006 (lp3007 S'Group' p3008 aS'HumanUser' p3009 asssS'description' p3010 (dp3011 S'editable' p3012 I01 sS'value' p3013 g47 sssS'tag_list' p3014 (dp3015 S'mandatory' p3016 (dp3017 S'editable' p3018 I00 sS'value' p3019 I00 ssS'name' p3020 (dp3021 S'editable' p3022 I01 sS'value' p3023 S'Tags' p3024 ssS'data_type' p3025 (dp3026 S'editable' p3027 I00 sS'value' p3028 S'tag_list' p3029 ssS'entity_type' p3030 (dp3031 S'editable' p3032 I00 sS'value' p3033 S'Note' p3034 ssS'editable' p3035 (dp3036 S'editable' p3037 I00 sS'value' p3038 I01 ssS'unique' p3039 (dp3040 S'editable' p3041 I00 sS'value' p3042 I00 ssS'properties' p3043 (dp3044 S'default_value' p3045 (dp3046 S'editable' p3047 I00 sS'value' p3048 NssS'summary_default' p3049 (dp3050 S'editable' p3051 I01 sS'value' p3052 S'none' p3053 ssS'valid_types' p3054 (dp3055 S'editable' p3056 I01 sS'value' p3057 (lp3058 S'Tag' p3059 asssS'description' p3060 (dp3061 S'editable' p3062 I01 sS'value' p3063 g47 sssS'created_at' p3064 (dp3065 S'mandatory' p3066 (dp3067 S'editable' p3068 I00 sS'value' p3069 I00 ssS'name' p3070 (dp3071 S'editable' p3072 I01 sS'value' p3073 S'Date Created' p3074 ssS'data_type' p3075 (dp3076 S'editable' p3077 I00 sS'value' p3078 S'date_time' p3079 ssS'entity_type' p3080 (dp3081 S'editable' p3082 I00 sS'value' p3083 S'Note' p3084 ssS'editable' p3085 (dp3086 S'editable' p3087 I00 sS'value' p3088 I00 ssS'unique' p3089 (dp3090 S'editable' p3091 I00 sS'value' p3092 I00 ssS'properties' p3093 (dp3094 S'default_value' p3095 (dp3096 S'editable' p3097 I00 sS'value' p3098 NssS'summary_default' p3099 (dp3100 S'editable' p3101 I01 sS'value' p3102 S'none' p3103 sssS'description' p3104 (dp3105 S'editable' p3106 I01 sS'value' p3107 g47 sssS'addressings_to' p3108 (dp3109 S'mandatory' p3110 (dp3111 S'editable' p3112 I00 sS'value' p3113 I00 ssS'name' p3114 (dp3115 S'editable' p3116 I01 sS'value' p3117 S'To' p3118 ssS'data_type' p3119 (dp3120 S'editable' p3121 I00 sS'value' p3122 S'multi_entity' p3123 ssS'entity_type' p3124 (dp3125 S'editable' p3126 I00 sS'value' p3127 S'Note' p3128 ssS'editable' p3129 (dp3130 S'editable' p3131 I00 sS'value' p3132 I01 ssS'unique' p3133 (dp3134 S'editable' p3135 I00 sS'value' p3136 I00 ssS'properties' p3137 (dp3138 S'default_value' p3139 (dp3140 S'editable' p3141 I00 sS'value' p3142 NssS'summary_default' p3143 (dp3144 S'editable' p3145 I01 sS'value' p3146 S'none' p3147 ssS'valid_types' p3148 (dp3149 S'editable' p3150 I01 sS'value' p3151 (lp3152 S'Group' p3153 aS'HumanUser' p3154 asssS'description' p3155 (dp3156 S'editable' p3157 I01 sS'value' p3158 g47 sssS'updated_at' p3159 (dp3160 S'mandatory' p3161 (dp3162 S'editable' p3163 I00 sS'value' p3164 I00 ssS'name' p3165 (dp3166 S'editable' p3167 I01 sS'value' p3168 S'Date Updated' p3169 ssS'data_type' p3170 (dp3171 S'editable' p3172 I00 sS'value' p3173 S'date_time' p3174 ssS'entity_type' p3175 (dp3176 S'editable' p3177 I00 sS'value' p3178 S'Note' p3179 ssS'editable' p3180 (dp3181 S'editable' p3182 I00 sS'value' p3183 I00 ssS'unique' p3184 (dp3185 S'editable' p3186 I00 sS'value' p3187 I00 ssS'properties' p3188 (dp3189 S'default_value' p3190 (dp3191 S'editable' p3192 I00 sS'value' p3193 NssS'summary_default' p3194 (dp3195 S'editable' p3196 I01 sS'value' p3197 S'none' p3198 sssS'description' p3199 (dp3200 S'editable' p3201 I01 sS'value' p3202 g47 sssS'created_by' p3203 (dp3204 S'mandatory' p3205 (dp3206 S'editable' p3207 I00 sS'value' p3208 I00 ssS'name' p3209 (dp3210 S'editable' p3211 I01 sS'value' p3212 S'Created by' p3213 ssS'data_type' p3214 (dp3215 S'editable' p3216 I00 sS'value' p3217 S'entity' p3218 ssS'entity_type' p3219 (dp3220 S'editable' p3221 I00 sS'value' p3222 S'Note' p3223 ssS'editable' p3224 (dp3225 S'editable' p3226 I00 sS'value' p3227 I00 ssS'unique' p3228 (dp3229 S'editable' p3230 I00 sS'value' p3231 I00 ssS'properties' p3232 (dp3233 S'default_value' p3234 (dp3235 S'editable' p3236 I00 sS'value' p3237 NssS'summary_default' p3238 (dp3239 S'editable' p3240 I01 sS'value' p3241 S'none' p3242 ssS'valid_types' p3243 (dp3244 S'editable' p3245 I01 sS'value' p3246 (lp3247 S'HumanUser' p3248 aS'ApiUser' p3249 asssS'description' p3250 (dp3251 S'editable' p3252 I01 sS'value' p3253 g47 sssS'content' p3254 (dp3255 S'mandatory' p3256 (dp3257 S'editable' p3258 I00 sS'value' p3259 I00 ssS'name' p3260 (dp3261 S'editable' p3262 I01 sS'value' p3263 S'Body' p3264 ssS'data_type' p3265 (dp3266 S'editable' p3267 I00 sS'value' p3268 S'text' p3269 ssS'entity_type' p3270 (dp3271 S'editable' p3272 I00 sS'value' p3273 S'Note' p3274 ssS'editable' p3275 (dp3276 S'editable' p3277 I00 sS'value' p3278 I01 ssS'unique' p3279 (dp3280 S'editable' p3281 I00 sS'value' p3282 I00 ssS'properties' p3283 (dp3284 S'default_value' p3285 (dp3286 S'editable' p3287 I00 sS'value' p3288 NssS'summary_default' p3289 (dp3290 S'editable' p3291 I01 sS'value' p3292 S'none' p3293 sssS'description' p3294 (dp3295 S'editable' p3296 I01 sS'value' p3297 g47 sssS'updated_by' p3298 (dp3299 S'mandatory' p3300 (dp3301 S'editable' p3302 I00 sS'value' p3303 I00 ssS'name' p3304 (dp3305 S'editable' p3306 I01 sS'value' p3307 S'Updated by' p3308 ssS'data_type' p3309 (dp3310 S'editable' p3311 I00 sS'value' p3312 S'entity' p3313 ssS'entity_type' p3314 (dp3315 S'editable' p3316 I00 sS'value' p3317 S'Note' p3318 ssS'editable' p3319 (dp3320 S'editable' p3321 I00 sS'value' p3322 I00 ssS'unique' p3323 (dp3324 S'editable' p3325 I00 sS'value' p3326 I00 ssS'properties' p3327 (dp3328 S'default_value' p3329 (dp3330 S'editable' p3331 I00 sS'value' p3332 NssS'summary_default' p3333 (dp3334 S'editable' p3335 I01 sS'value' p3336 S'none' p3337 ssS'valid_types' p3338 (dp3339 S'editable' p3340 I01 sS'value' p3341 (lp3342 S'HumanUser' p3343 aS'ApiUser' p3344 asssS'description' p3345 (dp3346 S'editable' p3347 I01 sS'value' p3348 g47 sssS'sg_status_list' p3349 (dp3350 S'mandatory' p3351 (dp3352 S'editable' p3353 I00 sS'value' p3354 I00 ssS'name' p3355 (dp3356 S'editable' p3357 I01 sS'value' p3358 S'Status' p3359 ssS'data_type' p3360 (dp3361 S'editable' p3362 I00 sS'value' p3363 S'status_list' p3364 ssS'entity_type' p3365 (dp3366 S'editable' p3367 I00 sS'value' p3368 S'Note' p3369 ssS'editable' p3370 (dp3371 S'editable' p3372 I00 sS'value' p3373 I01 ssS'unique' p3374 (dp3375 S'editable' p3376 I00 sS'value' p3377 I00 ssS'properties' p3378 (dp3379 S'default_value' p3380 (dp3381 S'editable' p3382 I01 sS'value' p3383 S'opn' p3384 ssS'valid_values' p3385 (dp3386 S'editable' p3387 I01 sS'value' p3388 (lp3389 S'clsd' p3390 aS'ip' p3391 aS'opn' p3392 assS'summary_default' p3393 (dp3394 S'editable' p3395 I01 sS'value' p3396 S'none' p3397 sssS'description' p3398 (dp3399 S'editable' p3400 I01 sS'value' p3401 g47 sssS'user' p3402 (dp3403 S'mandatory' p3404 (dp3405 S'editable' p3406 I00 sS'value' p3407 I00 ssS'name' p3408 (dp3409 S'editable' p3410 I01 sS'value' p3411 S'Author' p3412 ssS'data_type' p3413 (dp3414 S'editable' p3415 I00 sS'value' p3416 S'entity' p3417 ssS'entity_type' p3418 (dp3419 S'editable' p3420 I00 sS'value' p3421 S'Note' p3422 ssS'editable' p3423 (dp3424 S'editable' p3425 I00 sS'value' p3426 I01 ssS'unique' p3427 (dp3428 S'editable' p3429 I00 sS'value' p3430 I00 ssS'properties' p3431 (dp3432 S'default_value' p3433 (dp3434 S'editable' p3435 I00 sS'value' p3436 NssS'summary_default' p3437 (dp3438 S'editable' p3439 I01 sS'value' p3440 S'none' p3441 ssS'valid_types' p3442 (dp3443 S'editable' p3444 I01 sS'value' p3445 (lp3446 S'HumanUser' p3447 aS'ApiUser' p3448 asssS'description' p3449 (dp3450 S'editable' p3451 I01 sS'value' p3452 g47 sssS'replies' p3453 (dp3454 S'mandatory' p3455 (dp3456 S'editable' p3457 I00 sS'value' p3458 I00 ssS'name' p3459 (dp3460 S'editable' p3461 I01 sS'value' p3462 S'Replies' p3463 ssS'data_type' p3464 (dp3465 S'editable' p3466 I00 sS'value' p3467 S'multi_entity' p3468 ssS'entity_type' p3469 (dp3470 S'editable' p3471 I00 sS'value' p3472 S'Note' p3473 ssS'editable' p3474 (dp3475 S'editable' p3476 I00 sS'value' p3477 I01 ssS'unique' p3478 (dp3479 S'editable' p3480 I00 sS'value' p3481 I00 ssS'properties' p3482 (dp3483 S'default_value' p3484 (dp3485 S'editable' p3486 I00 sS'value' p3487 NssS'summary_default' p3488 (dp3489 S'editable' p3490 I01 sS'value' p3491 S'none' p3492 ssS'valid_types' p3493 (dp3494 S'editable' p3495 I01 sS'value' p3496 (lp3497 S'Reply' p3498 asssS'description' p3499 (dp3500 S'editable' p3501 I01 sS'value' p3502 g47 sssS'sg_note_type' p3503 (dp3504 S'mandatory' p3505 (dp3506 S'editable' p3507 I00 sS'value' p3508 I00 ssS'name' p3509 (dp3510 S'editable' p3511 I01 sS'value' p3512 S'Type' p3513 ssS'data_type' p3514 (dp3515 S'editable' p3516 I00 sS'value' p3517 S'list' p3518 ssS'entity_type' p3519 (dp3520 S'editable' p3521 I00 sS'value' p3522 S'Note' p3523 ssS'editable' p3524 (dp3525 S'editable' p3526 I00 sS'value' p3527 I01 ssS'unique' p3528 (dp3529 S'editable' p3530 I00 sS'value' p3531 I00 ssS'properties' p3532 (dp3533 S'default_value' p3534 (dp3535 S'editable' p3536 I00 sS'value' p3537 NssS'valid_values' p3538 (dp3539 S'editable' p3540 I01 sS'value' p3541 (lp3542 S'Internal' p3543 aS'Client' p3544 aS'this list can be edited...' p3545 assS'summary_default' p3546 (dp3547 S'editable' p3548 I01 sS'value' p3549 S'none' p3550 sssS'description' p3551 (dp3552 S'editable' p3553 I01 sS'value' p3554 g47 sssS'cached_display_name' p3555 (dp3556 S'mandatory' p3557 (dp3558 S'editable' p3559 I00 sS'value' p3560 I00 ssS'name' p3561 (dp3562 S'editable' p3563 I01 sS'value' p3564 S'Cached Display Name' p3565 ssS'data_type' p3566 (dp3567 S'editable' p3568 I00 sS'value' p3569 S'text' p3570 ssS'entity_type' p3571 (dp3572 S'editable' p3573 I00 sS'value' p3574 S'Note' p3575 ssS'editable' p3576 (dp3577 S'editable' p3578 I00 sS'value' p3579 I01 ssS'unique' p3580 (dp3581 S'editable' p3582 I00 sS'value' p3583 I00 ssS'properties' p3584 (dp3585 S'default_value' p3586 (dp3587 S'editable' p3588 I00 sS'value' p3589 NssS'summary_default' p3590 (dp3591 S'editable' p3592 I00 sS'value' p3593 S'none' p3594 sssS'description' p3595 (dp3596 S'editable' p3597 I01 sS'value' p3598 g47 sssS'reply_content' p3599 (dp3600 S'mandatory' p3601 (dp3602 S'editable' p3603 I00 sS'value' p3604 I00 ssS'name' p3605 (dp3606 S'editable' p3607 I01 sS'value' p3608 S'Reply Content' p3609 ssS'data_type' p3610 (dp3611 S'editable' p3612 I00 sS'value' p3613 S'text' p3614 ssS'entity_type' p3615 (dp3616 S'editable' p3617 I00 sS'value' p3618 S'Note' p3619 ssS'editable' p3620 (dp3621 S'editable' p3622 I00 sS'value' p3623 I01 ssS'unique' p3624 (dp3625 S'editable' p3626 I00 sS'value' p3627 I00 ssS'properties' p3628 (dp3629 S'default_value' p3630 (dp3631 S'editable' p3632 I00 sS'value' p3633 NssS'summary_default' p3634 (dp3635 S'editable' p3636 I01 sS'value' p3637 S'none' p3638 sssS'description' p3639 (dp3640 S'editable' p3641 I01 sS'value' p3642 g47 sssS'id' p3643 (dp3644 S'mandatory' p3645 (dp3646 S'editable' p3647 I00 sS'value' p3648 I00 ssS'name' p3649 (dp3650 S'editable' p3651 I01 sS'value' p3652 S'Id' p3653 ssS'data_type' p3654 (dp3655 S'editable' p3656 I00 sS'value' p3657 S'number' p3658 ssS'entity_type' p3659 (dp3660 S'editable' p3661 I00 sS'value' p3662 S'Note' p3663 ssS'editable' p3664 (dp3665 S'editable' p3666 I00 sS'value' p3667 I00 ssS'unique' p3668 (dp3669 S'editable' p3670 I00 sS'value' p3671 I00 ssS'properties' p3672 (dp3673 S'default_value' p3674 (dp3675 S'editable' p3676 I00 sS'value' p3677 NssS'summary_default' p3678 (dp3679 S'editable' p3680 I01 sS'value' p3681 S'none' p3682 sssS'description' p3683 (dp3684 S'editable' p3685 I01 sS'value' p3686 g47 sssS'subject' p3687 (dp3688 S'mandatory' p3689 (dp3690 S'editable' p3691 I00 sS'value' p3692 I01 ssS'name' p3693 (dp3694 S'editable' p3695 I01 sS'value' p3696 S'Subject' p3697 ssS'data_type' p3698 (dp3699 S'editable' p3700 I00 sS'value' p3701 S'text' p3702 ssS'entity_type' p3703 (dp3704 S'editable' p3705 I00 sS'value' p3706 S'Note' p3707 ssS'editable' p3708 (dp3709 S'editable' p3710 I00 sS'value' p3711 I01 ssS'unique' p3712 (dp3713 S'editable' p3714 I00 sS'value' p3715 I00 ssS'properties' p3716 (dp3717 S'default_value' p3718 (dp3719 S'editable' p3720 I00 sS'value' p3721 NssS'summary_default' p3722 (dp3723 S'editable' p3724 I01 sS'value' p3725 S'none' p3726 sssS'description' p3727 (dp3728 S'editable' p3729 I01 sS'value' p3730 g47 ssssS'TaskDependency' p3731 (dp3732 S'task' p3733 (dp3734 S'mandatory' p3735 (dp3736 S'editable' p3737 I00 sS'value' p3738 I00 ssS'name' p3739 (dp3740 S'editable' p3741 I01 sS'value' p3742 S'Task' p3743 ssS'data_type' p3744 (dp3745 S'editable' p3746 I00 sS'value' p3747 S'entity' p3748 ssS'entity_type' p3749 (dp3750 S'editable' p3751 I00 sS'value' p3752 S'TaskDependency' p3753 ssS'editable' p3754 (dp3755 S'editable' p3756 I00 sS'value' p3757 I01 ssS'unique' p3758 (dp3759 S'editable' p3760 I00 sS'value' p3761 I00 ssS'properties' p3762 (dp3763 S'default_value' p3764 (dp3765 S'editable' p3766 I00 sS'value' p3767 NssS'summary_default' p3768 (dp3769 S'editable' p3770 I00 sS'value' p3771 S'none' p3772 ssS'valid_types' p3773 (dp3774 S'editable' p3775 I00 sS'value' p3776 (lp3777 S'Task' p3778 asssS'description' p3779 (dp3780 S'editable' p3781 I01 sS'value' p3782 g47 sssS'task_id' p3783 (dp3784 S'mandatory' p3785 (dp3786 S'editable' p3787 I00 sS'value' p3788 I00 ssS'name' p3789 (dp3790 S'editable' p3791 I01 sS'value' p3792 S'Task Id' p3793 ssS'data_type' p3794 (dp3795 S'editable' p3796 I00 sS'value' p3797 S'number' p3798 ssS'entity_type' p3799 (dp3800 S'editable' p3801 I00 sS'value' p3802 S'TaskDependency' p3803 ssS'editable' p3804 (dp3805 S'editable' p3806 I00 sS'value' p3807 I00 ssS'unique' p3808 (dp3809 S'editable' p3810 I00 sS'value' p3811 I00 ssS'properties' p3812 (dp3813 S'default_value' p3814 (dp3815 S'editable' p3816 I00 sS'value' p3817 NssS'summary_default' p3818 (dp3819 S'editable' p3820 I00 sS'value' p3821 S'none' p3822 sssS'description' p3823 (dp3824 S'editable' p3825 I01 sS'value' p3826 g47 sssS'dependent_task' p3827 (dp3828 S'mandatory' p3829 (dp3830 S'editable' p3831 I00 sS'value' p3832 I00 ssS'name' p3833 (dp3834 S'editable' p3835 I01 sS'value' p3836 S'Dependent Task' p3837 ssS'data_type' p3838 (dp3839 S'editable' p3840 I00 sS'value' p3841 S'entity' p3842 ssS'entity_type' p3843 (dp3844 S'editable' p3845 I00 sS'value' p3846 S'TaskDependency' p3847 ssS'editable' p3848 (dp3849 S'editable' p3850 I00 sS'value' p3851 I01 ssS'unique' p3852 (dp3853 S'editable' p3854 I00 sS'value' p3855 I00 ssS'properties' p3856 (dp3857 S'default_value' p3858 (dp3859 S'editable' p3860 I00 sS'value' p3861 NssS'summary_default' p3862 (dp3863 S'editable' p3864 I00 sS'value' p3865 S'none' p3866 ssS'valid_types' p3867 (dp3868 S'editable' p3869 I00 sS'value' p3870 (lp3871 S'Task' p3872 asssS'description' p3873 (dp3874 S'editable' p3875 I01 sS'value' p3876 g47 sssS'offset_days' p3877 (dp3878 S'mandatory' p3879 (dp3880 S'editable' p3881 I00 sS'value' p3882 I00 ssS'name' p3883 (dp3884 S'editable' p3885 I01 sS'value' p3886 S'Offset Days' p3887 ssS'data_type' p3888 (dp3889 S'editable' p3890 I00 sS'value' p3891 S'number' p3892 ssS'entity_type' p3893 (dp3894 S'editable' p3895 I00 sS'value' p3896 S'TaskDependency' p3897 ssS'editable' p3898 (dp3899 S'editable' p3900 I00 sS'value' p3901 I01 ssS'unique' p3902 (dp3903 S'editable' p3904 I00 sS'value' p3905 I00 ssS'properties' p3906 (dp3907 S'default_value' p3908 (dp3909 S'editable' p3910 I00 sS'value' p3911 NssS'summary_default' p3912 (dp3913 S'editable' p3914 I00 sS'value' p3915 S'none' p3916 sssS'description' p3917 (dp3918 S'editable' p3919 I01 sS'value' p3920 g47 sssS'cached_display_name' p3921 (dp3922 S'mandatory' p3923 (dp3924 S'editable' p3925 I00 sS'value' p3926 I00 ssS'name' p3927 (dp3928 S'editable' p3929 I01 sS'value' p3930 S'Cached Display Name' p3931 ssS'data_type' p3932 (dp3933 S'editable' p3934 I00 sS'value' p3935 S'text' p3936 ssS'entity_type' p3937 (dp3938 S'editable' p3939 I00 sS'value' p3940 S'TaskDependency' p3941 ssS'editable' p3942 (dp3943 S'editable' p3944 I00 sS'value' p3945 I01 ssS'unique' p3946 (dp3947 S'editable' p3948 I00 sS'value' p3949 I00 ssS'properties' p3950 (dp3951 S'default_value' p3952 (dp3953 S'editable' p3954 I00 sS'value' p3955 NssS'summary_default' p3956 (dp3957 S'editable' p3958 I00 sS'value' p3959 S'none' p3960 sssS'description' p3961 (dp3962 S'editable' p3963 I01 sS'value' p3964 g47 sssS'dependent_task_id' p3965 (dp3966 S'mandatory' p3967 (dp3968 S'editable' p3969 I00 sS'value' p3970 I00 ssS'name' p3971 (dp3972 S'editable' p3973 I01 sS'value' p3974 S'Dependent Task Id' p3975 ssS'data_type' p3976 (dp3977 S'editable' p3978 I00 sS'value' p3979 S'number' p3980 ssS'entity_type' p3981 (dp3982 S'editable' p3983 I00 sS'value' p3984 S'TaskDependency' p3985 ssS'editable' p3986 (dp3987 S'editable' p3988 I00 sS'value' p3989 I00 ssS'unique' p3990 (dp3991 S'editable' p3992 I00 sS'value' p3993 I00 ssS'properties' p3994 (dp3995 S'default_value' p3996 (dp3997 S'editable' p3998 I00 sS'value' p3999 NssS'summary_default' p4000 (dp4001 S'editable' p4002 I00 sS'value' p4003 S'none' p4004 sssS'description' p4005 (dp4006 S'editable' p4007 I01 sS'value' p4008 g47 sssS'id' p4009 (dp4010 S'mandatory' p4011 (dp4012 S'editable' p4013 I00 sS'value' p4014 I00 ssS'name' p4015 (dp4016 S'editable' p4017 I01 sS'value' p4018 S'Id' p4019 ssS'data_type' p4020 (dp4021 S'editable' p4022 I00 sS'value' p4023 S'number' p4024 ssS'entity_type' p4025 (dp4026 S'editable' p4027 I00 sS'value' p4028 S'TaskDependency' p4029 ssS'editable' p4030 (dp4031 S'editable' p4032 I00 sS'value' p4033 I00 ssS'unique' p4034 (dp4035 S'editable' p4036 I00 sS'value' p4037 I00 ssS'properties' p4038 (dp4039 S'default_value' p4040 (dp4041 S'editable' p4042 I00 sS'value' p4043 NssS'summary_default' p4044 (dp4045 S'editable' p4046 I00 sS'value' p4047 S'none' p4048 sssS'description' p4049 (dp4050 S'editable' p4051 I01 sS'value' p4052 g47 ssssS'PageHit' p4053 (dp4054 S'user' p4055 (dp4056 S'mandatory' p4057 (dp4058 S'editable' p4059 I00 sS'value' p4060 I00 ssS'name' p4061 (dp4062 S'editable' p4063 I01 sS'value' p4064 S'User' p4065 ssS'data_type' p4066 (dp4067 S'editable' p4068 I00 sS'value' p4069 S'entity' p4070 ssS'entity_type' p4071 (dp4072 S'editable' p4073 I00 sS'value' p4074 S'PageHit' p4075 ssS'editable' p4076 (dp4077 S'editable' p4078 I00 sS'value' p4079 I00 ssS'unique' p4080 (dp4081 S'editable' p4082 I00 sS'value' p4083 I00 ssS'properties' p4084 (dp4085 S'default_value' p4086 (dp4087 S'editable' p4088 I00 sS'value' p4089 NssS'summary_default' p4090 (dp4091 S'editable' p4092 I00 sS'value' p4093 S'none' p4094 ssS'valid_types' p4095 (dp4096 S'editable' p4097 I00 sS'value' p4098 (lp4099 S'HumanUser' p4100 asssS'description' p4101 (dp4102 S'editable' p4103 I01 sS'value' p4104 g47 sssS'created_at' p4105 (dp4106 S'mandatory' p4107 (dp4108 S'editable' p4109 I00 sS'value' p4110 I00 ssS'name' p4111 (dp4112 S'editable' p4113 I01 sS'value' p4114 S'Date Created' p4115 ssS'data_type' p4116 (dp4117 S'editable' p4118 I00 sS'value' p4119 S'date_time' p4120 ssS'entity_type' p4121 (dp4122 S'editable' p4123 I00 sS'value' p4124 S'PageHit' p4125 ssS'editable' p4126 (dp4127 S'editable' p4128 I00 sS'value' p4129 I00 ssS'unique' p4130 (dp4131 S'editable' p4132 I00 sS'value' p4133 I00 ssS'properties' p4134 (dp4135 S'default_value' p4136 (dp4137 S'editable' p4138 I00 sS'value' p4139 NssS'summary_default' p4140 (dp4141 S'editable' p4142 I00 sS'value' p4143 S'none' p4144 sssS'description' p4145 (dp4146 S'editable' p4147 I01 sS'value' p4148 g47 sssS'id' p4149 (dp4150 S'mandatory' p4151 (dp4152 S'editable' p4153 I00 sS'value' p4154 I01 ssS'name' p4155 (dp4156 S'editable' p4157 I01 sS'value' p4158 S'Id' p4159 ssS'data_type' p4160 (dp4161 S'editable' p4162 I00 sS'value' p4163 S'number' p4164 ssS'entity_type' p4165 (dp4166 S'editable' p4167 I00 sS'value' p4168 S'PageHit' p4169 ssS'editable' p4170 (dp4171 S'editable' p4172 I00 sS'value' p4173 I00 ssS'unique' p4174 (dp4175 S'editable' p4176 I00 sS'value' p4177 I00 ssS'properties' p4178 (dp4179 S'default_value' p4180 (dp4181 S'editable' p4182 I00 sS'value' p4183 NssS'summary_default' p4184 (dp4185 S'editable' p4186 I00 sS'value' p4187 S'none' p4188 sssS'description' p4189 (dp4190 S'editable' p4191 I01 sS'value' p4192 g47 sssS'cached_display_name' p4193 (dp4194 S'mandatory' p4195 (dp4196 S'editable' p4197 I00 sS'value' p4198 I00 ssS'name' p4199 (dp4200 S'editable' p4201 I01 sS'value' p4202 S'Cached Display Name' p4203 ssS'data_type' p4204 (dp4205 S'editable' p4206 I00 sS'value' p4207 S'text' p4208 ssS'entity_type' p4209 (dp4210 S'editable' p4211 I00 sS'value' p4212 S'PageHit' p4213 ssS'editable' p4214 (dp4215 S'editable' p4216 I00 sS'value' p4217 I01 ssS'unique' p4218 (dp4219 S'editable' p4220 I00 sS'value' p4221 I00 ssS'properties' p4222 (dp4223 S'default_value' p4224 (dp4225 S'editable' p4226 I00 sS'value' p4227 NssS'summary_default' p4228 (dp4229 S'editable' p4230 I00 sS'value' p4231 S'none' p4232 sssS'description' p4233 (dp4234 S'editable' p4235 I01 sS'value' p4236 g47 sssS'page' p4237 (dp4238 S'mandatory' p4239 (dp4240 S'editable' p4241 I00 sS'value' p4242 I00 ssS'name' p4243 (dp4244 S'editable' p4245 I01 sS'value' p4246 S'Page' p4247 ssS'data_type' p4248 (dp4249 S'editable' p4250 I00 sS'value' p4251 S'entity' p4252 ssS'entity_type' p4253 (dp4254 S'editable' p4255 I00 sS'value' p4256 S'PageHit' p4257 ssS'editable' p4258 (dp4259 S'editable' p4260 I00 sS'value' p4261 I00 ssS'unique' p4262 (dp4263 S'editable' p4264 I00 sS'value' p4265 I00 ssS'properties' p4266 (dp4267 S'default_value' p4268 (dp4269 S'editable' p4270 I00 sS'value' p4271 NssS'summary_default' p4272 (dp4273 S'editable' p4274 I00 sS'value' p4275 S'none' p4276 ssS'valid_types' p4277 (dp4278 S'editable' p4279 I00 sS'value' p4280 (lp4281 S'Page' p4282 asssS'description' p4283 (dp4284 S'editable' p4285 I01 sS'value' p4286 g47 ssssS'ActionMenuItem' p4287 (dp4288 S'updated_by' p4289 (dp4290 S'mandatory' p4291 (dp4292 S'editable' p4293 I00 sS'value' p4294 I00 ssS'name' p4295 (dp4296 S'editable' p4297 I01 sS'value' p4298 S'Updated by' p4299 ssS'data_type' p4300 (dp4301 S'editable' p4302 I00 sS'value' p4303 S'entity' p4304 ssS'entity_type' p4305 (dp4306 S'editable' p4307 I00 sS'value' p4308 S'ActionMenuItem' p4309 ssS'editable' p4310 (dp4311 S'editable' p4312 I00 sS'value' p4313 I00 ssS'unique' p4314 (dp4315 S'editable' p4316 I00 sS'value' p4317 I00 ssS'properties' p4318 (dp4319 S'default_value' p4320 (dp4321 S'editable' p4322 I00 sS'value' p4323 NssS'summary_default' p4324 (dp4325 S'editable' p4326 I01 sS'value' p4327 S'none' p4328 ssS'valid_types' p4329 (dp4330 S'editable' p4331 I01 sS'value' p4332 (lp4333 S'HumanUser' p4334 aS'ApiUser' p4335 asssS'description' p4336 (dp4337 S'editable' p4338 I01 sS'value' p4339 g47 sssS'list_order' p4340 (dp4341 S'mandatory' p4342 (dp4343 S'editable' p4344 I00 sS'value' p4345 I00 ssS'name' p4346 (dp4347 S'editable' p4348 I01 sS'value' p4349 S'Order' p4350 ssS'data_type' p4351 (dp4352 S'editable' p4353 I00 sS'value' p4354 S'number' p4355 ssS'entity_type' p4356 (dp4357 S'editable' p4358 I00 sS'value' p4359 S'ActionMenuItem' p4360 ssS'editable' p4361 (dp4362 S'editable' p4363 I00 sS'value' p4364 I01 ssS'unique' p4365 (dp4366 S'editable' p4367 I00 sS'value' p4368 I00 ssS'properties' p4369 (dp4370 S'default_value' p4371 (dp4372 S'editable' p4373 I00 sS'value' p4374 NssS'summary_default' p4375 (dp4376 S'editable' p4377 I00 sS'value' p4378 S'none' p4379 sssS'description' p4380 (dp4381 S'editable' p4382 I01 sS'value' p4383 g47 sssS'url' p4384 (dp4385 S'mandatory' p4386 (dp4387 S'editable' p4388 I00 sS'value' p4389 I00 ssS'name' p4390 (dp4391 S'editable' p4392 I01 sS'value' p4393 S'URL' p4394 ssS'data_type' p4395 (dp4396 S'editable' p4397 I00 sS'value' p4398 S'text' p4399 ssS'entity_type' p4400 (dp4401 S'editable' p4402 I00 sS'value' p4403 S'ActionMenuItem' p4404 ssS'editable' p4405 (dp4406 S'editable' p4407 I00 sS'value' p4408 I01 ssS'unique' p4409 (dp4410 S'editable' p4411 I00 sS'value' p4412 I00 ssS'properties' p4413 (dp4414 S'default_value' p4415 (dp4416 S'editable' p4417 I00 sS'value' p4418 NssS'summary_default' p4419 (dp4420 S'editable' p4421 I00 sS'value' p4422 S'none' p4423 sssS'description' p4424 (dp4425 S'editable' p4426 I01 sS'value' p4427 g47 sssS'created_at' p4428 (dp4429 S'mandatory' p4430 (dp4431 S'editable' p4432 I00 sS'value' p4433 I00 ssS'name' p4434 (dp4435 S'editable' p4436 I01 sS'value' p4437 S'Date Created' p4438 ssS'data_type' p4439 (dp4440 S'editable' p4441 I00 sS'value' p4442 S'date_time' p4443 ssS'entity_type' p4444 (dp4445 S'editable' p4446 I00 sS'value' p4447 S'ActionMenuItem' p4448 ssS'editable' p4449 (dp4450 S'editable' p4451 I00 sS'value' p4452 I00 ssS'unique' p4453 (dp4454 S'editable' p4455 I00 sS'value' p4456 I00 ssS'properties' p4457 (dp4458 S'default_value' p4459 (dp4460 S'editable' p4461 I00 sS'value' p4462 NssS'summary_default' p4463 (dp4464 S'editable' p4465 I01 sS'value' p4466 S'none' p4467 sssS'description' p4468 (dp4469 S'editable' p4470 I01 sS'value' p4471 g47 sssS'title' p4472 (dp4473 S'mandatory' p4474 (dp4475 S'editable' p4476 I00 sS'value' p4477 I01 ssS'name' p4478 (dp4479 S'editable' p4480 I01 sS'value' p4481 S'Title' p4482 ssS'data_type' p4483 (dp4484 S'editable' p4485 I00 sS'value' p4486 S'text' p4487 ssS'entity_type' p4488 (dp4489 S'editable' p4490 I00 sS'value' p4491 S'ActionMenuItem' p4492 ssS'editable' p4493 (dp4494 S'editable' p4495 I00 sS'value' p4496 I01 ssS'unique' p4497 (dp4498 S'editable' p4499 I00 sS'value' p4500 I00 ssS'properties' p4501 (dp4502 S'default_value' p4503 (dp4504 S'editable' p4505 I00 sS'value' p4506 NssS'summary_default' p4507 (dp4508 S'editable' p4509 I00 sS'value' p4510 S'none' p4511 sssS'description' p4512 (dp4513 S'editable' p4514 I01 sS'value' p4515 g47 sssS'poll_for_data_updates' p4516 (dp4517 S'mandatory' p4518 (dp4519 S'editable' p4520 I00 sS'value' p4521 I00 ssS'name' p4522 (dp4523 S'editable' p4524 I01 sS'value' p4525 S'Poll For Data Updates' p4526 ssS'data_type' p4527 (dp4528 S'editable' p4529 I00 sS'value' p4530 S'checkbox' p4531 ssS'entity_type' p4532 (dp4533 S'editable' p4534 I00 sS'value' p4535 S'ActionMenuItem' p4536 ssS'editable' p4537 (dp4538 S'editable' p4539 I00 sS'value' p4540 I01 ssS'unique' p4541 (dp4542 S'editable' p4543 I00 sS'value' p4544 I00 ssS'properties' p4545 (dp4546 S'default_value' p4547 (dp4548 S'editable' p4549 I00 sS'value' p4550 I00 ssS'summary_default' p4551 (dp4552 S'editable' p4553 I00 sS'value' p4554 S'none' p4555 sssS'description' p4556 (dp4557 S'editable' p4558 I01 sS'value' p4559 g47 sssS'updated_at' p4560 (dp4561 S'mandatory' p4562 (dp4563 S'editable' p4564 I00 sS'value' p4565 I00 ssS'name' p4566 (dp4567 S'editable' p4568 I01 sS'value' p4569 S'Date Updated' p4570 ssS'data_type' p4571 (dp4572 S'editable' p4573 I00 sS'value' p4574 S'date_time' p4575 ssS'entity_type' p4576 (dp4577 S'editable' p4578 I00 sS'value' p4579 S'ActionMenuItem' p4580 ssS'editable' p4581 (dp4582 S'editable' p4583 I00 sS'value' p4584 I00 ssS'unique' p4585 (dp4586 S'editable' p4587 I00 sS'value' p4588 I00 ssS'properties' p4589 (dp4590 S'default_value' p4591 (dp4592 S'editable' p4593 I00 sS'value' p4594 NssS'summary_default' p4595 (dp4596 S'editable' p4597 I01 sS'value' p4598 S'none' p4599 sssS'description' p4600 (dp4601 S'editable' p4602 I01 sS'value' p4603 g47 sssS'created_by' p4604 (dp4605 S'mandatory' p4606 (dp4607 S'editable' p4608 I00 sS'value' p4609 I00 ssS'name' p4610 (dp4611 S'editable' p4612 I01 sS'value' p4613 S'Created by' p4614 ssS'data_type' p4615 (dp4616 S'editable' p4617 I00 sS'value' p4618 S'entity' p4619 ssS'entity_type' p4620 (dp4621 S'editable' p4622 I00 sS'value' p4623 S'ActionMenuItem' p4624 ssS'editable' p4625 (dp4626 S'editable' p4627 I00 sS'value' p4628 I00 ssS'unique' p4629 (dp4630 S'editable' p4631 I00 sS'value' p4632 I00 ssS'properties' p4633 (dp4634 S'default_value' p4635 (dp4636 S'editable' p4637 I00 sS'value' p4638 NssS'summary_default' p4639 (dp4640 S'editable' p4641 I01 sS'value' p4642 S'none' p4643 ssS'valid_types' p4644 (dp4645 S'editable' p4646 I01 sS'value' p4647 (lp4648 S'HumanUser' p4649 aS'ApiUser' p4650 asssS'description' p4651 (dp4652 S'editable' p4653 I01 sS'value' p4654 g47 sssS'permissions_groups' p4655 (dp4656 S'mandatory' p4657 (dp4658 S'editable' p4659 I00 sS'value' p4660 I00 ssS'name' p4661 (dp4662 S'editable' p4663 I01 sS'value' p4664 S'Restrict to Permission Groups' p4665 ssS'data_type' p4666 (dp4667 S'editable' p4668 I00 sS'value' p4669 S'multi_entity' p4670 ssS'entity_type' p4671 (dp4672 S'editable' p4673 I00 sS'value' p4674 S'ActionMenuItem' p4675 ssS'editable' p4676 (dp4677 S'editable' p4678 I00 sS'value' p4679 I01 ssS'unique' p4680 (dp4681 S'editable' p4682 I00 sS'value' p4683 I00 ssS'properties' p4684 (dp4685 S'default_value' p4686 (dp4687 S'editable' p4688 I00 sS'value' p4689 NssS'summary_default' p4690 (dp4691 S'editable' p4692 I01 sS'value' p4693 S'none' p4694 ssS'valid_types' p4695 (dp4696 S'editable' p4697 I01 sS'value' p4698 (lp4699 S'PermissionRuleSet' p4700 asssS'description' p4701 (dp4702 S'editable' p4703 I01 sS'value' p4704 g47 sssS'entity_type' p4705 (dp4706 S'mandatory' p4707 (dp4708 S'editable' p4709 I00 sS'value' p4710 I00 ssS'name' p4711 (dp4712 S'editable' p4713 I01 sS'value' p4714 S'Entity Type' p4715 ssS'data_type' p4716 (dp4717 S'editable' p4718 I00 sS'value' p4719 S'entity_type' p4720 ssS'entity_type' p4721 (dp4722 S'editable' p4723 I00 sS'value' p4724 S'ActionMenuItem' p4725 ssS'editable' p4726 (dp4727 S'editable' p4728 I00 sS'value' p4729 I01 ssS'unique' p4730 (dp4731 S'editable' p4732 I00 sS'value' p4733 I00 ssS'properties' p4734 (dp4735 S'default_value' p4736 (dp4737 S'editable' p4738 I00 sS'value' p4739 NssS'summary_default' p4740 (dp4741 S'editable' p4742 I00 sS'value' p4743 S'none' p4744 sssS'description' p4745 (dp4746 S'editable' p4747 I01 sS'value' p4748 g47 sssS'selection_required' p4749 (dp4750 S'mandatory' p4751 (dp4752 S'editable' p4753 I00 sS'value' p4754 I00 ssS'name' p4755 (dp4756 S'editable' p4757 I01 sS'value' p4758 S'Selection Required' p4759 ssS'data_type' p4760 (dp4761 S'editable' p4762 I00 sS'value' p4763 S'checkbox' p4764 ssS'entity_type' p4765 (dp4766 S'editable' p4767 I00 sS'value' p4768 S'ActionMenuItem' p4769 ssS'editable' p4770 (dp4771 S'editable' p4772 I00 sS'value' p4773 I01 ssS'unique' p4774 (dp4775 S'editable' p4776 I00 sS'value' p4777 I00 ssS'properties' p4778 (dp4779 S'default_value' p4780 (dp4781 S'editable' p4782 I00 sS'value' p4783 I00 ssS'summary_default' p4784 (dp4785 S'editable' p4786 I00 sS'value' p4787 S'none' p4788 sssS'description' p4789 (dp4790 S'editable' p4791 I01 sS'value' p4792 g47 sssS'folder' p4793 (dp4794 S'mandatory' p4795 (dp4796 S'editable' p4797 I00 sS'value' p4798 I00 ssS'name' p4799 (dp4800 S'editable' p4801 I01 sS'value' p4802 S'Folder' p4803 ssS'data_type' p4804 (dp4805 S'editable' p4806 I00 sS'value' p4807 S'text' p4808 ssS'entity_type' p4809 (dp4810 S'editable' p4811 I00 sS'value' p4812 S'ActionMenuItem' p4813 ssS'editable' p4814 (dp4815 S'editable' p4816 I00 sS'value' p4817 I01 ssS'unique' p4818 (dp4819 S'editable' p4820 I00 sS'value' p4821 I00 ssS'properties' p4822 (dp4823 S'default_value' p4824 (dp4825 S'editable' p4826 I00 sS'value' p4827 NssS'summary_default' p4828 (dp4829 S'editable' p4830 I00 sS'value' p4831 S'none' p4832 sssS'description' p4833 (dp4834 S'editable' p4835 I01 sS'value' p4836 g47 sssS'id' p4837 (dp4838 S'mandatory' p4839 (dp4840 S'editable' p4841 I00 sS'value' p4842 I00 ssS'name' p4843 (dp4844 S'editable' p4845 I01 sS'value' p4846 S'Id' p4847 ssS'data_type' p4848 (dp4849 S'editable' p4850 I00 sS'value' p4851 S'number' p4852 ssS'entity_type' p4853 (dp4854 S'editable' p4855 I00 sS'value' p4856 S'ActionMenuItem' p4857 ssS'editable' p4858 (dp4859 S'editable' p4860 I00 sS'value' p4861 I00 ssS'unique' p4862 (dp4863 S'editable' p4864 I00 sS'value' p4865 I00 ssS'properties' p4866 (dp4867 S'default_value' p4868 (dp4869 S'editable' p4870 I00 sS'value' p4871 NssS'summary_default' p4872 (dp4873 S'editable' p4874 I00 sS'value' p4875 S'none' p4876 sssS'description' p4877 (dp4878 S'editable' p4879 I01 sS'value' p4880 g47 sssS'projects' p4881 (dp4882 S'mandatory' p4883 (dp4884 S'editable' p4885 I00 sS'value' p4886 I00 ssS'name' p4887 (dp4888 S'editable' p4889 I01 sS'value' p4890 S'Restrict to Projects' p4891 ssS'data_type' p4892 (dp4893 S'editable' p4894 I00 sS'value' p4895 S'multi_entity' p4896 ssS'entity_type' p4897 (dp4898 S'editable' p4899 I00 sS'value' p4900 S'ActionMenuItem' p4901 ssS'editable' p4902 (dp4903 S'editable' p4904 I00 sS'value' p4905 I01 ssS'unique' p4906 (dp4907 S'editable' p4908 I00 sS'value' p4909 I00 ssS'properties' p4910 (dp4911 S'default_value' p4912 (dp4913 S'editable' p4914 I00 sS'value' p4915 NssS'summary_default' p4916 (dp4917 S'editable' p4918 I01 sS'value' p4919 S'none' p4920 ssS'valid_types' p4921 (dp4922 S'editable' p4923 I01 sS'value' p4924 (lp4925 S'Project' p4926 asssS'description' p4927 (dp4928 S'editable' p4929 I01 sS'value' p4930 g47 sssS'cached_display_name' p4931 (dp4932 S'mandatory' p4933 (dp4934 S'editable' p4935 I00 sS'value' p4936 I00 ssS'name' p4937 (dp4938 S'editable' p4939 I01 sS'value' p4940 S'Cached Display Name' p4941 ssS'data_type' p4942 (dp4943 S'editable' p4944 I00 sS'value' p4945 S'text' p4946 ssS'entity_type' p4947 (dp4948 S'editable' p4949 I00 sS'value' p4950 S'ActionMenuItem' p4951 ssS'editable' p4952 (dp4953 S'editable' p4954 I00 sS'value' p4955 I01 ssS'unique' p4956 (dp4957 S'editable' p4958 I00 sS'value' p4959 I00 ssS'properties' p4960 (dp4961 S'default_value' p4962 (dp4963 S'editable' p4964 I00 sS'value' p4965 NssS'summary_default' p4966 (dp4967 S'editable' p4968 I00 sS'value' p4969 S'none' p4970 sssS'description' p4971 (dp4972 S'editable' p4973 I01 sS'value' p4974 g47 ssssS'Attachment' p4975 (dp4976 S'open_notes_count' p4977 (dp4978 S'mandatory' p4979 (dp4980 S'editable' p4981 I00 sS'value' p4982 I00 ssS'name' p4983 (dp4984 S'editable' p4985 I01 sS'value' p4986 S'Open Notes Count' p4987 ssS'data_type' p4988 (dp4989 S'editable' p4990 I00 sS'value' p4991 S'text' p4992 ssS'entity_type' p4993 (dp4994 S'editable' p4995 I00 sS'value' p4996 S'Attachment' p4997 ssS'editable' p4998 (dp4999 S'editable' p5000 I00 sS'value' p5001 I00 ssS'unique' p5002 (dp5003 S'editable' p5004 I00 sS'value' p5005 I00 ssS'properties' p5006 (dp5007 S'default_value' p5008 (dp5009 S'editable' p5010 I00 sS'value' p5011 NssS'summary_default' p5012 (dp5013 S'editable' p5014 I01 sS'value' p5015 S'none' p5016 sssS'description' p5017 (dp5018 S'editable' p5019 I01 sS'value' p5020 g47 sssS'tasks' p5021 (dp5022 S'mandatory' p5023 (dp5024 S'editable' p5025 I00 sS'value' p5026 I00 ssS'name' p5027 (dp5028 S'editable' p5029 I01 sS'value' p5030 S'Tasks' p5031 ssS'data_type' p5032 (dp5033 S'editable' p5034 I00 sS'value' p5035 S'multi_entity' p5036 ssS'entity_type' p5037 (dp5038 S'editable' p5039 I00 sS'value' p5040 S'Attachment' p5041 ssS'editable' p5042 (dp5043 S'editable' p5044 I00 sS'value' p5045 I01 ssS'unique' p5046 (dp5047 S'editable' p5048 I00 sS'value' p5049 I00 ssS'properties' p5050 (dp5051 S'default_value' p5052 (dp5053 S'editable' p5054 I00 sS'value' p5055 NssS'summary_default' p5056 (dp5057 S'editable' p5058 I01 sS'value' p5059 S'none' p5060 ssS'valid_types' p5061 (dp5062 S'editable' p5063 I01 sS'value' p5064 (lp5065 S'Task' p5066 asssS'description' p5067 (dp5068 S'editable' p5069 I01 sS'value' p5070 g47 sssS'file_extension' p5071 (dp5072 S'mandatory' p5073 (dp5074 S'editable' p5075 I00 sS'value' p5076 I00 ssS'name' p5077 (dp5078 S'editable' p5079 I01 sS'value' p5080 S'File Type' p5081 ssS'data_type' p5082 (dp5083 S'editable' p5084 I00 sS'value' p5085 S'text' p5086 ssS'entity_type' p5087 (dp5088 S'editable' p5089 I00 sS'value' p5090 S'Attachment' p5091 ssS'editable' p5092 (dp5093 S'editable' p5094 I00 sS'value' p5095 I00 ssS'unique' p5096 (dp5097 S'editable' p5098 I00 sS'value' p5099 I00 ssS'properties' p5100 (dp5101 S'default_value' p5102 (dp5103 S'editable' p5104 I00 sS'value' p5105 NssS'summary_default' p5106 (dp5107 S'editable' p5108 I01 sS'value' p5109 S'none' p5110 sssS'description' p5111 (dp5112 S'editable' p5113 I01 sS'value' p5114 g47 sssS'updated_at' p5115 (dp5116 S'mandatory' p5117 (dp5118 S'editable' p5119 I00 sS'value' p5120 I00 ssS'name' p5121 (dp5122 S'editable' p5123 I01 sS'value' p5124 S'Date Updated' p5125 ssS'data_type' p5126 (dp5127 S'editable' p5128 I00 sS'value' p5129 S'date_time' p5130 ssS'entity_type' p5131 (dp5132 S'editable' p5133 I00 sS'value' p5134 S'Attachment' p5135 ssS'editable' p5136 (dp5137 S'editable' p5138 I00 sS'value' p5139 I00 ssS'unique' p5140 (dp5141 S'editable' p5142 I00 sS'value' p5143 I00 ssS'properties' p5144 (dp5145 S'default_value' p5146 (dp5147 S'editable' p5148 I00 sS'value' p5149 NssS'summary_default' p5150 (dp5151 S'editable' p5152 I01 sS'value' p5153 S'none' p5154 sssS'description' p5155 (dp5156 S'editable' p5157 I01 sS'value' p5158 g47 sssS'attachment_reference_links' p5159 (dp5160 S'mandatory' p5161 (dp5162 S'editable' p5163 I00 sS'value' p5164 I00 ssS'name' p5165 (dp5166 S'editable' p5167 I01 sS'value' p5168 S'Reference For' p5169 ssS'data_type' p5170 (dp5171 S'editable' p5172 I00 sS'value' p5173 S'multi_entity' p5174 ssS'entity_type' p5175 (dp5176 S'editable' p5177 I00 sS'value' p5178 S'Attachment' p5179 ssS'editable' p5180 (dp5181 S'editable' p5182 I00 sS'value' p5183 I01 ssS'unique' p5184 (dp5185 S'editable' p5186 I00 sS'value' p5187 I00 ssS'properties' p5188 (dp5189 S'default_value' p5190 (dp5191 S'editable' p5192 I00 sS'value' p5193 NssS'summary_default' p5194 (dp5195 S'editable' p5196 I01 sS'value' p5197 S'none' p5198 ssS'valid_types' p5199 (dp5200 S'editable' p5201 I00 sS'value' p5202 (lp5203 S'Asset' p5204 aS'Scene' p5205 aS'Sequence' p5206 aS'Shot' p5207 aS'Version' p5208 asssS'description' p5209 (dp5210 S'editable' p5211 I01 sS'value' p5212 g47 sssS'file_size' p5213 (dp5214 S'mandatory' p5215 (dp5216 S'editable' p5217 I00 sS'value' p5218 I00 ssS'name' p5219 (dp5220 S'editable' p5221 I01 sS'value' p5222 S'File Size' p5223 ssS'data_type' p5224 (dp5225 S'editable' p5226 I00 sS'value' p5227 S'number' p5228 ssS'entity_type' p5229 (dp5230 S'editable' p5231 I00 sS'value' p5232 S'Attachment' p5233 ssS'editable' p5234 (dp5235 S'editable' p5236 I00 sS'value' p5237 I00 ssS'unique' p5238 (dp5239 S'editable' p5240 I00 sS'value' p5241 I00 ssS'properties' p5242 (dp5243 S'default_value' p5244 (dp5245 S'editable' p5246 I00 sS'value' p5247 NssS'summary_default' p5248 (dp5249 S'editable' p5250 I01 sS'value' p5251 S'none' p5252 sssS'description' p5253 (dp5254 S'editable' p5255 I01 sS'value' p5256 g47 sssS'cached_display_name' p5257 (dp5258 S'mandatory' p5259 (dp5260 S'editable' p5261 I00 sS'value' p5262 I00 ssS'name' p5263 (dp5264 S'editable' p5265 I01 sS'value' p5266 S'Cached Display Name' p5267 ssS'data_type' p5268 (dp5269 S'editable' p5270 I00 sS'value' p5271 S'text' p5272 ssS'entity_type' p5273 (dp5274 S'editable' p5275 I00 sS'value' p5276 S'Attachment' p5277 ssS'editable' p5278 (dp5279 S'editable' p5280 I00 sS'value' p5281 I01 ssS'unique' p5282 (dp5283 S'editable' p5284 I00 sS'value' p5285 I00 ssS'properties' p5286 (dp5287 S'default_value' p5288 (dp5289 S'editable' p5290 I00 sS'value' p5291 NssS'summary_default' p5292 (dp5293 S'editable' p5294 I00 sS'value' p5295 S'none' p5296 sssS'description' p5297 (dp5298 S'editable' p5299 I01 sS'value' p5300 g47 sssS'id' p5301 (dp5302 S'mandatory' p5303 (dp5304 S'editable' p5305 I00 sS'value' p5306 I00 ssS'name' p5307 (dp5308 S'editable' p5309 I01 sS'value' p5310 S'Id' p5311 ssS'data_type' p5312 (dp5313 S'editable' p5314 I00 sS'value' p5315 S'number' p5316 ssS'entity_type' p5317 (dp5318 S'editable' p5319 I00 sS'value' p5320 S'Attachment' p5321 ssS'editable' p5322 (dp5323 S'editable' p5324 I00 sS'value' p5325 I00 ssS'unique' p5326 (dp5327 S'editable' p5328 I00 sS'value' p5329 I00 ssS'properties' p5330 (dp5331 S'default_value' p5332 (dp5333 S'editable' p5334 I00 sS'value' p5335 NssS'summary_default' p5336 (dp5337 S'editable' p5338 I01 sS'value' p5339 S'none' p5340 sssS'description' p5341 (dp5342 S'editable' p5343 I01 sS'value' p5344 g47 sssS'updated_by' p5345 (dp5346 S'mandatory' p5347 (dp5348 S'editable' p5349 I00 sS'value' p5350 I00 ssS'name' p5351 (dp5352 S'editable' p5353 I01 sS'value' p5354 S'Updated by' p5355 ssS'data_type' p5356 (dp5357 S'editable' p5358 I00 sS'value' p5359 S'entity' p5360 ssS'entity_type' p5361 (dp5362 S'editable' p5363 I00 sS'value' p5364 S'Attachment' p5365 ssS'editable' p5366 (dp5367 S'editable' p5368 I00 sS'value' p5369 I00 ssS'unique' p5370 (dp5371 S'editable' p5372 I00 sS'value' p5373 I00 ssS'properties' p5374 (dp5375 S'default_value' p5376 (dp5377 S'editable' p5378 I00 sS'value' p5379 NssS'summary_default' p5380 (dp5381 S'editable' p5382 I01 sS'value' p5383 S'none' p5384 ssS'valid_types' p5385 (dp5386 S'editable' p5387 I01 sS'value' p5388 (lp5389 S'HumanUser' p5390 aS'ApiUser' p5391 asssS'description' p5392 (dp5393 S'editable' p5394 I01 sS'value' p5395 g47 sssS'queue_for_s3_upload' p5396 (dp5397 S'mandatory' p5398 (dp5399 S'editable' p5400 I00 sS'value' p5401 I00 ssS'name' p5402 (dp5403 S'editable' p5404 I01 sS'value' p5405 S'Queue for S3 Upload' p5406 ssS'data_type' p5407 (dp5408 S'editable' p5409 I00 sS'value' p5410 S'checkbox' p5411 ssS'entity_type' p5412 (dp5413 S'editable' p5414 I00 sS'value' p5415 S'Attachment' p5416 ssS'editable' p5417 (dp5418 S'editable' p5419 I00 sS'value' p5420 I00 ssS'unique' p5421 (dp5422 S'editable' p5423 I00 sS'value' p5424 I00 ssS'properties' p5425 (dp5426 S'default_value' p5427 (dp5428 S'editable' p5429 I00 sS'value' p5430 I0 ssS'summary_default' p5431 (dp5432 S'editable' p5433 I01 sS'value' p5434 S'none' p5435 sssS'description' p5436 (dp5437 S'editable' p5438 I01 sS'value' p5439 g47 sssS'display_name' p5440 (dp5441 S'mandatory' p5442 (dp5443 S'editable' p5444 I00 sS'value' p5445 I00 ssS'name' p5446 (dp5447 S'editable' p5448 I01 sS'value' p5449 S'File Display Name' p5450 ssS'data_type' p5451 (dp5452 S'editable' p5453 I00 sS'value' p5454 S'text' p5455 ssS'entity_type' p5456 (dp5457 S'editable' p5458 I00 sS'value' p5459 S'Attachment' p5460 ssS'editable' p5461 (dp5462 S'editable' p5463 I00 sS'value' p5464 I01 ssS'unique' p5465 (dp5466 S'editable' p5467 I00 sS'value' p5468 I00 ssS'properties' p5469 (dp5470 S'default_value' p5471 (dp5472 S'editable' p5473 I00 sS'value' p5474 NssS'summary_default' p5475 (dp5476 S'editable' p5477 I01 sS'value' p5478 S'none' p5479 sssS'description' p5480 (dp5481 S'editable' p5482 I01 sS'value' p5483 g47 sssS'image' p5484 (dp5485 S'mandatory' p5486 (dp5487 S'editable' p5488 I00 sS'value' p5489 I00 ssS'name' p5490 (dp5491 S'editable' p5492 I01 sS'value' p5493 S'Thumbnail' p5494 ssS'data_type' p5495 (dp5496 S'editable' p5497 I00 sS'value' p5498 S'image' p5499 ssS'entity_type' p5500 (dp5501 S'editable' p5502 I00 sS'value' p5503 S'Attachment' p5504 ssS'editable' p5505 (dp5506 S'editable' p5507 I00 sS'value' p5508 I01 ssS'unique' p5509 (dp5510 S'editable' p5511 I00 sS'value' p5512 I00 ssS'properties' p5513 (dp5514 S'default_value' p5515 (dp5516 S'editable' p5517 I00 sS'value' p5518 NssS'summary_default' p5519 (dp5520 S'editable' p5521 I01 sS'value' p5522 S'none' p5523 sssS'description' p5524 (dp5525 S'editable' p5526 I01 sS'value' p5527 g47 sssS'task_template' p5528 (dp5529 S'mandatory' p5530 (dp5531 S'editable' p5532 I00 sS'value' p5533 I00 ssS'name' p5534 (dp5535 S'editable' p5536 I01 sS'value' p5537 S'Task Template' p5538 ssS'data_type' p5539 (dp5540 S'editable' p5541 I00 sS'value' p5542 S'entity' p5543 ssS'entity_type' p5544 (dp5545 S'editable' p5546 I00 sS'value' p5547 S'Attachment' p5548 ssS'editable' p5549 (dp5550 S'editable' p5551 I00 sS'value' p5552 I01 ssS'unique' p5553 (dp5554 S'editable' p5555 I00 sS'value' p5556 I00 ssS'properties' p5557 (dp5558 S'default_value' p5559 (dp5560 S'editable' p5561 I00 sS'value' p5562 NssS'summary_default' p5563 (dp5564 S'editable' p5565 I01 sS'value' p5566 S'none' p5567 ssS'valid_types' p5568 (dp5569 S'editable' p5570 I01 sS'value' p5571 (lp5572 S'TaskTemplate' p5573 asssS'description' p5574 (dp5575 S'editable' p5576 I01 sS'value' p5577 g47 sssS'created_by' p5578 (dp5579 S'mandatory' p5580 (dp5581 S'editable' p5582 I00 sS'value' p5583 I00 ssS'name' p5584 (dp5585 S'editable' p5586 I01 sS'value' p5587 S'Created by' p5588 ssS'data_type' p5589 (dp5590 S'editable' p5591 I00 sS'value' p5592 S'entity' p5593 ssS'entity_type' p5594 (dp5595 S'editable' p5596 I00 sS'value' p5597 S'Attachment' p5598 ssS'editable' p5599 (dp5600 S'editable' p5601 I00 sS'value' p5602 I00 ssS'unique' p5603 (dp5604 S'editable' p5605 I00 sS'value' p5606 I00 ssS'properties' p5607 (dp5608 S'default_value' p5609 (dp5610 S'editable' p5611 I00 sS'value' p5612 NssS'summary_default' p5613 (dp5614 S'editable' p5615 I01 sS'value' p5616 S'none' p5617 ssS'valid_types' p5618 (dp5619 S'editable' p5620 I01 sS'value' p5621 (lp5622 S'HumanUser' p5623 aS'ApiUser' p5624 asssS'description' p5625 (dp5626 S'editable' p5627 I01 sS'value' p5628 g47 sssS'filename' p5629 (dp5630 S'mandatory' p5631 (dp5632 S'editable' p5633 I00 sS'value' p5634 I00 ssS'name' p5635 (dp5636 S'editable' p5637 I01 sS'value' p5638 S'File Name' p5639 ssS'data_type' p5640 (dp5641 S'editable' p5642 I00 sS'value' p5643 S'text' p5644 ssS'entity_type' p5645 (dp5646 S'editable' p5647 I00 sS'value' p5648 S'Attachment' p5649 ssS'editable' p5650 (dp5651 S'editable' p5652 I00 sS'value' p5653 I00 ssS'unique' p5654 (dp5655 S'editable' p5656 I00 sS'value' p5657 I00 ssS'properties' p5658 (dp5659 S'default_value' p5660 (dp5661 S'editable' p5662 I00 sS'value' p5663 NssS'summary_default' p5664 (dp5665 S'editable' p5666 I01 sS'value' p5667 S'none' p5668 sssS'description' p5669 (dp5670 S'editable' p5671 I01 sS'value' p5672 g47 sssS'sg_status_list' p5673 (dp5674 S'mandatory' p5675 (dp5676 S'editable' p5677 I00 sS'value' p5678 I00 ssS'name' p5679 (dp5680 S'editable' p5681 I01 sS'value' p5682 S'Status' p5683 ssS'data_type' p5684 (dp5685 S'editable' p5686 I00 sS'value' p5687 S'status_list' p5688 ssS'entity_type' p5689 (dp5690 S'editable' p5691 I00 sS'value' p5692 S'Attachment' p5693 ssS'editable' p5694 (dp5695 S'editable' p5696 I00 sS'value' p5697 I01 ssS'unique' p5698 (dp5699 S'editable' p5700 I00 sS'value' p5701 I00 ssS'properties' p5702 (dp5703 S'default_value' p5704 (dp5705 S'editable' p5706 I01 sS'value' p5707 S'na' p5708 ssS'valid_values' p5709 (dp5710 S'editable' p5711 I01 sS'value' p5712 (lp5713 S'fin' p5714 aS'na' p5715 assS'summary_default' p5716 (dp5717 S'editable' p5718 I01 sS'value' p5719 S'status_list' p5720 sssS'description' p5721 (dp5722 S'editable' p5723 I01 sS'value' p5724 g47 sssS'attachment_links' p5725 (dp5726 S'mandatory' p5727 (dp5728 S'editable' p5729 I00 sS'value' p5730 I00 ssS'name' p5731 (dp5732 S'editable' p5733 I01 sS'value' p5734 S'Links' p5735 ssS'data_type' p5736 (dp5737 S'editable' p5738 I00 sS'value' p5739 S'multi_entity' p5740 ssS'entity_type' p5741 (dp5742 S'editable' p5743 I00 sS'value' p5744 S'Attachment' p5745 ssS'editable' p5746 (dp5747 S'editable' p5748 I00 sS'value' p5749 I01 ssS'unique' p5750 (dp5751 S'editable' p5752 I00 sS'value' p5753 I00 ssS'properties' p5754 (dp5755 S'default_value' p5756 (dp5757 S'editable' p5758 I00 sS'value' p5759 NssS'summary_default' p5760 (dp5761 S'editable' p5762 I01 sS'value' p5763 S'none' p5764 ssS'valid_types' p5765 (dp5766 S'editable' p5767 I00 sS'value' p5768 (lp5769 S'Asset' p5770 aS'Scene' p5771 aS'Sequence' p5772 aS'Shot' p5773 aS'Version' p5774 asssS'description' p5775 (dp5776 S'editable' p5777 I01 sS'value' p5778 g47 sssS'description' p5779 (dp5780 S'mandatory' p5781 (dp5782 S'editable' p5783 I00 sS'value' p5784 I00 ssS'name' p5785 (dp5786 S'editable' p5787 I01 sS'value' p5788 S'Description' p5789 ssS'data_type' p5790 (dp5791 S'editable' p5792 I00 sS'value' p5793 S'text' p5794 ssS'entity_type' p5795 (dp5796 S'editable' p5797 I00 sS'value' p5798 S'Attachment' p5799 ssS'editable' p5800 (dp5801 S'editable' p5802 I00 sS'value' p5803 I01 ssS'unique' p5804 (dp5805 S'editable' p5806 I00 sS'value' p5807 I00 ssS'properties' p5808 (dp5809 S'default_value' p5810 (dp5811 S'editable' p5812 I00 sS'value' p5813 NssS'summary_default' p5814 (dp5815 S'editable' p5816 I01 sS'value' p5817 S'none' p5818 sssS'description' p5819 (dp5820 S'editable' p5821 I01 sS'value' p5822 g47 sssS'local_storage' p5823 (dp5824 S'mandatory' p5825 (dp5826 S'editable' p5827 I00 sS'value' p5828 I00 ssS'name' p5829 (dp5830 S'editable' p5831 I01 sS'value' p5832 S'Local File Storage' p5833 ssS'data_type' p5834 (dp5835 S'editable' p5836 I00 sS'value' p5837 S'entity' p5838 ssS'entity_type' p5839 (dp5840 S'editable' p5841 I00 sS'value' p5842 S'Attachment' p5843 ssS'editable' p5844 (dp5845 S'editable' p5846 I00 sS'value' p5847 I00 ssS'unique' p5848 (dp5849 S'editable' p5850 I00 sS'value' p5851 I00 ssS'properties' p5852 (dp5853 S'default_value' p5854 (dp5855 S'editable' p5856 I00 sS'value' p5857 NssS'summary_default' p5858 (dp5859 S'editable' p5860 I00 sS'value' p5861 S'none' p5862 ssS'valid_types' p5863 (dp5864 S'editable' p5865 I00 sS'value' p5866 (lp5867 S'LocalStorage' p5868 asssS'description' p5869 (dp5870 S'editable' p5871 I01 sS'value' p5872 g47 sssS'open_notes' p5873 (dp5874 S'mandatory' p5875 (dp5876 S'editable' p5877 I00 sS'value' p5878 I00 ssS'name' p5879 (dp5880 S'editable' p5881 I01 sS'value' p5882 S'Open Notes' p5883 ssS'data_type' p5884 (dp5885 S'editable' p5886 I00 sS'value' p5887 S'multi_entity' p5888 ssS'entity_type' p5889 (dp5890 S'editable' p5891 I00 sS'value' p5892 S'Attachment' p5893 ssS'editable' p5894 (dp5895 S'editable' p5896 I00 sS'value' p5897 I00 ssS'unique' p5898 (dp5899 S'editable' p5900 I00 sS'value' p5901 I00 ssS'properties' p5902 (dp5903 S'default_value' p5904 (dp5905 S'editable' p5906 I00 sS'value' p5907 NssS'summary_default' p5908 (dp5909 S'editable' p5910 I01 sS'value' p5911 S'none' p5912 ssS'valid_types' p5913 (dp5914 S'editable' p5915 I01 sS'value' p5916 (lp5917 S'Note' p5918 asssS'description' p5919 (dp5920 S'editable' p5921 I01 sS'value' p5922 g47 sssS'step_0' p5923 (dp5924 S'mandatory' p5925 (dp5926 S'editable' p5927 I00 sS'value' p5928 I00 ssS'name' p5929 (dp5930 S'editable' p5931 I01 sS'value' p5932 S'ALL TASKS' p5933 ssS'data_type' p5934 (dp5935 S'editable' p5936 I00 sS'value' p5937 S'pivot_column' p5938 ssS'entity_type' p5939 (dp5940 S'editable' p5941 I00 sS'value' p5942 S'Attachment' p5943 ssS'editable' p5944 (dp5945 S'editable' p5946 I00 sS'value' p5947 I00 ssS'unique' p5948 (dp5949 S'editable' p5950 I00 sS'value' p5951 I00 ssS'properties' p5952 (dp5953 S'default_value' p5954 (dp5955 S'editable' p5956 I00 sS'value' p5957 NssS'summary_default' p5958 (dp5959 S'editable' p5960 I00 sS'value' p5961 S'none' p5962 sssS'description' p5963 (dp5964 S'editable' p5965 I01 sS'value' p5966 g47 sssS'created_at' p5967 (dp5968 S'mandatory' p5969 (dp5970 S'editable' p5971 I00 sS'value' p5972 I00 ssS'name' p5973 (dp5974 S'editable' p5975 I01 sS'value' p5976 S'Date Created' p5977 ssS'data_type' p5978 (dp5979 S'editable' p5980 I00 sS'value' p5981 S'date_time' p5982 ssS'entity_type' p5983 (dp5984 S'editable' p5985 I00 sS'value' p5986 S'Attachment' p5987 ssS'editable' p5988 (dp5989 S'editable' p5990 I00 sS'value' p5991 I00 ssS'unique' p5992 (dp5993 S'editable' p5994 I00 sS'value' p5995 I00 ssS'properties' p5996 (dp5997 S'default_value' p5998 (dp5999 S'editable' p6000 I00 sS'value' p6001 NssS'summary_default' p6002 (dp6003 S'editable' p6004 I01 sS'value' p6005 S'none' p6006 sssS'description' p6007 (dp6008 S'editable' p6009 I01 sS'value' p6010 g47 sssS'project' p6011 (dp6012 S'mandatory' p6013 (dp6014 S'editable' p6015 I00 sS'value' p6016 I00 ssS'name' p6017 (dp6018 S'editable' p6019 I01 sS'value' p6020 S'Project' p6021 ssS'data_type' p6022 (dp6023 S'editable' p6024 I00 sS'value' p6025 S'entity' p6026 ssS'entity_type' p6027 (dp6028 S'editable' p6029 I00 sS'value' p6030 S'Attachment' p6031 ssS'editable' p6032 (dp6033 S'editable' p6034 I00 sS'value' p6035 I01 ssS'unique' p6036 (dp6037 S'editable' p6038 I00 sS'value' p6039 I00 ssS'properties' p6040 (dp6041 S'default_value' p6042 (dp6043 S'editable' p6044 I00 sS'value' p6045 NssS'summary_default' p6046 (dp6047 S'editable' p6048 I01 sS'value' p6049 S'none' p6050 ssS'valid_types' p6051 (dp6052 S'editable' p6053 I01 sS'value' p6054 (lp6055 S'Project' p6056 asssS'description' p6057 (dp6058 S'editable' p6059 I01 sS'value' p6060 g47 sssS'filmstrip_image' p6061 (dp6062 S'mandatory' p6063 (dp6064 S'editable' p6065 I00 sS'value' p6066 I00 ssS'name' p6067 (dp6068 S'editable' p6069 I01 sS'value' p6070 S'Filmstrip Thumbnail' p6071 ssS'data_type' p6072 (dp6073 S'editable' p6074 I00 sS'value' p6075 S'image' p6076 ssS'entity_type' p6077 (dp6078 S'editable' p6079 I00 sS'value' p6080 S'Attachment' p6081 ssS'editable' p6082 (dp6083 S'editable' p6084 I00 sS'value' p6085 I01 ssS'unique' p6086 (dp6087 S'editable' p6088 I00 sS'value' p6089 I00 ssS'properties' p6090 (dp6091 S'default_value' p6092 (dp6093 S'editable' p6094 I00 sS'value' p6095 NssS'summary_default' p6096 (dp6097 S'editable' p6098 I01 sS'value' p6099 S'none' p6100 sssS'description' p6101 (dp6102 S'editable' p6103 I01 sS'value' p6104 g47 sssS'this_file' p6105 (dp6106 S'mandatory' p6107 (dp6108 S'editable' p6109 I00 sS'value' p6110 I01 ssS'name' p6111 (dp6112 S'editable' p6113 I01 sS'value' p6114 S'File' p6115 ssS'data_type' p6116 (dp6117 S'editable' p6118 I00 sS'value' p6119 S'url' p6120 ssS'entity_type' p6121 (dp6122 S'editable' p6123 I00 sS'value' p6124 S'Attachment' p6125 ssS'editable' p6126 (dp6127 S'editable' p6128 I00 sS'value' p6129 I00 ssS'unique' p6130 (dp6131 S'editable' p6132 I00 sS'value' p6133 I00 ssS'properties' p6134 (dp6135 S'default_value' p6136 (dp6137 S'editable' p6138 I00 sS'value' p6139 NssS'open_in_new_window' p6140 (dp6141 S'editable' p6142 I01 sS'value' p6143 I01 ssS'summary_default' p6144 (dp6145 S'editable' p6146 I01 sS'value' p6147 S'none' p6148 sssS'description' p6149 (dp6150 S'editable' p6151 I01 sS'value' p6152 g47 sssS'sg_type' p6153 (dp6154 S'mandatory' p6155 (dp6156 S'editable' p6157 I00 sS'value' p6158 I00 ssS'name' p6159 (dp6160 S'editable' p6161 I01 sS'value' p6162 S'Type' p6163 ssS'data_type' p6164 (dp6165 S'editable' p6166 I00 sS'value' p6167 S'text' p6168 ssS'entity_type' p6169 (dp6170 S'editable' p6171 I00 sS'value' p6172 S'Attachment' p6173 ssS'editable' p6174 (dp6175 S'editable' p6176 I00 sS'value' p6177 I01 ssS'unique' p6178 (dp6179 S'editable' p6180 I00 sS'value' p6181 I00 ssS'properties' p6182 (dp6183 S'default_value' p6184 (dp6185 S'editable' p6186 I00 sS'value' p6187 NssS'summary_default' p6188 (dp6189 S'editable' p6190 I01 sS'value' p6191 S'none' p6192 sssS'description' p6193 (dp6194 S'editable' p6195 I01 sS'value' p6196 g47 sssS'tag_list' p6197 (dp6198 S'mandatory' p6199 (dp6200 S'editable' p6201 I00 sS'value' p6202 I00 ssS'name' p6203 (dp6204 S'editable' p6205 I01 sS'value' p6206 S'Tags' p6207 ssS'data_type' p6208 (dp6209 S'editable' p6210 I00 sS'value' p6211 S'tag_list' p6212 ssS'entity_type' p6213 (dp6214 S'editable' p6215 I00 sS'value' p6216 S'Attachment' p6217 ssS'editable' p6218 (dp6219 S'editable' p6220 I00 sS'value' p6221 I01 ssS'unique' p6222 (dp6223 S'editable' p6224 I00 sS'value' p6225 I00 ssS'properties' p6226 (dp6227 S'default_value' p6228 (dp6229 S'editable' p6230 I00 sS'value' p6231 NssS'summary_default' p6232 (dp6233 S'editable' p6234 I01 sS'value' p6235 S'none' p6236 ssS'valid_types' p6237 (dp6238 S'editable' p6239 I01 sS'value' p6240 (lp6241 S'Tag' p6242 asssS'description' p6243 (dp6244 S'editable' p6245 I01 sS'value' p6246 g47 sssS'notes' p6247 (dp6248 S'mandatory' p6249 (dp6250 S'editable' p6251 I00 sS'value' p6252 I00 ssS'name' p6253 (dp6254 S'editable' p6255 I01 sS'value' p6256 S'Notes' p6257 ssS'data_type' p6258 (dp6259 S'editable' p6260 I00 sS'value' p6261 S'multi_entity' p6262 ssS'entity_type' p6263 (dp6264 S'editable' p6265 I00 sS'value' p6266 S'Attachment' p6267 ssS'editable' p6268 (dp6269 S'editable' p6270 I00 sS'value' p6271 I01 ssS'unique' p6272 (dp6273 S'editable' p6274 I00 sS'value' p6275 I00 ssS'properties' p6276 (dp6277 S'default_value' p6278 (dp6279 S'editable' p6280 I00 sS'value' p6281 NssS'summary_default' p6282 (dp6283 S'editable' p6284 I01 sS'value' p6285 S'none' p6286 ssS'valid_types' p6287 (dp6288 S'editable' p6289 I01 sS'value' p6290 (lp6291 S'Note' p6292 asssS'description' p6293 (dp6294 S'editable' p6295 I01 sS'value' p6296 g47 ssssS'AssetMocapTakeConnection' p6297 (dp6298 S'mocap_take' p6299 (dp6300 S'mandatory' p6301 (dp6302 S'editable' p6303 I00 sS'value' p6304 I00 ssS'name' p6305 (dp6306 S'editable' p6307 I01 sS'value' p6308 S'Mocap Take' p6309 ssS'data_type' p6310 (dp6311 S'editable' p6312 I00 sS'value' p6313 S'entity' p6314 ssS'entity_type' p6315 (dp6316 S'editable' p6317 I00 sS'value' p6318 S'AssetMocapTakeConnection' p6319 ssS'editable' p6320 (dp6321 S'editable' p6322 I00 sS'value' p6323 I00 ssS'unique' p6324 (dp6325 S'editable' p6326 I00 sS'value' p6327 I00 ssS'properties' p6328 (dp6329 S'default_value' p6330 (dp6331 S'editable' p6332 I00 sS'value' p6333 NssS'summary_default' p6334 (dp6335 S'editable' p6336 I00 sS'value' p6337 S'none' p6338 ssS'valid_types' p6339 (dp6340 S'editable' p6341 I00 sS'value' p6342 (lp6343 S'MocapTake' p6344 asssS'description' p6345 (dp6346 S'editable' p6347 I01 sS'value' p6348 g47 sssS'cached_display_name' p6349 (dp6350 S'mandatory' p6351 (dp6352 S'editable' p6353 I00 sS'value' p6354 I00 ssS'name' p6355 (dp6356 S'editable' p6357 I01 sS'value' p6358 S'Cached Display Name' p6359 ssS'data_type' p6360 (dp6361 S'editable' p6362 I00 sS'value' p6363 S'text' p6364 ssS'entity_type' p6365 (dp6366 S'editable' p6367 I00 sS'value' p6368 S'AssetMocapTakeConnection' p6369 ssS'editable' p6370 (dp6371 S'editable' p6372 I00 sS'value' p6373 I01 ssS'unique' p6374 (dp6375 S'editable' p6376 I00 sS'value' p6377 I00 ssS'properties' p6378 (dp6379 S'default_value' p6380 (dp6381 S'editable' p6382 I00 sS'value' p6383 NssS'summary_default' p6384 (dp6385 S'editable' p6386 I00 sS'value' p6387 S'none' p6388 sssS'description' p6389 (dp6390 S'editable' p6391 I01 sS'value' p6392 g47 sssS'asset' p6393 (dp6394 S'mandatory' p6395 (dp6396 S'editable' p6397 I00 sS'value' p6398 I00 ssS'name' p6399 (dp6400 S'editable' p6401 I01 sS'value' p6402 S'Asset' p6403 ssS'data_type' p6404 (dp6405 S'editable' p6406 I00 sS'value' p6407 S'entity' p6408 ssS'entity_type' p6409 (dp6410 S'editable' p6411 I00 sS'value' p6412 S'AssetMocapTakeConnection' p6413 ssS'editable' p6414 (dp6415 S'editable' p6416 I00 sS'value' p6417 I00 ssS'unique' p6418 (dp6419 S'editable' p6420 I00 sS'value' p6421 I00 ssS'properties' p6422 (dp6423 S'default_value' p6424 (dp6425 S'editable' p6426 I00 sS'value' p6427 NssS'summary_default' p6428 (dp6429 S'editable' p6430 I00 sS'value' p6431 S'none' p6432 ssS'valid_types' p6433 (dp6434 S'editable' p6435 I00 sS'value' p6436 (lp6437 S'Asset' p6438 asssS'description' p6439 (dp6440 S'editable' p6441 I01 sS'value' p6442 g47 sssS'id' p6443 (dp6444 S'mandatory' p6445 (dp6446 S'editable' p6447 I00 sS'value' p6448 I01 ssS'name' p6449 (dp6450 S'editable' p6451 I01 sS'value' p6452 S'Id' p6453 ssS'data_type' p6454 (dp6455 S'editable' p6456 I00 sS'value' p6457 S'number' p6458 ssS'entity_type' p6459 (dp6460 S'editable' p6461 I00 sS'value' p6462 S'AssetMocapTakeConnection' p6463 ssS'editable' p6464 (dp6465 S'editable' p6466 I00 sS'value' p6467 I00 ssS'unique' p6468 (dp6469 S'editable' p6470 I00 sS'value' p6471 I00 ssS'properties' p6472 (dp6473 S'default_value' p6474 (dp6475 S'editable' p6476 I00 sS'value' p6477 NssS'summary_default' p6478 (dp6479 S'editable' p6480 I00 sS'value' p6481 S'none' p6482 sssS'description' p6483 (dp6484 S'editable' p6485 I01 sS'value' p6486 g47 ssssS'Department' p6487 (dp6488 S'open_notes_count' p6489 (dp6490 S'mandatory' p6491 (dp6492 S'editable' p6493 I00 sS'value' p6494 I00 ssS'name' p6495 (dp6496 S'editable' p6497 I01 sS'value' p6498 S'Open Notes Count' p6499 ssS'data_type' p6500 (dp6501 S'editable' p6502 I00 sS'value' p6503 S'text' p6504 ssS'entity_type' p6505 (dp6506 S'editable' p6507 I00 sS'value' p6508 S'Department' p6509 ssS'editable' p6510 (dp6511 S'editable' p6512 I00 sS'value' p6513 I00 ssS'unique' p6514 (dp6515 S'editable' p6516 I00 sS'value' p6517 I00 ssS'properties' p6518 (dp6519 S'default_value' p6520 (dp6521 S'editable' p6522 I00 sS'value' p6523 NssS'summary_default' p6524 (dp6525 S'editable' p6526 I01 sS'value' p6527 S'none' p6528 sssS'description' p6529 (dp6530 S'editable' p6531 I01 sS'value' p6532 g47 sssS'code' p6533 (dp6534 S'mandatory' p6535 (dp6536 S'editable' p6537 I00 sS'value' p6538 I00 ssS'name' p6539 (dp6540 S'editable' p6541 I01 sS'value' p6542 S'Department Short Name' p6543 ssS'data_type' p6544 (dp6545 S'editable' p6546 I00 sS'value' p6547 S'text' p6548 ssS'entity_type' p6549 (dp6550 S'editable' p6551 I00 sS'value' p6552 S'Department' p6553 ssS'editable' p6554 (dp6555 S'editable' p6556 I00 sS'value' p6557 I01 ssS'unique' p6558 (dp6559 S'editable' p6560 I00 sS'value' p6561 I00 ssS'properties' p6562 (dp6563 S'default_value' p6564 (dp6565 S'editable' p6566 I00 sS'value' p6567 NssS'summary_default' p6568 (dp6569 S'editable' p6570 I01 sS'value' p6571 S'none' p6572 sssS'description' p6573 (dp6574 S'editable' p6575 I01 sS'value' p6576 g47 sssS'open_notes' p6577 (dp6578 S'mandatory' p6579 (dp6580 S'editable' p6581 I00 sS'value' p6582 I00 ssS'name' p6583 (dp6584 S'editable' p6585 I01 sS'value' p6586 S'Open Notes' p6587 ssS'data_type' p6588 (dp6589 S'editable' p6590 I00 sS'value' p6591 S'multi_entity' p6592 ssS'entity_type' p6593 (dp6594 S'editable' p6595 I00 sS'value' p6596 S'Department' p6597 ssS'editable' p6598 (dp6599 S'editable' p6600 I00 sS'value' p6601 I00 ssS'unique' p6602 (dp6603 S'editable' p6604 I00 sS'value' p6605 I00 ssS'properties' p6606 (dp6607 S'default_value' p6608 (dp6609 S'editable' p6610 I00 sS'value' p6611 NssS'summary_default' p6612 (dp6613 S'editable' p6614 I01 sS'value' p6615 S'none' p6616 ssS'valid_types' p6617 (dp6618 S'editable' p6619 I01 sS'value' p6620 (lp6621 S'Note' p6622 asssS'description' p6623 (dp6624 S'editable' p6625 I01 sS'value' p6626 g47 sssS'users' p6627 (dp6628 S'mandatory' p6629 (dp6630 S'editable' p6631 I00 sS'value' p6632 I00 ssS'name' p6633 (dp6634 S'editable' p6635 I01 sS'value' p6636 S'People' p6637 ssS'data_type' p6638 (dp6639 S'editable' p6640 I00 sS'value' p6641 S'multi_entity' p6642 ssS'entity_type' p6643 (dp6644 S'editable' p6645 I00 sS'value' p6646 S'Department' p6647 ssS'editable' p6648 (dp6649 S'editable' p6650 I00 sS'value' p6651 I01 ssS'unique' p6652 (dp6653 S'editable' p6654 I00 sS'value' p6655 I00 ssS'properties' p6656 (dp6657 S'default_value' p6658 (dp6659 S'editable' p6660 I00 sS'value' p6661 NssS'summary_default' p6662 (dp6663 S'editable' p6664 I01 sS'value' p6665 S'none' p6666 ssS'valid_types' p6667 (dp6668 S'editable' p6669 I01 sS'value' p6670 (lp6671 S'HumanUser' p6672 asssS'description' p6673 (dp6674 S'editable' p6675 I01 sS'value' p6676 g47 sssS'list_order' p6677 (dp6678 S'mandatory' p6679 (dp6680 S'editable' p6681 I00 sS'value' p6682 I00 ssS'name' p6683 (dp6684 S'editable' p6685 I01 sS'value' p6686 S'Order' p6687 ssS'data_type' p6688 (dp6689 S'editable' p6690 I00 sS'value' p6691 S'number' p6692 ssS'entity_type' p6693 (dp6694 S'editable' p6695 I00 sS'value' p6696 S'Department' p6697 ssS'editable' p6698 (dp6699 S'editable' p6700 I00 sS'value' p6701 I01 ssS'unique' p6702 (dp6703 S'editable' p6704 I00 sS'value' p6705 I00 ssS'properties' p6706 (dp6707 S'default_value' p6708 (dp6709 S'editable' p6710 I00 sS'value' p6711 NssS'summary_default' p6712 (dp6713 S'editable' p6714 I00 sS'value' p6715 S'none' p6716 sssS'description' p6717 (dp6718 S'editable' p6719 I01 sS'value' p6720 g47 sssS'color' p6721 (dp6722 S'mandatory' p6723 (dp6724 S'editable' p6725 I00 sS'value' p6726 I00 ssS'name' p6727 (dp6728 S'editable' p6729 I01 sS'value' p6730 S'Color' p6731 ssS'data_type' p6732 (dp6733 S'editable' p6734 I00 sS'value' p6735 S'color' p6736 ssS'entity_type' p6737 (dp6738 S'editable' p6739 I00 sS'value' p6740 S'Department' p6741 ssS'editable' p6742 (dp6743 S'editable' p6744 I00 sS'value' p6745 I01 ssS'unique' p6746 (dp6747 S'editable' p6748 I00 sS'value' p6749 I00 ssS'properties' p6750 (dp6751 S'default_value' p6752 (dp6753 S'editable' p6754 I00 sS'value' p6755 NssS'summary_default' p6756 (dp6757 S'editable' p6758 I01 sS'value' p6759 S'none' p6760 sssS'description' p6761 (dp6762 S'editable' p6763 I01 sS'value' p6764 g47 sssS'created_at' p6765 (dp6766 S'mandatory' p6767 (dp6768 S'editable' p6769 I00 sS'value' p6770 I00 ssS'name' p6771 (dp6772 S'editable' p6773 I01 sS'value' p6774 S'Date Created' p6775 ssS'data_type' p6776 (dp6777 S'editable' p6778 I00 sS'value' p6779 S'date_time' p6780 ssS'entity_type' p6781 (dp6782 S'editable' p6783 I00 sS'value' p6784 S'Department' p6785 ssS'editable' p6786 (dp6787 S'editable' p6788 I00 sS'value' p6789 I00 ssS'unique' p6790 (dp6791 S'editable' p6792 I00 sS'value' p6793 I00 ssS'properties' p6794 (dp6795 S'default_value' p6796 (dp6797 S'editable' p6798 I00 sS'value' p6799 NssS'summary_default' p6800 (dp6801 S'editable' p6802 I01 sS'value' p6803 S'none' p6804 sssS'description' p6805 (dp6806 S'editable' p6807 I01 sS'value' p6808 g47 sssS'updated_at' p6809 (dp6810 S'mandatory' p6811 (dp6812 S'editable' p6813 I00 sS'value' p6814 I00 ssS'name' p6815 (dp6816 S'editable' p6817 I01 sS'value' p6818 S'Date Updated' p6819 ssS'data_type' p6820 (dp6821 S'editable' p6822 I00 sS'value' p6823 S'date_time' p6824 ssS'entity_type' p6825 (dp6826 S'editable' p6827 I00 sS'value' p6828 S'Department' p6829 ssS'editable' p6830 (dp6831 S'editable' p6832 I00 sS'value' p6833 I00 ssS'unique' p6834 (dp6835 S'editable' p6836 I00 sS'value' p6837 I00 ssS'properties' p6838 (dp6839 S'default_value' p6840 (dp6841 S'editable' p6842 I00 sS'value' p6843 NssS'summary_default' p6844 (dp6845 S'editable' p6846 I01 sS'value' p6847 S'none' p6848 sssS'description' p6849 (dp6850 S'editable' p6851 I01 sS'value' p6852 g47 sssS'created_by' p6853 (dp6854 S'mandatory' p6855 (dp6856 S'editable' p6857 I00 sS'value' p6858 I00 ssS'name' p6859 (dp6860 S'editable' p6861 I01 sS'value' p6862 S'Created by' p6863 ssS'data_type' p6864 (dp6865 S'editable' p6866 I00 sS'value' p6867 S'entity' p6868 ssS'entity_type' p6869 (dp6870 S'editable' p6871 I00 sS'value' p6872 S'Department' p6873 ssS'editable' p6874 (dp6875 S'editable' p6876 I00 sS'value' p6877 I00 ssS'unique' p6878 (dp6879 S'editable' p6880 I00 sS'value' p6881 I00 ssS'properties' p6882 (dp6883 S'default_value' p6884 (dp6885 S'editable' p6886 I00 sS'value' p6887 NssS'summary_default' p6888 (dp6889 S'editable' p6890 I01 sS'value' p6891 S'none' p6892 ssS'valid_types' p6893 (dp6894 S'editable' p6895 I01 sS'value' p6896 (lp6897 S'HumanUser' p6898 aS'ApiUser' p6899 asssS'description' p6900 (dp6901 S'editable' p6902 I01 sS'value' p6903 g47 sssS'sg_status_list' p6904 (dp6905 S'mandatory' p6906 (dp6907 S'editable' p6908 I00 sS'value' p6909 I00 ssS'name' p6910 (dp6911 S'editable' p6912 I01 sS'value' p6913 S'Status' p6914 ssS'data_type' p6915 (dp6916 S'editable' p6917 I00 sS'value' p6918 S'status_list' p6919 ssS'entity_type' p6920 (dp6921 S'editable' p6922 I00 sS'value' p6923 S'Department' p6924 ssS'editable' p6925 (dp6926 S'editable' p6927 I00 sS'value' p6928 I01 ssS'unique' p6929 (dp6930 S'editable' p6931 I00 sS'value' p6932 I00 ssS'properties' p6933 (dp6934 S'default_value' p6935 (dp6936 S'editable' p6937 I01 sS'value' p6938 S'act' p6939 ssS'valid_values' p6940 (dp6941 S'editable' p6942 I01 sS'value' p6943 (lp6944 S'act' p6945 aS'dis' p6946 assS'summary_default' p6947 (dp6948 S'editable' p6949 I01 sS'value' p6950 S'none' p6951 sssS'description' p6952 (dp6953 S'editable' p6954 I01 sS'value' p6955 g47 sssS'department_type' p6956 (dp6957 S'mandatory' p6958 (dp6959 S'editable' p6960 I00 sS'value' p6961 I00 ssS'name' p6962 (dp6963 S'editable' p6964 I01 sS'value' p6965 S'Department Type' p6966 ssS'data_type' p6967 (dp6968 S'editable' p6969 I00 sS'value' p6970 S'list' p6971 ssS'entity_type' p6972 (dp6973 S'editable' p6974 I00 sS'value' p6975 S'Department' p6976 ssS'editable' p6977 (dp6978 S'editable' p6979 I00 sS'value' p6980 I01 ssS'unique' p6981 (dp6982 S'editable' p6983 I00 sS'value' p6984 I00 ssS'properties' p6985 (dp6986 S'default_value' p6987 (dp6988 S'editable' p6989 I00 sS'value' p6990 NssS'valid_values' p6991 (dp6992 S'editable' p6993 I01 sS'value' p6994 (lp6995 ssS'summary_default' p6996 (dp6997 S'editable' p6998 I01 sS'value' p6999 S'none' p7000 sssS'description' p7001 (dp7002 S'editable' p7003 I01 sS'value' p7004 g47 sssS'image' p7005 (dp7006 S'mandatory' p7007 (dp7008 S'editable' p7009 I00 sS'value' p7010 I00 ssS'name' p7011 (dp7012 S'editable' p7013 I01 sS'value' p7014 S'Thumbnail' p7015 ssS'data_type' p7016 (dp7017 S'editable' p7018 I00 sS'value' p7019 S'image' p7020 ssS'entity_type' p7021 (dp7022 S'editable' p7023 I00 sS'value' p7024 S'Department' p7025 ssS'editable' p7026 (dp7027 S'editable' p7028 I00 sS'value' p7029 I01 ssS'unique' p7030 (dp7031 S'editable' p7032 I00 sS'value' p7033 I00 ssS'properties' p7034 (dp7035 S'default_value' p7036 (dp7037 S'editable' p7038 I00 sS'value' p7039 NssS'summary_default' p7040 (dp7041 S'editable' p7042 I01 sS'value' p7043 S'none' p7044 sssS'description' p7045 (dp7046 S'editable' p7047 I01 sS'value' p7048 g47 sssS'updated_by' p7049 (dp7050 S'mandatory' p7051 (dp7052 S'editable' p7053 I00 sS'value' p7054 I00 ssS'name' p7055 (dp7056 S'editable' p7057 I01 sS'value' p7058 S'Updated by' p7059 ssS'data_type' p7060 (dp7061 S'editable' p7062 I00 sS'value' p7063 S'entity' p7064 ssS'entity_type' p7065 (dp7066 S'editable' p7067 I00 sS'value' p7068 S'Department' p7069 ssS'editable' p7070 (dp7071 S'editable' p7072 I00 sS'value' p7073 I00 ssS'unique' p7074 (dp7075 S'editable' p7076 I00 sS'value' p7077 I00 ssS'properties' p7078 (dp7079 S'default_value' p7080 (dp7081 S'editable' p7082 I00 sS'value' p7083 NssS'summary_default' p7084 (dp7085 S'editable' p7086 I01 sS'value' p7087 S'none' p7088 ssS'valid_types' p7089 (dp7090 S'editable' p7091 I01 sS'value' p7092 (lp7093 S'HumanUser' p7094 aS'ApiUser' p7095 asssS'description' p7096 (dp7097 S'editable' p7098 I01 sS'value' p7099 g47 sssS'notes' p7100 (dp7101 S'mandatory' p7102 (dp7103 S'editable' p7104 I00 sS'value' p7105 I00 ssS'name' p7106 (dp7107 S'editable' p7108 I01 sS'value' p7109 S'Notes' p7110 ssS'data_type' p7111 (dp7112 S'editable' p7113 I00 sS'value' p7114 S'multi_entity' p7115 ssS'entity_type' p7116 (dp7117 S'editable' p7118 I00 sS'value' p7119 S'Department' p7120 ssS'editable' p7121 (dp7122 S'editable' p7123 I00 sS'value' p7124 I01 ssS'unique' p7125 (dp7126 S'editable' p7127 I00 sS'value' p7128 I00 ssS'properties' p7129 (dp7130 S'default_value' p7131 (dp7132 S'editable' p7133 I00 sS'value' p7134 NssS'summary_default' p7135 (dp7136 S'editable' p7137 I01 sS'value' p7138 S'none' p7139 ssS'valid_types' p7140 (dp7141 S'editable' p7142 I01 sS'value' p7143 (lp7144 S'Note' p7145 asssS'description' p7146 (dp7147 S'editable' p7148 I01 sS'value' p7149 g47 sssS'cached_display_name' p7150 (dp7151 S'mandatory' p7152 (dp7153 S'editable' p7154 I00 sS'value' p7155 I00 ssS'name' p7156 (dp7157 S'editable' p7158 I01 sS'value' p7159 S'Cached Display Name' p7160 ssS'data_type' p7161 (dp7162 S'editable' p7163 I00 sS'value' p7164 S'text' p7165 ssS'entity_type' p7166 (dp7167 S'editable' p7168 I00 sS'value' p7169 S'Department' p7170 ssS'editable' p7171 (dp7172 S'editable' p7173 I00 sS'value' p7174 I01 ssS'unique' p7175 (dp7176 S'editable' p7177 I00 sS'value' p7178 I00 ssS'properties' p7179 (dp7180 S'default_value' p7181 (dp7182 S'editable' p7183 I00 sS'value' p7184 NssS'summary_default' p7185 (dp7186 S'editable' p7187 I00 sS'value' p7188 S'none' p7189 sssS'description' p7190 (dp7191 S'editable' p7192 I01 sS'value' p7193 g47 sssS'tag_list' p7194 (dp7195 S'mandatory' p7196 (dp7197 S'editable' p7198 I00 sS'value' p7199 I00 ssS'name' p7200 (dp7201 S'editable' p7202 I01 sS'value' p7203 S'Tags' p7204 ssS'data_type' p7205 (dp7206 S'editable' p7207 I00 sS'value' p7208 S'tag_list' p7209 ssS'entity_type' p7210 (dp7211 S'editable' p7212 I00 sS'value' p7213 S'Department' p7214 ssS'editable' p7215 (dp7216 S'editable' p7217 I00 sS'value' p7218 I01 ssS'unique' p7219 (dp7220 S'editable' p7221 I00 sS'value' p7222 I00 ssS'properties' p7223 (dp7224 S'default_value' p7225 (dp7226 S'editable' p7227 I00 sS'value' p7228 NssS'summary_default' p7229 (dp7230 S'editable' p7231 I01 sS'value' p7232 S'none' p7233 ssS'valid_types' p7234 (dp7235 S'editable' p7236 I01 sS'value' p7237 (lp7238 S'Tag' p7239 asssS'description' p7240 (dp7241 S'editable' p7242 I01 sS'value' p7243 g47 sssS'id' p7244 (dp7245 S'mandatory' p7246 (dp7247 S'editable' p7248 I00 sS'value' p7249 I00 ssS'name' p7250 (dp7251 S'editable' p7252 I01 sS'value' p7253 S'Id' p7254 ssS'data_type' p7255 (dp7256 S'editable' p7257 I00 sS'value' p7258 S'number' p7259 ssS'entity_type' p7260 (dp7261 S'editable' p7262 I00 sS'value' p7263 S'Department' p7264 ssS'editable' p7265 (dp7266 S'editable' p7267 I00 sS'value' p7268 I00 ssS'unique' p7269 (dp7270 S'editable' p7271 I00 sS'value' p7272 I00 ssS'properties' p7273 (dp7274 S'default_value' p7275 (dp7276 S'editable' p7277 I00 sS'value' p7278 NssS'summary_default' p7279 (dp7280 S'editable' p7281 I01 sS'value' p7282 S'none' p7283 sssS'description' p7284 (dp7285 S'editable' p7286 I01 sS'value' p7287 g47 sssS'name' p7288 (dp7289 S'mandatory' p7290 (dp7291 S'editable' p7292 I00 sS'value' p7293 I01 ssS'name' p7294 (dp7295 S'editable' p7296 I01 sS'value' p7297 S'Department Name' p7298 ssS'data_type' p7299 (dp7300 S'editable' p7301 I00 sS'value' p7302 S'text' p7303 ssS'entity_type' p7304 (dp7305 S'editable' p7306 I00 sS'value' p7307 S'Department' p7308 ssS'editable' p7309 (dp7310 S'editable' p7311 I00 sS'value' p7312 I01 ssS'unique' p7313 (dp7314 S'editable' p7315 I00 sS'value' p7316 I00 ssS'properties' p7317 (dp7318 S'default_value' p7319 (dp7320 S'editable' p7321 I00 sS'value' p7322 NssS'summary_default' p7323 (dp7324 S'editable' p7325 I01 sS'value' p7326 S'none' p7327 sssS'description' p7328 (dp7329 S'editable' p7330 I01 sS'value' p7331 g47 ssssS'AssetSceneConnection' p7332 (dp7333 S'id' p7334 (dp7335 S'mandatory' p7336 (dp7337 S'editable' p7338 I00 sS'value' p7339 I01 ssS'name' p7340 (dp7341 S'editable' p7342 I01 sS'value' p7343 S'Id' p7344 ssS'data_type' p7345 (dp7346 S'editable' p7347 I00 sS'value' p7348 S'number' p7349 ssS'entity_type' p7350 (dp7351 S'editable' p7352 I00 sS'value' p7353 S'AssetSceneConnection' p7354 ssS'editable' p7355 (dp7356 S'editable' p7357 I00 sS'value' p7358 I00 ssS'unique' p7359 (dp7360 S'editable' p7361 I00 sS'value' p7362 I00 ssS'properties' p7363 (dp7364 S'default_value' p7365 (dp7366 S'editable' p7367 I00 sS'value' p7368 NssS'summary_default' p7369 (dp7370 S'editable' p7371 I00 sS'value' p7372 S'none' p7373 sssS'description' p7374 (dp7375 S'editable' p7376 I01 sS'value' p7377 g47 sssS'cached_display_name' p7378 (dp7379 S'mandatory' p7380 (dp7381 S'editable' p7382 I00 sS'value' p7383 I00 ssS'name' p7384 (dp7385 S'editable' p7386 I01 sS'value' p7387 S'Cached Display Name' p7388 ssS'data_type' p7389 (dp7390 S'editable' p7391 I00 sS'value' p7392 S'text' p7393 ssS'entity_type' p7394 (dp7395 S'editable' p7396 I00 sS'value' p7397 S'AssetSceneConnection' p7398 ssS'editable' p7399 (dp7400 S'editable' p7401 I00 sS'value' p7402 I01 ssS'unique' p7403 (dp7404 S'editable' p7405 I00 sS'value' p7406 I00 ssS'properties' p7407 (dp7408 S'default_value' p7409 (dp7410 S'editable' p7411 I00 sS'value' p7412 NssS'summary_default' p7413 (dp7414 S'editable' p7415 I00 sS'value' p7416 S'none' p7417 sssS'description' p7418 (dp7419 S'editable' p7420 I01 sS'value' p7421 g47 sssS'asset' p7422 (dp7423 S'mandatory' p7424 (dp7425 S'editable' p7426 I00 sS'value' p7427 I00 ssS'name' p7428 (dp7429 S'editable' p7430 I01 sS'value' p7431 S'Asset' p7432 ssS'data_type' p7433 (dp7434 S'editable' p7435 I00 sS'value' p7436 S'entity' p7437 ssS'entity_type' p7438 (dp7439 S'editable' p7440 I00 sS'value' p7441 S'AssetSceneConnection' p7442 ssS'editable' p7443 (dp7444 S'editable' p7445 I00 sS'value' p7446 I00 ssS'unique' p7447 (dp7448 S'editable' p7449 I00 sS'value' p7450 I00 ssS'properties' p7451 (dp7452 S'default_value' p7453 (dp7454 S'editable' p7455 I00 sS'value' p7456 NssS'summary_default' p7457 (dp7458 S'editable' p7459 I00 sS'value' p7460 S'none' p7461 ssS'valid_types' p7462 (dp7463 S'editable' p7464 I00 sS'value' p7465 (lp7466 S'Asset' p7467 asssS'description' p7468 (dp7469 S'editable' p7470 I01 sS'value' p7471 g47 sssS'scene' p7472 (dp7473 S'mandatory' p7474 (dp7475 S'editable' p7476 I00 sS'value' p7477 I00 ssS'name' p7478 (dp7479 S'editable' p7480 I01 sS'value' p7481 S'Scene' p7482 ssS'data_type' p7483 (dp7484 S'editable' p7485 I00 sS'value' p7486 S'entity' p7487 ssS'entity_type' p7488 (dp7489 S'editable' p7490 I00 sS'value' p7491 S'AssetSceneConnection' p7492 ssS'editable' p7493 (dp7494 S'editable' p7495 I00 sS'value' p7496 I00 ssS'unique' p7497 (dp7498 S'editable' p7499 I00 sS'value' p7500 I00 ssS'properties' p7501 (dp7502 S'default_value' p7503 (dp7504 S'editable' p7505 I00 sS'value' p7506 NssS'summary_default' p7507 (dp7508 S'editable' p7509 I00 sS'value' p7510 S'none' p7511 ssS'valid_types' p7512 (dp7513 S'editable' p7514 I00 sS'value' p7515 (lp7516 S'Scene' p7517 asssS'description' p7518 (dp7519 S'editable' p7520 I01 sS'value' p7521 g47 ssssS'CameraMocapTakeConnection' p7522 (dp7523 S'mocap_take' p7524 (dp7525 S'mandatory' p7526 (dp7527 S'editable' p7528 I00 sS'value' p7529 I00 ssS'name' p7530 (dp7531 S'editable' p7532 I01 sS'value' p7533 S'Mocap Take' p7534 ssS'data_type' p7535 (dp7536 S'editable' p7537 I00 sS'value' p7538 S'entity' p7539 ssS'entity_type' p7540 (dp7541 S'editable' p7542 I00 sS'value' p7543 S'CameraMocapTakeConnection' p7544 ssS'editable' p7545 (dp7546 S'editable' p7547 I00 sS'value' p7548 I00 ssS'unique' p7549 (dp7550 S'editable' p7551 I00 sS'value' p7552 I00 ssS'properties' p7553 (dp7554 S'default_value' p7555 (dp7556 S'editable' p7557 I00 sS'value' p7558 NssS'summary_default' p7559 (dp7560 S'editable' p7561 I00 sS'value' p7562 S'none' p7563 ssS'valid_types' p7564 (dp7565 S'editable' p7566 I00 sS'value' p7567 (lp7568 S'MocapTake' p7569 asssS'description' p7570 (dp7571 S'editable' p7572 I01 sS'value' p7573 g47 sssS'cached_display_name' p7574 (dp7575 S'mandatory' p7576 (dp7577 S'editable' p7578 I00 sS'value' p7579 I00 ssS'name' p7580 (dp7581 S'editable' p7582 I01 sS'value' p7583 S'Cached Display Name' p7584 ssS'data_type' p7585 (dp7586 S'editable' p7587 I00 sS'value' p7588 S'text' p7589 ssS'entity_type' p7590 (dp7591 S'editable' p7592 I00 sS'value' p7593 S'CameraMocapTakeConnection' p7594 ssS'editable' p7595 (dp7596 S'editable' p7597 I00 sS'value' p7598 I01 ssS'unique' p7599 (dp7600 S'editable' p7601 I00 sS'value' p7602 I00 ssS'properties' p7603 (dp7604 S'default_value' p7605 (dp7606 S'editable' p7607 I00 sS'value' p7608 NssS'summary_default' p7609 (dp7610 S'editable' p7611 I00 sS'value' p7612 S'none' p7613 sssS'description' p7614 (dp7615 S'editable' p7616 I01 sS'value' p7617 g47 sssS'camera' p7618 (dp7619 S'mandatory' p7620 (dp7621 S'editable' p7622 I00 sS'value' p7623 I00 ssS'name' p7624 (dp7625 S'editable' p7626 I01 sS'value' p7627 S'Camera' p7628 ssS'data_type' p7629 (dp7630 S'editable' p7631 I00 sS'value' p7632 S'entity' p7633 ssS'entity_type' p7634 (dp7635 S'editable' p7636 I00 sS'value' p7637 S'CameraMocapTakeConnection' p7638 ssS'editable' p7639 (dp7640 S'editable' p7641 I00 sS'value' p7642 I00 ssS'unique' p7643 (dp7644 S'editable' p7645 I00 sS'value' p7646 I00 ssS'properties' p7647 (dp7648 S'default_value' p7649 (dp7650 S'editable' p7651 I00 sS'value' p7652 NssS'summary_default' p7653 (dp7654 S'editable' p7655 I00 sS'value' p7656 S'none' p7657 ssS'valid_types' p7658 (dp7659 S'editable' p7660 I00 sS'value' p7661 (lp7662 S'Camera' p7663 asssS'description' p7664 (dp7665 S'editable' p7666 I01 sS'value' p7667 g47 sssS'id' p7668 (dp7669 S'mandatory' p7670 (dp7671 S'editable' p7672 I00 sS'value' p7673 I01 ssS'name' p7674 (dp7675 S'editable' p7676 I01 sS'value' p7677 S'Id' p7678 ssS'data_type' p7679 (dp7680 S'editable' p7681 I00 sS'value' p7682 S'number' p7683 ssS'entity_type' p7684 (dp7685 S'editable' p7686 I00 sS'value' p7687 S'CameraMocapTakeConnection' p7688 ssS'editable' p7689 (dp7690 S'editable' p7691 I00 sS'value' p7692 I00 ssS'unique' p7693 (dp7694 S'editable' p7695 I00 sS'value' p7696 I00 ssS'properties' p7697 (dp7698 S'default_value' p7699 (dp7700 S'editable' p7701 I00 sS'value' p7702 NssS'summary_default' p7703 (dp7704 S'editable' p7705 I00 sS'value' p7706 S'none' p7707 sssS'description' p7708 (dp7709 S'editable' p7710 I01 sS'value' p7711 g47 ssssS'Booking' p7712 (dp7713 S'project' p7714 (dp7715 S'mandatory' p7716 (dp7717 S'editable' p7718 I00 sS'value' p7719 I00 ssS'name' p7720 (dp7721 S'editable' p7722 I01 sS'value' p7723 S'Project' p7724 ssS'data_type' p7725 (dp7726 S'editable' p7727 I00 sS'value' p7728 S'entity' p7729 ssS'entity_type' p7730 (dp7731 S'editable' p7732 I00 sS'value' p7733 S'Booking' p7734 ssS'editable' p7735 (dp7736 S'editable' p7737 I00 sS'value' p7738 I01 ssS'unique' p7739 (dp7740 S'editable' p7741 I00 sS'value' p7742 I00 ssS'properties' p7743 (dp7744 S'default_value' p7745 (dp7746 S'editable' p7747 I00 sS'value' p7748 NssS'summary_default' p7749 (dp7750 S'editable' p7751 I01 sS'value' p7752 S'none' p7753 ssS'valid_types' p7754 (dp7755 S'editable' p7756 I01 sS'value' p7757 (lp7758 S'Project' p7759 asssS'description' p7760 (dp7761 S'editable' p7762 I01 sS'value' p7763 g47 sssS'open_notes_count' p7764 (dp7765 S'mandatory' p7766 (dp7767 S'editable' p7768 I00 sS'value' p7769 I00 ssS'name' p7770 (dp7771 S'editable' p7772 I01 sS'value' p7773 S'Open Notes Count' p7774 ssS'data_type' p7775 (dp7776 S'editable' p7777 I00 sS'value' p7778 S'text' p7779 ssS'entity_type' p7780 (dp7781 S'editable' p7782 I00 sS'value' p7783 S'Booking' p7784 ssS'editable' p7785 (dp7786 S'editable' p7787 I00 sS'value' p7788 I00 ssS'unique' p7789 (dp7790 S'editable' p7791 I00 sS'value' p7792 I00 ssS'properties' p7793 (dp7794 S'default_value' p7795 (dp7796 S'editable' p7797 I00 sS'value' p7798 NssS'summary_default' p7799 (dp7800 S'editable' p7801 I01 sS'value' p7802 S'none' p7803 sssS'description' p7804 (dp7805 S'editable' p7806 I01 sS'value' p7807 g47 sssS'open_notes' p7808 (dp7809 S'mandatory' p7810 (dp7811 S'editable' p7812 I00 sS'value' p7813 I00 ssS'name' p7814 (dp7815 S'editable' p7816 I01 sS'value' p7817 S'Open Notes' p7818 ssS'data_type' p7819 (dp7820 S'editable' p7821 I00 sS'value' p7822 S'multi_entity' p7823 ssS'entity_type' p7824 (dp7825 S'editable' p7826 I00 sS'value' p7827 S'Booking' p7828 ssS'editable' p7829 (dp7830 S'editable' p7831 I00 sS'value' p7832 I00 ssS'unique' p7833 (dp7834 S'editable' p7835 I00 sS'value' p7836 I00 ssS'properties' p7837 (dp7838 S'default_value' p7839 (dp7840 S'editable' p7841 I00 sS'value' p7842 NssS'summary_default' p7843 (dp7844 S'editable' p7845 I01 sS'value' p7846 S'none' p7847 ssS'valid_types' p7848 (dp7849 S'editable' p7850 I01 sS'value' p7851 (lp7852 S'Note' p7853 asssS'description' p7854 (dp7855 S'editable' p7856 I01 sS'value' p7857 g47 sssS'updated_by' p7858 (dp7859 S'mandatory' p7860 (dp7861 S'editable' p7862 I00 sS'value' p7863 I00 ssS'name' p7864 (dp7865 S'editable' p7866 I01 sS'value' p7867 S'Updated by' p7868 ssS'data_type' p7869 (dp7870 S'editable' p7871 I00 sS'value' p7872 S'entity' p7873 ssS'entity_type' p7874 (dp7875 S'editable' p7876 I00 sS'value' p7877 S'Booking' p7878 ssS'editable' p7879 (dp7880 S'editable' p7881 I00 sS'value' p7882 I00 ssS'unique' p7883 (dp7884 S'editable' p7885 I00 sS'value' p7886 I00 ssS'properties' p7887 (dp7888 S'default_value' p7889 (dp7890 S'editable' p7891 I00 sS'value' p7892 NssS'summary_default' p7893 (dp7894 S'editable' p7895 I01 sS'value' p7896 S'none' p7897 ssS'valid_types' p7898 (dp7899 S'editable' p7900 I01 sS'value' p7901 (lp7902 S'HumanUser' p7903 aS'ApiUser' p7904 asssS'description' p7905 (dp7906 S'editable' p7907 I01 sS'value' p7908 g47 sssS'end_date' p7909 (dp7910 S'mandatory' p7911 (dp7912 S'editable' p7913 I00 sS'value' p7914 I00 ssS'name' p7915 (dp7916 S'editable' p7917 I01 sS'value' p7918 S'End Date' p7919 ssS'data_type' p7920 (dp7921 S'editable' p7922 I00 sS'value' p7923 S'date' p7924 ssS'entity_type' p7925 (dp7926 S'editable' p7927 I00 sS'value' p7928 S'Booking' p7929 ssS'editable' p7930 (dp7931 S'editable' p7932 I00 sS'value' p7933 I01 ssS'unique' p7934 (dp7935 S'editable' p7936 I00 sS'value' p7937 I00 ssS'properties' p7938 (dp7939 S'default_value' p7940 (dp7941 S'editable' p7942 I00 sS'value' p7943 NssS'summary_default' p7944 (dp7945 S'editable' p7946 I01 sS'value' p7947 S'none' p7948 sssS'description' p7949 (dp7950 S'editable' p7951 I01 sS'value' p7952 g47 sssS'created_at' p7953 (dp7954 S'mandatory' p7955 (dp7956 S'editable' p7957 I00 sS'value' p7958 I00 ssS'name' p7959 (dp7960 S'editable' p7961 I01 sS'value' p7962 S'Date Created' p7963 ssS'data_type' p7964 (dp7965 S'editable' p7966 I00 sS'value' p7967 S'date_time' p7968 ssS'entity_type' p7969 (dp7970 S'editable' p7971 I00 sS'value' p7972 S'Booking' p7973 ssS'editable' p7974 (dp7975 S'editable' p7976 I00 sS'value' p7977 I00 ssS'unique' p7978 (dp7979 S'editable' p7980 I00 sS'value' p7981 I00 ssS'properties' p7982 (dp7983 S'default_value' p7984 (dp7985 S'editable' p7986 I00 sS'value' p7987 NssS'summary_default' p7988 (dp7989 S'editable' p7990 I01 sS'value' p7991 S'none' p7992 sssS'description' p7993 (dp7994 S'editable' p7995 I01 sS'value' p7996 g47 sssS'notes' p7997 (dp7998 S'mandatory' p7999 (dp8000 S'editable' p8001 I00 sS'value' p8002 I00 ssS'name' p8003 (dp8004 S'editable' p8005 I01 sS'value' p8006 S'Notes' p8007 ssS'data_type' p8008 (dp8009 S'editable' p8010 I00 sS'value' p8011 S'multi_entity' p8012 ssS'entity_type' p8013 (dp8014 S'editable' p8015 I00 sS'value' p8016 S'Booking' p8017 ssS'editable' p8018 (dp8019 S'editable' p8020 I00 sS'value' p8021 I01 ssS'unique' p8022 (dp8023 S'editable' p8024 I00 sS'value' p8025 I00 ssS'properties' p8026 (dp8027 S'default_value' p8028 (dp8029 S'editable' p8030 I00 sS'value' p8031 NssS'summary_default' p8032 (dp8033 S'editable' p8034 I01 sS'value' p8035 S'none' p8036 ssS'valid_types' p8037 (dp8038 S'editable' p8039 I01 sS'value' p8040 (lp8041 S'Note' p8042 asssS'description' p8043 (dp8044 S'editable' p8045 I01 sS'value' p8046 g47 sssS'vacation' p8047 (dp8048 S'mandatory' p8049 (dp8050 S'editable' p8051 I00 sS'value' p8052 I00 ssS'name' p8053 (dp8054 S'editable' p8055 I01 sS'value' p8056 S'Vacation' p8057 ssS'data_type' p8058 (dp8059 S'editable' p8060 I00 sS'value' p8061 S'checkbox' p8062 ssS'entity_type' p8063 (dp8064 S'editable' p8065 I00 sS'value' p8066 S'Booking' p8067 ssS'editable' p8068 (dp8069 S'editable' p8070 I00 sS'value' p8071 I01 ssS'unique' p8072 (dp8073 S'editable' p8074 I00 sS'value' p8075 I00 ssS'properties' p8076 (dp8077 S'default_value' p8078 (dp8079 S'editable' p8080 I00 sS'value' p8081 NssS'summary_default' p8082 (dp8083 S'editable' p8084 I01 sS'value' p8085 S'none' p8086 sssS'description' p8087 (dp8088 S'editable' p8089 I01 sS'value' p8090 g47 sssS'created_by' p8091 (dp8092 S'mandatory' p8093 (dp8094 S'editable' p8095 I00 sS'value' p8096 I00 ssS'name' p8097 (dp8098 S'editable' p8099 I01 sS'value' p8100 S'Created by' p8101 ssS'data_type' p8102 (dp8103 S'editable' p8104 I00 sS'value' p8105 S'entity' p8106 ssS'entity_type' p8107 (dp8108 S'editable' p8109 I00 sS'value' p8110 S'Booking' p8111 ssS'editable' p8112 (dp8113 S'editable' p8114 I00 sS'value' p8115 I00 ssS'unique' p8116 (dp8117 S'editable' p8118 I00 sS'value' p8119 I00 ssS'properties' p8120 (dp8121 S'default_value' p8122 (dp8123 S'editable' p8124 I00 sS'value' p8125 NssS'summary_default' p8126 (dp8127 S'editable' p8128 I01 sS'value' p8129 S'none' p8130 ssS'valid_types' p8131 (dp8132 S'editable' p8133 I01 sS'value' p8134 (lp8135 S'HumanUser' p8136 aS'ApiUser' p8137 asssS'description' p8138 (dp8139 S'editable' p8140 I01 sS'value' p8141 g47 sssS'updated_at' p8142 (dp8143 S'mandatory' p8144 (dp8145 S'editable' p8146 I00 sS'value' p8147 I00 ssS'name' p8148 (dp8149 S'editable' p8150 I01 sS'value' p8151 S'Date Updated' p8152 ssS'data_type' p8153 (dp8154 S'editable' p8155 I00 sS'value' p8156 S'date_time' p8157 ssS'entity_type' p8158 (dp8159 S'editable' p8160 I00 sS'value' p8161 S'Booking' p8162 ssS'editable' p8163 (dp8164 S'editable' p8165 I00 sS'value' p8166 I00 ssS'unique' p8167 (dp8168 S'editable' p8169 I00 sS'value' p8170 I00 ssS'properties' p8171 (dp8172 S'default_value' p8173 (dp8174 S'editable' p8175 I00 sS'value' p8176 NssS'summary_default' p8177 (dp8178 S'editable' p8179 I01 sS'value' p8180 S'none' p8181 sssS'description' p8182 (dp8183 S'editable' p8184 I01 sS'value' p8185 g47 sssS'note' p8186 (dp8187 S'mandatory' p8188 (dp8189 S'editable' p8190 I00 sS'value' p8191 I00 ssS'name' p8192 (dp8193 S'editable' p8194 I01 sS'value' p8195 S'Note' p8196 ssS'data_type' p8197 (dp8198 S'editable' p8199 I00 sS'value' p8200 S'text' p8201 ssS'entity_type' p8202 (dp8203 S'editable' p8204 I00 sS'value' p8205 S'Booking' p8206 ssS'editable' p8207 (dp8208 S'editable' p8209 I00 sS'value' p8210 I01 ssS'unique' p8211 (dp8212 S'editable' p8213 I00 sS'value' p8214 I00 ssS'properties' p8215 (dp8216 S'default_value' p8217 (dp8218 S'editable' p8219 I00 sS'value' p8220 NssS'summary_default' p8221 (dp8222 S'editable' p8223 I01 sS'value' p8224 S'none' p8225 sssS'description' p8226 (dp8227 S'editable' p8228 I01 sS'value' p8229 g47 sssS'user' p8230 (dp8231 S'mandatory' p8232 (dp8233 S'editable' p8234 I00 sS'value' p8235 I00 ssS'name' p8236 (dp8237 S'editable' p8238 I01 sS'value' p8239 S'Assigned To' p8240 ssS'data_type' p8241 (dp8242 S'editable' p8243 I00 sS'value' p8244 S'entity' p8245 ssS'entity_type' p8246 (dp8247 S'editable' p8248 I00 sS'value' p8249 S'Booking' p8250 ssS'editable' p8251 (dp8252 S'editable' p8253 I00 sS'value' p8254 I01 ssS'unique' p8255 (dp8256 S'editable' p8257 I00 sS'value' p8258 I00 ssS'properties' p8259 (dp8260 S'default_value' p8261 (dp8262 S'editable' p8263 I00 sS'value' p8264 NssS'summary_default' p8265 (dp8266 S'editable' p8267 I01 sS'value' p8268 S'none' p8269 ssS'valid_types' p8270 (dp8271 S'editable' p8272 I01 sS'value' p8273 (lp8274 S'HumanUser' p8275 asssS'description' p8276 (dp8277 S'editable' p8278 I01 sS'value' p8279 g47 sssS'id' p8280 (dp8281 S'mandatory' p8282 (dp8283 S'editable' p8284 I00 sS'value' p8285 I01 ssS'name' p8286 (dp8287 S'editable' p8288 I01 sS'value' p8289 S'Id' p8290 ssS'data_type' p8291 (dp8292 S'editable' p8293 I00 sS'value' p8294 S'number' p8295 ssS'entity_type' p8296 (dp8297 S'editable' p8298 I00 sS'value' p8299 S'Booking' p8300 ssS'editable' p8301 (dp8302 S'editable' p8303 I00 sS'value' p8304 I00 ssS'unique' p8305 (dp8306 S'editable' p8307 I00 sS'value' p8308 I00 ssS'properties' p8309 (dp8310 S'default_value' p8311 (dp8312 S'editable' p8313 I00 sS'value' p8314 NssS'summary_default' p8315 (dp8316 S'editable' p8317 I01 sS'value' p8318 S'none' p8319 sssS'description' p8320 (dp8321 S'editable' p8322 I01 sS'value' p8323 g47 sssS'cached_display_name' p8324 (dp8325 S'mandatory' p8326 (dp8327 S'editable' p8328 I00 sS'value' p8329 I00 ssS'name' p8330 (dp8331 S'editable' p8332 I01 sS'value' p8333 S'Cached Display Name' p8334 ssS'data_type' p8335 (dp8336 S'editable' p8337 I00 sS'value' p8338 S'text' p8339 ssS'entity_type' p8340 (dp8341 S'editable' p8342 I00 sS'value' p8343 S'Booking' p8344 ssS'editable' p8345 (dp8346 S'editable' p8347 I00 sS'value' p8348 I01 ssS'unique' p8349 (dp8350 S'editable' p8351 I00 sS'value' p8352 I00 ssS'properties' p8353 (dp8354 S'default_value' p8355 (dp8356 S'editable' p8357 I00 sS'value' p8358 NssS'summary_default' p8359 (dp8360 S'editable' p8361 I00 sS'value' p8362 S'none' p8363 sssS'description' p8364 (dp8365 S'editable' p8366 I01 sS'value' p8367 g47 sssS'start_date' p8368 (dp8369 S'mandatory' p8370 (dp8371 S'editable' p8372 I00 sS'value' p8373 I00 ssS'name' p8374 (dp8375 S'editable' p8376 I01 sS'value' p8377 S'Start Date' p8378 ssS'data_type' p8379 (dp8380 S'editable' p8381 I00 sS'value' p8382 S'date' p8383 ssS'entity_type' p8384 (dp8385 S'editable' p8386 I00 sS'value' p8387 S'Booking' p8388 ssS'editable' p8389 (dp8390 S'editable' p8391 I00 sS'value' p8392 I01 ssS'unique' p8393 (dp8394 S'editable' p8395 I00 sS'value' p8396 I00 ssS'properties' p8397 (dp8398 S'default_value' p8399 (dp8400 S'editable' p8401 I00 sS'value' p8402 NssS'summary_default' p8403 (dp8404 S'editable' p8405 I01 sS'value' p8406 S'none' p8407 sssS'description' p8408 (dp8409 S'editable' p8410 I01 sS'value' p8411 g47 ssssS'CutVersionConnection' p8412 (dp8413 S'sg_cut_in' p8414 (dp8415 S'mandatory' p8416 (dp8417 S'editable' p8418 I00 sS'value' p8419 I00 ssS'name' p8420 (dp8421 S'editable' p8422 I01 sS'value' p8423 S'Cut In' p8424 ssS'data_type' p8425 (dp8426 S'editable' p8427 I00 sS'value' p8428 S'number' p8429 ssS'entity_type' p8430 (dp8431 S'editable' p8432 I00 sS'value' p8433 S'CutVersionConnection' p8434 ssS'editable' p8435 (dp8436 S'editable' p8437 I00 sS'value' p8438 I01 ssS'unique' p8439 (dp8440 S'editable' p8441 I00 sS'value' p8442 I00 ssS'properties' p8443 (dp8444 S'default_value' p8445 (dp8446 S'editable' p8447 I00 sS'value' p8448 NssS'summary_default' p8449 (dp8450 S'editable' p8451 I01 sS'value' p8452 S'none' p8453 sssS'description' p8454 (dp8455 S'editable' p8456 I01 sS'value' p8457 g47 sssS'cut' p8458 (dp8459 S'mandatory' p8460 (dp8461 S'editable' p8462 I00 sS'value' p8463 I00 ssS'name' p8464 (dp8465 S'editable' p8466 I01 sS'value' p8467 S'Cut' p8468 ssS'data_type' p8469 (dp8470 S'editable' p8471 I00 sS'value' p8472 S'entity' p8473 ssS'entity_type' p8474 (dp8475 S'editable' p8476 I00 sS'value' p8477 S'CutVersionConnection' p8478 ssS'editable' p8479 (dp8480 S'editable' p8481 I00 sS'value' p8482 I00 ssS'unique' p8483 (dp8484 S'editable' p8485 I00 sS'value' p8486 I00 ssS'properties' p8487 (dp8488 S'default_value' p8489 (dp8490 S'editable' p8491 I00 sS'value' p8492 NssS'summary_default' p8493 (dp8494 S'editable' p8495 I00 sS'value' p8496 S'none' p8497 ssS'valid_types' p8498 (dp8499 S'editable' p8500 I00 sS'value' p8501 (lp8502 S'Cut' p8503 asssS'description' p8504 (dp8505 S'editable' p8506 I01 sS'value' p8507 g47 sssS'sg_cut_out' p8508 (dp8509 S'mandatory' p8510 (dp8511 S'editable' p8512 I00 sS'value' p8513 I00 ssS'name' p8514 (dp8515 S'editable' p8516 I01 sS'value' p8517 S'Cut Out' p8518 ssS'data_type' p8519 (dp8520 S'editable' p8521 I00 sS'value' p8522 S'number' p8523 ssS'entity_type' p8524 (dp8525 S'editable' p8526 I00 sS'value' p8527 S'CutVersionConnection' p8528 ssS'editable' p8529 (dp8530 S'editable' p8531 I00 sS'value' p8532 I01 ssS'unique' p8533 (dp8534 S'editable' p8535 I00 sS'value' p8536 I00 ssS'properties' p8537 (dp8538 S'default_value' p8539 (dp8540 S'editable' p8541 I00 sS'value' p8542 NssS'summary_default' p8543 (dp8544 S'editable' p8545 I01 sS'value' p8546 S'none' p8547 sssS'description' p8548 (dp8549 S'editable' p8550 I01 sS'value' p8551 g47 sssS'sg_cut_order' p8552 (dp8553 S'mandatory' p8554 (dp8555 S'editable' p8556 I00 sS'value' p8557 I00 ssS'name' p8558 (dp8559 S'editable' p8560 I01 sS'value' p8561 S'Cut Order' p8562 ssS'data_type' p8563 (dp8564 S'editable' p8565 I00 sS'value' p8566 S'number' p8567 ssS'entity_type' p8568 (dp8569 S'editable' p8570 I00 sS'value' p8571 S'CutVersionConnection' p8572 ssS'editable' p8573 (dp8574 S'editable' p8575 I00 sS'value' p8576 I01 ssS'unique' p8577 (dp8578 S'editable' p8579 I00 sS'value' p8580 I00 ssS'properties' p8581 (dp8582 S'default_value' p8583 (dp8584 S'editable' p8585 I00 sS'value' p8586 NssS'summary_default' p8587 (dp8588 S'editable' p8589 I01 sS'value' p8590 S'none' p8591 sssS'description' p8592 (dp8593 S'editable' p8594 I01 sS'value' p8595 g47 sssS'version' p8596 (dp8597 S'mandatory' p8598 (dp8599 S'editable' p8600 I00 sS'value' p8601 I00 ssS'name' p8602 (dp8603 S'editable' p8604 I01 sS'value' p8605 S'Version' p8606 ssS'data_type' p8607 (dp8608 S'editable' p8609 I00 sS'value' p8610 S'entity' p8611 ssS'entity_type' p8612 (dp8613 S'editable' p8614 I00 sS'value' p8615 S'CutVersionConnection' p8616 ssS'editable' p8617 (dp8618 S'editable' p8619 I00 sS'value' p8620 I00 ssS'unique' p8621 (dp8622 S'editable' p8623 I00 sS'value' p8624 I00 ssS'properties' p8625 (dp8626 S'default_value' p8627 (dp8628 S'editable' p8629 I00 sS'value' p8630 NssS'summary_default' p8631 (dp8632 S'editable' p8633 I00 sS'value' p8634 S'none' p8635 ssS'valid_types' p8636 (dp8637 S'editable' p8638 I00 sS'value' p8639 (lp8640 S'Version' p8641 asssS'description' p8642 (dp8643 S'editable' p8644 I01 sS'value' p8645 g47 sssS'sg_cut_duration' p8646 (dp8647 S'mandatory' p8648 (dp8649 S'editable' p8650 I00 sS'value' p8651 I00 ssS'name' p8652 (dp8653 S'editable' p8654 I01 sS'value' p8655 S'Cut Duration' p8656 ssS'data_type' p8657 (dp8658 S'editable' p8659 I00 sS'value' p8660 S'number' p8661 ssS'entity_type' p8662 (dp8663 S'editable' p8664 I00 sS'value' p8665 S'CutVersionConnection' p8666 ssS'editable' p8667 (dp8668 S'editable' p8669 I00 sS'value' p8670 I01 ssS'unique' p8671 (dp8672 S'editable' p8673 I00 sS'value' p8674 I00 ssS'properties' p8675 (dp8676 S'default_value' p8677 (dp8678 S'editable' p8679 I00 sS'value' p8680 NssS'summary_default' p8681 (dp8682 S'editable' p8683 I01 sS'value' p8684 S'none' p8685 sssS'description' p8686 (dp8687 S'editable' p8688 I01 sS'value' p8689 g47 sssS'cached_display_name' p8690 (dp8691 S'mandatory' p8692 (dp8693 S'editable' p8694 I00 sS'value' p8695 I00 ssS'name' p8696 (dp8697 S'editable' p8698 I01 sS'value' p8699 S'Cached Display Name' p8700 ssS'data_type' p8701 (dp8702 S'editable' p8703 I00 sS'value' p8704 S'text' p8705 ssS'entity_type' p8706 (dp8707 S'editable' p8708 I00 sS'value' p8709 S'CutVersionConnection' p8710 ssS'editable' p8711 (dp8712 S'editable' p8713 I00 sS'value' p8714 I01 ssS'unique' p8715 (dp8716 S'editable' p8717 I00 sS'value' p8718 I00 ssS'properties' p8719 (dp8720 S'default_value' p8721 (dp8722 S'editable' p8723 I00 sS'value' p8724 NssS'summary_default' p8725 (dp8726 S'editable' p8727 I00 sS'value' p8728 S'none' p8729 sssS'description' p8730 (dp8731 S'editable' p8732 I01 sS'value' p8733 g47 sssS'id' p8734 (dp8735 S'mandatory' p8736 (dp8737 S'editable' p8738 I00 sS'value' p8739 I01 ssS'name' p8740 (dp8741 S'editable' p8742 I01 sS'value' p8743 S'Id' p8744 ssS'data_type' p8745 (dp8746 S'editable' p8747 I00 sS'value' p8748 S'number' p8749 ssS'entity_type' p8750 (dp8751 S'editable' p8752 I00 sS'value' p8753 S'CutVersionConnection' p8754 ssS'editable' p8755 (dp8756 S'editable' p8757 I00 sS'value' p8758 I00 ssS'unique' p8759 (dp8760 S'editable' p8761 I00 sS'value' p8762 I00 ssS'properties' p8763 (dp8764 S'default_value' p8765 (dp8766 S'editable' p8767 I00 sS'value' p8768 NssS'summary_default' p8769 (dp8770 S'editable' p8771 I00 sS'value' p8772 S'none' p8773 sssS'description' p8774 (dp8775 S'editable' p8776 I01 sS'value' p8777 g47 sssS'sg_cut_comments' p8778 (dp8779 S'mandatory' p8780 (dp8781 S'editable' p8782 I00 sS'value' p8783 I00 ssS'name' p8784 (dp8785 S'editable' p8786 I01 sS'value' p8787 S'Cut Comments' p8788 ssS'data_type' p8789 (dp8790 S'editable' p8791 I00 sS'value' p8792 S'text' p8793 ssS'entity_type' p8794 (dp8795 S'editable' p8796 I00 sS'value' p8797 S'CutVersionConnection' p8798 ssS'editable' p8799 (dp8800 S'editable' p8801 I00 sS'value' p8802 I01 ssS'unique' p8803 (dp8804 S'editable' p8805 I00 sS'value' p8806 I00 ssS'properties' p8807 (dp8808 S'default_value' p8809 (dp8810 S'editable' p8811 I00 sS'value' p8812 NssS'summary_default' p8813 (dp8814 S'editable' p8815 I01 sS'value' p8816 S'none' p8817 sssS'description' p8818 (dp8819 S'editable' p8820 I01 sS'value' p8821 g47 ssssS'TimeLog' p8822 (dp8823 S'description' p8824 (dp8825 S'mandatory' p8826 (dp8827 S'editable' p8828 I00 sS'value' p8829 I00 ssS'name' p8830 (dp8831 S'editable' p8832 I01 sS'value' p8833 S'Description' p8834 ssS'data_type' p8835 (dp8836 S'editable' p8837 I00 sS'value' p8838 S'text' p8839 ssS'entity_type' p8840 (dp8841 S'editable' p8842 I00 sS'value' p8843 S'TimeLog' p8844 ssS'editable' p8845 (dp8846 S'editable' p8847 I00 sS'value' p8848 I01 ssS'unique' p8849 (dp8850 S'editable' p8851 I00 sS'value' p8852 I00 ssS'properties' p8853 (dp8854 S'default_value' p8855 (dp8856 S'editable' p8857 I00 sS'value' p8858 NssS'summary_default' p8859 (dp8860 S'editable' p8861 I01 sS'value' p8862 S'none' p8863 sssS'description' p8864 (dp8865 S'editable' p8866 I01 sS'value' p8867 g47 sssS'created_at' p8868 (dp8869 S'mandatory' p8870 (dp8871 S'editable' p8872 I00 sS'value' p8873 I00 ssS'name' p8874 (dp8875 S'editable' p8876 I01 sS'value' p8877 S'Date Created' p8878 ssS'data_type' p8879 (dp8880 S'editable' p8881 I00 sS'value' p8882 S'date_time' p8883 ssS'entity_type' p8884 (dp8885 S'editable' p8886 I00 sS'value' p8887 S'TimeLog' p8888 ssS'editable' p8889 (dp8890 S'editable' p8891 I00 sS'value' p8892 I00 ssS'unique' p8893 (dp8894 S'editable' p8895 I00 sS'value' p8896 I00 ssS'properties' p8897 (dp8898 S'default_value' p8899 (dp8900 S'editable' p8901 I00 sS'value' p8902 NssS'summary_default' p8903 (dp8904 S'editable' p8905 I01 sS'value' p8906 S'none' p8907 sssS'description' p8908 (dp8909 S'editable' p8910 I01 sS'value' p8911 g47 sssS'updated_at' p8912 (dp8913 S'mandatory' p8914 (dp8915 S'editable' p8916 I00 sS'value' p8917 I00 ssS'name' p8918 (dp8919 S'editable' p8920 I01 sS'value' p8921 S'Date Updated' p8922 ssS'data_type' p8923 (dp8924 S'editable' p8925 I00 sS'value' p8926 S'date_time' p8927 ssS'entity_type' p8928 (dp8929 S'editable' p8930 I00 sS'value' p8931 S'TimeLog' p8932 ssS'editable' p8933 (dp8934 S'editable' p8935 I00 sS'value' p8936 I00 ssS'unique' p8937 (dp8938 S'editable' p8939 I00 sS'value' p8940 I00 ssS'properties' p8941 (dp8942 S'default_value' p8943 (dp8944 S'editable' p8945 I00 sS'value' p8946 NssS'summary_default' p8947 (dp8948 S'editable' p8949 I01 sS'value' p8950 S'none' p8951 sssS'description' p8952 (dp8953 S'editable' p8954 I01 sS'value' p8955 g47 sssS'created_by' p8956 (dp8957 S'mandatory' p8958 (dp8959 S'editable' p8960 I00 sS'value' p8961 I00 ssS'name' p8962 (dp8963 S'editable' p8964 I01 sS'value' p8965 S'Created by' p8966 ssS'data_type' p8967 (dp8968 S'editable' p8969 I00 sS'value' p8970 S'entity' p8971 ssS'entity_type' p8972 (dp8973 S'editable' p8974 I00 sS'value' p8975 S'TimeLog' p8976 ssS'editable' p8977 (dp8978 S'editable' p8979 I00 sS'value' p8980 I00 ssS'unique' p8981 (dp8982 S'editable' p8983 I00 sS'value' p8984 I00 ssS'properties' p8985 (dp8986 S'default_value' p8987 (dp8988 S'editable' p8989 I00 sS'value' p8990 NssS'summary_default' p8991 (dp8992 S'editable' p8993 I01 sS'value' p8994 S'none' p8995 ssS'valid_types' p8996 (dp8997 S'editable' p8998 I01 sS'value' p8999 (lp9000 S'HumanUser' p9001 aS'ApiUser' p9002 asssS'description' p9003 (dp9004 S'editable' p9005 I01 sS'value' p9006 g47 sssS'entity' p9007 (dp9008 S'mandatory' p9009 (dp9010 S'editable' p9011 I00 sS'value' p9012 I00 ssS'name' p9013 (dp9014 S'editable' p9015 I01 sS'value' p9016 S'Link' p9017 ssS'data_type' p9018 (dp9019 S'editable' p9020 I00 sS'value' p9021 S'entity' p9022 ssS'entity_type' p9023 (dp9024 S'editable' p9025 I00 sS'value' p9026 S'TimeLog' p9027 ssS'editable' p9028 (dp9029 S'editable' p9030 I00 sS'value' p9031 I01 ssS'unique' p9032 (dp9033 S'editable' p9034 I00 sS'value' p9035 I00 ssS'properties' p9036 (dp9037 S'default_value' p9038 (dp9039 S'editable' p9040 I00 sS'value' p9041 NssS'summary_default' p9042 (dp9043 S'editable' p9044 I01 sS'value' p9045 S'none' p9046 ssS'valid_types' p9047 (dp9048 S'editable' p9049 I01 sS'value' p9050 (lp9051 S'Task' p9052 aS'Ticket' p9053 asssS'description' p9054 (dp9055 S'editable' p9056 I01 sS'value' p9057 g47 sssS'project' p9058 (dp9059 S'mandatory' p9060 (dp9061 S'editable' p9062 I00 sS'value' p9063 I00 ssS'name' p9064 (dp9065 S'editable' p9066 I01 sS'value' p9067 S'Project' p9068 ssS'data_type' p9069 (dp9070 S'editable' p9071 I00 sS'value' p9072 S'entity' p9073 ssS'entity_type' p9074 (dp9075 S'editable' p9076 I00 sS'value' p9077 S'TimeLog' p9078 ssS'editable' p9079 (dp9080 S'editable' p9081 I00 sS'value' p9082 I01 ssS'unique' p9083 (dp9084 S'editable' p9085 I00 sS'value' p9086 I00 ssS'properties' p9087 (dp9088 S'default_value' p9089 (dp9090 S'editable' p9091 I00 sS'value' p9092 NssS'summary_default' p9093 (dp9094 S'editable' p9095 I01 sS'value' p9096 S'none' p9097 ssS'valid_types' p9098 (dp9099 S'editable' p9100 I01 sS'value' p9101 (lp9102 S'Project' p9103 asssS'description' p9104 (dp9105 S'editable' p9106 I01 sS'value' p9107 g47 sssS'duration' p9108 (dp9109 S'mandatory' p9110 (dp9111 S'editable' p9112 I00 sS'value' p9113 I00 ssS'name' p9114 (dp9115 S'editable' p9116 I01 sS'value' p9117 S'Duration' p9118 ssS'data_type' p9119 (dp9120 S'editable' p9121 I00 sS'value' p9122 S'duration' p9123 ssS'entity_type' p9124 (dp9125 S'editable' p9126 I00 sS'value' p9127 S'TimeLog' p9128 ssS'editable' p9129 (dp9130 S'editable' p9131 I00 sS'value' p9132 I01 ssS'unique' p9133 (dp9134 S'editable' p9135 I00 sS'value' p9136 I00 ssS'properties' p9137 (dp9138 S'default_value' p9139 (dp9140 S'editable' p9141 I00 sS'value' p9142 I0 ssS'summary_default' p9143 (dp9144 S'editable' p9145 I01 sS'value' p9146 S'sum' p9147 sssS'description' p9148 (dp9149 S'editable' p9150 I01 sS'value' p9151 g47 sssS'user' p9152 (dp9153 S'mandatory' p9154 (dp9155 S'editable' p9156 I00 sS'value' p9157 I00 ssS'name' p9158 (dp9159 S'editable' p9160 I01 sS'value' p9161 S'Person' p9162 ssS'data_type' p9163 (dp9164 S'editable' p9165 I00 sS'value' p9166 S'entity' p9167 ssS'entity_type' p9168 (dp9169 S'editable' p9170 I00 sS'value' p9171 S'TimeLog' p9172 ssS'editable' p9173 (dp9174 S'editable' p9175 I00 sS'value' p9176 I01 ssS'unique' p9177 (dp9178 S'editable' p9179 I00 sS'value' p9180 I00 ssS'properties' p9181 (dp9182 S'default_value' p9183 (dp9184 S'editable' p9185 I00 sS'value' p9186 NssS'summary_default' p9187 (dp9188 S'editable' p9189 I01 sS'value' p9190 S'none' p9191 ssS'valid_types' p9192 (dp9193 S'editable' p9194 I01 sS'value' p9195 (lp9196 S'HumanUser' p9197 asssS'description' p9198 (dp9199 S'editable' p9200 I01 sS'value' p9201 g47 sssS'date' p9202 (dp9203 S'mandatory' p9204 (dp9205 S'editable' p9206 I00 sS'value' p9207 I00 ssS'name' p9208 (dp9209 S'editable' p9210 I01 sS'value' p9211 S'Date' p9212 ssS'data_type' p9213 (dp9214 S'editable' p9215 I00 sS'value' p9216 S'date' p9217 ssS'entity_type' p9218 (dp9219 S'editable' p9220 I00 sS'value' p9221 S'TimeLog' p9222 ssS'editable' p9223 (dp9224 S'editable' p9225 I00 sS'value' p9226 I01 ssS'unique' p9227 (dp9228 S'editable' p9229 I00 sS'value' p9230 I00 ssS'properties' p9231 (dp9232 S'default_value' p9233 (dp9234 S'editable' p9235 I00 sS'value' p9236 NssS'summary_default' p9237 (dp9238 S'editable' p9239 I01 sS'value' p9240 S'none' p9241 sssS'description' p9242 (dp9243 S'editable' p9244 I01 sS'value' p9245 g47 sssS'cached_display_name' p9246 (dp9247 S'mandatory' p9248 (dp9249 S'editable' p9250 I00 sS'value' p9251 I00 ssS'name' p9252 (dp9253 S'editable' p9254 I01 sS'value' p9255 S'Cached Display Name' p9256 ssS'data_type' p9257 (dp9258 S'editable' p9259 I00 sS'value' p9260 S'text' p9261 ssS'entity_type' p9262 (dp9263 S'editable' p9264 I00 sS'value' p9265 S'TimeLog' p9266 ssS'editable' p9267 (dp9268 S'editable' p9269 I00 sS'value' p9270 I01 ssS'unique' p9271 (dp9272 S'editable' p9273 I00 sS'value' p9274 I00 ssS'properties' p9275 (dp9276 S'default_value' p9277 (dp9278 S'editable' p9279 I00 sS'value' p9280 NssS'summary_default' p9281 (dp9282 S'editable' p9283 I00 sS'value' p9284 S'none' p9285 sssS'description' p9286 (dp9287 S'editable' p9288 I01 sS'value' p9289 g47 sssS'id' p9290 (dp9291 S'mandatory' p9292 (dp9293 S'editable' p9294 I00 sS'value' p9295 I01 ssS'name' p9296 (dp9297 S'editable' p9298 I01 sS'value' p9299 S'Id' p9300 ssS'data_type' p9301 (dp9302 S'editable' p9303 I00 sS'value' p9304 S'number' p9305 ssS'entity_type' p9306 (dp9307 S'editable' p9308 I00 sS'value' p9309 S'TimeLog' p9310 ssS'editable' p9311 (dp9312 S'editable' p9313 I00 sS'value' p9314 I00 ssS'unique' p9315 (dp9316 S'editable' p9317 I00 sS'value' p9318 I00 ssS'properties' p9319 (dp9320 S'default_value' p9321 (dp9322 S'editable' p9323 I00 sS'value' p9324 NssS'summary_default' p9325 (dp9326 S'editable' p9327 I01 sS'value' p9328 S'none' p9329 sssS'description' p9330 (dp9331 S'editable' p9332 I01 sS'value' p9333 g47 sssS'updated_by' p9334 (dp9335 S'mandatory' p9336 (dp9337 S'editable' p9338 I00 sS'value' p9339 I00 ssS'name' p9340 (dp9341 S'editable' p9342 I01 sS'value' p9343 S'Updated by' p9344 ssS'data_type' p9345 (dp9346 S'editable' p9347 I00 sS'value' p9348 S'entity' p9349 ssS'entity_type' p9350 (dp9351 S'editable' p9352 I00 sS'value' p9353 S'TimeLog' p9354 ssS'editable' p9355 (dp9356 S'editable' p9357 I00 sS'value' p9358 I00 ssS'unique' p9359 (dp9360 S'editable' p9361 I00 sS'value' p9362 I00 ssS'properties' p9363 (dp9364 S'default_value' p9365 (dp9366 S'editable' p9367 I00 sS'value' p9368 NssS'summary_default' p9369 (dp9370 S'editable' p9371 I01 sS'value' p9372 S'none' p9373 ssS'valid_types' p9374 (dp9375 S'editable' p9376 I01 sS'value' p9377 (lp9378 S'HumanUser' p9379 aS'ApiUser' p9380 asssS'description' p9381 (dp9382 S'editable' p9383 I01 sS'value' p9384 g47 ssssS'PlaylistVersionConnection' p9385 (dp9386 S'cached_display_name' p9387 (dp9388 S'mandatory' p9389 (dp9390 S'editable' p9391 I00 sS'value' p9392 I00 ssS'name' p9393 (dp9394 S'editable' p9395 I01 sS'value' p9396 S'Cached Display Name' p9397 ssS'data_type' p9398 (dp9399 S'editable' p9400 I00 sS'value' p9401 S'text' p9402 ssS'entity_type' p9403 (dp9404 S'editable' p9405 I00 sS'value' p9406 S'PlaylistVersionConnection' p9407 ssS'editable' p9408 (dp9409 S'editable' p9410 I00 sS'value' p9411 I01 ssS'unique' p9412 (dp9413 S'editable' p9414 I00 sS'value' p9415 I00 ssS'properties' p9416 (dp9417 S'default_value' p9418 (dp9419 S'editable' p9420 I00 sS'value' p9421 NssS'summary_default' p9422 (dp9423 S'editable' p9424 I00 sS'value' p9425 S'none' p9426 sssS'description' p9427 (dp9428 S'editable' p9429 I01 sS'value' p9430 g47 sssS'version' p9431 (dp9432 S'mandatory' p9433 (dp9434 S'editable' p9435 I00 sS'value' p9436 I00 ssS'name' p9437 (dp9438 S'editable' p9439 I01 sS'value' p9440 S'Version' p9441 ssS'data_type' p9442 (dp9443 S'editable' p9444 I00 sS'value' p9445 S'entity' p9446 ssS'entity_type' p9447 (dp9448 S'editable' p9449 I00 sS'value' p9450 S'PlaylistVersionConnection' p9451 ssS'editable' p9452 (dp9453 S'editable' p9454 I00 sS'value' p9455 I00 ssS'unique' p9456 (dp9457 S'editable' p9458 I00 sS'value' p9459 I00 ssS'properties' p9460 (dp9461 S'default_value' p9462 (dp9463 S'editable' p9464 I00 sS'value' p9465 NssS'summary_default' p9466 (dp9467 S'editable' p9468 I00 sS'value' p9469 S'none' p9470 ssS'valid_types' p9471 (dp9472 S'editable' p9473 I00 sS'value' p9474 (lp9475 S'Version' p9476 asssS'description' p9477 (dp9478 S'editable' p9479 I01 sS'value' p9480 g47 sssS'sg_sort_order' p9481 (dp9482 S'mandatory' p9483 (dp9484 S'editable' p9485 I00 sS'value' p9486 I00 ssS'name' p9487 (dp9488 S'editable' p9489 I01 sS'value' p9490 S'Sort Order' p9491 ssS'data_type' p9492 (dp9493 S'editable' p9494 I00 sS'value' p9495 S'number' p9496 ssS'entity_type' p9497 (dp9498 S'editable' p9499 I00 sS'value' p9500 S'PlaylistVersionConnection' p9501 ssS'editable' p9502 (dp9503 S'editable' p9504 I00 sS'value' p9505 I01 ssS'unique' p9506 (dp9507 S'editable' p9508 I00 sS'value' p9509 I00 ssS'properties' p9510 (dp9511 S'default_value' p9512 (dp9513 S'editable' p9514 I00 sS'value' p9515 NssS'summary_default' p9516 (dp9517 S'editable' p9518 I01 sS'value' p9519 S'none' p9520 sssS'description' p9521 (dp9522 S'editable' p9523 I01 sS'value' p9524 g47 sssS'playlist' p9525 (dp9526 S'mandatory' p9527 (dp9528 S'editable' p9529 I00 sS'value' p9530 I00 ssS'name' p9531 (dp9532 S'editable' p9533 I01 sS'value' p9534 S'Playlist' p9535 ssS'data_type' p9536 (dp9537 S'editable' p9538 I00 sS'value' p9539 S'entity' p9540 ssS'entity_type' p9541 (dp9542 S'editable' p9543 I00 sS'value' p9544 S'PlaylistVersionConnection' p9545 ssS'editable' p9546 (dp9547 S'editable' p9548 I00 sS'value' p9549 I00 ssS'unique' p9550 (dp9551 S'editable' p9552 I00 sS'value' p9553 I00 ssS'properties' p9554 (dp9555 S'default_value' p9556 (dp9557 S'editable' p9558 I00 sS'value' p9559 NssS'summary_default' p9560 (dp9561 S'editable' p9562 I00 sS'value' p9563 S'none' p9564 ssS'valid_types' p9565 (dp9566 S'editable' p9567 I00 sS'value' p9568 (lp9569 S'Playlist' p9570 asssS'description' p9571 (dp9572 S'editable' p9573 I01 sS'value' p9574 g47 sssS'id' p9575 (dp9576 S'mandatory' p9577 (dp9578 S'editable' p9579 I00 sS'value' p9580 I01 ssS'name' p9581 (dp9582 S'editable' p9583 I01 sS'value' p9584 S'Id' p9585 ssS'data_type' p9586 (dp9587 S'editable' p9588 I00 sS'value' p9589 S'number' p9590 ssS'entity_type' p9591 (dp9592 S'editable' p9593 I00 sS'value' p9594 S'PlaylistVersionConnection' p9595 ssS'editable' p9596 (dp9597 S'editable' p9598 I00 sS'value' p9599 I00 ssS'unique' p9600 (dp9601 S'editable' p9602 I00 sS'value' p9603 I00 ssS'properties' p9604 (dp9605 S'default_value' p9606 (dp9607 S'editable' p9608 I00 sS'value' p9609 NssS'summary_default' p9610 (dp9611 S'editable' p9612 I00 sS'value' p9613 S'none' p9614 sssS'description' p9615 (dp9616 S'editable' p9617 I01 sS'value' p9618 g47 ssssS'CustomNonProjectEntity02' p9619 (dp9620 S'open_notes_count' p9621 (dp9622 S'mandatory' p9623 (dp9624 S'editable' p9625 I00 sS'value' p9626 I00 ssS'name' p9627 (dp9628 S'editable' p9629 I01 sS'value' p9630 S'Open Notes Count' p9631 ssS'data_type' p9632 (dp9633 S'editable' p9634 I00 sS'value' p9635 S'text' p9636 ssS'entity_type' p9637 (dp9638 S'editable' p9639 I00 sS'value' p9640 S'CustomNonProjectEntity02' p9641 ssS'editable' p9642 (dp9643 S'editable' p9644 I00 sS'value' p9645 I00 ssS'unique' p9646 (dp9647 S'editable' p9648 I00 sS'value' p9649 I00 ssS'properties' p9650 (dp9651 S'default_value' p9652 (dp9653 S'editable' p9654 I00 sS'value' p9655 NssS'summary_default' p9656 (dp9657 S'editable' p9658 I01 sS'value' p9659 S'none' p9660 sssS'description' p9661 (dp9662 S'editable' p9663 I01 sS'value' p9664 g47 sssS'code' p9665 (dp9666 S'mandatory' p9667 (dp9668 S'editable' p9669 I00 sS'value' p9670 I01 ssS'name' p9671 (dp9672 S'editable' p9673 I01 sS'value' p9674 S'Custom Non Project Entity02 Name' p9675 ssS'data_type' p9676 (dp9677 S'editable' p9678 I00 sS'value' p9679 S'text' p9680 ssS'entity_type' p9681 (dp9682 S'editable' p9683 I00 sS'value' p9684 S'CustomNonProjectEntity02' p9685 ssS'editable' p9686 (dp9687 S'editable' p9688 I00 sS'value' p9689 I01 ssS'unique' p9690 (dp9691 S'editable' p9692 I00 sS'value' p9693 I00 ssS'properties' p9694 (dp9695 S'default_value' p9696 (dp9697 S'editable' p9698 I00 sS'value' p9699 NssS'summary_default' p9700 (dp9701 S'editable' p9702 I01 sS'value' p9703 S'none' p9704 sssS'description' p9705 (dp9706 S'editable' p9707 I01 sS'value' p9708 g47 sssS'open_notes' p9709 (dp9710 S'mandatory' p9711 (dp9712 S'editable' p9713 I00 sS'value' p9714 I00 ssS'name' p9715 (dp9716 S'editable' p9717 I01 sS'value' p9718 S'Open Notes' p9719 ssS'data_type' p9720 (dp9721 S'editable' p9722 I00 sS'value' p9723 S'multi_entity' p9724 ssS'entity_type' p9725 (dp9726 S'editable' p9727 I00 sS'value' p9728 S'CustomNonProjectEntity02' p9729 ssS'editable' p9730 (dp9731 S'editable' p9732 I00 sS'value' p9733 I00 ssS'unique' p9734 (dp9735 S'editable' p9736 I00 sS'value' p9737 I00 ssS'properties' p9738 (dp9739 S'default_value' p9740 (dp9741 S'editable' p9742 I00 sS'value' p9743 NssS'summary_default' p9744 (dp9745 S'editable' p9746 I01 sS'value' p9747 S'none' p9748 ssS'valid_types' p9749 (dp9750 S'editable' p9751 I01 sS'value' p9752 (lp9753 S'Note' p9754 asssS'description' p9755 (dp9756 S'editable' p9757 I01 sS'value' p9758 g47 sssS'description' p9759 (dp9760 S'mandatory' p9761 (dp9762 S'editable' p9763 I00 sS'value' p9764 I00 ssS'name' p9765 (dp9766 S'editable' p9767 I01 sS'value' p9768 S'Description' p9769 ssS'data_type' p9770 (dp9771 S'editable' p9772 I00 sS'value' p9773 S'text' p9774 ssS'entity_type' p9775 (dp9776 S'editable' p9777 I00 sS'value' p9778 S'CustomNonProjectEntity02' p9779 ssS'editable' p9780 (dp9781 S'editable' p9782 I00 sS'value' p9783 I01 ssS'unique' p9784 (dp9785 S'editable' p9786 I00 sS'value' p9787 I00 ssS'properties' p9788 (dp9789 S'default_value' p9790 (dp9791 S'editable' p9792 I00 sS'value' p9793 NssS'summary_default' p9794 (dp9795 S'editable' p9796 I01 sS'value' p9797 S'none' p9798 sssS'description' p9799 (dp9800 S'editable' p9801 I01 sS'value' p9802 g47 sssS'created_at' p9803 (dp9804 S'mandatory' p9805 (dp9806 S'editable' p9807 I00 sS'value' p9808 I00 ssS'name' p9809 (dp9810 S'editable' p9811 I01 sS'value' p9812 S'Date Created' p9813 ssS'data_type' p9814 (dp9815 S'editable' p9816 I00 sS'value' p9817 S'date_time' p9818 ssS'entity_type' p9819 (dp9820 S'editable' p9821 I00 sS'value' p9822 S'CustomNonProjectEntity02' p9823 ssS'editable' p9824 (dp9825 S'editable' p9826 I00 sS'value' p9827 I00 ssS'unique' p9828 (dp9829 S'editable' p9830 I00 sS'value' p9831 I00 ssS'properties' p9832 (dp9833 S'default_value' p9834 (dp9835 S'editable' p9836 I00 sS'value' p9837 NssS'summary_default' p9838 (dp9839 S'editable' p9840 I01 sS'value' p9841 S'none' p9842 sssS'description' p9843 (dp9844 S'editable' p9845 I01 sS'value' p9846 g47 sssS'updated_at' p9847 (dp9848 S'mandatory' p9849 (dp9850 S'editable' p9851 I00 sS'value' p9852 I00 ssS'name' p9853 (dp9854 S'editable' p9855 I01 sS'value' p9856 S'Date Updated' p9857 ssS'data_type' p9858 (dp9859 S'editable' p9860 I00 sS'value' p9861 S'date_time' p9862 ssS'entity_type' p9863 (dp9864 S'editable' p9865 I00 sS'value' p9866 S'CustomNonProjectEntity02' p9867 ssS'editable' p9868 (dp9869 S'editable' p9870 I00 sS'value' p9871 I00 ssS'unique' p9872 (dp9873 S'editable' p9874 I00 sS'value' p9875 I00 ssS'properties' p9876 (dp9877 S'default_value' p9878 (dp9879 S'editable' p9880 I00 sS'value' p9881 NssS'summary_default' p9882 (dp9883 S'editable' p9884 I01 sS'value' p9885 S'none' p9886 sssS'description' p9887 (dp9888 S'editable' p9889 I01 sS'value' p9890 g47 sssS'created_by' p9891 (dp9892 S'mandatory' p9893 (dp9894 S'editable' p9895 I00 sS'value' p9896 I00 ssS'name' p9897 (dp9898 S'editable' p9899 I01 sS'value' p9900 S'Created by' p9901 ssS'data_type' p9902 (dp9903 S'editable' p9904 I00 sS'value' p9905 S'entity' p9906 ssS'entity_type' p9907 (dp9908 S'editable' p9909 I00 sS'value' p9910 S'CustomNonProjectEntity02' p9911 ssS'editable' p9912 (dp9913 S'editable' p9914 I00 sS'value' p9915 I00 ssS'unique' p9916 (dp9917 S'editable' p9918 I00 sS'value' p9919 I00 ssS'properties' p9920 (dp9921 S'default_value' p9922 (dp9923 S'editable' p9924 I00 sS'value' p9925 NssS'summary_default' p9926 (dp9927 S'editable' p9928 I01 sS'value' p9929 S'none' p9930 ssS'valid_types' p9931 (dp9932 S'editable' p9933 I01 sS'value' p9934 (lp9935 S'HumanUser' p9936 aS'ApiUser' p9937 asssS'description' p9938 (dp9939 S'editable' p9940 I01 sS'value' p9941 g47 sssS'filmstrip_image' p9942 (dp9943 S'mandatory' p9944 (dp9945 S'editable' p9946 I00 sS'value' p9947 I00 ssS'name' p9948 (dp9949 S'editable' p9950 I01 sS'value' p9951 S'Filmstrip Thumbnail' p9952 ssS'data_type' p9953 (dp9954 S'editable' p9955 I00 sS'value' p9956 S'image' p9957 ssS'entity_type' p9958 (dp9959 S'editable' p9960 I00 sS'value' p9961 S'CustomNonProjectEntity02' p9962 ssS'editable' p9963 (dp9964 S'editable' p9965 I00 sS'value' p9966 I01 ssS'unique' p9967 (dp9968 S'editable' p9969 I00 sS'value' p9970 I00 ssS'properties' p9971 (dp9972 S'default_value' p9973 (dp9974 S'editable' p9975 I00 sS'value' p9976 NssS'summary_default' p9977 (dp9978 S'editable' p9979 I01 sS'value' p9980 S'none' p9981 sssS'description' p9982 (dp9983 S'editable' p9984 I01 sS'value' p9985 g47 sssS'sg_status_list' p9986 (dp9987 S'mandatory' p9988 (dp9989 S'editable' p9990 I00 sS'value' p9991 I00 ssS'name' p9992 (dp9993 S'editable' p9994 I01 sS'value' p9995 S'Status' p9996 ssS'data_type' p9997 (dp9998 S'editable' p9999 I00 sS'value' p10000 S'status_list' p10001 ssS'entity_type' p10002 (dp10003 S'editable' p10004 I00 sS'value' p10005 S'CustomNonProjectEntity02' p10006 ssS'editable' p10007 (dp10008 S'editable' p10009 I00 sS'value' p10010 I01 ssS'unique' p10011 (dp10012 S'editable' p10013 I00 sS'value' p10014 I00 ssS'properties' p10015 (dp10016 S'default_value' p10017 (dp10018 S'editable' p10019 I01 sS'value' p10020 S'wtg' p10021 ssS'valid_values' p10022 (dp10023 S'editable' p10024 I01 sS'value' p10025 (lp10026 S'cmpt' p10027 aS'ip' p10028 aS'wtg' p10029 assS'summary_default' p10030 (dp10031 S'editable' p10032 I01 sS'value' p10033 S'none' p10034 sssS'description' p10035 (dp10036 S'editable' p10037 I01 sS'value' p10038 g47 sssS'notes' p10039 (dp10040 S'mandatory' p10041 (dp10042 S'editable' p10043 I00 sS'value' p10044 I00 ssS'name' p10045 (dp10046 S'editable' p10047 I01 sS'value' p10048 S'Notes' p10049 ssS'data_type' p10050 (dp10051 S'editable' p10052 I00 sS'value' p10053 S'multi_entity' p10054 ssS'entity_type' p10055 (dp10056 S'editable' p10057 I00 sS'value' p10058 S'CustomNonProjectEntity02' p10059 ssS'editable' p10060 (dp10061 S'editable' p10062 I00 sS'value' p10063 I01 ssS'unique' p10064 (dp10065 S'editable' p10066 I00 sS'value' p10067 I00 ssS'properties' p10068 (dp10069 S'default_value' p10070 (dp10071 S'editable' p10072 I00 sS'value' p10073 NssS'summary_default' p10074 (dp10075 S'editable' p10076 I01 sS'value' p10077 S'none' p10078 ssS'valid_types' p10079 (dp10080 S'editable' p10081 I01 sS'value' p10082 (lp10083 S'Note' p10084 asssS'description' p10085 (dp10086 S'editable' p10087 I01 sS'value' p10088 g47 sssS'image' p10089 (dp10090 S'mandatory' p10091 (dp10092 S'editable' p10093 I00 sS'value' p10094 I00 ssS'name' p10095 (dp10096 S'editable' p10097 I01 sS'value' p10098 S'Thumbnail' p10099 ssS'data_type' p10100 (dp10101 S'editable' p10102 I00 sS'value' p10103 S'image' p10104 ssS'entity_type' p10105 (dp10106 S'editable' p10107 I00 sS'value' p10108 S'CustomNonProjectEntity02' p10109 ssS'editable' p10110 (dp10111 S'editable' p10112 I00 sS'value' p10113 I01 ssS'unique' p10114 (dp10115 S'editable' p10116 I00 sS'value' p10117 I00 ssS'properties' p10118 (dp10119 S'default_value' p10120 (dp10121 S'editable' p10122 I00 sS'value' p10123 NssS'summary_default' p10124 (dp10125 S'editable' p10126 I01 sS'value' p10127 S'none' p10128 sssS'description' p10129 (dp10130 S'editable' p10131 I01 sS'value' p10132 g47 sssS'cached_display_name' p10133 (dp10134 S'mandatory' p10135 (dp10136 S'editable' p10137 I00 sS'value' p10138 I00 ssS'name' p10139 (dp10140 S'editable' p10141 I01 sS'value' p10142 S'Cached Display Name' p10143 ssS'data_type' p10144 (dp10145 S'editable' p10146 I00 sS'value' p10147 S'text' p10148 ssS'entity_type' p10149 (dp10150 S'editable' p10151 I00 sS'value' p10152 S'CustomNonProjectEntity02' p10153 ssS'editable' p10154 (dp10155 S'editable' p10156 I00 sS'value' p10157 I01 ssS'unique' p10158 (dp10159 S'editable' p10160 I00 sS'value' p10161 I00 ssS'properties' p10162 (dp10163 S'default_value' p10164 (dp10165 S'editable' p10166 I00 sS'value' p10167 NssS'summary_default' p10168 (dp10169 S'editable' p10170 I00 sS'value' p10171 S'none' p10172 sssS'description' p10173 (dp10174 S'editable' p10175 I01 sS'value' p10176 g47 sssS'tag_list' p10177 (dp10178 S'mandatory' p10179 (dp10180 S'editable' p10181 I00 sS'value' p10182 I00 ssS'name' p10183 (dp10184 S'editable' p10185 I01 sS'value' p10186 S'Tags' p10187 ssS'data_type' p10188 (dp10189 S'editable' p10190 I00 sS'value' p10191 S'tag_list' p10192 ssS'entity_type' p10193 (dp10194 S'editable' p10195 I00 sS'value' p10196 S'CustomNonProjectEntity02' p10197 ssS'editable' p10198 (dp10199 S'editable' p10200 I00 sS'value' p10201 I01 ssS'unique' p10202 (dp10203 S'editable' p10204 I00 sS'value' p10205 I00 ssS'properties' p10206 (dp10207 S'default_value' p10208 (dp10209 S'editable' p10210 I00 sS'value' p10211 NssS'summary_default' p10212 (dp10213 S'editable' p10214 I01 sS'value' p10215 S'none' p10216 ssS'valid_types' p10217 (dp10218 S'editable' p10219 I01 sS'value' p10220 (lp10221 S'Tag' p10222 asssS'description' p10223 (dp10224 S'editable' p10225 I01 sS'value' p10226 g47 sssS'id' p10227 (dp10228 S'mandatory' p10229 (dp10230 S'editable' p10231 I00 sS'value' p10232 I00 ssS'name' p10233 (dp10234 S'editable' p10235 I01 sS'value' p10236 S'Id' p10237 ssS'data_type' p10238 (dp10239 S'editable' p10240 I00 sS'value' p10241 S'number' p10242 ssS'entity_type' p10243 (dp10244 S'editable' p10245 I00 sS'value' p10246 S'CustomNonProjectEntity02' p10247 ssS'editable' p10248 (dp10249 S'editable' p10250 I00 sS'value' p10251 I00 ssS'unique' p10252 (dp10253 S'editable' p10254 I00 sS'value' p10255 I00 ssS'properties' p10256 (dp10257 S'default_value' p10258 (dp10259 S'editable' p10260 I00 sS'value' p10261 NssS'summary_default' p10262 (dp10263 S'editable' p10264 I01 sS'value' p10265 S'none' p10266 sssS'description' p10267 (dp10268 S'editable' p10269 I01 sS'value' p10270 g47 sssS'updated_by' p10271 (dp10272 S'mandatory' p10273 (dp10274 S'editable' p10275 I00 sS'value' p10276 I00 ssS'name' p10277 (dp10278 S'editable' p10279 I01 sS'value' p10280 S'Updated by' p10281 ssS'data_type' p10282 (dp10283 S'editable' p10284 I00 sS'value' p10285 S'entity' p10286 ssS'entity_type' p10287 (dp10288 S'editable' p10289 I00 sS'value' p10290 S'CustomNonProjectEntity02' p10291 ssS'editable' p10292 (dp10293 S'editable' p10294 I00 sS'value' p10295 I00 ssS'unique' p10296 (dp10297 S'editable' p10298 I00 sS'value' p10299 I00 ssS'properties' p10300 (dp10301 S'default_value' p10302 (dp10303 S'editable' p10304 I00 sS'value' p10305 NssS'summary_default' p10306 (dp10307 S'editable' p10308 I01 sS'value' p10309 S'none' p10310 ssS'valid_types' p10311 (dp10312 S'editable' p10313 I01 sS'value' p10314 (lp10315 S'HumanUser' p10316 aS'ApiUser' p10317 asssS'description' p10318 (dp10319 S'editable' p10320 I01 sS'value' p10321 g47 ssssS'AssetElementConnection' p10322 (dp10323 S'cached_display_name' p10324 (dp10325 S'mandatory' p10326 (dp10327 S'editable' p10328 I00 sS'value' p10329 I00 ssS'name' p10330 (dp10331 S'editable' p10332 I01 sS'value' p10333 S'Cached Display Name' p10334 ssS'data_type' p10335 (dp10336 S'editable' p10337 I00 sS'value' p10338 S'text' p10339 ssS'entity_type' p10340 (dp10341 S'editable' p10342 I00 sS'value' p10343 S'AssetElementConnection' p10344 ssS'editable' p10345 (dp10346 S'editable' p10347 I00 sS'value' p10348 I01 ssS'unique' p10349 (dp10350 S'editable' p10351 I00 sS'value' p10352 I00 ssS'properties' p10353 (dp10354 S'default_value' p10355 (dp10356 S'editable' p10357 I00 sS'value' p10358 NssS'summary_default' p10359 (dp10360 S'editable' p10361 I00 sS'value' p10362 S'none' p10363 sssS'description' p10364 (dp10365 S'editable' p10366 I01 sS'value' p10367 g47 sssS'element' p10368 (dp10369 S'mandatory' p10370 (dp10371 S'editable' p10372 I00 sS'value' p10373 I00 ssS'name' p10374 (dp10375 S'editable' p10376 I01 sS'value' p10377 S'Element' p10378 ssS'data_type' p10379 (dp10380 S'editable' p10381 I00 sS'value' p10382 S'entity' p10383 ssS'entity_type' p10384 (dp10385 S'editable' p10386 I00 sS'value' p10387 S'AssetElementConnection' p10388 ssS'editable' p10389 (dp10390 S'editable' p10391 I00 sS'value' p10392 I00 ssS'unique' p10393 (dp10394 S'editable' p10395 I00 sS'value' p10396 I00 ssS'properties' p10397 (dp10398 S'default_value' p10399 (dp10400 S'editable' p10401 I00 sS'value' p10402 NssS'summary_default' p10403 (dp10404 S'editable' p10405 I00 sS'value' p10406 S'none' p10407 ssS'valid_types' p10408 (dp10409 S'editable' p10410 I00 sS'value' p10411 (lp10412 S'Element' p10413 asssS'description' p10414 (dp10415 S'editable' p10416 I01 sS'value' p10417 g47 sssS'asset' p10418 (dp10419 S'mandatory' p10420 (dp10421 S'editable' p10422 I00 sS'value' p10423 I00 ssS'name' p10424 (dp10425 S'editable' p10426 I01 sS'value' p10427 S'Asset' p10428 ssS'data_type' p10429 (dp10430 S'editable' p10431 I00 sS'value' p10432 S'entity' p10433 ssS'entity_type' p10434 (dp10435 S'editable' p10436 I00 sS'value' p10437 S'AssetElementConnection' p10438 ssS'editable' p10439 (dp10440 S'editable' p10441 I00 sS'value' p10442 I00 ssS'unique' p10443 (dp10444 S'editable' p10445 I00 sS'value' p10446 I00 ssS'properties' p10447 (dp10448 S'default_value' p10449 (dp10450 S'editable' p10451 I00 sS'value' p10452 NssS'summary_default' p10453 (dp10454 S'editable' p10455 I00 sS'value' p10456 S'none' p10457 ssS'valid_types' p10458 (dp10459 S'editable' p10460 I00 sS'value' p10461 (lp10462 S'Asset' p10463 asssS'description' p10464 (dp10465 S'editable' p10466 I01 sS'value' p10467 g47 sssS'id' p10468 (dp10469 S'mandatory' p10470 (dp10471 S'editable' p10472 I00 sS'value' p10473 I01 ssS'name' p10474 (dp10475 S'editable' p10476 I01 sS'value' p10477 S'Id' p10478 ssS'data_type' p10479 (dp10480 S'editable' p10481 I00 sS'value' p10482 S'number' p10483 ssS'entity_type' p10484 (dp10485 S'editable' p10486 I00 sS'value' p10487 S'AssetElementConnection' p10488 ssS'editable' p10489 (dp10490 S'editable' p10491 I00 sS'value' p10492 I00 ssS'unique' p10493 (dp10494 S'editable' p10495 I00 sS'value' p10496 I00 ssS'properties' p10497 (dp10498 S'default_value' p10499 (dp10500 S'editable' p10501 I00 sS'value' p10502 NssS'summary_default' p10503 (dp10504 S'editable' p10505 I00 sS'value' p10506 S'none' p10507 sssS'description' p10508 (dp10509 S'editable' p10510 I01 sS'value' p10511 g47 ssssS'ReleaseTicketConnection' p10512 (dp10513 S'release' p10514 (dp10515 S'mandatory' p10516 (dp10517 S'editable' p10518 I00 sS'value' p10519 I00 ssS'name' p10520 (dp10521 S'editable' p10522 I01 sS'value' p10523 S'Release' p10524 ssS'data_type' p10525 (dp10526 S'editable' p10527 I00 sS'value' p10528 S'entity' p10529 ssS'entity_type' p10530 (dp10531 S'editable' p10532 I00 sS'value' p10533 S'ReleaseTicketConnection' p10534 ssS'editable' p10535 (dp10536 S'editable' p10537 I00 sS'value' p10538 I00 ssS'unique' p10539 (dp10540 S'editable' p10541 I00 sS'value' p10542 I00 ssS'properties' p10543 (dp10544 S'default_value' p10545 (dp10546 S'editable' p10547 I00 sS'value' p10548 NssS'summary_default' p10549 (dp10550 S'editable' p10551 I00 sS'value' p10552 S'none' p10553 ssS'valid_types' p10554 (dp10555 S'editable' p10556 I00 sS'value' p10557 (lp10558 S'Release' p10559 asssS'description' p10560 (dp10561 S'editable' p10562 I01 sS'value' p10563 g47 sssS'ticket' p10564 (dp10565 S'mandatory' p10566 (dp10567 S'editable' p10568 I00 sS'value' p10569 I00 ssS'name' p10570 (dp10571 S'editable' p10572 I01 sS'value' p10573 S'Ticket' p10574 ssS'data_type' p10575 (dp10576 S'editable' p10577 I00 sS'value' p10578 S'entity' p10579 ssS'entity_type' p10580 (dp10581 S'editable' p10582 I00 sS'value' p10583 S'ReleaseTicketConnection' p10584 ssS'editable' p10585 (dp10586 S'editable' p10587 I00 sS'value' p10588 I00 ssS'unique' p10589 (dp10590 S'editable' p10591 I00 sS'value' p10592 I00 ssS'properties' p10593 (dp10594 S'default_value' p10595 (dp10596 S'editable' p10597 I00 sS'value' p10598 NssS'summary_default' p10599 (dp10600 S'editable' p10601 I00 sS'value' p10602 S'none' p10603 ssS'valid_types' p10604 (dp10605 S'editable' p10606 I00 sS'value' p10607 (lp10608 S'Ticket' p10609 asssS'description' p10610 (dp10611 S'editable' p10612 I01 sS'value' p10613 g47 sssS'id' p10614 (dp10615 S'mandatory' p10616 (dp10617 S'editable' p10618 I00 sS'value' p10619 I01 ssS'name' p10620 (dp10621 S'editable' p10622 I01 sS'value' p10623 S'Id' p10624 ssS'data_type' p10625 (dp10626 S'editable' p10627 I00 sS'value' p10628 S'number' p10629 ssS'entity_type' p10630 (dp10631 S'editable' p10632 I00 sS'value' p10633 S'ReleaseTicketConnection' p10634 ssS'editable' p10635 (dp10636 S'editable' p10637 I00 sS'value' p10638 I00 ssS'unique' p10639 (dp10640 S'editable' p10641 I00 sS'value' p10642 I00 ssS'properties' p10643 (dp10644 S'default_value' p10645 (dp10646 S'editable' p10647 I00 sS'value' p10648 NssS'summary_default' p10649 (dp10650 S'editable' p10651 I00 sS'value' p10652 S'none' p10653 sssS'description' p10654 (dp10655 S'editable' p10656 I01 sS'value' p10657 g47 sssS'cached_display_name' p10658 (dp10659 S'mandatory' p10660 (dp10661 S'editable' p10662 I00 sS'value' p10663 I00 ssS'name' p10664 (dp10665 S'editable' p10666 I01 sS'value' p10667 S'Cached Display Name' p10668 ssS'data_type' p10669 (dp10670 S'editable' p10671 I00 sS'value' p10672 S'text' p10673 ssS'entity_type' p10674 (dp10675 S'editable' p10676 I00 sS'value' p10677 S'ReleaseTicketConnection' p10678 ssS'editable' p10679 (dp10680 S'editable' p10681 I00 sS'value' p10682 I01 ssS'unique' p10683 (dp10684 S'editable' p10685 I00 sS'value' p10686 I00 ssS'properties' p10687 (dp10688 S'default_value' p10689 (dp10690 S'editable' p10691 I00 sS'value' p10692 NssS'summary_default' p10693 (dp10694 S'editable' p10695 I00 sS'value' p10696 S'none' p10697 sssS'description' p10698 (dp10699 S'editable' p10700 I01 sS'value' p10701 g47 ssssS'RevisionRevisionConnection' p10702 (dp10703 S'dest_revision' p10704 (dp10705 S'mandatory' p10706 (dp10707 S'editable' p10708 I00 sS'value' p10709 I00 ssS'name' p10710 (dp10711 S'editable' p10712 I01 sS'value' p10713 S'Destination Revision' p10714 ssS'data_type' p10715 (dp10716 S'editable' p10717 I00 sS'value' p10718 S'entity' p10719 ssS'entity_type' p10720 (dp10721 S'editable' p10722 I00 sS'value' p10723 S'RevisionRevisionConnection' p10724 ssS'editable' p10725 (dp10726 S'editable' p10727 I00 sS'value' p10728 I00 ssS'unique' p10729 (dp10730 S'editable' p10731 I00 sS'value' p10732 I00 ssS'properties' p10733 (dp10734 S'default_value' p10735 (dp10736 S'editable' p10737 I00 sS'value' p10738 NssS'summary_default' p10739 (dp10740 S'editable' p10741 I00 sS'value' p10742 S'none' p10743 ssS'valid_types' p10744 (dp10745 S'editable' p10746 I00 sS'value' p10747 (lp10748 S'Revision' p10749 asssS'description' p10750 (dp10751 S'editable' p10752 I01 sS'value' p10753 g47 sssS'source_revision' p10754 (dp10755 S'mandatory' p10756 (dp10757 S'editable' p10758 I00 sS'value' p10759 I00 ssS'name' p10760 (dp10761 S'editable' p10762 I01 sS'value' p10763 S'Source Revision' p10764 ssS'data_type' p10765 (dp10766 S'editable' p10767 I00 sS'value' p10768 S'entity' p10769 ssS'entity_type' p10770 (dp10771 S'editable' p10772 I00 sS'value' p10773 S'RevisionRevisionConnection' p10774 ssS'editable' p10775 (dp10776 S'editable' p10777 I00 sS'value' p10778 I00 ssS'unique' p10779 (dp10780 S'editable' p10781 I00 sS'value' p10782 I00 ssS'properties' p10783 (dp10784 S'default_value' p10785 (dp10786 S'editable' p10787 I00 sS'value' p10788 NssS'summary_default' p10789 (dp10790 S'editable' p10791 I00 sS'value' p10792 S'none' p10793 ssS'valid_types' p10794 (dp10795 S'editable' p10796 I00 sS'value' p10797 (lp10798 S'Revision' p10799 asssS'description' p10800 (dp10801 S'editable' p10802 I01 sS'value' p10803 g47 sssS'id' p10804 (dp10805 S'mandatory' p10806 (dp10807 S'editable' p10808 I00 sS'value' p10809 I01 ssS'name' p10810 (dp10811 S'editable' p10812 I01 sS'value' p10813 S'Id' p10814 ssS'data_type' p10815 (dp10816 S'editable' p10817 I00 sS'value' p10818 S'number' p10819 ssS'entity_type' p10820 (dp10821 S'editable' p10822 I00 sS'value' p10823 S'RevisionRevisionConnection' p10824 ssS'editable' p10825 (dp10826 S'editable' p10827 I00 sS'value' p10828 I00 ssS'unique' p10829 (dp10830 S'editable' p10831 I00 sS'value' p10832 I00 ssS'properties' p10833 (dp10834 S'default_value' p10835 (dp10836 S'editable' p10837 I00 sS'value' p10838 NssS'summary_default' p10839 (dp10840 S'editable' p10841 I00 sS'value' p10842 S'none' p10843 sssS'description' p10844 (dp10845 S'editable' p10846 I01 sS'value' p10847 g47 sssS'cached_display_name' p10848 (dp10849 S'mandatory' p10850 (dp10851 S'editable' p10852 I00 sS'value' p10853 I00 ssS'name' p10854 (dp10855 S'editable' p10856 I01 sS'value' p10857 S'Cached Display Name' p10858 ssS'data_type' p10859 (dp10860 S'editable' p10861 I00 sS'value' p10862 S'text' p10863 ssS'entity_type' p10864 (dp10865 S'editable' p10866 I00 sS'value' p10867 S'RevisionRevisionConnection' p10868 ssS'editable' p10869 (dp10870 S'editable' p10871 I00 sS'value' p10872 I01 ssS'unique' p10873 (dp10874 S'editable' p10875 I00 sS'value' p10876 I00 ssS'properties' p10877 (dp10878 S'default_value' p10879 (dp10880 S'editable' p10881 I00 sS'value' p10882 NssS'summary_default' p10883 (dp10884 S'editable' p10885 I00 sS'value' p10886 S'none' p10887 sssS'description' p10888 (dp10889 S'editable' p10890 I01 sS'value' p10891 g47 ssssS'ProjectUserConnection' p10892 (dp10893 S'project' p10894 (dp10895 S'mandatory' p10896 (dp10897 S'editable' p10898 I00 sS'value' p10899 I00 ssS'name' p10900 (dp10901 S'editable' p10902 I01 sS'value' p10903 S'Project' p10904 ssS'data_type' p10905 (dp10906 S'editable' p10907 I00 sS'value' p10908 S'entity' p10909 ssS'entity_type' p10910 (dp10911 S'editable' p10912 I00 sS'value' p10913 S'ProjectUserConnection' p10914 ssS'editable' p10915 (dp10916 S'editable' p10917 I00 sS'value' p10918 I00 ssS'unique' p10919 (dp10920 S'editable' p10921 I00 sS'value' p10922 I00 ssS'properties' p10923 (dp10924 S'default_value' p10925 (dp10926 S'editable' p10927 I00 sS'value' p10928 NssS'summary_default' p10929 (dp10930 S'editable' p10931 I00 sS'value' p10932 S'none' p10933 ssS'valid_types' p10934 (dp10935 S'editable' p10936 I00 sS'value' p10937 (lp10938 S'Project' p10939 asssS'description' p10940 (dp10941 S'editable' p10942 I01 sS'value' p10943 g47 sssS'cached_display_name' p10944 (dp10945 S'mandatory' p10946 (dp10947 S'editable' p10948 I00 sS'value' p10949 I00 ssS'name' p10950 (dp10951 S'editable' p10952 I01 sS'value' p10953 S'Cached Display Name' p10954 ssS'data_type' p10955 (dp10956 S'editable' p10957 I00 sS'value' p10958 S'text' p10959 ssS'entity_type' p10960 (dp10961 S'editable' p10962 I00 sS'value' p10963 S'ProjectUserConnection' p10964 ssS'editable' p10965 (dp10966 S'editable' p10967 I00 sS'value' p10968 I01 ssS'unique' p10969 (dp10970 S'editable' p10971 I00 sS'value' p10972 I00 ssS'properties' p10973 (dp10974 S'default_value' p10975 (dp10976 S'editable' p10977 I00 sS'value' p10978 NssS'summary_default' p10979 (dp10980 S'editable' p10981 I00 sS'value' p10982 S'none' p10983 sssS'description' p10984 (dp10985 S'editable' p10986 I01 sS'value' p10987 g47 sssS'id' p10988 (dp10989 S'mandatory' p10990 (dp10991 S'editable' p10992 I00 sS'value' p10993 I01 ssS'name' p10994 (dp10995 S'editable' p10996 I01 sS'value' p10997 S'Id' p10998 ssS'data_type' p10999 (dp11000 S'editable' p11001 I00 sS'value' p11002 S'number' p11003 ssS'entity_type' p11004 (dp11005 S'editable' p11006 I00 sS'value' p11007 S'ProjectUserConnection' p11008 ssS'editable' p11009 (dp11010 S'editable' p11011 I00 sS'value' p11012 I00 ssS'unique' p11013 (dp11014 S'editable' p11015 I00 sS'value' p11016 I00 ssS'properties' p11017 (dp11018 S'default_value' p11019 (dp11020 S'editable' p11021 I00 sS'value' p11022 NssS'summary_default' p11023 (dp11024 S'editable' p11025 I00 sS'value' p11026 S'none' p11027 sssS'description' p11028 (dp11029 S'editable' p11030 I01 sS'value' p11031 g47 sssS'user' p11032 (dp11033 S'mandatory' p11034 (dp11035 S'editable' p11036 I00 sS'value' p11037 I00 ssS'name' p11038 (dp11039 S'editable' p11040 I01 sS'value' p11041 S'Person' p11042 ssS'data_type' p11043 (dp11044 S'editable' p11045 I00 sS'value' p11046 S'entity' p11047 ssS'entity_type' p11048 (dp11049 S'editable' p11050 I00 sS'value' p11051 S'ProjectUserConnection' p11052 ssS'editable' p11053 (dp11054 S'editable' p11055 I00 sS'value' p11056 I00 ssS'unique' p11057 (dp11058 S'editable' p11059 I00 sS'value' p11060 I00 ssS'properties' p11061 (dp11062 S'default_value' p11063 (dp11064 S'editable' p11065 I00 sS'value' p11066 NssS'summary_default' p11067 (dp11068 S'editable' p11069 I00 sS'value' p11070 S'none' p11071 ssS'valid_types' p11072 (dp11073 S'editable' p11074 I00 sS'value' p11075 (lp11076 S'HumanUser' p11077 asssS'description' p11078 (dp11079 S'editable' p11080 I01 sS'value' p11081 g47 ssssS'MocapTakeRangeShotConnection' p11082 (dp11083 S'mocap_take_range' p11084 (dp11085 S'mandatory' p11086 (dp11087 S'editable' p11088 I00 sS'value' p11089 I00 ssS'name' p11090 (dp11091 S'editable' p11092 I01 sS'value' p11093 S'Mocap Take Range' p11094 ssS'data_type' p11095 (dp11096 S'editable' p11097 I00 sS'value' p11098 S'entity' p11099 ssS'entity_type' p11100 (dp11101 S'editable' p11102 I00 sS'value' p11103 S'MocapTakeRangeShotConnection' p11104 ssS'editable' p11105 (dp11106 S'editable' p11107 I00 sS'value' p11108 I00 ssS'unique' p11109 (dp11110 S'editable' p11111 I00 sS'value' p11112 I00 ssS'properties' p11113 (dp11114 S'default_value' p11115 (dp11116 S'editable' p11117 I00 sS'value' p11118 NssS'summary_default' p11119 (dp11120 S'editable' p11121 I00 sS'value' p11122 S'none' p11123 ssS'valid_types' p11124 (dp11125 S'editable' p11126 I00 sS'value' p11127 (lp11128 S'MocapTakeRange' p11129 asssS'description' p11130 (dp11131 S'editable' p11132 I01 sS'value' p11133 g47 sssS'cached_display_name' p11134 (dp11135 S'mandatory' p11136 (dp11137 S'editable' p11138 I00 sS'value' p11139 I00 ssS'name' p11140 (dp11141 S'editable' p11142 I01 sS'value' p11143 S'Cached Display Name' p11144 ssS'data_type' p11145 (dp11146 S'editable' p11147 I00 sS'value' p11148 S'text' p11149 ssS'entity_type' p11150 (dp11151 S'editable' p11152 I00 sS'value' p11153 S'MocapTakeRangeShotConnection' p11154 ssS'editable' p11155 (dp11156 S'editable' p11157 I00 sS'value' p11158 I01 ssS'unique' p11159 (dp11160 S'editable' p11161 I00 sS'value' p11162 I00 ssS'properties' p11163 (dp11164 S'default_value' p11165 (dp11166 S'editable' p11167 I00 sS'value' p11168 NssS'summary_default' p11169 (dp11170 S'editable' p11171 I00 sS'value' p11172 S'none' p11173 sssS'description' p11174 (dp11175 S'editable' p11176 I01 sS'value' p11177 g47 sssS'shot' p11178 (dp11179 S'mandatory' p11180 (dp11181 S'editable' p11182 I00 sS'value' p11183 I00 ssS'name' p11184 (dp11185 S'editable' p11186 I01 sS'value' p11187 S'Shot' p11188 ssS'data_type' p11189 (dp11190 S'editable' p11191 I00 sS'value' p11192 S'entity' p11193 ssS'entity_type' p11194 (dp11195 S'editable' p11196 I00 sS'value' p11197 S'MocapTakeRangeShotConnection' p11198 ssS'editable' p11199 (dp11200 S'editable' p11201 I00 sS'value' p11202 I00 ssS'unique' p11203 (dp11204 S'editable' p11205 I00 sS'value' p11206 I00 ssS'properties' p11207 (dp11208 S'default_value' p11209 (dp11210 S'editable' p11211 I00 sS'value' p11212 NssS'summary_default' p11213 (dp11214 S'editable' p11215 I00 sS'value' p11216 S'none' p11217 ssS'valid_types' p11218 (dp11219 S'editable' p11220 I00 sS'value' p11221 (lp11222 S'Shot' p11223 asssS'description' p11224 (dp11225 S'editable' p11226 I01 sS'value' p11227 g47 sssS'id' p11228 (dp11229 S'mandatory' p11230 (dp11231 S'editable' p11232 I00 sS'value' p11233 I01 ssS'name' p11234 (dp11235 S'editable' p11236 I01 sS'value' p11237 S'Id' p11238 ssS'data_type' p11239 (dp11240 S'editable' p11241 I00 sS'value' p11242 S'number' p11243 ssS'entity_type' p11244 (dp11245 S'editable' p11246 I00 sS'value' p11247 S'MocapTakeRangeShotConnection' p11248 ssS'editable' p11249 (dp11250 S'editable' p11251 I00 sS'value' p11252 I00 ssS'unique' p11253 (dp11254 S'editable' p11255 I00 sS'value' p11256 I00 ssS'properties' p11257 (dp11258 S'default_value' p11259 (dp11260 S'editable' p11261 I00 sS'value' p11262 NssS'summary_default' p11263 (dp11264 S'editable' p11265 I00 sS'value' p11266 S'none' p11267 sssS'description' p11268 (dp11269 S'editable' p11270 I01 sS'value' p11271 g47 ssssS'PublishedFileDependency' p11272 (dp11273 S'cached_display_name' p11274 (dp11275 S'mandatory' p11276 (dp11277 S'editable' p11278 I00 sS'value' p11279 I00 ssS'name' p11280 (dp11281 S'editable' p11282 I01 sS'value' p11283 S'Cached Display Name' p11284 ssS'data_type' p11285 (dp11286 S'editable' p11287 I00 sS'value' p11288 S'text' p11289 ssS'entity_type' p11290 (dp11291 S'editable' p11292 I00 sS'value' p11293 S'PublishedFileDependency' p11294 ssS'editable' p11295 (dp11296 S'editable' p11297 I00 sS'value' p11298 I01 ssS'unique' p11299 (dp11300 S'editable' p11301 I00 sS'value' p11302 I00 ssS'properties' p11303 (dp11304 S'default_value' p11305 (dp11306 S'editable' p11307 I00 sS'value' p11308 NssS'summary_default' p11309 (dp11310 S'editable' p11311 I00 sS'value' p11312 S'none' p11313 sssS'description' p11314 (dp11315 S'editable' p11316 I01 sS'value' p11317 g47 sssS'dependent_published_file' p11318 (dp11319 S'mandatory' p11320 (dp11321 S'editable' p11322 I00 sS'value' p11323 I00 ssS'name' p11324 (dp11325 S'editable' p11326 I01 sS'value' p11327 S'Dependent Published File' p11328 ssS'data_type' p11329 (dp11330 S'editable' p11331 I00 sS'value' p11332 S'entity' p11333 ssS'entity_type' p11334 (dp11335 S'editable' p11336 I00 sS'value' p11337 S'PublishedFileDependency' p11338 ssS'editable' p11339 (dp11340 S'editable' p11341 I00 sS'value' p11342 I01 ssS'unique' p11343 (dp11344 S'editable' p11345 I00 sS'value' p11346 I00 ssS'properties' p11347 (dp11348 S'default_value' p11349 (dp11350 S'editable' p11351 I00 sS'value' p11352 NssS'summary_default' p11353 (dp11354 S'editable' p11355 I00 sS'value' p11356 S'none' p11357 ssS'valid_types' p11358 (dp11359 S'editable' p11360 I00 sS'value' p11361 (lp11362 S'PublishedFile' p11363 asssS'description' p11364 (dp11365 S'editable' p11366 I01 sS'value' p11367 g47 sssS'id' p11368 (dp11369 S'mandatory' p11370 (dp11371 S'editable' p11372 I00 sS'value' p11373 I00 ssS'name' p11374 (dp11375 S'editable' p11376 I01 sS'value' p11377 S'Id' p11378 ssS'data_type' p11379 (dp11380 S'editable' p11381 I00 sS'value' p11382 S'number' p11383 ssS'entity_type' p11384 (dp11385 S'editable' p11386 I00 sS'value' p11387 S'PublishedFileDependency' p11388 ssS'editable' p11389 (dp11390 S'editable' p11391 I00 sS'value' p11392 I00 ssS'unique' p11393 (dp11394 S'editable' p11395 I00 sS'value' p11396 I00 ssS'properties' p11397 (dp11398 S'default_value' p11399 (dp11400 S'editable' p11401 I00 sS'value' p11402 NssS'summary_default' p11403 (dp11404 S'editable' p11405 I00 sS'value' p11406 S'none' p11407 sssS'description' p11408 (dp11409 S'editable' p11410 I01 sS'value' p11411 g47 sssS'published_file' p11412 (dp11413 S'mandatory' p11414 (dp11415 S'editable' p11416 I00 sS'value' p11417 I00 ssS'name' p11418 (dp11419 S'editable' p11420 I01 sS'value' p11421 S'Published File' p11422 ssS'data_type' p11423 (dp11424 S'editable' p11425 I00 sS'value' p11426 S'entity' p11427 ssS'entity_type' p11428 (dp11429 S'editable' p11430 I00 sS'value' p11431 S'PublishedFileDependency' p11432 ssS'editable' p11433 (dp11434 S'editable' p11435 I00 sS'value' p11436 I01 ssS'unique' p11437 (dp11438 S'editable' p11439 I00 sS'value' p11440 I00 ssS'properties' p11441 (dp11442 S'default_value' p11443 (dp11444 S'editable' p11445 I00 sS'value' p11446 NssS'summary_default' p11447 (dp11448 S'editable' p11449 I00 sS'value' p11450 S'none' p11451 ssS'valid_types' p11452 (dp11453 S'editable' p11454 I00 sS'value' p11455 (lp11456 S'PublishedFile' p11457 asssS'description' p11458 (dp11459 S'editable' p11460 I01 sS'value' p11461 g47 ssssS'Step' p11462 (dp11463 S'code' p11464 (dp11465 S'mandatory' p11466 (dp11467 S'editable' p11468 I00 sS'value' p11469 I01 ssS'name' p11470 (dp11471 S'editable' p11472 I01 sS'value' p11473 S'Pipeline Step' p11474 ssS'data_type' p11475 (dp11476 S'editable' p11477 I00 sS'value' p11478 S'text' p11479 ssS'entity_type' p11480 (dp11481 S'editable' p11482 I00 sS'value' p11483 S'Step' p11484 ssS'editable' p11485 (dp11486 S'editable' p11487 I00 sS'value' p11488 I01 ssS'unique' p11489 (dp11490 S'editable' p11491 I00 sS'value' p11492 I00 ssS'properties' p11493 (dp11494 S'default_value' p11495 (dp11496 S'editable' p11497 I00 sS'value' p11498 NssS'summary_default' p11499 (dp11500 S'editable' p11501 I01 sS'value' p11502 S'none' p11503 sssS'description' p11504 (dp11505 S'editable' p11506 I01 sS'value' p11507 g47 sssS'description' p11508 (dp11509 S'mandatory' p11510 (dp11511 S'editable' p11512 I00 sS'value' p11513 I00 ssS'name' p11514 (dp11515 S'editable' p11516 I01 sS'value' p11517 S'Description' p11518 ssS'data_type' p11519 (dp11520 S'editable' p11521 I00 sS'value' p11522 S'text' p11523 ssS'entity_type' p11524 (dp11525 S'editable' p11526 I00 sS'value' p11527 S'Step' p11528 ssS'editable' p11529 (dp11530 S'editable' p11531 I00 sS'value' p11532 I01 ssS'unique' p11533 (dp11534 S'editable' p11535 I00 sS'value' p11536 I00 ssS'properties' p11537 (dp11538 S'default_value' p11539 (dp11540 S'editable' p11541 I00 sS'value' p11542 NssS'summary_default' p11543 (dp11544 S'editable' p11545 I01 sS'value' p11546 S'none' p11547 sssS'description' p11548 (dp11549 S'editable' p11550 I01 sS'value' p11551 g47 sssS'short_name' p11552 (dp11553 S'mandatory' p11554 (dp11555 S'editable' p11556 I00 sS'value' p11557 I00 ssS'name' p11558 (dp11559 S'editable' p11560 I01 sS'value' p11561 S'Short Code' p11562 ssS'data_type' p11563 (dp11564 S'editable' p11565 I00 sS'value' p11566 S'text' p11567 ssS'entity_type' p11568 (dp11569 S'editable' p11570 I00 sS'value' p11571 S'Step' p11572 ssS'editable' p11573 (dp11574 S'editable' p11575 I00 sS'value' p11576 I01 ssS'unique' p11577 (dp11578 S'editable' p11579 I00 sS'value' p11580 I00 ssS'properties' p11581 (dp11582 S'default_value' p11583 (dp11584 S'editable' p11585 I00 sS'value' p11586 NssS'summary_default' p11587 (dp11588 S'editable' p11589 I01 sS'value' p11590 S'none' p11591 sssS'description' p11592 (dp11593 S'editable' p11594 I01 sS'value' p11595 g47 sssS'list_order' p11596 (dp11597 S'mandatory' p11598 (dp11599 S'editable' p11600 I00 sS'value' p11601 I00 ssS'name' p11602 (dp11603 S'editable' p11604 I01 sS'value' p11605 S'Order' p11606 ssS'data_type' p11607 (dp11608 S'editable' p11609 I00 sS'value' p11610 S'number' p11611 ssS'entity_type' p11612 (dp11613 S'editable' p11614 I00 sS'value' p11615 S'Step' p11616 ssS'editable' p11617 (dp11618 S'editable' p11619 I00 sS'value' p11620 I01 ssS'unique' p11621 (dp11622 S'editable' p11623 I00 sS'value' p11624 I00 ssS'properties' p11625 (dp11626 S'default_value' p11627 (dp11628 S'editable' p11629 I00 sS'value' p11630 NssS'summary_default' p11631 (dp11632 S'editable' p11633 I01 sS'value' p11634 S'none' p11635 sssS'description' p11636 (dp11637 S'editable' p11638 I01 sS'value' p11639 g47 sssS'color' p11640 (dp11641 S'mandatory' p11642 (dp11643 S'editable' p11644 I00 sS'value' p11645 I00 ssS'name' p11646 (dp11647 S'editable' p11648 I01 sS'value' p11649 S'Color' p11650 ssS'data_type' p11651 (dp11652 S'editable' p11653 I00 sS'value' p11654 S'color' p11655 ssS'entity_type' p11656 (dp11657 S'editable' p11658 I00 sS'value' p11659 S'Step' p11660 ssS'editable' p11661 (dp11662 S'editable' p11663 I00 sS'value' p11664 I01 ssS'unique' p11665 (dp11666 S'editable' p11667 I00 sS'value' p11668 I00 ssS'properties' p11669 (dp11670 S'default_value' p11671 (dp11672 S'editable' p11673 I00 sS'value' p11674 NssS'summary_default' p11675 (dp11676 S'editable' p11677 I01 sS'value' p11678 S'none' p11679 sssS'description' p11680 (dp11681 S'editable' p11682 I01 sS'value' p11683 g47 sssS'created_at' p11684 (dp11685 S'mandatory' p11686 (dp11687 S'editable' p11688 I00 sS'value' p11689 I00 ssS'name' p11690 (dp11691 S'editable' p11692 I01 sS'value' p11693 S'Date Created' p11694 ssS'data_type' p11695 (dp11696 S'editable' p11697 I00 sS'value' p11698 S'date_time' p11699 ssS'entity_type' p11700 (dp11701 S'editable' p11702 I00 sS'value' p11703 S'Step' p11704 ssS'editable' p11705 (dp11706 S'editable' p11707 I00 sS'value' p11708 I00 ssS'unique' p11709 (dp11710 S'editable' p11711 I00 sS'value' p11712 I00 ssS'properties' p11713 (dp11714 S'default_value' p11715 (dp11716 S'editable' p11717 I00 sS'value' p11718 NssS'summary_default' p11719 (dp11720 S'editable' p11721 I01 sS'value' p11722 S'none' p11723 sssS'description' p11724 (dp11725 S'editable' p11726 I01 sS'value' p11727 g47 sssS'entity_type' p11728 (dp11729 S'mandatory' p11730 (dp11731 S'editable' p11732 I00 sS'value' p11733 I00 ssS'name' p11734 (dp11735 S'editable' p11736 I01 sS'value' p11737 S'Entity Type' p11738 ssS'data_type' p11739 (dp11740 S'editable' p11741 I00 sS'value' p11742 S'entity_type' p11743 ssS'entity_type' p11744 (dp11745 S'editable' p11746 I00 sS'value' p11747 S'Step' p11748 ssS'editable' p11749 (dp11750 S'editable' p11751 I00 sS'value' p11752 I01 ssS'unique' p11753 (dp11754 S'editable' p11755 I00 sS'value' p11756 I00 ssS'properties' p11757 (dp11758 S'default_value' p11759 (dp11760 S'editable' p11761 I00 sS'value' p11762 NssS'summary_default' p11763 (dp11764 S'editable' p11765 I01 sS'value' p11766 S'none' p11767 sssS'description' p11768 (dp11769 S'editable' p11770 I01 sS'value' p11771 g47 sssS'updated_at' p11772 (dp11773 S'mandatory' p11774 (dp11775 S'editable' p11776 I00 sS'value' p11777 I00 ssS'name' p11778 (dp11779 S'editable' p11780 I01 sS'value' p11781 S'Date Updated' p11782 ssS'data_type' p11783 (dp11784 S'editable' p11785 I00 sS'value' p11786 S'date_time' p11787 ssS'entity_type' p11788 (dp11789 S'editable' p11790 I00 sS'value' p11791 S'Step' p11792 ssS'editable' p11793 (dp11794 S'editable' p11795 I00 sS'value' p11796 I00 ssS'unique' p11797 (dp11798 S'editable' p11799 I00 sS'value' p11800 I00 ssS'properties' p11801 (dp11802 S'default_value' p11803 (dp11804 S'editable' p11805 I00 sS'value' p11806 NssS'summary_default' p11807 (dp11808 S'editable' p11809 I01 sS'value' p11810 S'none' p11811 sssS'description' p11812 (dp11813 S'editable' p11814 I01 sS'value' p11815 g47 sssS'created_by' p11816 (dp11817 S'mandatory' p11818 (dp11819 S'editable' p11820 I00 sS'value' p11821 I00 ssS'name' p11822 (dp11823 S'editable' p11824 I01 sS'value' p11825 S'Created by' p11826 ssS'data_type' p11827 (dp11828 S'editable' p11829 I00 sS'value' p11830 S'entity' p11831 ssS'entity_type' p11832 (dp11833 S'editable' p11834 I00 sS'value' p11835 S'Step' p11836 ssS'editable' p11837 (dp11838 S'editable' p11839 I00 sS'value' p11840 I00 ssS'unique' p11841 (dp11842 S'editable' p11843 I00 sS'value' p11844 I00 ssS'properties' p11845 (dp11846 S'default_value' p11847 (dp11848 S'editable' p11849 I00 sS'value' p11850 NssS'summary_default' p11851 (dp11852 S'editable' p11853 I01 sS'value' p11854 S'none' p11855 ssS'valid_types' p11856 (dp11857 S'editable' p11858 I01 sS'value' p11859 (lp11860 S'HumanUser' p11861 aS'ApiUser' p11862 asssS'description' p11863 (dp11864 S'editable' p11865 I01 sS'value' p11866 g47 sssS'cached_display_name' p11867 (dp11868 S'mandatory' p11869 (dp11870 S'editable' p11871 I00 sS'value' p11872 I00 ssS'name' p11873 (dp11874 S'editable' p11875 I01 sS'value' p11876 S'Cached Display Name' p11877 ssS'data_type' p11878 (dp11879 S'editable' p11880 I00 sS'value' p11881 S'text' p11882 ssS'entity_type' p11883 (dp11884 S'editable' p11885 I00 sS'value' p11886 S'Step' p11887 ssS'editable' p11888 (dp11889 S'editable' p11890 I00 sS'value' p11891 I01 ssS'unique' p11892 (dp11893 S'editable' p11894 I00 sS'value' p11895 I00 ssS'properties' p11896 (dp11897 S'default_value' p11898 (dp11899 S'editable' p11900 I00 sS'value' p11901 NssS'summary_default' p11902 (dp11903 S'editable' p11904 I00 sS'value' p11905 S'none' p11906 sssS'description' p11907 (dp11908 S'editable' p11909 I01 sS'value' p11910 g47 sssS'id' p11911 (dp11912 S'mandatory' p11913 (dp11914 S'editable' p11915 I00 sS'value' p11916 I00 ssS'name' p11917 (dp11918 S'editable' p11919 I01 sS'value' p11920 S'Id' p11921 ssS'data_type' p11922 (dp11923 S'editable' p11924 I00 sS'value' p11925 S'number' p11926 ssS'entity_type' p11927 (dp11928 S'editable' p11929 I00 sS'value' p11930 S'Step' p11931 ssS'editable' p11932 (dp11933 S'editable' p11934 I00 sS'value' p11935 I00 ssS'unique' p11936 (dp11937 S'editable' p11938 I00 sS'value' p11939 I00 ssS'properties' p11940 (dp11941 S'default_value' p11942 (dp11943 S'editable' p11944 I00 sS'value' p11945 NssS'summary_default' p11946 (dp11947 S'editable' p11948 I00 sS'value' p11949 S'none' p11950 sssS'description' p11951 (dp11952 S'editable' p11953 I01 sS'value' p11954 g47 sssS'updated_by' p11955 (dp11956 S'mandatory' p11957 (dp11958 S'editable' p11959 I00 sS'value' p11960 I00 ssS'name' p11961 (dp11962 S'editable' p11963 I01 sS'value' p11964 S'Updated by' p11965 ssS'data_type' p11966 (dp11967 S'editable' p11968 I00 sS'value' p11969 S'entity' p11970 ssS'entity_type' p11971 (dp11972 S'editable' p11973 I00 sS'value' p11974 S'Step' p11975 ssS'editable' p11976 (dp11977 S'editable' p11978 I00 sS'value' p11979 I00 ssS'unique' p11980 (dp11981 S'editable' p11982 I00 sS'value' p11983 I00 ssS'properties' p11984 (dp11985 S'default_value' p11986 (dp11987 S'editable' p11988 I00 sS'value' p11989 NssS'summary_default' p11990 (dp11991 S'editable' p11992 I01 sS'value' p11993 S'none' p11994 ssS'valid_types' p11995 (dp11996 S'editable' p11997 I01 sS'value' p11998 (lp11999 S'HumanUser' p12000 aS'ApiUser' p12001 asssS'description' p12002 (dp12003 S'editable' p12004 I01 sS'value' p12005 g47 ssssS'AssetLibrary' p12006 (dp12007 S'open_notes_count' p12008 (dp12009 S'mandatory' p12010 (dp12011 S'editable' p12012 I00 sS'value' p12013 I00 ssS'name' p12014 (dp12015 S'editable' p12016 I01 sS'value' p12017 S'Open Notes Count' p12018 ssS'data_type' p12019 (dp12020 S'editable' p12021 I00 sS'value' p12022 S'text' p12023 ssS'entity_type' p12024 (dp12025 S'editable' p12026 I00 sS'value' p12027 S'AssetLibrary' p12028 ssS'editable' p12029 (dp12030 S'editable' p12031 I00 sS'value' p12032 I00 ssS'unique' p12033 (dp12034 S'editable' p12035 I00 sS'value' p12036 I00 ssS'properties' p12037 (dp12038 S'default_value' p12039 (dp12040 S'editable' p12041 I00 sS'value' p12042 NssS'summary_default' p12043 (dp12044 S'editable' p12045 I01 sS'value' p12046 S'none' p12047 sssS'description' p12048 (dp12049 S'editable' p12050 I01 sS'value' p12051 g47 sssS'code' p12052 (dp12053 S'mandatory' p12054 (dp12055 S'editable' p12056 I00 sS'value' p12057 I01 ssS'name' p12058 (dp12059 S'editable' p12060 I01 sS'value' p12061 S'Asset Library Name' p12062 ssS'data_type' p12063 (dp12064 S'editable' p12065 I00 sS'value' p12066 S'text' p12067 ssS'entity_type' p12068 (dp12069 S'editable' p12070 I00 sS'value' p12071 S'AssetLibrary' p12072 ssS'editable' p12073 (dp12074 S'editable' p12075 I00 sS'value' p12076 I01 ssS'unique' p12077 (dp12078 S'editable' p12079 I00 sS'value' p12080 I00 ssS'properties' p12081 (dp12082 S'default_value' p12083 (dp12084 S'editable' p12085 I00 sS'value' p12086 NssS'summary_default' p12087 (dp12088 S'editable' p12089 I01 sS'value' p12090 S'none' p12091 sssS'description' p12092 (dp12093 S'editable' p12094 I01 sS'value' p12095 g47 sssS'open_notes' p12096 (dp12097 S'mandatory' p12098 (dp12099 S'editable' p12100 I00 sS'value' p12101 I00 ssS'name' p12102 (dp12103 S'editable' p12104 I01 sS'value' p12105 S'Open Notes' p12106 ssS'data_type' p12107 (dp12108 S'editable' p12109 I00 sS'value' p12110 S'multi_entity' p12111 ssS'entity_type' p12112 (dp12113 S'editable' p12114 I00 sS'value' p12115 S'AssetLibrary' p12116 ssS'editable' p12117 (dp12118 S'editable' p12119 I00 sS'value' p12120 I00 ssS'unique' p12121 (dp12122 S'editable' p12123 I00 sS'value' p12124 I00 ssS'properties' p12125 (dp12126 S'default_value' p12127 (dp12128 S'editable' p12129 I00 sS'value' p12130 NssS'summary_default' p12131 (dp12132 S'editable' p12133 I01 sS'value' p12134 S'none' p12135 ssS'valid_types' p12136 (dp12137 S'editable' p12138 I01 sS'value' p12139 (lp12140 S'Note' p12141 asssS'description' p12142 (dp12143 S'editable' p12144 I01 sS'value' p12145 g47 sssS'description' p12146 (dp12147 S'mandatory' p12148 (dp12149 S'editable' p12150 I00 sS'value' p12151 I00 ssS'name' p12152 (dp12153 S'editable' p12154 I01 sS'value' p12155 S'Description' p12156 ssS'data_type' p12157 (dp12158 S'editable' p12159 I00 sS'value' p12160 S'text' p12161 ssS'entity_type' p12162 (dp12163 S'editable' p12164 I00 sS'value' p12165 S'AssetLibrary' p12166 ssS'editable' p12167 (dp12168 S'editable' p12169 I00 sS'value' p12170 I01 ssS'unique' p12171 (dp12172 S'editable' p12173 I00 sS'value' p12174 I00 ssS'properties' p12175 (dp12176 S'default_value' p12177 (dp12178 S'editable' p12179 I00 sS'value' p12180 NssS'summary_default' p12181 (dp12182 S'editable' p12183 I01 sS'value' p12184 S'none' p12185 sssS'description' p12186 (dp12187 S'editable' p12188 I01 sS'value' p12189 g47 sssS'created_at' p12190 (dp12191 S'mandatory' p12192 (dp12193 S'editable' p12194 I00 sS'value' p12195 I00 ssS'name' p12196 (dp12197 S'editable' p12198 I01 sS'value' p12199 S'Date Created' p12200 ssS'data_type' p12201 (dp12202 S'editable' p12203 I00 sS'value' p12204 S'date_time' p12205 ssS'entity_type' p12206 (dp12207 S'editable' p12208 I00 sS'value' p12209 S'AssetLibrary' p12210 ssS'editable' p12211 (dp12212 S'editable' p12213 I00 sS'value' p12214 I00 ssS'unique' p12215 (dp12216 S'editable' p12217 I00 sS'value' p12218 I00 ssS'properties' p12219 (dp12220 S'default_value' p12221 (dp12222 S'editable' p12223 I00 sS'value' p12224 NssS'summary_default' p12225 (dp12226 S'editable' p12227 I01 sS'value' p12228 S'none' p12229 sssS'description' p12230 (dp12231 S'editable' p12232 I01 sS'value' p12233 g47 sssS'updated_at' p12234 (dp12235 S'mandatory' p12236 (dp12237 S'editable' p12238 I00 sS'value' p12239 I00 ssS'name' p12240 (dp12241 S'editable' p12242 I01 sS'value' p12243 S'Date Updated' p12244 ssS'data_type' p12245 (dp12246 S'editable' p12247 I00 sS'value' p12248 S'date_time' p12249 ssS'entity_type' p12250 (dp12251 S'editable' p12252 I00 sS'value' p12253 S'AssetLibrary' p12254 ssS'editable' p12255 (dp12256 S'editable' p12257 I00 sS'value' p12258 I00 ssS'unique' p12259 (dp12260 S'editable' p12261 I00 sS'value' p12262 I00 ssS'properties' p12263 (dp12264 S'default_value' p12265 (dp12266 S'editable' p12267 I00 sS'value' p12268 NssS'summary_default' p12269 (dp12270 S'editable' p12271 I01 sS'value' p12272 S'none' p12273 sssS'description' p12274 (dp12275 S'editable' p12276 I01 sS'value' p12277 g47 sssS'created_by' p12278 (dp12279 S'mandatory' p12280 (dp12281 S'editable' p12282 I00 sS'value' p12283 I00 ssS'name' p12284 (dp12285 S'editable' p12286 I01 sS'value' p12287 S'Created by' p12288 ssS'data_type' p12289 (dp12290 S'editable' p12291 I00 sS'value' p12292 S'entity' p12293 ssS'entity_type' p12294 (dp12295 S'editable' p12296 I00 sS'value' p12297 S'AssetLibrary' p12298 ssS'editable' p12299 (dp12300 S'editable' p12301 I00 sS'value' p12302 I00 ssS'unique' p12303 (dp12304 S'editable' p12305 I00 sS'value' p12306 I00 ssS'properties' p12307 (dp12308 S'default_value' p12309 (dp12310 S'editable' p12311 I00 sS'value' p12312 NssS'summary_default' p12313 (dp12314 S'editable' p12315 I01 sS'value' p12316 S'none' p12317 ssS'valid_types' p12318 (dp12319 S'editable' p12320 I01 sS'value' p12321 (lp12322 S'HumanUser' p12323 aS'ApiUser' p12324 asssS'description' p12325 (dp12326 S'editable' p12327 I01 sS'value' p12328 g47 sssS'project' p12329 (dp12330 S'mandatory' p12331 (dp12332 S'editable' p12333 I00 sS'value' p12334 I00 ssS'name' p12335 (dp12336 S'editable' p12337 I01 sS'value' p12338 S'Project' p12339 ssS'data_type' p12340 (dp12341 S'editable' p12342 I00 sS'value' p12343 S'entity' p12344 ssS'entity_type' p12345 (dp12346 S'editable' p12347 I00 sS'value' p12348 S'AssetLibrary' p12349 ssS'editable' p12350 (dp12351 S'editable' p12352 I00 sS'value' p12353 I01 ssS'unique' p12354 (dp12355 S'editable' p12356 I00 sS'value' p12357 I00 ssS'properties' p12358 (dp12359 S'default_value' p12360 (dp12361 S'editable' p12362 I00 sS'value' p12363 NssS'summary_default' p12364 (dp12365 S'editable' p12366 I01 sS'value' p12367 S'none' p12368 ssS'valid_types' p12369 (dp12370 S'editable' p12371 I01 sS'value' p12372 (lp12373 S'Project' p12374 asssS'description' p12375 (dp12376 S'editable' p12377 I01 sS'value' p12378 g47 sssS'filmstrip_image' p12379 (dp12380 S'mandatory' p12381 (dp12382 S'editable' p12383 I00 sS'value' p12384 I00 ssS'name' p12385 (dp12386 S'editable' p12387 I01 sS'value' p12388 S'Filmstrip Thumbnail' p12389 ssS'data_type' p12390 (dp12391 S'editable' p12392 I00 sS'value' p12393 S'image' p12394 ssS'entity_type' p12395 (dp12396 S'editable' p12397 I00 sS'value' p12398 S'AssetLibrary' p12399 ssS'editable' p12400 (dp12401 S'editable' p12402 I00 sS'value' p12403 I01 ssS'unique' p12404 (dp12405 S'editable' p12406 I00 sS'value' p12407 I00 ssS'properties' p12408 (dp12409 S'default_value' p12410 (dp12411 S'editable' p12412 I00 sS'value' p12413 NssS'summary_default' p12414 (dp12415 S'editable' p12416 I01 sS'value' p12417 S'none' p12418 sssS'description' p12419 (dp12420 S'editable' p12421 I01 sS'value' p12422 g47 sssS'sg_status_list' p12423 (dp12424 S'mandatory' p12425 (dp12426 S'editable' p12427 I00 sS'value' p12428 I00 ssS'name' p12429 (dp12430 S'editable' p12431 I01 sS'value' p12432 S'Status' p12433 ssS'data_type' p12434 (dp12435 S'editable' p12436 I00 sS'value' p12437 S'status_list' p12438 ssS'entity_type' p12439 (dp12440 S'editable' p12441 I00 sS'value' p12442 S'AssetLibrary' p12443 ssS'editable' p12444 (dp12445 S'editable' p12446 I00 sS'value' p12447 I01 ssS'unique' p12448 (dp12449 S'editable' p12450 I00 sS'value' p12451 I00 ssS'properties' p12452 (dp12453 S'default_value' p12454 (dp12455 S'editable' p12456 I01 sS'value' p12457 S'wtg' p12458 ssS'valid_values' p12459 (dp12460 S'editable' p12461 I01 sS'value' p12462 (lp12463 S'cmpt' p12464 aS'ip' p12465 aS'wtg' p12466 assS'summary_default' p12467 (dp12468 S'editable' p12469 I01 sS'value' p12470 S'none' p12471 sssS'description' p12472 (dp12473 S'editable' p12474 I01 sS'value' p12475 g47 sssS'notes' p12476 (dp12477 S'mandatory' p12478 (dp12479 S'editable' p12480 I00 sS'value' p12481 I00 ssS'name' p12482 (dp12483 S'editable' p12484 I01 sS'value' p12485 S'Notes' p12486 ssS'data_type' p12487 (dp12488 S'editable' p12489 I00 sS'value' p12490 S'multi_entity' p12491 ssS'entity_type' p12492 (dp12493 S'editable' p12494 I00 sS'value' p12495 S'AssetLibrary' p12496 ssS'editable' p12497 (dp12498 S'editable' p12499 I00 sS'value' p12500 I01 ssS'unique' p12501 (dp12502 S'editable' p12503 I00 sS'value' p12504 I00 ssS'properties' p12505 (dp12506 S'default_value' p12507 (dp12508 S'editable' p12509 I00 sS'value' p12510 NssS'summary_default' p12511 (dp12512 S'editable' p12513 I01 sS'value' p12514 S'none' p12515 ssS'valid_types' p12516 (dp12517 S'editable' p12518 I01 sS'value' p12519 (lp12520 S'Note' p12521 asssS'description' p12522 (dp12523 S'editable' p12524 I01 sS'value' p12525 g47 sssS'image' p12526 (dp12527 S'mandatory' p12528 (dp12529 S'editable' p12530 I00 sS'value' p12531 I00 ssS'name' p12532 (dp12533 S'editable' p12534 I01 sS'value' p12535 S'Thumbnail' p12536 ssS'data_type' p12537 (dp12538 S'editable' p12539 I00 sS'value' p12540 S'image' p12541 ssS'entity_type' p12542 (dp12543 S'editable' p12544 I00 sS'value' p12545 S'AssetLibrary' p12546 ssS'editable' p12547 (dp12548 S'editable' p12549 I00 sS'value' p12550 I01 ssS'unique' p12551 (dp12552 S'editable' p12553 I00 sS'value' p12554 I00 ssS'properties' p12555 (dp12556 S'default_value' p12557 (dp12558 S'editable' p12559 I00 sS'value' p12560 NssS'summary_default' p12561 (dp12562 S'editable' p12563 I01 sS'value' p12564 S'none' p12565 sssS'description' p12566 (dp12567 S'editable' p12568 I01 sS'value' p12569 g47 sssS'cached_display_name' p12570 (dp12571 S'mandatory' p12572 (dp12573 S'editable' p12574 I00 sS'value' p12575 I00 ssS'name' p12576 (dp12577 S'editable' p12578 I01 sS'value' p12579 S'Cached Display Name' p12580 ssS'data_type' p12581 (dp12582 S'editable' p12583 I00 sS'value' p12584 S'text' p12585 ssS'entity_type' p12586 (dp12587 S'editable' p12588 I00 sS'value' p12589 S'AssetLibrary' p12590 ssS'editable' p12591 (dp12592 S'editable' p12593 I00 sS'value' p12594 I01 ssS'unique' p12595 (dp12596 S'editable' p12597 I00 sS'value' p12598 I00 ssS'properties' p12599 (dp12600 S'default_value' p12601 (dp12602 S'editable' p12603 I00 sS'value' p12604 NssS'summary_default' p12605 (dp12606 S'editable' p12607 I00 sS'value' p12608 S'none' p12609 sssS'description' p12610 (dp12611 S'editable' p12612 I01 sS'value' p12613 g47 sssS'tag_list' p12614 (dp12615 S'mandatory' p12616 (dp12617 S'editable' p12618 I00 sS'value' p12619 I00 ssS'name' p12620 (dp12621 S'editable' p12622 I01 sS'value' p12623 S'Tags' p12624 ssS'data_type' p12625 (dp12626 S'editable' p12627 I00 sS'value' p12628 S'tag_list' p12629 ssS'entity_type' p12630 (dp12631 S'editable' p12632 I00 sS'value' p12633 S'AssetLibrary' p12634 ssS'editable' p12635 (dp12636 S'editable' p12637 I00 sS'value' p12638 I01 ssS'unique' p12639 (dp12640 S'editable' p12641 I00 sS'value' p12642 I00 ssS'properties' p12643 (dp12644 S'default_value' p12645 (dp12646 S'editable' p12647 I00 sS'value' p12648 NssS'summary_default' p12649 (dp12650 S'editable' p12651 I01 sS'value' p12652 S'none' p12653 ssS'valid_types' p12654 (dp12655 S'editable' p12656 I01 sS'value' p12657 (lp12658 S'Tag' p12659 asssS'description' p12660 (dp12661 S'editable' p12662 I01 sS'value' p12663 g47 sssS'id' p12664 (dp12665 S'mandatory' p12666 (dp12667 S'editable' p12668 I00 sS'value' p12669 I00 ssS'name' p12670 (dp12671 S'editable' p12672 I01 sS'value' p12673 S'Id' p12674 ssS'data_type' p12675 (dp12676 S'editable' p12677 I00 sS'value' p12678 S'number' p12679 ssS'entity_type' p12680 (dp12681 S'editable' p12682 I00 sS'value' p12683 S'AssetLibrary' p12684 ssS'editable' p12685 (dp12686 S'editable' p12687 I00 sS'value' p12688 I00 ssS'unique' p12689 (dp12690 S'editable' p12691 I00 sS'value' p12692 I00 ssS'properties' p12693 (dp12694 S'default_value' p12695 (dp12696 S'editable' p12697 I00 sS'value' p12698 NssS'summary_default' p12699 (dp12700 S'editable' p12701 I01 sS'value' p12702 S'none' p12703 sssS'description' p12704 (dp12705 S'editable' p12706 I01 sS'value' p12707 g47 sssS'updated_by' p12708 (dp12709 S'mandatory' p12710 (dp12711 S'editable' p12712 I00 sS'value' p12713 I00 ssS'name' p12714 (dp12715 S'editable' p12716 I01 sS'value' p12717 S'Updated by' p12718 ssS'data_type' p12719 (dp12720 S'editable' p12721 I00 sS'value' p12722 S'entity' p12723 ssS'entity_type' p12724 (dp12725 S'editable' p12726 I00 sS'value' p12727 S'AssetLibrary' p12728 ssS'editable' p12729 (dp12730 S'editable' p12731 I00 sS'value' p12732 I00 ssS'unique' p12733 (dp12734 S'editable' p12735 I00 sS'value' p12736 I00 ssS'properties' p12737 (dp12738 S'default_value' p12739 (dp12740 S'editable' p12741 I00 sS'value' p12742 NssS'summary_default' p12743 (dp12744 S'editable' p12745 I01 sS'value' p12746 S'none' p12747 ssS'valid_types' p12748 (dp12749 S'editable' p12750 I01 sS'value' p12751 (lp12752 S'HumanUser' p12753 aS'ApiUser' p12754 asssS'description' p12755 (dp12756 S'editable' p12757 I01 sS'value' p12758 g47 ssssS'PerformerMocapTakeConnection' p12759 (dp12760 S'mocap_take' p12761 (dp12762 S'mandatory' p12763 (dp12764 S'editable' p12765 I00 sS'value' p12766 I00 ssS'name' p12767 (dp12768 S'editable' p12769 I01 sS'value' p12770 S'Mocap Take' p12771 ssS'data_type' p12772 (dp12773 S'editable' p12774 I00 sS'value' p12775 S'entity' p12776 ssS'entity_type' p12777 (dp12778 S'editable' p12779 I00 sS'value' p12780 S'PerformerMocapTakeConnection' p12781 ssS'editable' p12782 (dp12783 S'editable' p12784 I00 sS'value' p12785 I00 ssS'unique' p12786 (dp12787 S'editable' p12788 I00 sS'value' p12789 I00 ssS'properties' p12790 (dp12791 S'default_value' p12792 (dp12793 S'editable' p12794 I00 sS'value' p12795 NssS'summary_default' p12796 (dp12797 S'editable' p12798 I00 sS'value' p12799 S'none' p12800 ssS'valid_types' p12801 (dp12802 S'editable' p12803 I00 sS'value' p12804 (lp12805 S'MocapTake' p12806 asssS'description' p12807 (dp12808 S'editable' p12809 I01 sS'value' p12810 g47 sssS'cached_display_name' p12811 (dp12812 S'mandatory' p12813 (dp12814 S'editable' p12815 I00 sS'value' p12816 I00 ssS'name' p12817 (dp12818 S'editable' p12819 I01 sS'value' p12820 S'Cached Display Name' p12821 ssS'data_type' p12822 (dp12823 S'editable' p12824 I00 sS'value' p12825 S'text' p12826 ssS'entity_type' p12827 (dp12828 S'editable' p12829 I00 sS'value' p12830 S'PerformerMocapTakeConnection' p12831 ssS'editable' p12832 (dp12833 S'editable' p12834 I00 sS'value' p12835 I01 ssS'unique' p12836 (dp12837 S'editable' p12838 I00 sS'value' p12839 I00 ssS'properties' p12840 (dp12841 S'default_value' p12842 (dp12843 S'editable' p12844 I00 sS'value' p12845 NssS'summary_default' p12846 (dp12847 S'editable' p12848 I00 sS'value' p12849 S'none' p12850 sssS'description' p12851 (dp12852 S'editable' p12853 I01 sS'value' p12854 g47 sssS'performer' p12855 (dp12856 S'mandatory' p12857 (dp12858 S'editable' p12859 I00 sS'value' p12860 I00 ssS'name' p12861 (dp12862 S'editable' p12863 I01 sS'value' p12864 S'Performer' p12865 ssS'data_type' p12866 (dp12867 S'editable' p12868 I00 sS'value' p12869 S'entity' p12870 ssS'entity_type' p12871 (dp12872 S'editable' p12873 I00 sS'value' p12874 S'PerformerMocapTakeConnection' p12875 ssS'editable' p12876 (dp12877 S'editable' p12878 I00 sS'value' p12879 I00 ssS'unique' p12880 (dp12881 S'editable' p12882 I00 sS'value' p12883 I00 ssS'properties' p12884 (dp12885 S'default_value' p12886 (dp12887 S'editable' p12888 I00 sS'value' p12889 NssS'summary_default' p12890 (dp12891 S'editable' p12892 I00 sS'value' p12893 S'none' p12894 ssS'valid_types' p12895 (dp12896 S'editable' p12897 I00 sS'value' p12898 (lp12899 S'Performer' p12900 asssS'description' p12901 (dp12902 S'editable' p12903 I01 sS'value' p12904 g47 sssS'id' p12905 (dp12906 S'mandatory' p12907 (dp12908 S'editable' p12909 I00 sS'value' p12910 I01 ssS'name' p12911 (dp12912 S'editable' p12913 I01 sS'value' p12914 S'Id' p12915 ssS'data_type' p12916 (dp12917 S'editable' p12918 I00 sS'value' p12919 S'number' p12920 ssS'entity_type' p12921 (dp12922 S'editable' p12923 I00 sS'value' p12924 S'PerformerMocapTakeConnection' p12925 ssS'editable' p12926 (dp12927 S'editable' p12928 I00 sS'value' p12929 I00 ssS'unique' p12930 (dp12931 S'editable' p12932 I00 sS'value' p12933 I00 ssS'properties' p12934 (dp12935 S'default_value' p12936 (dp12937 S'editable' p12938 I00 sS'value' p12939 NssS'summary_default' p12940 (dp12941 S'editable' p12942 I00 sS'value' p12943 S'none' p12944 sssS'description' p12945 (dp12946 S'editable' p12947 I01 sS'value' p12948 g47 ssssS'Phase' p12949 (dp12950 S'open_notes_count' p12951 (dp12952 S'mandatory' p12953 (dp12954 S'editable' p12955 I00 sS'value' p12956 I00 ssS'name' p12957 (dp12958 S'editable' p12959 I01 sS'value' p12960 S'Open Notes Count' p12961 ssS'data_type' p12962 (dp12963 S'editable' p12964 I00 sS'value' p12965 S'text' p12966 ssS'entity_type' p12967 (dp12968 S'editable' p12969 I00 sS'value' p12970 S'Phase' p12971 ssS'editable' p12972 (dp12973 S'editable' p12974 I00 sS'value' p12975 I00 ssS'unique' p12976 (dp12977 S'editable' p12978 I00 sS'value' p12979 I00 ssS'properties' p12980 (dp12981 S'default_value' p12982 (dp12983 S'editable' p12984 I00 sS'value' p12985 NssS'summary_default' p12986 (dp12987 S'editable' p12988 I01 sS'value' p12989 S'none' p12990 sssS'description' p12991 (dp12992 S'editable' p12993 I01 sS'value' p12994 g47 sssS'code' p12995 (dp12996 S'mandatory' p12997 (dp12998 S'editable' p12999 I00 sS'value' p13000 I01 ssS'name' p13001 (dp13002 S'editable' p13003 I01 sS'value' p13004 S'Phase Name' p13005 ssS'data_type' p13006 (dp13007 S'editable' p13008 I00 sS'value' p13009 S'text' p13010 ssS'entity_type' p13011 (dp13012 S'editable' p13013 I00 sS'value' p13014 S'Phase' p13015 ssS'editable' p13016 (dp13017 S'editable' p13018 I00 sS'value' p13019 I01 ssS'unique' p13020 (dp13021 S'editable' p13022 I00 sS'value' p13023 I00 ssS'properties' p13024 (dp13025 S'default_value' p13026 (dp13027 S'editable' p13028 I00 sS'value' p13029 NssS'summary_default' p13030 (dp13031 S'editable' p13032 I01 sS'value' p13033 S'none' p13034 sssS'description' p13035 (dp13036 S'editable' p13037 I01 sS'value' p13038 g47 sssS'open_notes' p13039 (dp13040 S'mandatory' p13041 (dp13042 S'editable' p13043 I00 sS'value' p13044 I00 ssS'name' p13045 (dp13046 S'editable' p13047 I01 sS'value' p13048 S'Open Notes' p13049 ssS'data_type' p13050 (dp13051 S'editable' p13052 I00 sS'value' p13053 S'multi_entity' p13054 ssS'entity_type' p13055 (dp13056 S'editable' p13057 I00 sS'value' p13058 S'Phase' p13059 ssS'editable' p13060 (dp13061 S'editable' p13062 I00 sS'value' p13063 I00 ssS'unique' p13064 (dp13065 S'editable' p13066 I00 sS'value' p13067 I00 ssS'properties' p13068 (dp13069 S'default_value' p13070 (dp13071 S'editable' p13072 I00 sS'value' p13073 NssS'summary_default' p13074 (dp13075 S'editable' p13076 I01 sS'value' p13077 S'none' p13078 ssS'valid_types' p13079 (dp13080 S'editable' p13081 I01 sS'value' p13082 (lp13083 S'Note' p13084 asssS'description' p13085 (dp13086 S'editable' p13087 I01 sS'value' p13088 g47 sssS'description' p13089 (dp13090 S'mandatory' p13091 (dp13092 S'editable' p13093 I00 sS'value' p13094 I00 ssS'name' p13095 (dp13096 S'editable' p13097 I01 sS'value' p13098 S'Description' p13099 ssS'data_type' p13100 (dp13101 S'editable' p13102 I00 sS'value' p13103 S'text' p13104 ssS'entity_type' p13105 (dp13106 S'editable' p13107 I00 sS'value' p13108 S'Phase' p13109 ssS'editable' p13110 (dp13111 S'editable' p13112 I00 sS'value' p13113 I01 ssS'unique' p13114 (dp13115 S'editable' p13116 I00 sS'value' p13117 I00 ssS'properties' p13118 (dp13119 S'default_value' p13120 (dp13121 S'editable' p13122 I00 sS'value' p13123 NssS'summary_default' p13124 (dp13125 S'editable' p13126 I01 sS'value' p13127 S'none' p13128 sssS'description' p13129 (dp13130 S'editable' p13131 I01 sS'value' p13132 g47 sssS'end_date' p13133 (dp13134 S'mandatory' p13135 (dp13136 S'editable' p13137 I00 sS'value' p13138 I00 ssS'name' p13139 (dp13140 S'editable' p13141 I01 sS'value' p13142 S'End Date' p13143 ssS'data_type' p13144 (dp13145 S'editable' p13146 I00 sS'value' p13147 S'date' p13148 ssS'entity_type' p13149 (dp13150 S'editable' p13151 I00 sS'value' p13152 S'Phase' p13153 ssS'editable' p13154 (dp13155 S'editable' p13156 I00 sS'value' p13157 I01 ssS'unique' p13158 (dp13159 S'editable' p13160 I00 sS'value' p13161 I00 ssS'properties' p13162 (dp13163 S'default_value' p13164 (dp13165 S'editable' p13166 I00 sS'value' p13167 NssS'summary_default' p13168 (dp13169 S'editable' p13170 I01 sS'value' p13171 S'none' p13172 sssS'description' p13173 (dp13174 S'editable' p13175 I01 sS'value' p13176 g47 sssS'color' p13177 (dp13178 S'mandatory' p13179 (dp13180 S'editable' p13181 I00 sS'value' p13182 I00 ssS'name' p13183 (dp13184 S'editable' p13185 I01 sS'value' p13186 S'Color' p13187 ssS'data_type' p13188 (dp13189 S'editable' p13190 I00 sS'value' p13191 S'color' p13192 ssS'entity_type' p13193 (dp13194 S'editable' p13195 I00 sS'value' p13196 S'Phase' p13197 ssS'editable' p13198 (dp13199 S'editable' p13200 I00 sS'value' p13201 I01 ssS'unique' p13202 (dp13203 S'editable' p13204 I00 sS'value' p13205 I00 ssS'properties' p13206 (dp13207 S'default_value' p13208 (dp13209 S'editable' p13210 I00 sS'value' p13211 NssS'summary_default' p13212 (dp13213 S'editable' p13214 I01 sS'value' p13215 S'none' p13216 sssS'description' p13217 (dp13218 S'editable' p13219 I01 sS'value' p13220 g47 sssS'created_at' p13221 (dp13222 S'mandatory' p13223 (dp13224 S'editable' p13225 I00 sS'value' p13226 I00 ssS'name' p13227 (dp13228 S'editable' p13229 I01 sS'value' p13230 S'Date Created' p13231 ssS'data_type' p13232 (dp13233 S'editable' p13234 I00 sS'value' p13235 S'date_time' p13236 ssS'entity_type' p13237 (dp13238 S'editable' p13239 I00 sS'value' p13240 S'Phase' p13241 ssS'editable' p13242 (dp13243 S'editable' p13244 I00 sS'value' p13245 I00 ssS'unique' p13246 (dp13247 S'editable' p13248 I00 sS'value' p13249 I00 ssS'properties' p13250 (dp13251 S'default_value' p13252 (dp13253 S'editable' p13254 I00 sS'value' p13255 NssS'summary_default' p13256 (dp13257 S'editable' p13258 I01 sS'value' p13259 S'none' p13260 sssS'description' p13261 (dp13262 S'editable' p13263 I01 sS'value' p13264 g47 sssS'updated_at' p13265 (dp13266 S'mandatory' p13267 (dp13268 S'editable' p13269 I00 sS'value' p13270 I00 ssS'name' p13271 (dp13272 S'editable' p13273 I01 sS'value' p13274 S'Date Updated' p13275 ssS'data_type' p13276 (dp13277 S'editable' p13278 I00 sS'value' p13279 S'date_time' p13280 ssS'entity_type' p13281 (dp13282 S'editable' p13283 I00 sS'value' p13284 S'Phase' p13285 ssS'editable' p13286 (dp13287 S'editable' p13288 I00 sS'value' p13289 I00 ssS'unique' p13290 (dp13291 S'editable' p13292 I00 sS'value' p13293 I00 ssS'properties' p13294 (dp13295 S'default_value' p13296 (dp13297 S'editable' p13298 I00 sS'value' p13299 NssS'summary_default' p13300 (dp13301 S'editable' p13302 I01 sS'value' p13303 S'none' p13304 sssS'description' p13305 (dp13306 S'editable' p13307 I01 sS'value' p13308 g47 sssS'created_by' p13309 (dp13310 S'mandatory' p13311 (dp13312 S'editable' p13313 I00 sS'value' p13314 I00 ssS'name' p13315 (dp13316 S'editable' p13317 I01 sS'value' p13318 S'Created by' p13319 ssS'data_type' p13320 (dp13321 S'editable' p13322 I00 sS'value' p13323 S'entity' p13324 ssS'entity_type' p13325 (dp13326 S'editable' p13327 I00 sS'value' p13328 S'Phase' p13329 ssS'editable' p13330 (dp13331 S'editable' p13332 I00 sS'value' p13333 I00 ssS'unique' p13334 (dp13335 S'editable' p13336 I00 sS'value' p13337 I00 ssS'properties' p13338 (dp13339 S'default_value' p13340 (dp13341 S'editable' p13342 I00 sS'value' p13343 NssS'summary_default' p13344 (dp13345 S'editable' p13346 I01 sS'value' p13347 S'none' p13348 ssS'valid_types' p13349 (dp13350 S'editable' p13351 I01 sS'value' p13352 (lp13353 S'HumanUser' p13354 aS'ApiUser' p13355 asssS'description' p13356 (dp13357 S'editable' p13358 I01 sS'value' p13359 g47 sssS'start_date' p13360 (dp13361 S'mandatory' p13362 (dp13363 S'editable' p13364 I00 sS'value' p13365 I00 ssS'name' p13366 (dp13367 S'editable' p13368 I01 sS'value' p13369 S'Start Date' p13370 ssS'data_type' p13371 (dp13372 S'editable' p13373 I00 sS'value' p13374 S'date' p13375 ssS'entity_type' p13376 (dp13377 S'editable' p13378 I00 sS'value' p13379 S'Phase' p13380 ssS'editable' p13381 (dp13382 S'editable' p13383 I00 sS'value' p13384 I01 ssS'unique' p13385 (dp13386 S'editable' p13387 I00 sS'value' p13388 I00 ssS'properties' p13389 (dp13390 S'default_value' p13391 (dp13392 S'editable' p13393 I00 sS'value' p13394 NssS'summary_default' p13395 (dp13396 S'editable' p13397 I01 sS'value' p13398 S'none' p13399 sssS'description' p13400 (dp13401 S'editable' p13402 I01 sS'value' p13403 g47 sssS'project' p13404 (dp13405 S'mandatory' p13406 (dp13407 S'editable' p13408 I00 sS'value' p13409 I00 ssS'name' p13410 (dp13411 S'editable' p13412 I01 sS'value' p13413 S'Project' p13414 ssS'data_type' p13415 (dp13416 S'editable' p13417 I00 sS'value' p13418 S'entity' p13419 ssS'entity_type' p13420 (dp13421 S'editable' p13422 I00 sS'value' p13423 S'Phase' p13424 ssS'editable' p13425 (dp13426 S'editable' p13427 I00 sS'value' p13428 I01 ssS'unique' p13429 (dp13430 S'editable' p13431 I00 sS'value' p13432 I00 ssS'properties' p13433 (dp13434 S'default_value' p13435 (dp13436 S'editable' p13437 I00 sS'value' p13438 NssS'summary_default' p13439 (dp13440 S'editable' p13441 I01 sS'value' p13442 S'none' p13443 ssS'valid_types' p13444 (dp13445 S'editable' p13446 I01 sS'value' p13447 (lp13448 S'Project' p13449 asssS'description' p13450 (dp13451 S'editable' p13452 I01 sS'value' p13453 g47 sssS'notes' p13454 (dp13455 S'mandatory' p13456 (dp13457 S'editable' p13458 I00 sS'value' p13459 I00 ssS'name' p13460 (dp13461 S'editable' p13462 I01 sS'value' p13463 S'Notes' p13464 ssS'data_type' p13465 (dp13466 S'editable' p13467 I00 sS'value' p13468 S'multi_entity' p13469 ssS'entity_type' p13470 (dp13471 S'editable' p13472 I00 sS'value' p13473 S'Phase' p13474 ssS'editable' p13475 (dp13476 S'editable' p13477 I00 sS'value' p13478 I01 ssS'unique' p13479 (dp13480 S'editable' p13481 I00 sS'value' p13482 I00 ssS'properties' p13483 (dp13484 S'default_value' p13485 (dp13486 S'editable' p13487 I00 sS'value' p13488 NssS'summary_default' p13489 (dp13490 S'editable' p13491 I01 sS'value' p13492 S'none' p13493 ssS'valid_types' p13494 (dp13495 S'editable' p13496 I01 sS'value' p13497 (lp13498 S'Note' p13499 asssS'description' p13500 (dp13501 S'editable' p13502 I01 sS'value' p13503 g47 sssS'milestone' p13504 (dp13505 S'mandatory' p13506 (dp13507 S'editable' p13508 I00 sS'value' p13509 I00 ssS'name' p13510 (dp13511 S'editable' p13512 I01 sS'value' p13513 S'Milestone' p13514 ssS'data_type' p13515 (dp13516 S'editable' p13517 I00 sS'value' p13518 S'checkbox' p13519 ssS'entity_type' p13520 (dp13521 S'editable' p13522 I00 sS'value' p13523 S'Phase' p13524 ssS'editable' p13525 (dp13526 S'editable' p13527 I00 sS'value' p13528 I01 ssS'unique' p13529 (dp13530 S'editable' p13531 I00 sS'value' p13532 I00 ssS'properties' p13533 (dp13534 S'default_value' p13535 (dp13536 S'editable' p13537 I00 sS'value' p13538 NssS'summary_default' p13539 (dp13540 S'editable' p13541 I01 sS'value' p13542 S'none' p13543 sssS'description' p13544 (dp13545 S'editable' p13546 I01 sS'value' p13547 g47 sssS'cached_display_name' p13548 (dp13549 S'mandatory' p13550 (dp13551 S'editable' p13552 I00 sS'value' p13553 I00 ssS'name' p13554 (dp13555 S'editable' p13556 I01 sS'value' p13557 S'Cached Display Name' p13558 ssS'data_type' p13559 (dp13560 S'editable' p13561 I00 sS'value' p13562 S'text' p13563 ssS'entity_type' p13564 (dp13565 S'editable' p13566 I00 sS'value' p13567 S'Phase' p13568 ssS'editable' p13569 (dp13570 S'editable' p13571 I00 sS'value' p13572 I01 ssS'unique' p13573 (dp13574 S'editable' p13575 I00 sS'value' p13576 I00 ssS'properties' p13577 (dp13578 S'default_value' p13579 (dp13580 S'editable' p13581 I00 sS'value' p13582 NssS'summary_default' p13583 (dp13584 S'editable' p13585 I00 sS'value' p13586 S'none' p13587 sssS'description' p13588 (dp13589 S'editable' p13590 I01 sS'value' p13591 g47 sssS'id' p13592 (dp13593 S'mandatory' p13594 (dp13595 S'editable' p13596 I00 sS'value' p13597 I00 ssS'name' p13598 (dp13599 S'editable' p13600 I01 sS'value' p13601 S'Id' p13602 ssS'data_type' p13603 (dp13604 S'editable' p13605 I00 sS'value' p13606 S'number' p13607 ssS'entity_type' p13608 (dp13609 S'editable' p13610 I00 sS'value' p13611 S'Phase' p13612 ssS'editable' p13613 (dp13614 S'editable' p13615 I00 sS'value' p13616 I00 ssS'unique' p13617 (dp13618 S'editable' p13619 I00 sS'value' p13620 I00 ssS'properties' p13621 (dp13622 S'default_value' p13623 (dp13624 S'editable' p13625 I00 sS'value' p13626 NssS'summary_default' p13627 (dp13628 S'editable' p13629 I01 sS'value' p13630 S'none' p13631 sssS'description' p13632 (dp13633 S'editable' p13634 I01 sS'value' p13635 g47 sssS'updated_by' p13636 (dp13637 S'mandatory' p13638 (dp13639 S'editable' p13640 I00 sS'value' p13641 I00 ssS'name' p13642 (dp13643 S'editable' p13644 I01 sS'value' p13645 S'Updated by' p13646 ssS'data_type' p13647 (dp13648 S'editable' p13649 I00 sS'value' p13650 S'entity' p13651 ssS'entity_type' p13652 (dp13653 S'editable' p13654 I00 sS'value' p13655 S'Phase' p13656 ssS'editable' p13657 (dp13658 S'editable' p13659 I00 sS'value' p13660 I00 ssS'unique' p13661 (dp13662 S'editable' p13663 I00 sS'value' p13664 I00 ssS'properties' p13665 (dp13666 S'default_value' p13667 (dp13668 S'editable' p13669 I00 sS'value' p13670 NssS'summary_default' p13671 (dp13672 S'editable' p13673 I01 sS'value' p13674 S'none' p13675 ssS'valid_types' p13676 (dp13677 S'editable' p13678 I01 sS'value' p13679 (lp13680 S'HumanUser' p13681 aS'ApiUser' p13682 asssS'description' p13683 (dp13684 S'editable' p13685 I01 sS'value' p13686 g47 ssssS'PublishedFile' p13687 (dp13688 S'open_notes_count' p13689 (dp13690 S'mandatory' p13691 (dp13692 S'editable' p13693 I00 sS'value' p13694 I00 ssS'name' p13695 (dp13696 S'editable' p13697 I01 sS'value' p13698 S'Open Notes Count' p13699 ssS'data_type' p13700 (dp13701 S'editable' p13702 I00 sS'value' p13703 S'text' p13704 ssS'entity_type' p13705 (dp13706 S'editable' p13707 I00 sS'value' p13708 S'PublishedFile' p13709 ssS'editable' p13710 (dp13711 S'editable' p13712 I00 sS'value' p13713 I00 ssS'unique' p13714 (dp13715 S'editable' p13716 I00 sS'value' p13717 I00 ssS'properties' p13718 (dp13719 S'default_value' p13720 (dp13721 S'editable' p13722 I00 sS'value' p13723 NssS'summary_default' p13724 (dp13725 S'editable' p13726 I01 sS'value' p13727 S'none' p13728 sssS'description' p13729 (dp13730 S'editable' p13731 I01 sS'value' p13732 g47 sssS'code' p13733 (dp13734 S'mandatory' p13735 (dp13736 S'editable' p13737 I00 sS'value' p13738 I01 ssS'name' p13739 (dp13740 S'editable' p13741 I01 sS'value' p13742 S'Published File Name' p13743 ssS'data_type' p13744 (dp13745 S'editable' p13746 I00 sS'value' p13747 S'text' p13748 ssS'entity_type' p13749 (dp13750 S'editable' p13751 I00 sS'value' p13752 S'PublishedFile' p13753 ssS'editable' p13754 (dp13755 S'editable' p13756 I00 sS'value' p13757 I01 ssS'unique' p13758 (dp13759 S'editable' p13760 I00 sS'value' p13761 I00 ssS'properties' p13762 (dp13763 S'default_value' p13764 (dp13765 S'editable' p13766 I00 sS'value' p13767 NssS'summary_default' p13768 (dp13769 S'editable' p13770 I01 sS'value' p13771 S'none' p13772 sssS'description' p13773 (dp13774 S'editable' p13775 I01 sS'value' p13776 g47 sssS'image' p13777 (dp13778 S'mandatory' p13779 (dp13780 S'editable' p13781 I00 sS'value' p13782 I00 ssS'name' p13783 (dp13784 S'editable' p13785 I01 sS'value' p13786 S'Thumbnail' p13787 ssS'data_type' p13788 (dp13789 S'editable' p13790 I00 sS'value' p13791 S'image' p13792 ssS'entity_type' p13793 (dp13794 S'editable' p13795 I00 sS'value' p13796 S'PublishedFile' p13797 ssS'editable' p13798 (dp13799 S'editable' p13800 I00 sS'value' p13801 I01 ssS'unique' p13802 (dp13803 S'editable' p13804 I00 sS'value' p13805 I00 ssS'properties' p13806 (dp13807 S'default_value' p13808 (dp13809 S'editable' p13810 I00 sS'value' p13811 NssS'summary_default' p13812 (dp13813 S'editable' p13814 I01 sS'value' p13815 S'none' p13816 sssS'description' p13817 (dp13818 S'editable' p13819 I01 sS'value' p13820 g47 sssS'updated_at' p13821 (dp13822 S'mandatory' p13823 (dp13824 S'editable' p13825 I00 sS'value' p13826 I00 ssS'name' p13827 (dp13828 S'editable' p13829 I01 sS'value' p13830 S'Date Updated' p13831 ssS'data_type' p13832 (dp13833 S'editable' p13834 I00 sS'value' p13835 S'date_time' p13836 ssS'entity_type' p13837 (dp13838 S'editable' p13839 I00 sS'value' p13840 S'PublishedFile' p13841 ssS'editable' p13842 (dp13843 S'editable' p13844 I00 sS'value' p13845 I00 ssS'unique' p13846 (dp13847 S'editable' p13848 I00 sS'value' p13849 I00 ssS'properties' p13850 (dp13851 S'default_value' p13852 (dp13853 S'editable' p13854 I00 sS'value' p13855 NssS'summary_default' p13856 (dp13857 S'editable' p13858 I01 sS'value' p13859 S'none' p13860 sssS'description' p13861 (dp13862 S'editable' p13863 I01 sS'value' p13864 g47 sssS'entity' p13865 (dp13866 S'mandatory' p13867 (dp13868 S'editable' p13869 I00 sS'value' p13870 I00 ssS'name' p13871 (dp13872 S'editable' p13873 I01 sS'value' p13874 S'Link' p13875 ssS'data_type' p13876 (dp13877 S'editable' p13878 I00 sS'value' p13879 S'entity' p13880 ssS'entity_type' p13881 (dp13882 S'editable' p13883 I00 sS'value' p13884 S'PublishedFile' p13885 ssS'editable' p13886 (dp13887 S'editable' p13888 I00 sS'value' p13889 I01 ssS'unique' p13890 (dp13891 S'editable' p13892 I00 sS'value' p13893 I00 ssS'properties' p13894 (dp13895 S'default_value' p13896 (dp13897 S'editable' p13898 I00 sS'value' p13899 NssS'summary_default' p13900 (dp13901 S'editable' p13902 I01 sS'value' p13903 S'none' p13904 ssS'valid_types' p13905 (dp13906 S'editable' p13907 I01 sS'value' p13908 (lp13909 S'Asset' p13910 aS'Shot' p13911 aS'Project' p13912 asssS'description' p13913 (dp13914 S'editable' p13915 I01 sS'value' p13916 g47 sssS'cached_display_name' p13917 (dp13918 S'mandatory' p13919 (dp13920 S'editable' p13921 I00 sS'value' p13922 I00 ssS'name' p13923 (dp13924 S'editable' p13925 I01 sS'value' p13926 S'Cached Display Name' p13927 ssS'data_type' p13928 (dp13929 S'editable' p13930 I00 sS'value' p13931 S'text' p13932 ssS'entity_type' p13933 (dp13934 S'editable' p13935 I00 sS'value' p13936 S'PublishedFile' p13937 ssS'editable' p13938 (dp13939 S'editable' p13940 I00 sS'value' p13941 I01 ssS'unique' p13942 (dp13943 S'editable' p13944 I00 sS'value' p13945 I00 ssS'properties' p13946 (dp13947 S'default_value' p13948 (dp13949 S'editable' p13950 I00 sS'value' p13951 NssS'summary_default' p13952 (dp13953 S'editable' p13954 I00 sS'value' p13955 S'none' p13956 sssS'description' p13957 (dp13958 S'editable' p13959 I01 sS'value' p13960 g47 sssS'path_cache' p13961 (dp13962 S'mandatory' p13963 (dp13964 S'editable' p13965 I00 sS'value' p13966 I00 ssS'name' p13967 (dp13968 S'editable' p13969 I01 sS'value' p13970 S'Path Cache' p13971 ssS'data_type' p13972 (dp13973 S'editable' p13974 I00 sS'value' p13975 S'text' p13976 ssS'entity_type' p13977 (dp13978 S'editable' p13979 I00 sS'value' p13980 S'PublishedFile' p13981 ssS'editable' p13982 (dp13983 S'editable' p13984 I00 sS'value' p13985 I01 ssS'unique' p13986 (dp13987 S'editable' p13988 I00 sS'value' p13989 I00 ssS'properties' p13990 (dp13991 S'default_value' p13992 (dp13993 S'editable' p13994 I00 sS'value' p13995 NssS'summary_default' p13996 (dp13997 S'editable' p13998 I01 sS'value' p13999 S'none' p14000 sssS'description' p14001 (dp14002 S'editable' p14003 I01 sS'value' p14004 g47 sssS'id' p14005 (dp14006 S'mandatory' p14007 (dp14008 S'editable' p14009 I00 sS'value' p14010 I00 ssS'name' p14011 (dp14012 S'editable' p14013 I01 sS'value' p14014 S'Id' p14015 ssS'data_type' p14016 (dp14017 S'editable' p14018 I00 sS'value' p14019 S'number' p14020 ssS'entity_type' p14021 (dp14022 S'editable' p14023 I00 sS'value' p14024 S'PublishedFile' p14025 ssS'editable' p14026 (dp14027 S'editable' p14028 I00 sS'value' p14029 I00 ssS'unique' p14030 (dp14031 S'editable' p14032 I00 sS'value' p14033 I00 ssS'properties' p14034 (dp14035 S'default_value' p14036 (dp14037 S'editable' p14038 I00 sS'value' p14039 NssS'summary_default' p14040 (dp14041 S'editable' p14042 I01 sS'value' p14043 S'none' p14044 sssS'description' p14045 (dp14046 S'editable' p14047 I01 sS'value' p14048 g47 sssS'updated_by' p14049 (dp14050 S'mandatory' p14051 (dp14052 S'editable' p14053 I00 sS'value' p14054 I00 ssS'name' p14055 (dp14056 S'editable' p14057 I01 sS'value' p14058 S'Updated by' p14059 ssS'data_type' p14060 (dp14061 S'editable' p14062 I00 sS'value' p14063 S'entity' p14064 ssS'entity_type' p14065 (dp14066 S'editable' p14067 I00 sS'value' p14068 S'PublishedFile' p14069 ssS'editable' p14070 (dp14071 S'editable' p14072 I00 sS'value' p14073 I00 ssS'unique' p14074 (dp14075 S'editable' p14076 I00 sS'value' p14077 I00 ssS'properties' p14078 (dp14079 S'default_value' p14080 (dp14081 S'editable' p14082 I00 sS'value' p14083 NssS'summary_default' p14084 (dp14085 S'editable' p14086 I01 sS'value' p14087 S'none' p14088 ssS'valid_types' p14089 (dp14090 S'editable' p14091 I01 sS'value' p14092 (lp14093 S'HumanUser' p14094 aS'ApiUser' p14095 asssS'description' p14096 (dp14097 S'editable' p14098 I01 sS'value' p14099 g47 sssS'open_notes' p14100 (dp14101 S'mandatory' p14102 (dp14103 S'editable' p14104 I00 sS'value' p14105 I00 ssS'name' p14106 (dp14107 S'editable' p14108 I01 sS'value' p14109 S'Open Notes' p14110 ssS'data_type' p14111 (dp14112 S'editable' p14113 I00 sS'value' p14114 S'multi_entity' p14115 ssS'entity_type' p14116 (dp14117 S'editable' p14118 I00 sS'value' p14119 S'PublishedFile' p14120 ssS'editable' p14121 (dp14122 S'editable' p14123 I00 sS'value' p14124 I00 ssS'unique' p14125 (dp14126 S'editable' p14127 I00 sS'value' p14128 I00 ssS'properties' p14129 (dp14130 S'default_value' p14131 (dp14132 S'editable' p14133 I00 sS'value' p14134 NssS'summary_default' p14135 (dp14136 S'editable' p14137 I01 sS'value' p14138 S'none' p14139 ssS'valid_types' p14140 (dp14141 S'editable' p14142 I01 sS'value' p14143 (lp14144 S'Note' p14145 asssS'description' p14146 (dp14147 S'editable' p14148 I01 sS'value' p14149 g47 sssS'created_by' p14150 (dp14151 S'mandatory' p14152 (dp14153 S'editable' p14154 I00 sS'value' p14155 I00 ssS'name' p14156 (dp14157 S'editable' p14158 I01 sS'value' p14159 S'Created by' p14160 ssS'data_type' p14161 (dp14162 S'editable' p14163 I00 sS'value' p14164 S'entity' p14165 ssS'entity_type' p14166 (dp14167 S'editable' p14168 I00 sS'value' p14169 S'PublishedFile' p14170 ssS'editable' p14171 (dp14172 S'editable' p14173 I00 sS'value' p14174 I00 ssS'unique' p14175 (dp14176 S'editable' p14177 I00 sS'value' p14178 I00 ssS'properties' p14179 (dp14180 S'default_value' p14181 (dp14182 S'editable' p14183 I00 sS'value' p14184 NssS'summary_default' p14185 (dp14186 S'editable' p14187 I01 sS'value' p14188 S'none' p14189 ssS'valid_types' p14190 (dp14191 S'editable' p14192 I01 sS'value' p14193 (lp14194 S'HumanUser' p14195 aS'ApiUser' p14196 asssS'description' p14197 (dp14198 S'editable' p14199 I01 sS'value' p14200 g47 sssS'version' p14201 (dp14202 S'mandatory' p14203 (dp14204 S'editable' p14205 I00 sS'value' p14206 I00 ssS'name' p14207 (dp14208 S'editable' p14209 I01 sS'value' p14210 S'Version' p14211 ssS'data_type' p14212 (dp14213 S'editable' p14214 I00 sS'value' p14215 S'entity' p14216 ssS'entity_type' p14217 (dp14218 S'editable' p14219 I00 sS'value' p14220 S'PublishedFile' p14221 ssS'editable' p14222 (dp14223 S'editable' p14224 I00 sS'value' p14225 I01 ssS'unique' p14226 (dp14227 S'editable' p14228 I00 sS'value' p14229 I00 ssS'properties' p14230 (dp14231 S'default_value' p14232 (dp14233 S'editable' p14234 I00 sS'value' p14235 NssS'summary_default' p14236 (dp14237 S'editable' p14238 I01 sS'value' p14239 S'none' p14240 ssS'valid_types' p14241 (dp14242 S'editable' p14243 I01 sS'value' p14244 (lp14245 S'Version' p14246 asssS'description' p14247 (dp14248 S'editable' p14249 I01 sS'value' p14250 g47 sssS'upstream_published_files' p14251 (dp14252 S'mandatory' p14253 (dp14254 S'editable' p14255 I00 sS'value' p14256 I00 ssS'name' p14257 (dp14258 S'editable' p14259 I01 sS'value' p14260 S'Upstream Published Files' p14261 ssS'data_type' p14262 (dp14263 S'editable' p14264 I00 sS'value' p14265 S'multi_entity' p14266 ssS'entity_type' p14267 (dp14268 S'editable' p14269 I00 sS'value' p14270 S'PublishedFile' p14271 ssS'editable' p14272 (dp14273 S'editable' p14274 I00 sS'value' p14275 I01 ssS'unique' p14276 (dp14277 S'editable' p14278 I00 sS'value' p14279 I00 ssS'properties' p14280 (dp14281 S'default_value' p14282 (dp14283 S'editable' p14284 I00 sS'value' p14285 NssS'summary_default' p14286 (dp14287 S'editable' p14288 I00 sS'value' p14289 S'none' p14290 ssS'valid_types' p14291 (dp14292 S'editable' p14293 I00 sS'value' p14294 (lp14295 S'PublishedFile' p14296 asssS'description' p14297 (dp14298 S'editable' p14299 I01 sS'value' p14300 g47 sssS'sg_status_list' p14301 (dp14302 S'mandatory' p14303 (dp14304 S'editable' p14305 I00 sS'value' p14306 I00 ssS'name' p14307 (dp14308 S'editable' p14309 I01 sS'value' p14310 S'Status' p14311 ssS'data_type' p14312 (dp14313 S'editable' p14314 I00 sS'value' p14315 S'status_list' p14316 ssS'entity_type' p14317 (dp14318 S'editable' p14319 I00 sS'value' p14320 S'PublishedFile' p14321 ssS'editable' p14322 (dp14323 S'editable' p14324 I00 sS'value' p14325 I01 ssS'unique' p14326 (dp14327 S'editable' p14328 I00 sS'value' p14329 I00 ssS'properties' p14330 (dp14331 S'default_value' p14332 (dp14333 S'editable' p14334 I01 sS'value' p14335 S'wtg' p14336 ssS'valid_values' p14337 (dp14338 S'editable' p14339 I01 sS'value' p14340 (lp14341 S'wtg' p14342 aS'ip' p14343 aS'cmpt' p14344 assS'summary_default' p14345 (dp14346 S'editable' p14347 I01 sS'value' p14348 S'none' p14349 sssS'description' p14350 (dp14351 S'editable' p14352 I01 sS'value' p14353 g47 sssS'description' p14354 (dp14355 S'mandatory' p14356 (dp14357 S'editable' p14358 I00 sS'value' p14359 I00 ssS'name' p14360 (dp14361 S'editable' p14362 I01 sS'value' p14363 S'Description' p14364 ssS'data_type' p14365 (dp14366 S'editable' p14367 I00 sS'value' p14368 S'text' p14369 ssS'entity_type' p14370 (dp14371 S'editable' p14372 I00 sS'value' p14373 S'PublishedFile' p14374 ssS'editable' p14375 (dp14376 S'editable' p14377 I00 sS'value' p14378 I01 ssS'unique' p14379 (dp14380 S'editable' p14381 I00 sS'value' p14382 I00 ssS'properties' p14383 (dp14384 S'default_value' p14385 (dp14386 S'editable' p14387 I00 sS'value' p14388 NssS'summary_default' p14389 (dp14390 S'editable' p14391 I01 sS'value' p14392 S'none' p14393 sssS'description' p14394 (dp14395 S'editable' p14396 I01 sS'value' p14397 g47 sssS'path_cache_storage' p14398 (dp14399 S'mandatory' p14400 (dp14401 S'editable' p14402 I00 sS'value' p14403 I00 ssS'name' p14404 (dp14405 S'editable' p14406 I01 sS'value' p14407 S'Path Cache Storage' p14408 ssS'data_type' p14409 (dp14410 S'editable' p14411 I00 sS'value' p14412 S'entity' p14413 ssS'entity_type' p14414 (dp14415 S'editable' p14416 I00 sS'value' p14417 S'PublishedFile' p14418 ssS'editable' p14419 (dp14420 S'editable' p14421 I00 sS'value' p14422 I01 ssS'unique' p14423 (dp14424 S'editable' p14425 I00 sS'value' p14426 I00 ssS'properties' p14427 (dp14428 S'default_value' p14429 (dp14430 S'editable' p14431 I00 sS'value' p14432 NssS'summary_default' p14433 (dp14434 S'editable' p14435 I01 sS'value' p14436 S'none' p14437 ssS'valid_types' p14438 (dp14439 S'editable' p14440 I01 sS'value' p14441 (lp14442 S'LocalStorage' p14443 asssS'description' p14444 (dp14445 S'editable' p14446 I01 sS'value' p14447 g47 sssS'downstream_published_files' p14448 (dp14449 S'mandatory' p14450 (dp14451 S'editable' p14452 I00 sS'value' p14453 I00 ssS'name' p14454 (dp14455 S'editable' p14456 I01 sS'value' p14457 S'Downstream Published Files' p14458 ssS'data_type' p14459 (dp14460 S'editable' p14461 I00 sS'value' p14462 S'multi_entity' p14463 ssS'entity_type' p14464 (dp14465 S'editable' p14466 I00 sS'value' p14467 S'PublishedFile' p14468 ssS'editable' p14469 (dp14470 S'editable' p14471 I00 sS'value' p14472 I01 ssS'unique' p14473 (dp14474 S'editable' p14475 I00 sS'value' p14476 I00 ssS'properties' p14477 (dp14478 S'default_value' p14479 (dp14480 S'editable' p14481 I00 sS'value' p14482 NssS'summary_default' p14483 (dp14484 S'editable' p14485 I00 sS'value' p14486 S'none' p14487 ssS'valid_types' p14488 (dp14489 S'editable' p14490 I00 sS'value' p14491 (lp14492 S'PublishedFile' p14493 asssS'description' p14494 (dp14495 S'editable' p14496 I01 sS'value' p14497 g47 sssS'path' p14498 (dp14499 S'mandatory' p14500 (dp14501 S'editable' p14502 I00 sS'value' p14503 I00 ssS'name' p14504 (dp14505 S'editable' p14506 I01 sS'value' p14507 S'Path' p14508 ssS'data_type' p14509 (dp14510 S'editable' p14511 I00 sS'value' p14512 S'url' p14513 ssS'entity_type' p14514 (dp14515 S'editable' p14516 I00 sS'value' p14517 S'PublishedFile' p14518 ssS'editable' p14519 (dp14520 S'editable' p14521 I00 sS'value' p14522 I01 ssS'unique' p14523 (dp14524 S'editable' p14525 I00 sS'value' p14526 I00 ssS'properties' p14527 (dp14528 S'default_value' p14529 (dp14530 S'editable' p14531 I00 sS'value' p14532 NssS'open_in_new_window' p14533 (dp14534 S'editable' p14535 I01 sS'value' p14536 I01 ssS'summary_default' p14537 (dp14538 S'editable' p14539 I01 sS'value' p14540 S'none' p14541 sssS'description' p14542 (dp14543 S'editable' p14544 I01 sS'value' p14545 g47 sssS'version_number' p14546 (dp14547 S'mandatory' p14548 (dp14549 S'editable' p14550 I00 sS'value' p14551 I00 ssS'name' p14552 (dp14553 S'editable' p14554 I01 sS'value' p14555 S'Version Number' p14556 ssS'data_type' p14557 (dp14558 S'editable' p14559 I00 sS'value' p14560 S'number' p14561 ssS'entity_type' p14562 (dp14563 S'editable' p14564 I00 sS'value' p14565 S'PublishedFile' p14566 ssS'editable' p14567 (dp14568 S'editable' p14569 I00 sS'value' p14570 I01 ssS'unique' p14571 (dp14572 S'editable' p14573 I00 sS'value' p14574 I00 ssS'properties' p14575 (dp14576 S'default_value' p14577 (dp14578 S'editable' p14579 I00 sS'value' p14580 NssS'summary_default' p14581 (dp14582 S'editable' p14583 I01 sS'value' p14584 S'none' p14585 sssS'description' p14586 (dp14587 S'editable' p14588 I01 sS'value' p14589 g47 sssS'task' p14590 (dp14591 S'mandatory' p14592 (dp14593 S'editable' p14594 I00 sS'value' p14595 I00 ssS'name' p14596 (dp14597 S'editable' p14598 I01 sS'value' p14599 S'Task' p14600 ssS'data_type' p14601 (dp14602 S'editable' p14603 I00 sS'value' p14604 S'entity' p14605 ssS'entity_type' p14606 (dp14607 S'editable' p14608 I00 sS'value' p14609 S'PublishedFile' p14610 ssS'editable' p14611 (dp14612 S'editable' p14613 I00 sS'value' p14614 I01 ssS'unique' p14615 (dp14616 S'editable' p14617 I00 sS'value' p14618 I00 ssS'properties' p14619 (dp14620 S'default_value' p14621 (dp14622 S'editable' p14623 I00 sS'value' p14624 NssS'summary_default' p14625 (dp14626 S'editable' p14627 I01 sS'value' p14628 S'none' p14629 ssS'valid_types' p14630 (dp14631 S'editable' p14632 I01 sS'value' p14633 (lp14634 S'Task' p14635 asssS'description' p14636 (dp14637 S'editable' p14638 I01 sS'value' p14639 g47 sssS'name' p14640 (dp14641 S'mandatory' p14642 (dp14643 S'editable' p14644 I00 sS'value' p14645 I00 ssS'name' p14646 (dp14647 S'editable' p14648 I01 sS'value' p14649 S'Name' p14650 ssS'data_type' p14651 (dp14652 S'editable' p14653 I00 sS'value' p14654 S'text' p14655 ssS'entity_type' p14656 (dp14657 S'editable' p14658 I00 sS'value' p14659 S'PublishedFile' p14660 ssS'editable' p14661 (dp14662 S'editable' p14663 I00 sS'value' p14664 I01 ssS'unique' p14665 (dp14666 S'editable' p14667 I00 sS'value' p14668 I00 ssS'properties' p14669 (dp14670 S'default_value' p14671 (dp14672 S'editable' p14673 I00 sS'value' p14674 NssS'summary_default' p14675 (dp14676 S'editable' p14677 I01 sS'value' p14678 S'none' p14679 sssS'description' p14680 (dp14681 S'editable' p14682 I01 sS'value' p14683 g47 sssS'created_at' p14684 (dp14685 S'mandatory' p14686 (dp14687 S'editable' p14688 I00 sS'value' p14689 I00 ssS'name' p14690 (dp14691 S'editable' p14692 I01 sS'value' p14693 S'Date Created' p14694 ssS'data_type' p14695 (dp14696 S'editable' p14697 I00 sS'value' p14698 S'date_time' p14699 ssS'entity_type' p14700 (dp14701 S'editable' p14702 I00 sS'value' p14703 S'PublishedFile' p14704 ssS'editable' p14705 (dp14706 S'editable' p14707 I00 sS'value' p14708 I00 ssS'unique' p14709 (dp14710 S'editable' p14711 I00 sS'value' p14712 I00 ssS'properties' p14713 (dp14714 S'default_value' p14715 (dp14716 S'editable' p14717 I00 sS'value' p14718 NssS'summary_default' p14719 (dp14720 S'editable' p14721 I01 sS'value' p14722 S'none' p14723 sssS'description' p14724 (dp14725 S'editable' p14726 I01 sS'value' p14727 g47 sssS'published_file_type' p14728 (dp14729 S'mandatory' p14730 (dp14731 S'editable' p14732 I00 sS'value' p14733 I00 ssS'name' p14734 (dp14735 S'editable' p14736 I01 sS'value' p14737 S'Published File Type' p14738 ssS'data_type' p14739 (dp14740 S'editable' p14741 I00 sS'value' p14742 S'entity' p14743 ssS'entity_type' p14744 (dp14745 S'editable' p14746 I00 sS'value' p14747 S'PublishedFile' p14748 ssS'editable' p14749 (dp14750 S'editable' p14751 I00 sS'value' p14752 I01 ssS'unique' p14753 (dp14754 S'editable' p14755 I00 sS'value' p14756 I00 ssS'properties' p14757 (dp14758 S'default_value' p14759 (dp14760 S'editable' p14761 I00 sS'value' p14762 NssS'summary_default' p14763 (dp14764 S'editable' p14765 I01 sS'value' p14766 S'none' p14767 ssS'valid_types' p14768 (dp14769 S'editable' p14770 I01 sS'value' p14771 (lp14772 S'PublishedFileType' p14773 asssS'description' p14774 (dp14775 S'editable' p14776 I01 sS'value' p14777 g47 sssS'project' p14778 (dp14779 S'mandatory' p14780 (dp14781 S'editable' p14782 I00 sS'value' p14783 I00 ssS'name' p14784 (dp14785 S'editable' p14786 I01 sS'value' p14787 S'Project' p14788 ssS'data_type' p14789 (dp14790 S'editable' p14791 I00 sS'value' p14792 S'entity' p14793 ssS'entity_type' p14794 (dp14795 S'editable' p14796 I00 sS'value' p14797 S'PublishedFile' p14798 ssS'editable' p14799 (dp14800 S'editable' p14801 I00 sS'value' p14802 I01 ssS'unique' p14803 (dp14804 S'editable' p14805 I00 sS'value' p14806 I00 ssS'properties' p14807 (dp14808 S'default_value' p14809 (dp14810 S'editable' p14811 I00 sS'value' p14812 NssS'summary_default' p14813 (dp14814 S'editable' p14815 I01 sS'value' p14816 S'none' p14817 ssS'valid_types' p14818 (dp14819 S'editable' p14820 I01 sS'value' p14821 (lp14822 S'Project' p14823 asssS'description' p14824 (dp14825 S'editable' p14826 I01 sS'value' p14827 g47 sssS'tag_list' p14828 (dp14829 S'mandatory' p14830 (dp14831 S'editable' p14832 I00 sS'value' p14833 I00 ssS'name' p14834 (dp14835 S'editable' p14836 I01 sS'value' p14837 S'Tags' p14838 ssS'data_type' p14839 (dp14840 S'editable' p14841 I00 sS'value' p14842 S'tag_list' p14843 ssS'entity_type' p14844 (dp14845 S'editable' p14846 I00 sS'value' p14847 S'PublishedFile' p14848 ssS'editable' p14849 (dp14850 S'editable' p14851 I00 sS'value' p14852 I01 ssS'unique' p14853 (dp14854 S'editable' p14855 I00 sS'value' p14856 I00 ssS'properties' p14857 (dp14858 S'default_value' p14859 (dp14860 S'editable' p14861 I00 sS'value' p14862 NssS'summary_default' p14863 (dp14864 S'editable' p14865 I01 sS'value' p14866 S'none' p14867 ssS'valid_types' p14868 (dp14869 S'editable' p14870 I01 sS'value' p14871 (lp14872 S'Tag' p14873 asssS'description' p14874 (dp14875 S'editable' p14876 I01 sS'value' p14877 g47 sssS'notes' p14878 (dp14879 S'mandatory' p14880 (dp14881 S'editable' p14882 I00 sS'value' p14883 I00 ssS'name' p14884 (dp14885 S'editable' p14886 I01 sS'value' p14887 S'Notes' p14888 ssS'data_type' p14889 (dp14890 S'editable' p14891 I00 sS'value' p14892 S'multi_entity' p14893 ssS'entity_type' p14894 (dp14895 S'editable' p14896 I00 sS'value' p14897 S'PublishedFile' p14898 ssS'editable' p14899 (dp14900 S'editable' p14901 I00 sS'value' p14902 I01 ssS'unique' p14903 (dp14904 S'editable' p14905 I00 sS'value' p14906 I00 ssS'properties' p14907 (dp14908 S'default_value' p14909 (dp14910 S'editable' p14911 I00 sS'value' p14912 NssS'summary_default' p14913 (dp14914 S'editable' p14915 I01 sS'value' p14916 S'none' p14917 ssS'valid_types' p14918 (dp14919 S'editable' p14920 I01 sS'value' p14921 (lp14922 S'Note' p14923 asssS'description' p14924 (dp14925 S'editable' p14926 I01 sS'value' p14927 g47 ssssS'ShootDaySceneConnection' p14928 (dp14929 S'cached_display_name' p14930 (dp14931 S'mandatory' p14932 (dp14933 S'editable' p14934 I00 sS'value' p14935 I00 ssS'name' p14936 (dp14937 S'editable' p14938 I01 sS'value' p14939 S'Cached Display Name' p14940 ssS'data_type' p14941 (dp14942 S'editable' p14943 I00 sS'value' p14944 S'text' p14945 ssS'entity_type' p14946 (dp14947 S'editable' p14948 I00 sS'value' p14949 S'ShootDaySceneConnection' p14950 ssS'editable' p14951 (dp14952 S'editable' p14953 I00 sS'value' p14954 I01 ssS'unique' p14955 (dp14956 S'editable' p14957 I00 sS'value' p14958 I00 ssS'properties' p14959 (dp14960 S'default_value' p14961 (dp14962 S'editable' p14963 I00 sS'value' p14964 NssS'summary_default' p14965 (dp14966 S'editable' p14967 I00 sS'value' p14968 S'none' p14969 sssS'description' p14970 (dp14971 S'editable' p14972 I01 sS'value' p14973 g47 sssS'scene' p14974 (dp14975 S'mandatory' p14976 (dp14977 S'editable' p14978 I00 sS'value' p14979 I00 ssS'name' p14980 (dp14981 S'editable' p14982 I01 sS'value' p14983 S'Scene' p14984 ssS'data_type' p14985 (dp14986 S'editable' p14987 I00 sS'value' p14988 S'entity' p14989 ssS'entity_type' p14990 (dp14991 S'editable' p14992 I00 sS'value' p14993 S'ShootDaySceneConnection' p14994 ssS'editable' p14995 (dp14996 S'editable' p14997 I00 sS'value' p14998 I00 ssS'unique' p14999 (dp15000 S'editable' p15001 I00 sS'value' p15002 I00 ssS'properties' p15003 (dp15004 S'default_value' p15005 (dp15006 S'editable' p15007 I00 sS'value' p15008 NssS'summary_default' p15009 (dp15010 S'editable' p15011 I00 sS'value' p15012 S'none' p15013 ssS'valid_types' p15014 (dp15015 S'editable' p15016 I00 sS'value' p15017 (lp15018 S'Scene' p15019 asssS'description' p15020 (dp15021 S'editable' p15022 I01 sS'value' p15023 g47 sssS'id' p15024 (dp15025 S'mandatory' p15026 (dp15027 S'editable' p15028 I00 sS'value' p15029 I01 ssS'name' p15030 (dp15031 S'editable' p15032 I01 sS'value' p15033 S'Id' p15034 ssS'data_type' p15035 (dp15036 S'editable' p15037 I00 sS'value' p15038 S'number' p15039 ssS'entity_type' p15040 (dp15041 S'editable' p15042 I00 sS'value' p15043 S'ShootDaySceneConnection' p15044 ssS'editable' p15045 (dp15046 S'editable' p15047 I00 sS'value' p15048 I00 ssS'unique' p15049 (dp15050 S'editable' p15051 I00 sS'value' p15052 I00 ssS'properties' p15053 (dp15054 S'default_value' p15055 (dp15056 S'editable' p15057 I00 sS'value' p15058 NssS'summary_default' p15059 (dp15060 S'editable' p15061 I00 sS'value' p15062 S'none' p15063 sssS'description' p15064 (dp15065 S'editable' p15066 I01 sS'value' p15067 g47 sssS'shoot_day' p15068 (dp15069 S'mandatory' p15070 (dp15071 S'editable' p15072 I00 sS'value' p15073 I00 ssS'name' p15074 (dp15075 S'editable' p15076 I01 sS'value' p15077 S'Shoot Day' p15078 ssS'data_type' p15079 (dp15080 S'editable' p15081 I00 sS'value' p15082 S'entity' p15083 ssS'entity_type' p15084 (dp15085 S'editable' p15086 I00 sS'value' p15087 S'ShootDaySceneConnection' p15088 ssS'editable' p15089 (dp15090 S'editable' p15091 I00 sS'value' p15092 I00 ssS'unique' p15093 (dp15094 S'editable' p15095 I00 sS'value' p15096 I00 ssS'properties' p15097 (dp15098 S'default_value' p15099 (dp15100 S'editable' p15101 I00 sS'value' p15102 NssS'summary_default' p15103 (dp15104 S'editable' p15105 I00 sS'value' p15106 S'none' p15107 ssS'valid_types' p15108 (dp15109 S'editable' p15110 I00 sS'value' p15111 (lp15112 S'ShootDay' p15113 asssS'description' p15114 (dp15115 S'editable' p15116 I01 sS'value' p15117 g47 ssssS'AssetShotConnection' p15118 (dp15119 S'cached_display_name' p15120 (dp15121 S'mandatory' p15122 (dp15123 S'editable' p15124 I00 sS'value' p15125 I00 ssS'name' p15126 (dp15127 S'editable' p15128 I01 sS'value' p15129 S'Cached Display Name' p15130 ssS'data_type' p15131 (dp15132 S'editable' p15133 I00 sS'value' p15134 S'text' p15135 ssS'entity_type' p15136 (dp15137 S'editable' p15138 I00 sS'value' p15139 S'AssetShotConnection' p15140 ssS'editable' p15141 (dp15142 S'editable' p15143 I00 sS'value' p15144 I01 ssS'unique' p15145 (dp15146 S'editable' p15147 I00 sS'value' p15148 I00 ssS'properties' p15149 (dp15150 S'default_value' p15151 (dp15152 S'editable' p15153 I00 sS'value' p15154 NssS'summary_default' p15155 (dp15156 S'editable' p15157 I00 sS'value' p15158 S'none' p15159 sssS'description' p15160 (dp15161 S'editable' p15162 I01 sS'value' p15163 g47 sssS'shot' p15164 (dp15165 S'mandatory' p15166 (dp15167 S'editable' p15168 I00 sS'value' p15169 I00 ssS'name' p15170 (dp15171 S'editable' p15172 I01 sS'value' p15173 S'Shot' p15174 ssS'data_type' p15175 (dp15176 S'editable' p15177 I00 sS'value' p15178 S'entity' p15179 ssS'entity_type' p15180 (dp15181 S'editable' p15182 I00 sS'value' p15183 S'AssetShotConnection' p15184 ssS'editable' p15185 (dp15186 S'editable' p15187 I00 sS'value' p15188 I00 ssS'unique' p15189 (dp15190 S'editable' p15191 I00 sS'value' p15192 I00 ssS'properties' p15193 (dp15194 S'default_value' p15195 (dp15196 S'editable' p15197 I00 sS'value' p15198 NssS'summary_default' p15199 (dp15200 S'editable' p15201 I00 sS'value' p15202 S'none' p15203 ssS'valid_types' p15204 (dp15205 S'editable' p15206 I00 sS'value' p15207 (lp15208 S'Shot' p15209 asssS'description' p15210 (dp15211 S'editable' p15212 I01 sS'value' p15213 g47 sssS'asset' p15214 (dp15215 S'mandatory' p15216 (dp15217 S'editable' p15218 I00 sS'value' p15219 I00 ssS'name' p15220 (dp15221 S'editable' p15222 I01 sS'value' p15223 S'Asset' p15224 ssS'data_type' p15225 (dp15226 S'editable' p15227 I00 sS'value' p15228 S'entity' p15229 ssS'entity_type' p15230 (dp15231 S'editable' p15232 I00 sS'value' p15233 S'AssetShotConnection' p15234 ssS'editable' p15235 (dp15236 S'editable' p15237 I00 sS'value' p15238 I00 ssS'unique' p15239 (dp15240 S'editable' p15241 I00 sS'value' p15242 I00 ssS'properties' p15243 (dp15244 S'default_value' p15245 (dp15246 S'editable' p15247 I00 sS'value' p15248 NssS'summary_default' p15249 (dp15250 S'editable' p15251 I00 sS'value' p15252 S'none' p15253 ssS'valid_types' p15254 (dp15255 S'editable' p15256 I00 sS'value' p15257 (lp15258 S'Asset' p15259 asssS'description' p15260 (dp15261 S'editable' p15262 I01 sS'value' p15263 g47 sssS'id' p15264 (dp15265 S'mandatory' p15266 (dp15267 S'editable' p15268 I00 sS'value' p15269 I01 ssS'name' p15270 (dp15271 S'editable' p15272 I01 sS'value' p15273 S'Id' p15274 ssS'data_type' p15275 (dp15276 S'editable' p15277 I00 sS'value' p15278 S'number' p15279 ssS'entity_type' p15280 (dp15281 S'editable' p15282 I00 sS'value' p15283 S'AssetShotConnection' p15284 ssS'editable' p15285 (dp15286 S'editable' p15287 I00 sS'value' p15288 I00 ssS'unique' p15289 (dp15290 S'editable' p15291 I00 sS'value' p15292 I00 ssS'properties' p15293 (dp15294 S'default_value' p15295 (dp15296 S'editable' p15297 I00 sS'value' p15298 NssS'summary_default' p15299 (dp15300 S'editable' p15301 I00 sS'value' p15302 S'none' p15303 sssS'description' p15304 (dp15305 S'editable' p15306 I01 sS'value' p15307 g47 ssssS'TicketTicketConnection' p15308 (dp15309 S'dest_ticket' p15310 (dp15311 S'mandatory' p15312 (dp15313 S'editable' p15314 I00 sS'value' p15315 I00 ssS'name' p15316 (dp15317 S'editable' p15318 I01 sS'value' p15319 S'Ticket' p15320 ssS'data_type' p15321 (dp15322 S'editable' p15323 I00 sS'value' p15324 S'entity' p15325 ssS'entity_type' p15326 (dp15327 S'editable' p15328 I00 sS'value' p15329 S'TicketTicketConnection' p15330 ssS'editable' p15331 (dp15332 S'editable' p15333 I00 sS'value' p15334 I00 ssS'unique' p15335 (dp15336 S'editable' p15337 I00 sS'value' p15338 I00 ssS'properties' p15339 (dp15340 S'default_value' p15341 (dp15342 S'editable' p15343 I00 sS'value' p15344 NssS'summary_default' p15345 (dp15346 S'editable' p15347 I00 sS'value' p15348 S'none' p15349 ssS'valid_types' p15350 (dp15351 S'editable' p15352 I00 sS'value' p15353 (lp15354 S'Ticket' p15355 asssS'description' p15356 (dp15357 S'editable' p15358 I01 sS'value' p15359 g47 sssS'cached_display_name' p15360 (dp15361 S'mandatory' p15362 (dp15363 S'editable' p15364 I00 sS'value' p15365 I00 ssS'name' p15366 (dp15367 S'editable' p15368 I01 sS'value' p15369 S'Cached Display Name' p15370 ssS'data_type' p15371 (dp15372 S'editable' p15373 I00 sS'value' p15374 S'text' p15375 ssS'entity_type' p15376 (dp15377 S'editable' p15378 I00 sS'value' p15379 S'TicketTicketConnection' p15380 ssS'editable' p15381 (dp15382 S'editable' p15383 I00 sS'value' p15384 I01 ssS'unique' p15385 (dp15386 S'editable' p15387 I00 sS'value' p15388 I00 ssS'properties' p15389 (dp15390 S'default_value' p15391 (dp15392 S'editable' p15393 I00 sS'value' p15394 NssS'summary_default' p15395 (dp15396 S'editable' p15397 I00 sS'value' p15398 S'none' p15399 sssS'description' p15400 (dp15401 S'editable' p15402 I01 sS'value' p15403 g47 sssS'source_ticket' p15404 (dp15405 S'mandatory' p15406 (dp15407 S'editable' p15408 I00 sS'value' p15409 I00 ssS'name' p15410 (dp15411 S'editable' p15412 I01 sS'value' p15413 S'Ticket' p15414 ssS'data_type' p15415 (dp15416 S'editable' p15417 I00 sS'value' p15418 S'entity' p15419 ssS'entity_type' p15420 (dp15421 S'editable' p15422 I00 sS'value' p15423 S'TicketTicketConnection' p15424 ssS'editable' p15425 (dp15426 S'editable' p15427 I00 sS'value' p15428 I00 ssS'unique' p15429 (dp15430 S'editable' p15431 I00 sS'value' p15432 I00 ssS'properties' p15433 (dp15434 S'default_value' p15435 (dp15436 S'editable' p15437 I00 sS'value' p15438 NssS'summary_default' p15439 (dp15440 S'editable' p15441 I00 sS'value' p15442 S'none' p15443 ssS'valid_types' p15444 (dp15445 S'editable' p15446 I00 sS'value' p15447 (lp15448 S'Ticket' p15449 asssS'description' p15450 (dp15451 S'editable' p15452 I01 sS'value' p15453 g47 sssS'id' p15454 (dp15455 S'mandatory' p15456 (dp15457 S'editable' p15458 I00 sS'value' p15459 I01 ssS'name' p15460 (dp15461 S'editable' p15462 I01 sS'value' p15463 S'Id' p15464 ssS'data_type' p15465 (dp15466 S'editable' p15467 I00 sS'value' p15468 S'number' p15469 ssS'entity_type' p15470 (dp15471 S'editable' p15472 I00 sS'value' p15473 S'TicketTicketConnection' p15474 ssS'editable' p15475 (dp15476 S'editable' p15477 I00 sS'value' p15478 I00 ssS'unique' p15479 (dp15480 S'editable' p15481 I00 sS'value' p15482 I00 ssS'properties' p15483 (dp15484 S'default_value' p15485 (dp15486 S'editable' p15487 I00 sS'value' p15488 NssS'summary_default' p15489 (dp15490 S'editable' p15491 I00 sS'value' p15492 S'none' p15493 sssS'description' p15494 (dp15495 S'editable' p15496 I01 sS'value' p15497 g47 ssssS'AssetBlendshapeConnection' p15498 (dp15499 S'cached_display_name' p15500 (dp15501 S'mandatory' p15502 (dp15503 S'editable' p15504 I00 sS'value' p15505 I00 ssS'name' p15506 (dp15507 S'editable' p15508 I01 sS'value' p15509 S'Cached Display Name' p15510 ssS'data_type' p15511 (dp15512 S'editable' p15513 I00 sS'value' p15514 S'text' p15515 ssS'entity_type' p15516 (dp15517 S'editable' p15518 I00 sS'value' p15519 S'AssetBlendshapeConnection' p15520 ssS'editable' p15521 (dp15522 S'editable' p15523 I00 sS'value' p15524 I01 ssS'unique' p15525 (dp15526 S'editable' p15527 I00 sS'value' p15528 I00 ssS'properties' p15529 (dp15530 S'default_value' p15531 (dp15532 S'editable' p15533 I00 sS'value' p15534 NssS'summary_default' p15535 (dp15536 S'editable' p15537 I00 sS'value' p15538 S'none' p15539 sssS'description' p15540 (dp15541 S'editable' p15542 I01 sS'value' p15543 g47 sssS'asset' p15544 (dp15545 S'mandatory' p15546 (dp15547 S'editable' p15548 I00 sS'value' p15549 I00 ssS'name' p15550 (dp15551 S'editable' p15552 I01 sS'value' p15553 S'Asset' p15554 ssS'data_type' p15555 (dp15556 S'editable' p15557 I00 sS'value' p15558 S'entity' p15559 ssS'entity_type' p15560 (dp15561 S'editable' p15562 I00 sS'value' p15563 S'AssetBlendshapeConnection' p15564 ssS'editable' p15565 (dp15566 S'editable' p15567 I00 sS'value' p15568 I00 ssS'unique' p15569 (dp15570 S'editable' p15571 I00 sS'value' p15572 I00 ssS'properties' p15573 (dp15574 S'default_value' p15575 (dp15576 S'editable' p15577 I00 sS'value' p15578 NssS'summary_default' p15579 (dp15580 S'editable' p15581 I00 sS'value' p15582 S'none' p15583 ssS'valid_types' p15584 (dp15585 S'editable' p15586 I00 sS'value' p15587 (lp15588 S'Asset' p15589 asssS'description' p15590 (dp15591 S'editable' p15592 I01 sS'value' p15593 g47 sssS'blendshape' p15594 (dp15595 S'mandatory' p15596 (dp15597 S'editable' p15598 I00 sS'value' p15599 I00 ssS'name' p15600 (dp15601 S'editable' p15602 I01 sS'value' p15603 S'Blendshape' p15604 ssS'data_type' p15605 (dp15606 S'editable' p15607 I00 sS'value' p15608 S'entity' p15609 ssS'entity_type' p15610 (dp15611 S'editable' p15612 I00 sS'value' p15613 S'AssetBlendshapeConnection' p15614 ssS'editable' p15615 (dp15616 S'editable' p15617 I00 sS'value' p15618 I00 ssS'unique' p15619 (dp15620 S'editable' p15621 I00 sS'value' p15622 I00 ssS'properties' p15623 (dp15624 S'default_value' p15625 (dp15626 S'editable' p15627 I00 sS'value' p15628 NssS'summary_default' p15629 (dp15630 S'editable' p15631 I00 sS'value' p15632 S'none' p15633 ssS'valid_types' p15634 (dp15635 S'editable' p15636 I00 sS'value' p15637 (lp15638 S'Blendshape' p15639 asssS'description' p15640 (dp15641 S'editable' p15642 I01 sS'value' p15643 g47 sssS'id' p15644 (dp15645 S'mandatory' p15646 (dp15647 S'editable' p15648 I00 sS'value' p15649 I01 ssS'name' p15650 (dp15651 S'editable' p15652 I01 sS'value' p15653 S'Id' p15654 ssS'data_type' p15655 (dp15656 S'editable' p15657 I00 sS'value' p15658 S'number' p15659 ssS'entity_type' p15660 (dp15661 S'editable' p15662 I00 sS'value' p15663 S'AssetBlendshapeConnection' p15664 ssS'editable' p15665 (dp15666 S'editable' p15667 I00 sS'value' p15668 I00 ssS'unique' p15669 (dp15670 S'editable' p15671 I00 sS'value' p15672 I00 ssS'properties' p15673 (dp15674 S'default_value' p15675 (dp15676 S'editable' p15677 I00 sS'value' p15678 NssS'summary_default' p15679 (dp15680 S'editable' p15681 I00 sS'value' p15682 S'none' p15683 sssS'description' p15684 (dp15685 S'editable' p15686 I01 sS'value' p15687 g47 ssssS'PageSetting' p15688 (dp15689 S'created_at' p15690 (dp15691 S'mandatory' p15692 (dp15693 S'editable' p15694 I00 sS'value' p15695 I00 ssS'name' p15696 (dp15697 S'editable' p15698 I01 sS'value' p15699 S'Date Created' p15700 ssS'data_type' p15701 (dp15702 S'editable' p15703 I00 sS'value' p15704 S'date_time' p15705 ssS'entity_type' p15706 (dp15707 S'editable' p15708 I00 sS'value' p15709 S'PageSetting' p15710 ssS'editable' p15711 (dp15712 S'editable' p15713 I00 sS'value' p15714 I00 ssS'unique' p15715 (dp15716 S'editable' p15717 I00 sS'value' p15718 I00 ssS'properties' p15719 (dp15720 S'default_value' p15721 (dp15722 S'editable' p15723 I00 sS'value' p15724 NssS'summary_default' p15725 (dp15726 S'editable' p15727 I01 sS'value' p15728 S'none' p15729 sssS'description' p15730 (dp15731 S'editable' p15732 I01 sS'value' p15733 g47 sssS'settings_json' p15734 (dp15735 S'mandatory' p15736 (dp15737 S'editable' p15738 I00 sS'value' p15739 I00 ssS'name' p15740 (dp15741 S'editable' p15742 I01 sS'value' p15743 S'Settings' p15744 ssS'data_type' p15745 (dp15746 S'editable' p15747 I00 sS'value' p15748 S'text' p15749 ssS'entity_type' p15750 (dp15751 S'editable' p15752 I00 sS'value' p15753 S'PageSetting' p15754 ssS'editable' p15755 (dp15756 S'editable' p15757 I00 sS'value' p15758 I01 ssS'unique' p15759 (dp15760 S'editable' p15761 I00 sS'value' p15762 I00 ssS'properties' p15763 (dp15764 S'default_value' p15765 (dp15766 S'editable' p15767 I00 sS'value' p15768 NssS'summary_default' p15769 (dp15770 S'editable' p15771 I01 sS'value' p15772 S'none' p15773 sssS'description' p15774 (dp15775 S'editable' p15776 I01 sS'value' p15777 g47 sssS'page' p15778 (dp15779 S'mandatory' p15780 (dp15781 S'editable' p15782 I00 sS'value' p15783 I00 ssS'name' p15784 (dp15785 S'editable' p15786 I01 sS'value' p15787 S'Page' p15788 ssS'data_type' p15789 (dp15790 S'editable' p15791 I00 sS'value' p15792 S'entity' p15793 ssS'entity_type' p15794 (dp15795 S'editable' p15796 I00 sS'value' p15797 S'PageSetting' p15798 ssS'editable' p15799 (dp15800 S'editable' p15801 I00 sS'value' p15802 I01 ssS'unique' p15803 (dp15804 S'editable' p15805 I00 sS'value' p15806 I00 ssS'properties' p15807 (dp15808 S'default_value' p15809 (dp15810 S'editable' p15811 I00 sS'value' p15812 NssS'summary_default' p15813 (dp15814 S'editable' p15815 I01 sS'value' p15816 S'none' p15817 ssS'valid_types' p15818 (dp15819 S'editable' p15820 I01 sS'value' p15821 (lp15822 S'Page' p15823 asssS'description' p15824 (dp15825 S'editable' p15826 I01 sS'value' p15827 g47 sssS'user' p15828 (dp15829 S'mandatory' p15830 (dp15831 S'editable' p15832 I00 sS'value' p15833 I00 ssS'name' p15834 (dp15835 S'editable' p15836 I01 sS'value' p15837 S'User' p15838 ssS'data_type' p15839 (dp15840 S'editable' p15841 I00 sS'value' p15842 S'entity' p15843 ssS'entity_type' p15844 (dp15845 S'editable' p15846 I00 sS'value' p15847 S'PageSetting' p15848 ssS'editable' p15849 (dp15850 S'editable' p15851 I00 sS'value' p15852 I01 ssS'unique' p15853 (dp15854 S'editable' p15855 I00 sS'value' p15856 I00 ssS'properties' p15857 (dp15858 S'default_value' p15859 (dp15860 S'editable' p15861 I00 sS'value' p15862 NssS'summary_default' p15863 (dp15864 S'editable' p15865 I01 sS'value' p15866 S'none' p15867 ssS'valid_types' p15868 (dp15869 S'editable' p15870 I01 sS'value' p15871 (lp15872 S'HumanUser' p15873 asssS'description' p15874 (dp15875 S'editable' p15876 I01 sS'value' p15877 g47 sssS'cached_display_name' p15878 (dp15879 S'mandatory' p15880 (dp15881 S'editable' p15882 I00 sS'value' p15883 I00 ssS'name' p15884 (dp15885 S'editable' p15886 I01 sS'value' p15887 S'Cached Display Name' p15888 ssS'data_type' p15889 (dp15890 S'editable' p15891 I00 sS'value' p15892 S'text' p15893 ssS'entity_type' p15894 (dp15895 S'editable' p15896 I00 sS'value' p15897 S'PageSetting' p15898 ssS'editable' p15899 (dp15900 S'editable' p15901 I00 sS'value' p15902 I01 ssS'unique' p15903 (dp15904 S'editable' p15905 I00 sS'value' p15906 I00 ssS'properties' p15907 (dp15908 S'default_value' p15909 (dp15910 S'editable' p15911 I00 sS'value' p15912 NssS'summary_default' p15913 (dp15914 S'editable' p15915 I00 sS'value' p15916 S'none' p15917 sssS'description' p15918 (dp15919 S'editable' p15920 I01 sS'value' p15921 g47 sssS'id' p15922 (dp15923 S'mandatory' p15924 (dp15925 S'editable' p15926 I00 sS'value' p15927 I00 ssS'name' p15928 (dp15929 S'editable' p15930 I01 sS'value' p15931 S'Id' p15932 ssS'data_type' p15933 (dp15934 S'editable' p15935 I00 sS'value' p15936 S'number' p15937 ssS'entity_type' p15938 (dp15939 S'editable' p15940 I00 sS'value' p15941 S'PageSetting' p15942 ssS'editable' p15943 (dp15944 S'editable' p15945 I00 sS'value' p15946 I00 ssS'unique' p15947 (dp15948 S'editable' p15949 I00 sS'value' p15950 I00 ssS'properties' p15951 (dp15952 S'default_value' p15953 (dp15954 S'editable' p15955 I00 sS'value' p15956 NssS'summary_default' p15957 (dp15958 S'editable' p15959 I01 sS'value' p15960 S'none' p15961 sssS'description' p15962 (dp15963 S'editable' p15964 I01 sS'value' p15965 g47 ssssS'Status' p15966 (dp15967 S'code' p15968 (dp15969 S'mandatory' p15970 (dp15971 S'editable' p15972 I00 sS'value' p15973 I00 ssS'name' p15974 (dp15975 S'editable' p15976 I01 sS'value' p15977 S'Short Code' p15978 ssS'data_type' p15979 (dp15980 S'editable' p15981 I00 sS'value' p15982 S'text' p15983 ssS'entity_type' p15984 (dp15985 S'editable' p15986 I00 sS'value' p15987 S'Status' p15988 ssS'editable' p15989 (dp15990 S'editable' p15991 I00 sS'value' p15992 I00 ssS'unique' p15993 (dp15994 S'editable' p15995 I00 sS'value' p15996 I00 ssS'properties' p15997 (dp15998 S'default_value' p15999 (dp16000 S'editable' p16001 I00 sS'value' p16002 NssS'summary_default' p16003 (dp16004 S'editable' p16005 I01 sS'value' p16006 S'none' p16007 sssS'description' p16008 (dp16009 S'editable' p16010 I01 sS'value' p16011 g47 sssS'name' p16012 (dp16013 S'mandatory' p16014 (dp16015 S'editable' p16016 I00 sS'value' p16017 I01 ssS'name' p16018 (dp16019 S'editable' p16020 I01 sS'value' p16021 S'Status Name' p16022 ssS'data_type' p16023 (dp16024 S'editable' p16025 I00 sS'value' p16026 S'text' p16027 ssS'entity_type' p16028 (dp16029 S'editable' p16030 I00 sS'value' p16031 S'Status' p16032 ssS'editable' p16033 (dp16034 S'editable' p16035 I00 sS'value' p16036 I01 ssS'unique' p16037 (dp16038 S'editable' p16039 I00 sS'value' p16040 I00 ssS'properties' p16041 (dp16042 S'default_value' p16043 (dp16044 S'editable' p16045 I00 sS'value' p16046 NssS'summary_default' p16047 (dp16048 S'editable' p16049 I01 sS'value' p16050 S'none' p16051 sssS'description' p16052 (dp16053 S'editable' p16054 I01 sS'value' p16055 g47 sssS'created_at' p16056 (dp16057 S'mandatory' p16058 (dp16059 S'editable' p16060 I00 sS'value' p16061 I00 ssS'name' p16062 (dp16063 S'editable' p16064 I01 sS'value' p16065 S'Date Created' p16066 ssS'data_type' p16067 (dp16068 S'editable' p16069 I00 sS'value' p16070 S'date_time' p16071 ssS'entity_type' p16072 (dp16073 S'editable' p16074 I00 sS'value' p16075 S'Status' p16076 ssS'editable' p16077 (dp16078 S'editable' p16079 I00 sS'value' p16080 I00 ssS'unique' p16081 (dp16082 S'editable' p16083 I00 sS'value' p16084 I00 ssS'properties' p16085 (dp16086 S'default_value' p16087 (dp16088 S'editable' p16089 I00 sS'value' p16090 NssS'summary_default' p16091 (dp16092 S'editable' p16093 I00 sS'value' p16094 S'none' p16095 sssS'description' p16096 (dp16097 S'editable' p16098 I01 sS'value' p16099 g47 sssS'updated_at' p16100 (dp16101 S'mandatory' p16102 (dp16103 S'editable' p16104 I00 sS'value' p16105 I00 ssS'name' p16106 (dp16107 S'editable' p16108 I01 sS'value' p16109 S'Date Updated' p16110 ssS'data_type' p16111 (dp16112 S'editable' p16113 I00 sS'value' p16114 S'date_time' p16115 ssS'entity_type' p16116 (dp16117 S'editable' p16118 I00 sS'value' p16119 S'Status' p16120 ssS'editable' p16121 (dp16122 S'editable' p16123 I00 sS'value' p16124 I00 ssS'unique' p16125 (dp16126 S'editable' p16127 I00 sS'value' p16128 I00 ssS'properties' p16129 (dp16130 S'default_value' p16131 (dp16132 S'editable' p16133 I00 sS'value' p16134 NssS'summary_default' p16135 (dp16136 S'editable' p16137 I00 sS'value' p16138 S'none' p16139 sssS'description' p16140 (dp16141 S'editable' p16142 I01 sS'value' p16143 g47 sssS'created_by' p16144 (dp16145 S'mandatory' p16146 (dp16147 S'editable' p16148 I00 sS'value' p16149 I00 ssS'name' p16150 (dp16151 S'editable' p16152 I01 sS'value' p16153 S'Created by' p16154 ssS'data_type' p16155 (dp16156 S'editable' p16157 I00 sS'value' p16158 S'entity' p16159 ssS'entity_type' p16160 (dp16161 S'editable' p16162 I00 sS'value' p16163 S'Status' p16164 ssS'editable' p16165 (dp16166 S'editable' p16167 I00 sS'value' p16168 I00 ssS'unique' p16169 (dp16170 S'editable' p16171 I00 sS'value' p16172 I00 ssS'properties' p16173 (dp16174 S'default_value' p16175 (dp16176 S'editable' p16177 I00 sS'value' p16178 NssS'summary_default' p16179 (dp16180 S'editable' p16181 I00 sS'value' p16182 S'none' p16183 ssS'valid_types' p16184 (dp16185 S'editable' p16186 I00 sS'value' p16187 (lp16188 S'HumanUser' p16189 aS'ApiUser' p16190 asssS'description' p16191 (dp16192 S'editable' p16193 I01 sS'value' p16194 g47 sssS'system' p16195 (dp16196 S'mandatory' p16197 (dp16198 S'editable' p16199 I00 sS'value' p16200 I00 ssS'name' p16201 (dp16202 S'editable' p16203 I01 sS'value' p16204 S'Locked by System' p16205 ssS'data_type' p16206 (dp16207 S'editable' p16208 I00 sS'value' p16209 S'checkbox' p16210 ssS'entity_type' p16211 (dp16212 S'editable' p16213 I00 sS'value' p16214 S'Status' p16215 ssS'editable' p16216 (dp16217 S'editable' p16218 I00 sS'value' p16219 I00 ssS'unique' p16220 (dp16221 S'editable' p16222 I00 sS'value' p16223 I00 ssS'properties' p16224 (dp16225 S'default_value' p16226 (dp16227 S'editable' p16228 I00 sS'value' p16229 I00 ssS'summary_default' p16230 (dp16231 S'editable' p16232 I00 sS'value' p16233 S'none' p16234 sssS'description' p16235 (dp16236 S'editable' p16237 I01 sS'value' p16238 g47 sssS'bg_color' p16239 (dp16240 S'mandatory' p16241 (dp16242 S'editable' p16243 I00 sS'value' p16244 I00 ssS'name' p16245 (dp16246 S'editable' p16247 I01 sS'value' p16248 S'Background Color' p16249 ssS'data_type' p16250 (dp16251 S'editable' p16252 I00 sS'value' p16253 S'color' p16254 ssS'entity_type' p16255 (dp16256 S'editable' p16257 I00 sS'value' p16258 S'Status' p16259 ssS'editable' p16260 (dp16261 S'editable' p16262 I00 sS'value' p16263 I01 ssS'unique' p16264 (dp16265 S'editable' p16266 I00 sS'value' p16267 I00 ssS'properties' p16268 (dp16269 S'default_value' p16270 (dp16271 S'editable' p16272 I00 sS'value' p16273 NssS'summary_default' p16274 (dp16275 S'editable' p16276 I00 sS'value' p16277 S'none' p16278 sssS'description' p16279 (dp16280 S'editable' p16281 I01 sS'value' p16282 g47 sssS'updated_by' p16283 (dp16284 S'mandatory' p16285 (dp16286 S'editable' p16287 I00 sS'value' p16288 I00 ssS'name' p16289 (dp16290 S'editable' p16291 I01 sS'value' p16292 S'Updated by' p16293 ssS'data_type' p16294 (dp16295 S'editable' p16296 I00 sS'value' p16297 S'entity' p16298 ssS'entity_type' p16299 (dp16300 S'editable' p16301 I00 sS'value' p16302 S'Status' p16303 ssS'editable' p16304 (dp16305 S'editable' p16306 I00 sS'value' p16307 I00 ssS'unique' p16308 (dp16309 S'editable' p16310 I00 sS'value' p16311 I00 ssS'properties' p16312 (dp16313 S'default_value' p16314 (dp16315 S'editable' p16316 I00 sS'value' p16317 NssS'summary_default' p16318 (dp16319 S'editable' p16320 I00 sS'value' p16321 S'none' p16322 ssS'valid_types' p16323 (dp16324 S'editable' p16325 I00 sS'value' p16326 (lp16327 S'HumanUser' p16328 aS'ApiUser' p16329 asssS'description' p16330 (dp16331 S'editable' p16332 I01 sS'value' p16333 g47 sssS'cached_display_name' p16334 (dp16335 S'mandatory' p16336 (dp16337 S'editable' p16338 I00 sS'value' p16339 I00 ssS'name' p16340 (dp16341 S'editable' p16342 I01 sS'value' p16343 S'Cached Display Name' p16344 ssS'data_type' p16345 (dp16346 S'editable' p16347 I00 sS'value' p16348 S'text' p16349 ssS'entity_type' p16350 (dp16351 S'editable' p16352 I00 sS'value' p16353 S'Status' p16354 ssS'editable' p16355 (dp16356 S'editable' p16357 I00 sS'value' p16358 I01 ssS'unique' p16359 (dp16360 S'editable' p16361 I00 sS'value' p16362 I00 ssS'properties' p16363 (dp16364 S'default_value' p16365 (dp16366 S'editable' p16367 I00 sS'value' p16368 NssS'summary_default' p16369 (dp16370 S'editable' p16371 I00 sS'value' p16372 S'none' p16373 sssS'description' p16374 (dp16375 S'editable' p16376 I01 sS'value' p16377 g47 sssS'id' p16378 (dp16379 S'mandatory' p16380 (dp16381 S'editable' p16382 I00 sS'value' p16383 I00 ssS'name' p16384 (dp16385 S'editable' p16386 I01 sS'value' p16387 S'Id' p16388 ssS'data_type' p16389 (dp16390 S'editable' p16391 I00 sS'value' p16392 S'number' p16393 ssS'entity_type' p16394 (dp16395 S'editable' p16396 I00 sS'value' p16397 S'Status' p16398 ssS'editable' p16399 (dp16400 S'editable' p16401 I00 sS'value' p16402 I00 ssS'unique' p16403 (dp16404 S'editable' p16405 I00 sS'value' p16406 I00 ssS'properties' p16407 (dp16408 S'default_value' p16409 (dp16410 S'editable' p16411 I00 sS'value' p16412 NssS'summary_default' p16413 (dp16414 S'editable' p16415 I00 sS'value' p16416 S'none' p16417 sssS'description' p16418 (dp16419 S'editable' p16420 I01 sS'value' p16421 g47 sssS'icon' p16422 (dp16423 S'mandatory' p16424 (dp16425 S'editable' p16426 I00 sS'value' p16427 I01 ssS'name' p16428 (dp16429 S'editable' p16430 I01 sS'value' p16431 S'Icon' p16432 ssS'data_type' p16433 (dp16434 S'editable' p16435 I00 sS'value' p16436 S'entity' p16437 ssS'entity_type' p16438 (dp16439 S'editable' p16440 I00 sS'value' p16441 S'Status' p16442 ssS'editable' p16443 (dp16444 S'editable' p16445 I00 sS'value' p16446 I01 ssS'unique' p16447 (dp16448 S'editable' p16449 I00 sS'value' p16450 I00 ssS'properties' p16451 (dp16452 S'default_value' p16453 (dp16454 S'editable' p16455 I00 sS'value' p16456 NssS'summary_default' p16457 (dp16458 S'editable' p16459 I00 sS'value' p16460 S'none' p16461 ssS'valid_types' p16462 (dp16463 S'editable' p16464 I00 sS'value' p16465 (lp16466 S'Icon' p16467 asssS'description' p16468 (dp16469 S'editable' p16470 I01 sS'value' p16471 g47 ssssS'Reply' p16472 (dp16473 S'created_at' p16474 (dp16475 S'mandatory' p16476 (dp16477 S'editable' p16478 I00 sS'value' p16479 I00 ssS'name' p16480 (dp16481 S'editable' p16482 I01 sS'value' p16483 S'Date Created' p16484 ssS'data_type' p16485 (dp16486 S'editable' p16487 I00 sS'value' p16488 S'date_time' p16489 ssS'entity_type' p16490 (dp16491 S'editable' p16492 I00 sS'value' p16493 S'Reply' p16494 ssS'editable' p16495 (dp16496 S'editable' p16497 I00 sS'value' p16498 I00 ssS'unique' p16499 (dp16500 S'editable' p16501 I00 sS'value' p16502 I00 ssS'properties' p16503 (dp16504 S'default_value' p16505 (dp16506 S'editable' p16507 I00 sS'value' p16508 NssS'summary_default' p16509 (dp16510 S'editable' p16511 I01 sS'value' p16512 S'none' p16513 sssS'description' p16514 (dp16515 S'editable' p16516 I01 sS'value' p16517 g47 sssS'entity' p16518 (dp16519 S'mandatory' p16520 (dp16521 S'editable' p16522 I00 sS'value' p16523 I00 ssS'name' p16524 (dp16525 S'editable' p16526 I01 sS'value' p16527 S'Link' p16528 ssS'data_type' p16529 (dp16530 S'editable' p16531 I00 sS'value' p16532 S'entity' p16533 ssS'entity_type' p16534 (dp16535 S'editable' p16536 I00 sS'value' p16537 S'Reply' p16538 ssS'editable' p16539 (dp16540 S'editable' p16541 I00 sS'value' p16542 I01 ssS'unique' p16543 (dp16544 S'editable' p16545 I00 sS'value' p16546 I00 ssS'properties' p16547 (dp16548 S'default_value' p16549 (dp16550 S'editable' p16551 I00 sS'value' p16552 NssS'summary_default' p16553 (dp16554 S'editable' p16555 I01 sS'value' p16556 S'none' p16557 ssS'valid_types' p16558 (dp16559 S'editable' p16560 I01 sS'value' p16561 (lp16562 S'ApiUser' p16563 aS'AppWelcome' p16564 aS'Asset' p16565 aS'AssetLibrary' p16566 aS'Attachment' p16567 aS'Banner' p16568 aS'Booking' p16569 aS'CustomEntity01' p16570 aS'CustomEntity02' p16571 aS'CustomEntity03' p16572 aS'CustomEntity04' p16573 aS'CustomEntity05' p16574 aS'CustomNonProjectEntity01' p16575 aS'CustomNonProjectEntity02' p16576 aS'CustomNonProjectEntity03' p16577 aS'Department' p16578 aS'Element' p16579 aS'Group' p16580 aS'HumanUser' p16581 aS'Icon' p16582 aS'LocalStorage' p16583 aS'Note' p16584 aS'Page' p16585 aS'PermissionRuleSet' p16586 aS'Phase' p16587 aS'PipelineConfiguration' p16588 aS'Playlist' p16589 aS'Project' p16590 aS'PublishedFile' p16591 aS'PublishedFileDependency' p16592 aS'PublishedFileType' p16593 aS'Scene' p16594 aS'Sequence' p16595 aS'Shot' p16596 aS'Status' p16597 aS'Step' p16598 aS'Tag' p16599 aS'TankDependency' p16600 aS'TankPublishedFile' p16601 aS'TankType' p16602 aS'Task' p16603 aS'TaskTemplate' p16604 aS'Version' p16605 asssS'description' p16606 (dp16607 S'editable' p16608 I01 sS'value' p16609 g47 sssS'content' p16610 (dp16611 S'mandatory' p16612 (dp16613 S'editable' p16614 I00 sS'value' p16615 I01 ssS'name' p16616 (dp16617 S'editable' p16618 I01 sS'value' p16619 S'Reply Text' p16620 ssS'data_type' p16621 (dp16622 S'editable' p16623 I00 sS'value' p16624 S'text' p16625 ssS'entity_type' p16626 (dp16627 S'editable' p16628 I00 sS'value' p16629 S'Reply' p16630 ssS'editable' p16631 (dp16632 S'editable' p16633 I00 sS'value' p16634 I01 ssS'unique' p16635 (dp16636 S'editable' p16637 I00 sS'value' p16638 I00 ssS'properties' p16639 (dp16640 S'default_value' p16641 (dp16642 S'editable' p16643 I00 sS'value' p16644 NssS'summary_default' p16645 (dp16646 S'editable' p16647 I01 sS'value' p16648 S'none' p16649 sssS'description' p16650 (dp16651 S'editable' p16652 I01 sS'value' p16653 g47 sssS'user' p16654 (dp16655 S'mandatory' p16656 (dp16657 S'editable' p16658 I00 sS'value' p16659 I00 ssS'name' p16660 (dp16661 S'editable' p16662 I01 sS'value' p16663 S'User' p16664 ssS'data_type' p16665 (dp16666 S'editable' p16667 I00 sS'value' p16668 S'entity' p16669 ssS'entity_type' p16670 (dp16671 S'editable' p16672 I00 sS'value' p16673 S'Reply' p16674 ssS'editable' p16675 (dp16676 S'editable' p16677 I00 sS'value' p16678 I01 ssS'unique' p16679 (dp16680 S'editable' p16681 I00 sS'value' p16682 I00 ssS'properties' p16683 (dp16684 S'default_value' p16685 (dp16686 S'editable' p16687 I00 sS'value' p16688 NssS'summary_default' p16689 (dp16690 S'editable' p16691 I01 sS'value' p16692 S'none' p16693 ssS'valid_types' p16694 (dp16695 S'editable' p16696 I01 sS'value' p16697 (lp16698 S'HumanUser' p16699 aS'ApiUser' p16700 asssS'description' p16701 (dp16702 S'editable' p16703 I01 sS'value' p16704 g47 sssS'cached_display_name' p16705 (dp16706 S'mandatory' p16707 (dp16708 S'editable' p16709 I00 sS'value' p16710 I00 ssS'name' p16711 (dp16712 S'editable' p16713 I01 sS'value' p16714 S'Cached Display Name' p16715 ssS'data_type' p16716 (dp16717 S'editable' p16718 I00 sS'value' p16719 S'text' p16720 ssS'entity_type' p16721 (dp16722 S'editable' p16723 I00 sS'value' p16724 S'Reply' p16725 ssS'editable' p16726 (dp16727 S'editable' p16728 I00 sS'value' p16729 I01 ssS'unique' p16730 (dp16731 S'editable' p16732 I00 sS'value' p16733 I00 ssS'properties' p16734 (dp16735 S'default_value' p16736 (dp16737 S'editable' p16738 I00 sS'value' p16739 NssS'summary_default' p16740 (dp16741 S'editable' p16742 I00 sS'value' p16743 S'none' p16744 sssS'description' p16745 (dp16746 S'editable' p16747 I01 sS'value' p16748 g47 sssS'id' p16749 (dp16750 S'mandatory' p16751 (dp16752 S'editable' p16753 I00 sS'value' p16754 I00 ssS'name' p16755 (dp16756 S'editable' p16757 I01 sS'value' p16758 S'Id' p16759 ssS'data_type' p16760 (dp16761 S'editable' p16762 I00 sS'value' p16763 S'number' p16764 ssS'entity_type' p16765 (dp16766 S'editable' p16767 I00 sS'value' p16768 S'Reply' p16769 ssS'editable' p16770 (dp16771 S'editable' p16772 I00 sS'value' p16773 I00 ssS'unique' p16774 (dp16775 S'editable' p16776 I00 sS'value' p16777 I00 ssS'properties' p16778 (dp16779 S'default_value' p16780 (dp16781 S'editable' p16782 I00 sS'value' p16783 NssS'summary_default' p16784 (dp16785 S'editable' p16786 I01 sS'value' p16787 S'none' p16788 sssS'description' p16789 (dp16790 S'editable' p16791 I01 sS'value' p16792 g47 ssssS'Task' p16793 (dp16794 S'open_notes_count' p16795 (dp16796 S'mandatory' p16797 (dp16798 S'editable' p16799 I00 sS'value' p16800 I00 ssS'name' p16801 (dp16802 S'editable' p16803 I01 sS'value' p16804 S'Open Notes Count' p16805 ssS'data_type' p16806 (dp16807 S'editable' p16808 I00 sS'value' p16809 S'text' p16810 ssS'entity_type' p16811 (dp16812 S'editable' p16813 I00 sS'value' p16814 S'Task' p16815 ssS'editable' p16816 (dp16817 S'editable' p16818 I00 sS'value' p16819 I00 ssS'unique' p16820 (dp16821 S'editable' p16822 I00 sS'value' p16823 I00 ssS'properties' p16824 (dp16825 S'default_value' p16826 (dp16827 S'editable' p16828 I00 sS'value' p16829 NssS'summary_default' p16830 (dp16831 S'editable' p16832 I01 sS'value' p16833 S'none' p16834 sssS'description' p16835 (dp16836 S'editable' p16837 I01 sS'value' p16838 g47 sssS'color' p16839 (dp16840 S'mandatory' p16841 (dp16842 S'editable' p16843 I00 sS'value' p16844 I00 ssS'name' p16845 (dp16846 S'editable' p16847 I01 sS'value' p16848 S'Gantt Bar Color' p16849 ssS'data_type' p16850 (dp16851 S'editable' p16852 I00 sS'value' p16853 S'color' p16854 ssS'entity_type' p16855 (dp16856 S'editable' p16857 I00 sS'value' p16858 S'Task' p16859 ssS'editable' p16860 (dp16861 S'editable' p16862 I00 sS'value' p16863 I01 ssS'unique' p16864 (dp16865 S'editable' p16866 I00 sS'value' p16867 I00 ssS'properties' p16868 (dp16869 S'default_value' p16870 (dp16871 S'editable' p16872 I00 sS'value' p16873 NssS'summary_default' p16874 (dp16875 S'editable' p16876 I01 sS'value' p16877 S'none' p16878 sssS'description' p16879 (dp16880 S'editable' p16881 I01 sS'value' p16882 g47 sssS'split_durations' p16883 (dp16884 S'mandatory' p16885 (dp16886 S'editable' p16887 I00 sS'value' p16888 I00 ssS'name' p16889 (dp16890 S'editable' p16891 I01 sS'value' p16892 S'Split Durations' p16893 ssS'data_type' p16894 (dp16895 S'editable' p16896 I00 sS'value' p16897 S'serializable' p16898 ssS'entity_type' p16899 (dp16900 S'editable' p16901 I00 sS'value' p16902 S'Task' p16903 ssS'editable' p16904 (dp16905 S'editable' p16906 I00 sS'value' p16907 I00 ssS'unique' p16908 (dp16909 S'editable' p16910 I00 sS'value' p16911 I00 ssS'properties' p16912 (dp16913 S'default_value' p16914 (dp16915 S'editable' p16916 I00 sS'value' p16917 NssS'summary_default' p16918 (dp16919 S'editable' p16920 I00 sS'value' p16921 S'none' p16922 sssS'description' p16923 (dp16924 S'editable' p16925 I01 sS'value' p16926 g47 sssS'image' p16927 (dp16928 S'mandatory' p16929 (dp16930 S'editable' p16931 I00 sS'value' p16932 I00 ssS'name' p16933 (dp16934 S'editable' p16935 I01 sS'value' p16936 S'Thumbnail' p16937 ssS'data_type' p16938 (dp16939 S'editable' p16940 I00 sS'value' p16941 S'image' p16942 ssS'entity_type' p16943 (dp16944 S'editable' p16945 I00 sS'value' p16946 S'Task' p16947 ssS'editable' p16948 (dp16949 S'editable' p16950 I00 sS'value' p16951 I01 ssS'unique' p16952 (dp16953 S'editable' p16954 I00 sS'value' p16955 I00 ssS'properties' p16956 (dp16957 S'default_value' p16958 (dp16959 S'editable' p16960 I00 sS'value' p16961 NssS'summary_default' p16962 (dp16963 S'editable' p16964 I01 sS'value' p16965 S'none' p16966 sssS'description' p16967 (dp16968 S'editable' p16969 I01 sS'value' p16970 g47 sssS'updated_at' p16971 (dp16972 S'mandatory' p16973 (dp16974 S'editable' p16975 I00 sS'value' p16976 I00 ssS'name' p16977 (dp16978 S'editable' p16979 I01 sS'value' p16980 S'Date Updated' p16981 ssS'data_type' p16982 (dp16983 S'editable' p16984 I00 sS'value' p16985 S'date_time' p16986 ssS'entity_type' p16987 (dp16988 S'editable' p16989 I00 sS'value' p16990 S'Task' p16991 ssS'editable' p16992 (dp16993 S'editable' p16994 I00 sS'value' p16995 I00 ssS'unique' p16996 (dp16997 S'editable' p16998 I00 sS'value' p16999 I00 ssS'properties' p17000 (dp17001 S'default_value' p17002 (dp17003 S'editable' p17004 I00 sS'value' p17005 NssS'summary_default' p17006 (dp17007 S'editable' p17008 I01 sS'value' p17009 S'none' p17010 sssS'description' p17011 (dp17012 S'editable' p17013 I01 sS'value' p17014 g47 sssS'entity' p17015 (dp17016 S'mandatory' p17017 (dp17018 S'editable' p17019 I00 sS'value' p17020 I00 ssS'name' p17021 (dp17022 S'editable' p17023 I01 sS'value' p17024 S'Link' p17025 ssS'data_type' p17026 (dp17027 S'editable' p17028 I00 sS'value' p17029 S'entity' p17030 ssS'entity_type' p17031 (dp17032 S'editable' p17033 I00 sS'value' p17034 S'Task' p17035 ssS'editable' p17036 (dp17037 S'editable' p17038 I00 sS'value' p17039 I01 ssS'unique' p17040 (dp17041 S'editable' p17042 I00 sS'value' p17043 I00 ssS'properties' p17044 (dp17045 S'default_value' p17046 (dp17047 S'editable' p17048 I00 sS'value' p17049 NssS'summary_default' p17050 (dp17051 S'editable' p17052 I01 sS'value' p17053 S'none' p17054 ssS'valid_types' p17055 (dp17056 S'editable' p17057 I01 sS'value' p17058 (lp17059 S'Asset' p17060 aS'Element' p17061 aS'Scene' p17062 aS'Sequence' p17063 aS'Shot' p17064 aS'Project' p17065 asssS'description' p17066 (dp17067 S'editable' p17068 I01 sS'value' p17069 g47 sssS'task_assignees' p17070 (dp17071 S'mandatory' p17072 (dp17073 S'editable' p17074 I00 sS'value' p17075 I00 ssS'name' p17076 (dp17077 S'editable' p17078 I01 sS'value' p17079 S'Assigned To' p17080 ssS'data_type' p17081 (dp17082 S'editable' p17083 I00 sS'value' p17084 S'multi_entity' p17085 ssS'entity_type' p17086 (dp17087 S'editable' p17088 I00 sS'value' p17089 S'Task' p17090 ssS'editable' p17091 (dp17092 S'editable' p17093 I00 sS'value' p17094 I01 ssS'unique' p17095 (dp17096 S'editable' p17097 I00 sS'value' p17098 I00 ssS'properties' p17099 (dp17100 S'default_value' p17101 (dp17102 S'editable' p17103 I00 sS'value' p17104 NssS'summary_default' p17105 (dp17106 S'editable' p17107 I01 sS'value' p17108 S'none' p17109 ssS'valid_types' p17110 (dp17111 S'editable' p17112 I01 sS'value' p17113 (lp17114 S'Group' p17115 aS'HumanUser' p17116 asssS'description' p17117 (dp17118 S'editable' p17119 I01 sS'value' p17120 g47 sssS'duration' p17121 (dp17122 S'mandatory' p17123 (dp17124 S'editable' p17125 I00 sS'value' p17126 I00 ssS'name' p17127 (dp17128 S'editable' p17129 I01 sS'value' p17130 S'Duration' p17131 ssS'data_type' p17132 (dp17133 S'editable' p17134 I00 sS'value' p17135 S'duration' p17136 ssS'entity_type' p17137 (dp17138 S'editable' p17139 I00 sS'value' p17140 S'Task' p17141 ssS'editable' p17142 (dp17143 S'editable' p17144 I00 sS'value' p17145 I01 ssS'unique' p17146 (dp17147 S'editable' p17148 I00 sS'value' p17149 I00 ssS'properties' p17150 (dp17151 S'default_value' p17152 (dp17153 S'editable' p17154 I00 sS'value' p17155 NssS'summary_default' p17156 (dp17157 S'editable' p17158 I01 sS'value' p17159 S'sum' p17160 sssS'description' p17161 (dp17162 S'editable' p17163 I01 sS'value' p17164 g47 sssS'cached_display_name' p17165 (dp17166 S'mandatory' p17167 (dp17168 S'editable' p17169 I00 sS'value' p17170 I00 ssS'name' p17171 (dp17172 S'editable' p17173 I01 sS'value' p17174 S'Cached Display Name' p17175 ssS'data_type' p17176 (dp17177 S'editable' p17178 I00 sS'value' p17179 S'text' p17180 ssS'entity_type' p17181 (dp17182 S'editable' p17183 I00 sS'value' p17184 S'Task' p17185 ssS'editable' p17186 (dp17187 S'editable' p17188 I00 sS'value' p17189 I01 ssS'unique' p17190 (dp17191 S'editable' p17192 I00 sS'value' p17193 I00 ssS'properties' p17194 (dp17195 S'default_value' p17196 (dp17197 S'editable' p17198 I00 sS'value' p17199 NssS'summary_default' p17200 (dp17201 S'editable' p17202 I00 sS'value' p17203 S'none' p17204 sssS'description' p17205 (dp17206 S'editable' p17207 I01 sS'value' p17208 g47 sssS'id' p17209 (dp17210 S'mandatory' p17211 (dp17212 S'editable' p17213 I00 sS'value' p17214 I00 ssS'name' p17215 (dp17216 S'editable' p17217 I01 sS'value' p17218 S'Id' p17219 ssS'data_type' p17220 (dp17221 S'editable' p17222 I00 sS'value' p17223 S'number' p17224 ssS'entity_type' p17225 (dp17226 S'editable' p17227 I00 sS'value' p17228 S'Task' p17229 ssS'editable' p17230 (dp17231 S'editable' p17232 I00 sS'value' p17233 I00 ssS'unique' p17234 (dp17235 S'editable' p17236 I00 sS'value' p17237 I00 ssS'properties' p17238 (dp17239 S'default_value' p17240 (dp17241 S'editable' p17242 I00 sS'value' p17243 NssS'summary_default' p17244 (dp17245 S'editable' p17246 I01 sS'value' p17247 S'none' p17248 sssS'description' p17249 (dp17250 S'editable' p17251 I01 sS'value' p17252 g47 sssS'pinned' p17253 (dp17254 S'mandatory' p17255 (dp17256 S'editable' p17257 I00 sS'value' p17258 I00 ssS'name' p17259 (dp17260 S'editable' p17261 I01 sS'value' p17262 S'Pinned' p17263 ssS'data_type' p17264 (dp17265 S'editable' p17266 I00 sS'value' p17267 S'checkbox' p17268 ssS'entity_type' p17269 (dp17270 S'editable' p17271 I00 sS'value' p17272 S'Task' p17273 ssS'editable' p17274 (dp17275 S'editable' p17276 I00 sS'value' p17277 I01 ssS'unique' p17278 (dp17279 S'editable' p17280 I00 sS'value' p17281 I00 ssS'properties' p17282 (dp17283 S'default_value' p17284 (dp17285 S'editable' p17286 I00 sS'value' p17287 I00 ssS'summary_default' p17288 (dp17289 S'editable' p17290 I01 sS'value' p17291 S'none' p17292 sssS'description' p17293 (dp17294 S'editable' p17295 I01 sS'value' p17296 g47 sssS'sg_task_order' p17297 (dp17298 S'mandatory' p17299 (dp17300 S'editable' p17301 I00 sS'value' p17302 I00 ssS'name' p17303 (dp17304 S'editable' p17305 I01 sS'value' p17306 S'Task Order' p17307 ssS'data_type' p17308 (dp17309 S'editable' p17310 I00 sS'value' p17311 S'number' p17312 ssS'entity_type' p17313 (dp17314 S'editable' p17315 I00 sS'value' p17316 S'Task' p17317 ssS'editable' p17318 (dp17319 S'editable' p17320 I00 sS'value' p17321 I01 ssS'unique' p17322 (dp17323 S'editable' p17324 I00 sS'value' p17325 I00 ssS'properties' p17326 (dp17327 S'default_value' p17328 (dp17329 S'editable' p17330 I00 sS'value' p17331 NssS'summary_default' p17332 (dp17333 S'editable' p17334 I01 sS'value' p17335 S'none' p17336 sssS'description' p17337 (dp17338 S'editable' p17339 I01 sS'value' p17340 g47 sssS'downstream_tasks' p17341 (dp17342 S'mandatory' p17343 (dp17344 S'editable' p17345 I00 sS'value' p17346 I00 ssS'name' p17347 (dp17348 S'editable' p17349 I01 sS'value' p17350 S'Downstream Dependency' p17351 ssS'data_type' p17352 (dp17353 S'editable' p17354 I00 sS'value' p17355 S'multi_entity' p17356 ssS'entity_type' p17357 (dp17358 S'editable' p17359 I00 sS'value' p17360 S'Task' p17361 ssS'editable' p17362 (dp17363 S'editable' p17364 I00 sS'value' p17365 I01 ssS'unique' p17366 (dp17367 S'editable' p17368 I00 sS'value' p17369 I00 ssS'properties' p17370 (dp17371 S'default_value' p17372 (dp17373 S'editable' p17374 I00 sS'value' p17375 NssS'summary_default' p17376 (dp17377 S'editable' p17378 I00 sS'value' p17379 S'none' p17380 ssS'valid_types' p17381 (dp17382 S'editable' p17383 I00 sS'value' p17384 (lp17385 S'Task' p17386 asssS'description' p17387 (dp17388 S'editable' p17389 I01 sS'value' p17390 g47 sssS'open_notes' p17391 (dp17392 S'mandatory' p17393 (dp17394 S'editable' p17395 I00 sS'value' p17396 I00 ssS'name' p17397 (dp17398 S'editable' p17399 I01 sS'value' p17400 S'Open Notes' p17401 ssS'data_type' p17402 (dp17403 S'editable' p17404 I00 sS'value' p17405 S'multi_entity' p17406 ssS'entity_type' p17407 (dp17408 S'editable' p17409 I00 sS'value' p17410 S'Task' p17411 ssS'editable' p17412 (dp17413 S'editable' p17414 I00 sS'value' p17415 I00 ssS'unique' p17416 (dp17417 S'editable' p17418 I00 sS'value' p17419 I00 ssS'properties' p17420 (dp17421 S'default_value' p17422 (dp17423 S'editable' p17424 I00 sS'value' p17425 NssS'summary_default' p17426 (dp17427 S'editable' p17428 I01 sS'value' p17429 S'none' p17430 ssS'valid_types' p17431 (dp17432 S'editable' p17433 I01 sS'value' p17434 (lp17435 S'Note' p17436 asssS'description' p17437 (dp17438 S'editable' p17439 I01 sS'value' p17440 g47 sssS'addressings_cc' p17441 (dp17442 S'mandatory' p17443 (dp17444 S'editable' p17445 I00 sS'value' p17446 I00 ssS'name' p17447 (dp17448 S'editable' p17449 I01 sS'value' p17450 S'Cc' p17451 ssS'data_type' p17452 (dp17453 S'editable' p17454 I00 sS'value' p17455 S'multi_entity' p17456 ssS'entity_type' p17457 (dp17458 S'editable' p17459 I00 sS'value' p17460 S'Task' p17461 ssS'editable' p17462 (dp17463 S'editable' p17464 I00 sS'value' p17465 I01 ssS'unique' p17466 (dp17467 S'editable' p17468 I00 sS'value' p17469 I00 ssS'properties' p17470 (dp17471 S'default_value' p17472 (dp17473 S'editable' p17474 I00 sS'value' p17475 NssS'summary_default' p17476 (dp17477 S'editable' p17478 I01 sS'value' p17479 S'none' p17480 ssS'valid_types' p17481 (dp17482 S'editable' p17483 I01 sS'value' p17484 (lp17485 S'Group' p17486 aS'HumanUser' p17487 asssS'description' p17488 (dp17489 S'editable' p17490 I01 sS'value' p17491 g47 sssS'inventory_date' p17492 (dp17493 S'mandatory' p17494 (dp17495 S'editable' p17496 I00 sS'value' p17497 I00 ssS'name' p17498 (dp17499 S'editable' p17500 I01 sS'value' p17501 S'Inventory Date' p17502 ssS'data_type' p17503 (dp17504 S'editable' p17505 I00 sS'value' p17506 S'date' p17507 ssS'entity_type' p17508 (dp17509 S'editable' p17510 I00 sS'value' p17511 S'Task' p17512 ssS'editable' p17513 (dp17514 S'editable' p17515 I00 sS'value' p17516 I00 ssS'unique' p17517 (dp17518 S'editable' p17519 I00 sS'value' p17520 I00 ssS'properties' p17521 (dp17522 S'default_value' p17523 (dp17524 S'editable' p17525 I00 sS'value' p17526 NssS'summary_default' p17527 (dp17528 S'editable' p17529 I00 sS'value' p17530 S'none' p17531 sssS'description' p17532 (dp17533 S'editable' p17534 I01 sS'value' p17535 g47 sssS'task_template' p17536 (dp17537 S'mandatory' p17538 (dp17539 S'editable' p17540 I00 sS'value' p17541 I00 ssS'name' p17542 (dp17543 S'editable' p17544 I01 sS'value' p17545 S'Task Template' p17546 ssS'data_type' p17547 (dp17548 S'editable' p17549 I00 sS'value' p17550 S'entity' p17551 ssS'entity_type' p17552 (dp17553 S'editable' p17554 I00 sS'value' p17555 S'Task' p17556 ssS'editable' p17557 (dp17558 S'editable' p17559 I00 sS'value' p17560 I01 ssS'unique' p17561 (dp17562 S'editable' p17563 I00 sS'value' p17564 I00 ssS'properties' p17565 (dp17566 S'default_value' p17567 (dp17568 S'editable' p17569 I00 sS'value' p17570 NssS'summary_default' p17571 (dp17572 S'editable' p17573 I01 sS'value' p17574 S'none' p17575 ssS'valid_types' p17576 (dp17577 S'editable' p17578 I01 sS'value' p17579 (lp17580 S'TaskTemplate' p17581 asssS'description' p17582 (dp17583 S'editable' p17584 I01 sS'value' p17585 g47 sssS'created_by' p17586 (dp17587 S'mandatory' p17588 (dp17589 S'editable' p17590 I00 sS'value' p17591 I00 ssS'name' p17592 (dp17593 S'editable' p17594 I01 sS'value' p17595 S'Created by' p17596 ssS'data_type' p17597 (dp17598 S'editable' p17599 I00 sS'value' p17600 S'entity' p17601 ssS'entity_type' p17602 (dp17603 S'editable' p17604 I00 sS'value' p17605 S'Task' p17606 ssS'editable' p17607 (dp17608 S'editable' p17609 I00 sS'value' p17610 I00 ssS'unique' p17611 (dp17612 S'editable' p17613 I00 sS'value' p17614 I00 ssS'properties' p17615 (dp17616 S'default_value' p17617 (dp17618 S'editable' p17619 I00 sS'value' p17620 NssS'summary_default' p17621 (dp17622 S'editable' p17623 I01 sS'value' p17624 S'none' p17625 ssS'valid_types' p17626 (dp17627 S'editable' p17628 I01 sS'value' p17629 (lp17630 S'HumanUser' p17631 aS'ApiUser' p17632 asssS'description' p17633 (dp17634 S'editable' p17635 I01 sS'value' p17636 g47 sssS'content' p17637 (dp17638 S'mandatory' p17639 (dp17640 S'editable' p17641 I00 sS'value' p17642 I01 ssS'name' p17643 (dp17644 S'editable' p17645 I01 sS'value' p17646 S'Task Name' p17647 ssS'data_type' p17648 (dp17649 S'editable' p17650 I00 sS'value' p17651 S'text' p17652 ssS'entity_type' p17653 (dp17654 S'editable' p17655 I00 sS'value' p17656 S'Task' p17657 ssS'editable' p17658 (dp17659 S'editable' p17660 I00 sS'value' p17661 I01 ssS'unique' p17662 (dp17663 S'editable' p17664 I00 sS'value' p17665 I00 ssS'properties' p17666 (dp17667 S'default_value' p17668 (dp17669 S'editable' p17670 I00 sS'value' p17671 NssS'summary_default' p17672 (dp17673 S'editable' p17674 I01 sS'value' p17675 S'record_count' p17676 sssS'description' p17677 (dp17678 S'editable' p17679 I01 sS'value' p17680 g47 sssS'sg_status_list' p17681 (dp17682 S'mandatory' p17683 (dp17684 S'editable' p17685 I00 sS'value' p17686 I00 ssS'name' p17687 (dp17688 S'editable' p17689 I01 sS'value' p17690 S'Status' p17691 ssS'data_type' p17692 (dp17693 S'editable' p17694 I00 sS'value' p17695 S'status_list' p17696 ssS'entity_type' p17697 (dp17698 S'editable' p17699 I00 sS'value' p17700 S'Task' p17701 ssS'editable' p17702 (dp17703 S'editable' p17704 I00 sS'value' p17705 I01 ssS'unique' p17706 (dp17707 S'editable' p17708 I00 sS'value' p17709 I00 ssS'properties' p17710 (dp17711 S'default_value' p17712 (dp17713 S'editable' p17714 I01 sS'value' p17715 S'wtg' p17716 ssS'valid_values' p17717 (dp17718 S'editable' p17719 I01 sS'value' p17720 (lp17721 S'fin' p17722 aS'ip' p17723 aS'hld' p17724 aS'rdy' p17725 aS'wtg' p17726 assS'summary_default' p17727 (dp17728 S'editable' p17729 I01 sS'value' p17730 S'status_percentage' p17731 sssS'description' p17732 (dp17733 S'editable' p17734 I01 sS'value' p17735 g47 sssS'time_logs_sum' p17736 (dp17737 S'mandatory' p17738 (dp17739 S'editable' p17740 I00 sS'value' p17741 I00 ssS'name' p17742 (dp17743 S'editable' p17744 I01 sS'value' p17745 S'Time Logged' p17746 ssS'data_type' p17747 (dp17748 S'editable' p17749 I00 sS'value' p17750 S'duration' p17751 ssS'entity_type' p17752 (dp17753 S'editable' p17754 I00 sS'value' p17755 S'Task' p17756 ssS'editable' p17757 (dp17758 S'editable' p17759 I00 sS'value' p17760 I00 ssS'unique' p17761 (dp17762 S'editable' p17763 I00 sS'value' p17764 I00 ssS'properties' p17765 (dp17766 S'default_value' p17767 (dp17768 S'editable' p17769 I00 sS'value' p17770 I0 ssS'summary_default' p17771 (dp17772 S'editable' p17773 I01 sS'value' p17774 S'sum' p17775 sssS'description' p17776 (dp17777 S'editable' p17778 I01 sS'value' p17779 g47 sssS'start_date' p17780 (dp17781 S'mandatory' p17782 (dp17783 S'editable' p17784 I00 sS'value' p17785 I00 ssS'name' p17786 (dp17787 S'editable' p17788 I01 sS'value' p17789 S'Start Date' p17790 ssS'data_type' p17791 (dp17792 S'editable' p17793 I00 sS'value' p17794 S'date' p17795 ssS'entity_type' p17796 (dp17797 S'editable' p17798 I00 sS'value' p17799 S'Task' p17800 ssS'editable' p17801 (dp17802 S'editable' p17803 I00 sS'value' p17804 I01 ssS'unique' p17805 (dp17806 S'editable' p17807 I00 sS'value' p17808 I00 ssS'properties' p17809 (dp17810 S'default_value' p17811 (dp17812 S'editable' p17813 I00 sS'value' p17814 NssS'summary_default' p17815 (dp17816 S'editable' p17817 I01 sS'value' p17818 S'earliest' p17819 sssS'description' p17820 (dp17821 S'editable' p17822 I01 sS'value' p17823 g47 sssS'sibling_tasks' p17824 (dp17825 S'mandatory' p17826 (dp17827 S'editable' p17828 I00 sS'value' p17829 I00 ssS'name' p17830 (dp17831 S'editable' p17832 I01 sS'value' p17833 S'Sibling Tasks' p17834 ssS'data_type' p17835 (dp17836 S'editable' p17837 I00 sS'value' p17838 S'multi_entity' p17839 ssS'entity_type' p17840 (dp17841 S'editable' p17842 I00 sS'value' p17843 S'Task' p17844 ssS'editable' p17845 (dp17846 S'editable' p17847 I00 sS'value' p17848 I00 ssS'unique' p17849 (dp17850 S'editable' p17851 I00 sS'value' p17852 I00 ssS'properties' p17853 (dp17854 S'default_value' p17855 (dp17856 S'editable' p17857 I00 sS'value' p17858 NssS'summary_default' p17859 (dp17860 S'editable' p17861 I01 sS'value' p17862 S'none' p17863 ssS'valid_types' p17864 (dp17865 S'editable' p17866 I01 sS'value' p17867 (lp17868 S'Task' p17869 asssS'description' p17870 (dp17871 S'editable' p17872 I01 sS'value' p17873 g47 sssS'due_date' p17874 (dp17875 S'mandatory' p17876 (dp17877 S'editable' p17878 I00 sS'value' p17879 I00 ssS'name' p17880 (dp17881 S'editable' p17882 I01 sS'value' p17883 S'Due Date' p17884 ssS'data_type' p17885 (dp17886 S'editable' p17887 I00 sS'value' p17888 S'date' p17889 ssS'entity_type' p17890 (dp17891 S'editable' p17892 I00 sS'value' p17893 S'Task' p17894 ssS'editable' p17895 (dp17896 S'editable' p17897 I00 sS'value' p17898 I01 ssS'unique' p17899 (dp17900 S'editable' p17901 I00 sS'value' p17902 I00 ssS'properties' p17903 (dp17904 S'default_value' p17905 (dp17906 S'editable' p17907 I00 sS'value' p17908 NssS'summary_default' p17909 (dp17910 S'editable' p17911 I01 sS'value' p17912 S'latest' p17913 sssS'description' p17914 (dp17915 S'editable' p17916 I01 sS'value' p17917 g47 sssS'updated_by' p17918 (dp17919 S'mandatory' p17920 (dp17921 S'editable' p17922 I00 sS'value' p17923 I00 ssS'name' p17924 (dp17925 S'editable' p17926 I01 sS'value' p17927 S'Updated by' p17928 ssS'data_type' p17929 (dp17930 S'editable' p17931 I00 sS'value' p17932 S'entity' p17933 ssS'entity_type' p17934 (dp17935 S'editable' p17936 I00 sS'value' p17937 S'Task' p17938 ssS'editable' p17939 (dp17940 S'editable' p17941 I00 sS'value' p17942 I00 ssS'unique' p17943 (dp17944 S'editable' p17945 I00 sS'value' p17946 I00 ssS'properties' p17947 (dp17948 S'default_value' p17949 (dp17950 S'editable' p17951 I00 sS'value' p17952 NssS'summary_default' p17953 (dp17954 S'editable' p17955 I01 sS'value' p17956 S'none' p17957 ssS'valid_types' p17958 (dp17959 S'editable' p17960 I01 sS'value' p17961 (lp17962 S'HumanUser' p17963 aS'ApiUser' p17964 asssS'description' p17965 (dp17966 S'editable' p17967 I01 sS'value' p17968 g47 sssS'upstream_tasks' p17969 (dp17970 S'mandatory' p17971 (dp17972 S'editable' p17973 I00 sS'value' p17974 I00 ssS'name' p17975 (dp17976 S'editable' p17977 I01 sS'value' p17978 S'Upstream Dependency' p17979 ssS'data_type' p17980 (dp17981 S'editable' p17982 I00 sS'value' p17983 S'multi_entity' p17984 ssS'entity_type' p17985 (dp17986 S'editable' p17987 I00 sS'value' p17988 S'Task' p17989 ssS'editable' p17990 (dp17991 S'editable' p17992 I00 sS'value' p17993 I01 ssS'unique' p17994 (dp17995 S'editable' p17996 I00 sS'value' p17997 I00 ssS'properties' p17998 (dp17999 S'default_value' p18000 (dp18001 S'editable' p18002 I00 sS'value' p18003 NssS'summary_default' p18004 (dp18005 S'editable' p18006 I00 sS'value' p18007 S'none' p18008 ssS'valid_types' p18009 (dp18010 S'editable' p18011 I00 sS'value' p18012 (lp18013 S'Task' p18014 asssS'description' p18015 (dp18016 S'editable' p18017 I01 sS'value' p18018 g47 sssS'dependency_violation' p18019 (dp18020 S'mandatory' p18021 (dp18022 S'editable' p18023 I00 sS'value' p18024 I00 ssS'name' p18025 (dp18026 S'editable' p18027 I01 sS'value' p18028 S'Dependency Violation' p18029 ssS'data_type' p18030 (dp18031 S'editable' p18032 I00 sS'value' p18033 S'checkbox' p18034 ssS'entity_type' p18035 (dp18036 S'editable' p18037 I00 sS'value' p18038 S'Task' p18039 ssS'editable' p18040 (dp18041 S'editable' p18042 I00 sS'value' p18043 I00 ssS'unique' p18044 (dp18045 S'editable' p18046 I00 sS'value' p18047 I00 ssS'properties' p18048 (dp18049 S'default_value' p18050 (dp18051 S'editable' p18052 I00 sS'value' p18053 I00 ssS'summary_default' p18054 (dp18055 S'editable' p18056 I00 sS'value' p18057 S'none' p18058 sssS'description' p18059 (dp18060 S'editable' p18061 I01 sS'value' p18062 g47 sssS'time_vs_est' p18063 (dp18064 S'mandatory' p18065 (dp18066 S'editable' p18067 I00 sS'value' p18068 I00 ssS'name' p18069 (dp18070 S'editable' p18071 I01 sS'value' p18072 S'Time Logged - Over/Under Bid' p18073 ssS'data_type' p18074 (dp18075 S'editable' p18076 I00 sS'value' p18077 S'duration' p18078 ssS'entity_type' p18079 (dp18080 S'editable' p18081 I00 sS'value' p18082 S'Task' p18083 ssS'editable' p18084 (dp18085 S'editable' p18086 I00 sS'value' p18087 I00 ssS'unique' p18088 (dp18089 S'editable' p18090 I00 sS'value' p18091 I00 ssS'properties' p18092 (dp18093 S'default_value' p18094 (dp18095 S'editable' p18096 I00 sS'value' p18097 NssS'summary_default' p18098 (dp18099 S'editable' p18100 I01 sS'value' p18101 S'sum' p18102 sssS'description' p18103 (dp18104 S'editable' p18105 I01 sS'value' p18106 g47 sssS'template_task' p18107 (dp18108 S'mandatory' p18109 (dp18110 S'editable' p18111 I00 sS'value' p18112 I00 ssS'name' p18113 (dp18114 S'editable' p18115 I01 sS'value' p18116 S'Template Task' p18117 ssS'data_type' p18118 (dp18119 S'editable' p18120 I00 sS'value' p18121 S'entity' p18122 ssS'entity_type' p18123 (dp18124 S'editable' p18125 I00 sS'value' p18126 S'Task' p18127 ssS'editable' p18128 (dp18129 S'editable' p18130 I00 sS'value' p18131 I00 ssS'unique' p18132 (dp18133 S'editable' p18134 I00 sS'value' p18135 I00 ssS'properties' p18136 (dp18137 S'default_value' p18138 (dp18139 S'editable' p18140 I00 sS'value' p18141 NssS'summary_default' p18142 (dp18143 S'editable' p18144 I01 sS'value' p18145 S'none' p18146 ssS'valid_types' p18147 (dp18148 S'editable' p18149 I01 sS'value' p18150 (lp18151 S'Task' p18152 asssS'description' p18153 (dp18154 S'editable' p18155 I01 sS'value' p18156 g47 sssS'step' p18157 (dp18158 S'mandatory' p18159 (dp18160 S'editable' p18161 I00 sS'value' p18162 I00 ssS'name' p18163 (dp18164 S'editable' p18165 I01 sS'value' p18166 S'Pipeline Step' p18167 ssS'data_type' p18168 (dp18169 S'editable' p18170 I00 sS'value' p18171 S'entity' p18172 ssS'entity_type' p18173 (dp18174 S'editable' p18175 I00 sS'value' p18176 S'Task' p18177 ssS'editable' p18178 (dp18179 S'editable' p18180 I00 sS'value' p18181 I01 ssS'unique' p18182 (dp18183 S'editable' p18184 I00 sS'value' p18185 I00 ssS'properties' p18186 (dp18187 S'default_value' p18188 (dp18189 S'editable' p18190 I00 sS'value' p18191 NssS'summary_default' p18192 (dp18193 S'editable' p18194 I01 sS'value' p18195 S'none' p18196 ssS'valid_types' p18197 (dp18198 S'editable' p18199 I01 sS'value' p18200 (lp18201 S'Step' p18202 asssS'description' p18203 (dp18204 S'editable' p18205 I01 sS'value' p18206 g47 sssS'milestone' p18207 (dp18208 S'mandatory' p18209 (dp18210 S'editable' p18211 I00 sS'value' p18212 I00 ssS'name' p18213 (dp18214 S'editable' p18215 I01 sS'value' p18216 S'Milestone' p18217 ssS'data_type' p18218 (dp18219 S'editable' p18220 I00 sS'value' p18221 S'checkbox' p18222 ssS'entity_type' p18223 (dp18224 S'editable' p18225 I00 sS'value' p18226 S'Task' p18227 ssS'editable' p18228 (dp18229 S'editable' p18230 I00 sS'value' p18231 I01 ssS'unique' p18232 (dp18233 S'editable' p18234 I00 sS'value' p18235 I00 ssS'properties' p18236 (dp18237 S'default_value' p18238 (dp18239 S'editable' p18240 I00 sS'value' p18241 I00 ssS'summary_default' p18242 (dp18243 S'editable' p18244 I01 sS'value' p18245 S'none' p18246 sssS'description' p18247 (dp18248 S'editable' p18249 I01 sS'value' p18250 g47 sssS'time_percent_of_est' p18251 (dp18252 S'mandatory' p18253 (dp18254 S'editable' p18255 I00 sS'value' p18256 I00 ssS'name' p18257 (dp18258 S'editable' p18259 I01 sS'value' p18260 S'Time Logged - % of Bid' p18261 ssS'data_type' p18262 (dp18263 S'editable' p18264 I00 sS'value' p18265 S'percent' p18266 ssS'entity_type' p18267 (dp18268 S'editable' p18269 I00 sS'value' p18270 S'Task' p18271 ssS'editable' p18272 (dp18273 S'editable' p18274 I00 sS'value' p18275 I00 ssS'unique' p18276 (dp18277 S'editable' p18278 I00 sS'value' p18279 I00 ssS'properties' p18280 (dp18281 S'default_value' p18282 (dp18283 S'editable' p18284 I00 sS'value' p18285 NssS'summary_default' p18286 (dp18287 S'editable' p18288 I01 sS'value' p18289 S'none' p18290 sssS'description' p18291 (dp18292 S'editable' p18293 I01 sS'value' p18294 g47 sssS'splits' p18295 (dp18296 S'mandatory' p18297 (dp18298 S'editable' p18299 I00 sS'value' p18300 I00 ssS'name' p18301 (dp18302 S'editable' p18303 I01 sS'value' p18304 S'Splits' p18305 ssS'data_type' p18306 (dp18307 S'editable' p18308 I00 sS'value' p18309 S'serializable' p18310 ssS'entity_type' p18311 (dp18312 S'editable' p18313 I00 sS'value' p18314 S'Task' p18315 ssS'editable' p18316 (dp18317 S'editable' p18318 I00 sS'value' p18319 I01 ssS'unique' p18320 (dp18321 S'editable' p18322 I00 sS'value' p18323 I00 ssS'properties' p18324 (dp18325 S'default_value' p18326 (dp18327 S'editable' p18328 I00 sS'value' p18329 NssS'summary_default' p18330 (dp18331 S'editable' p18332 I00 sS'value' p18333 S'none' p18334 sssS'description' p18335 (dp18336 S'editable' p18337 I01 sS'value' p18338 g47 sssS'created_at' p18339 (dp18340 S'mandatory' p18341 (dp18342 S'editable' p18343 I00 sS'value' p18344 I00 ssS'name' p18345 (dp18346 S'editable' p18347 I01 sS'value' p18348 S'Date Created' p18349 ssS'data_type' p18350 (dp18351 S'editable' p18352 I00 sS'value' p18353 S'date_time' p18354 ssS'entity_type' p18355 (dp18356 S'editable' p18357 I00 sS'value' p18358 S'Task' p18359 ssS'editable' p18360 (dp18361 S'editable' p18362 I00 sS'value' p18363 I00 ssS'unique' p18364 (dp18365 S'editable' p18366 I00 sS'value' p18367 I00 ssS'properties' p18368 (dp18369 S'default_value' p18370 (dp18371 S'editable' p18372 I00 sS'value' p18373 NssS'summary_default' p18374 (dp18375 S'editable' p18376 I01 sS'value' p18377 S'none' p18378 sssS'description' p18379 (dp18380 S'editable' p18381 I01 sS'value' p18382 g47 sssS'project' p18383 (dp18384 S'mandatory' p18385 (dp18386 S'editable' p18387 I00 sS'value' p18388 I00 ssS'name' p18389 (dp18390 S'editable' p18391 I01 sS'value' p18392 S'Project' p18393 ssS'data_type' p18394 (dp18395 S'editable' p18396 I00 sS'value' p18397 S'entity' p18398 ssS'entity_type' p18399 (dp18400 S'editable' p18401 I00 sS'value' p18402 S'Task' p18403 ssS'editable' p18404 (dp18405 S'editable' p18406 I00 sS'value' p18407 I01 ssS'unique' p18408 (dp18409 S'editable' p18410 I00 sS'value' p18411 I00 ssS'properties' p18412 (dp18413 S'default_value' p18414 (dp18415 S'editable' p18416 I00 sS'value' p18417 NssS'summary_default' p18418 (dp18419 S'editable' p18420 I01 sS'value' p18421 S'none' p18422 ssS'valid_types' p18423 (dp18424 S'editable' p18425 I01 sS'value' p18426 (lp18427 S'Project' p18428 asssS'description' p18429 (dp18430 S'editable' p18431 I01 sS'value' p18432 g47 sssS'filmstrip_image' p18433 (dp18434 S'mandatory' p18435 (dp18436 S'editable' p18437 I00 sS'value' p18438 I00 ssS'name' p18439 (dp18440 S'editable' p18441 I01 sS'value' p18442 S'Filmstrip Thumbnail' p18443 ssS'data_type' p18444 (dp18445 S'editable' p18446 I00 sS'value' p18447 S'image' p18448 ssS'entity_type' p18449 (dp18450 S'editable' p18451 I00 sS'value' p18452 S'Task' p18453 ssS'editable' p18454 (dp18455 S'editable' p18456 I00 sS'value' p18457 I01 ssS'unique' p18458 (dp18459 S'editable' p18460 I00 sS'value' p18461 I00 ssS'properties' p18462 (dp18463 S'default_value' p18464 (dp18465 S'editable' p18466 I00 sS'value' p18467 NssS'summary_default' p18468 (dp18469 S'editable' p18470 I01 sS'value' p18471 S'none' p18472 sssS'description' p18473 (dp18474 S'editable' p18475 I01 sS'value' p18476 g47 sssS'est_in_mins' p18477 (dp18478 S'mandatory' p18479 (dp18480 S'editable' p18481 I00 sS'value' p18482 I00 ssS'name' p18483 (dp18484 S'editable' p18485 I01 sS'value' p18486 S'Bid' p18487 ssS'data_type' p18488 (dp18489 S'editable' p18490 I00 sS'value' p18491 S'duration' p18492 ssS'entity_type' p18493 (dp18494 S'editable' p18495 I00 sS'value' p18496 S'Task' p18497 ssS'editable' p18498 (dp18499 S'editable' p18500 I00 sS'value' p18501 I01 ssS'unique' p18502 (dp18503 S'editable' p18504 I00 sS'value' p18505 I00 ssS'properties' p18506 (dp18507 S'default_value' p18508 (dp18509 S'editable' p18510 I00 sS'value' p18511 NssS'summary_default' p18512 (dp18513 S'editable' p18514 I01 sS'value' p18515 S'sum' p18516 sssS'description' p18517 (dp18518 S'editable' p18519 I01 sS'value' p18520 g47 sssS'tag_list' p18521 (dp18522 S'mandatory' p18523 (dp18524 S'editable' p18525 I00 sS'value' p18526 I00 ssS'name' p18527 (dp18528 S'editable' p18529 I01 sS'value' p18530 S'Tags' p18531 ssS'data_type' p18532 (dp18533 S'editable' p18534 I00 sS'value' p18535 S'tag_list' p18536 ssS'entity_type' p18537 (dp18538 S'editable' p18539 I00 sS'value' p18540 S'Task' p18541 ssS'editable' p18542 (dp18543 S'editable' p18544 I00 sS'value' p18545 I01 ssS'unique' p18546 (dp18547 S'editable' p18548 I00 sS'value' p18549 I00 ssS'properties' p18550 (dp18551 S'default_value' p18552 (dp18553 S'editable' p18554 I00 sS'value' p18555 NssS'summary_default' p18556 (dp18557 S'editable' p18558 I01 sS'value' p18559 S'none' p18560 ssS'valid_types' p18561 (dp18562 S'editable' p18563 I01 sS'value' p18564 (lp18565 S'Tag' p18566 asssS'description' p18567 (dp18568 S'editable' p18569 I01 sS'value' p18570 g47 sssS'notes' p18571 (dp18572 S'mandatory' p18573 (dp18574 S'editable' p18575 I00 sS'value' p18576 I00 ssS'name' p18577 (dp18578 S'editable' p18579 I01 sS'value' p18580 S'Notes' p18581 ssS'data_type' p18582 (dp18583 S'editable' p18584 I00 sS'value' p18585 S'multi_entity' p18586 ssS'entity_type' p18587 (dp18588 S'editable' p18589 I00 sS'value' p18590 S'Task' p18591 ssS'editable' p18592 (dp18593 S'editable' p18594 I00 sS'value' p18595 I01 ssS'unique' p18596 (dp18597 S'editable' p18598 I00 sS'value' p18599 I00 ssS'properties' p18600 (dp18601 S'default_value' p18602 (dp18603 S'editable' p18604 I00 sS'value' p18605 NssS'summary_default' p18606 (dp18607 S'editable' p18608 I01 sS'value' p18609 S'none' p18610 ssS'valid_types' p18611 (dp18612 S'editable' p18613 I01 sS'value' p18614 (lp18615 S'Note' p18616 asssS'description' p18617 (dp18618 S'editable' p18619 I01 sS'value' p18620 g47 ssssS'CustomNonProjectEntity01' p18621 (dp18622 S'created_at' p18623 (dp18624 S'mandatory' p18625 (dp18626 S'editable' p18627 I00 sS'value' p18628 I00 ssS'name' p18629 (dp18630 S'editable' p18631 I01 sS'value' p18632 S'Date Created' p18633 ssS'data_type' p18634 (dp18635 S'editable' p18636 I00 sS'value' p18637 S'date_time' p18638 ssS'entity_type' p18639 (dp18640 S'editable' p18641 I00 sS'value' p18642 S'CustomNonProjectEntity01' p18643 ssS'editable' p18644 (dp18645 S'editable' p18646 I00 sS'value' p18647 I00 ssS'unique' p18648 (dp18649 S'editable' p18650 I00 sS'value' p18651 I00 ssS'properties' p18652 (dp18653 S'default_value' p18654 (dp18655 S'editable' p18656 I00 sS'value' p18657 NssS'summary_default' p18658 (dp18659 S'editable' p18660 I01 sS'value' p18661 S'none' p18662 sssS'description' p18663 (dp18664 S'editable' p18665 I01 sS'value' p18666 g47 sssS'open_notes_count' p18667 (dp18668 S'mandatory' p18669 (dp18670 S'editable' p18671 I00 sS'value' p18672 I00 ssS'name' p18673 (dp18674 S'editable' p18675 I01 sS'value' p18676 S'Open Notes Count' p18677 ssS'data_type' p18678 (dp18679 S'editable' p18680 I00 sS'value' p18681 S'text' p18682 ssS'entity_type' p18683 (dp18684 S'editable' p18685 I00 sS'value' p18686 S'CustomNonProjectEntity01' p18687 ssS'editable' p18688 (dp18689 S'editable' p18690 I00 sS'value' p18691 I00 ssS'unique' p18692 (dp18693 S'editable' p18694 I00 sS'value' p18695 I00 ssS'properties' p18696 (dp18697 S'default_value' p18698 (dp18699 S'editable' p18700 I00 sS'value' p18701 NssS'summary_default' p18702 (dp18703 S'editable' p18704 I01 sS'value' p18705 S'none' p18706 sssS'description' p18707 (dp18708 S'editable' p18709 I01 sS'value' p18710 g47 sssS'code' p18711 (dp18712 S'mandatory' p18713 (dp18714 S'editable' p18715 I00 sS'value' p18716 I01 ssS'name' p18717 (dp18718 S'editable' p18719 I01 sS'value' p18720 S'Custom Non Project Entity01 Name' p18721 ssS'data_type' p18722 (dp18723 S'editable' p18724 I00 sS'value' p18725 S'text' p18726 ssS'entity_type' p18727 (dp18728 S'editable' p18729 I00 sS'value' p18730 S'CustomNonProjectEntity01' p18731 ssS'editable' p18732 (dp18733 S'editable' p18734 I00 sS'value' p18735 I01 ssS'unique' p18736 (dp18737 S'editable' p18738 I00 sS'value' p18739 I00 ssS'properties' p18740 (dp18741 S'default_value' p18742 (dp18743 S'editable' p18744 I00 sS'value' p18745 NssS'summary_default' p18746 (dp18747 S'editable' p18748 I01 sS'value' p18749 S'none' p18750 sssS'description' p18751 (dp18752 S'editable' p18753 I01 sS'value' p18754 g47 sssS'open_notes' p18755 (dp18756 S'mandatory' p18757 (dp18758 S'editable' p18759 I00 sS'value' p18760 I00 ssS'name' p18761 (dp18762 S'editable' p18763 I01 sS'value' p18764 S'Open Notes' p18765 ssS'data_type' p18766 (dp18767 S'editable' p18768 I00 sS'value' p18769 S'multi_entity' p18770 ssS'entity_type' p18771 (dp18772 S'editable' p18773 I00 sS'value' p18774 S'CustomNonProjectEntity01' p18775 ssS'editable' p18776 (dp18777 S'editable' p18778 I00 sS'value' p18779 I00 ssS'unique' p18780 (dp18781 S'editable' p18782 I00 sS'value' p18783 I00 ssS'properties' p18784 (dp18785 S'default_value' p18786 (dp18787 S'editable' p18788 I00 sS'value' p18789 NssS'summary_default' p18790 (dp18791 S'editable' p18792 I01 sS'value' p18793 S'none' p18794 ssS'valid_types' p18795 (dp18796 S'editable' p18797 I01 sS'value' p18798 (lp18799 S'Note' p18800 asssS'description' p18801 (dp18802 S'editable' p18803 I01 sS'value' p18804 g47 sssS'description' p18805 (dp18806 S'mandatory' p18807 (dp18808 S'editable' p18809 I00 sS'value' p18810 I00 ssS'name' p18811 (dp18812 S'editable' p18813 I01 sS'value' p18814 S'Description' p18815 ssS'data_type' p18816 (dp18817 S'editable' p18818 I00 sS'value' p18819 S'text' p18820 ssS'entity_type' p18821 (dp18822 S'editable' p18823 I00 sS'value' p18824 S'CustomNonProjectEntity01' p18825 ssS'editable' p18826 (dp18827 S'editable' p18828 I00 sS'value' p18829 I01 ssS'unique' p18830 (dp18831 S'editable' p18832 I00 sS'value' p18833 I00 ssS'properties' p18834 (dp18835 S'default_value' p18836 (dp18837 S'editable' p18838 I00 sS'value' p18839 NssS'summary_default' p18840 (dp18841 S'editable' p18842 I01 sS'value' p18843 S'none' p18844 sssS'description' p18845 (dp18846 S'editable' p18847 I01 sS'value' p18848 g47 sssS'notes' p18849 (dp18850 S'mandatory' p18851 (dp18852 S'editable' p18853 I00 sS'value' p18854 I00 ssS'name' p18855 (dp18856 S'editable' p18857 I01 sS'value' p18858 S'Notes' p18859 ssS'data_type' p18860 (dp18861 S'editable' p18862 I00 sS'value' p18863 S'multi_entity' p18864 ssS'entity_type' p18865 (dp18866 S'editable' p18867 I00 sS'value' p18868 S'CustomNonProjectEntity01' p18869 ssS'editable' p18870 (dp18871 S'editable' p18872 I00 sS'value' p18873 I01 ssS'unique' p18874 (dp18875 S'editable' p18876 I00 sS'value' p18877 I00 ssS'properties' p18878 (dp18879 S'default_value' p18880 (dp18881 S'editable' p18882 I00 sS'value' p18883 NssS'summary_default' p18884 (dp18885 S'editable' p18886 I01 sS'value' p18887 S'none' p18888 ssS'valid_types' p18889 (dp18890 S'editable' p18891 I01 sS'value' p18892 (lp18893 S'Note' p18894 asssS'description' p18895 (dp18896 S'editable' p18897 I01 sS'value' p18898 g47 sssS'updated_at' p18899 (dp18900 S'mandatory' p18901 (dp18902 S'editable' p18903 I00 sS'value' p18904 I00 ssS'name' p18905 (dp18906 S'editable' p18907 I01 sS'value' p18908 S'Date Updated' p18909 ssS'data_type' p18910 (dp18911 S'editable' p18912 I00 sS'value' p18913 S'date_time' p18914 ssS'entity_type' p18915 (dp18916 S'editable' p18917 I00 sS'value' p18918 S'CustomNonProjectEntity01' p18919 ssS'editable' p18920 (dp18921 S'editable' p18922 I00 sS'value' p18923 I00 ssS'unique' p18924 (dp18925 S'editable' p18926 I00 sS'value' p18927 I00 ssS'properties' p18928 (dp18929 S'default_value' p18930 (dp18931 S'editable' p18932 I00 sS'value' p18933 NssS'summary_default' p18934 (dp18935 S'editable' p18936 I01 sS'value' p18937 S'none' p18938 sssS'description' p18939 (dp18940 S'editable' p18941 I01 sS'value' p18942 g47 sssS'created_by' p18943 (dp18944 S'mandatory' p18945 (dp18946 S'editable' p18947 I00 sS'value' p18948 I00 ssS'name' p18949 (dp18950 S'editable' p18951 I01 sS'value' p18952 S'Created by' p18953 ssS'data_type' p18954 (dp18955 S'editable' p18956 I00 sS'value' p18957 S'entity' p18958 ssS'entity_type' p18959 (dp18960 S'editable' p18961 I00 sS'value' p18962 S'CustomNonProjectEntity01' p18963 ssS'editable' p18964 (dp18965 S'editable' p18966 I00 sS'value' p18967 I00 ssS'unique' p18968 (dp18969 S'editable' p18970 I00 sS'value' p18971 I00 ssS'properties' p18972 (dp18973 S'default_value' p18974 (dp18975 S'editable' p18976 I00 sS'value' p18977 NssS'summary_default' p18978 (dp18979 S'editable' p18980 I01 sS'value' p18981 S'none' p18982 ssS'valid_types' p18983 (dp18984 S'editable' p18985 I01 sS'value' p18986 (lp18987 S'HumanUser' p18988 aS'ApiUser' p18989 asssS'description' p18990 (dp18991 S'editable' p18992 I01 sS'value' p18993 g47 sssS'filmstrip_image' p18994 (dp18995 S'mandatory' p18996 (dp18997 S'editable' p18998 I00 sS'value' p18999 I00 ssS'name' p19000 (dp19001 S'editable' p19002 I01 sS'value' p19003 S'Filmstrip Thumbnail' p19004 ssS'data_type' p19005 (dp19006 S'editable' p19007 I00 sS'value' p19008 S'image' p19009 ssS'entity_type' p19010 (dp19011 S'editable' p19012 I00 sS'value' p19013 S'CustomNonProjectEntity01' p19014 ssS'editable' p19015 (dp19016 S'editable' p19017 I00 sS'value' p19018 I01 ssS'unique' p19019 (dp19020 S'editable' p19021 I00 sS'value' p19022 I00 ssS'properties' p19023 (dp19024 S'default_value' p19025 (dp19026 S'editable' p19027 I00 sS'value' p19028 NssS'summary_default' p19029 (dp19030 S'editable' p19031 I01 sS'value' p19032 S'none' p19033 sssS'description' p19034 (dp19035 S'editable' p19036 I01 sS'value' p19037 g47 sssS'sg_status_list' p19038 (dp19039 S'mandatory' p19040 (dp19041 S'editable' p19042 I00 sS'value' p19043 I00 ssS'name' p19044 (dp19045 S'editable' p19046 I01 sS'value' p19047 S'Status' p19048 ssS'data_type' p19049 (dp19050 S'editable' p19051 I00 sS'value' p19052 S'status_list' p19053 ssS'entity_type' p19054 (dp19055 S'editable' p19056 I00 sS'value' p19057 S'CustomNonProjectEntity01' p19058 ssS'editable' p19059 (dp19060 S'editable' p19061 I00 sS'value' p19062 I01 ssS'unique' p19063 (dp19064 S'editable' p19065 I00 sS'value' p19066 I00 ssS'properties' p19067 (dp19068 S'default_value' p19069 (dp19070 S'editable' p19071 I01 sS'value' p19072 S'wtg' p19073 ssS'valid_values' p19074 (dp19075 S'editable' p19076 I01 sS'value' p19077 (lp19078 S'cmpt' p19079 aS'ip' p19080 aS'wtg' p19081 assS'summary_default' p19082 (dp19083 S'editable' p19084 I01 sS'value' p19085 S'none' p19086 sssS'description' p19087 (dp19088 S'editable' p19089 I01 sS'value' p19090 g47 sssS'image' p19091 (dp19092 S'mandatory' p19093 (dp19094 S'editable' p19095 I00 sS'value' p19096 I00 ssS'name' p19097 (dp19098 S'editable' p19099 I01 sS'value' p19100 S'Thumbnail' p19101 ssS'data_type' p19102 (dp19103 S'editable' p19104 I00 sS'value' p19105 S'image' p19106 ssS'entity_type' p19107 (dp19108 S'editable' p19109 I00 sS'value' p19110 S'CustomNonProjectEntity01' p19111 ssS'editable' p19112 (dp19113 S'editable' p19114 I00 sS'value' p19115 I01 ssS'unique' p19116 (dp19117 S'editable' p19118 I00 sS'value' p19119 I00 ssS'properties' p19120 (dp19121 S'default_value' p19122 (dp19123 S'editable' p19124 I00 sS'value' p19125 NssS'summary_default' p19126 (dp19127 S'editable' p19128 I01 sS'value' p19129 S'none' p19130 sssS'description' p19131 (dp19132 S'editable' p19133 I01 sS'value' p19134 g47 sssS'cached_display_name' p19135 (dp19136 S'mandatory' p19137 (dp19138 S'editable' p19139 I00 sS'value' p19140 I00 ssS'name' p19141 (dp19142 S'editable' p19143 I01 sS'value' p19144 S'Cached Display Name' p19145 ssS'data_type' p19146 (dp19147 S'editable' p19148 I00 sS'value' p19149 S'text' p19150 ssS'entity_type' p19151 (dp19152 S'editable' p19153 I00 sS'value' p19154 S'CustomNonProjectEntity01' p19155 ssS'editable' p19156 (dp19157 S'editable' p19158 I00 sS'value' p19159 I01 ssS'unique' p19160 (dp19161 S'editable' p19162 I00 sS'value' p19163 I00 ssS'properties' p19164 (dp19165 S'default_value' p19166 (dp19167 S'editable' p19168 I00 sS'value' p19169 NssS'summary_default' p19170 (dp19171 S'editable' p19172 I00 sS'value' p19173 S'none' p19174 sssS'description' p19175 (dp19176 S'editable' p19177 I01 sS'value' p19178 g47 sssS'tag_list' p19179 (dp19180 S'mandatory' p19181 (dp19182 S'editable' p19183 I00 sS'value' p19184 I00 ssS'name' p19185 (dp19186 S'editable' p19187 I01 sS'value' p19188 S'Tags' p19189 ssS'data_type' p19190 (dp19191 S'editable' p19192 I00 sS'value' p19193 S'tag_list' p19194 ssS'entity_type' p19195 (dp19196 S'editable' p19197 I00 sS'value' p19198 S'CustomNonProjectEntity01' p19199 ssS'editable' p19200 (dp19201 S'editable' p19202 I00 sS'value' p19203 I01 ssS'unique' p19204 (dp19205 S'editable' p19206 I00 sS'value' p19207 I00 ssS'properties' p19208 (dp19209 S'default_value' p19210 (dp19211 S'editable' p19212 I00 sS'value' p19213 NssS'summary_default' p19214 (dp19215 S'editable' p19216 I01 sS'value' p19217 S'none' p19218 ssS'valid_types' p19219 (dp19220 S'editable' p19221 I01 sS'value' p19222 (lp19223 S'Tag' p19224 asssS'description' p19225 (dp19226 S'editable' p19227 I01 sS'value' p19228 g47 sssS'id' p19229 (dp19230 S'mandatory' p19231 (dp19232 S'editable' p19233 I00 sS'value' p19234 I00 ssS'name' p19235 (dp19236 S'editable' p19237 I01 sS'value' p19238 S'Id' p19239 ssS'data_type' p19240 (dp19241 S'editable' p19242 I00 sS'value' p19243 S'number' p19244 ssS'entity_type' p19245 (dp19246 S'editable' p19247 I00 sS'value' p19248 S'CustomNonProjectEntity01' p19249 ssS'editable' p19250 (dp19251 S'editable' p19252 I00 sS'value' p19253 I00 ssS'unique' p19254 (dp19255 S'editable' p19256 I00 sS'value' p19257 I00 ssS'properties' p19258 (dp19259 S'default_value' p19260 (dp19261 S'editable' p19262 I00 sS'value' p19263 NssS'summary_default' p19264 (dp19265 S'editable' p19266 I01 sS'value' p19267 S'none' p19268 sssS'description' p19269 (dp19270 S'editable' p19271 I01 sS'value' p19272 g47 sssS'updated_by' p19273 (dp19274 S'mandatory' p19275 (dp19276 S'editable' p19277 I00 sS'value' p19278 I00 ssS'name' p19279 (dp19280 S'editable' p19281 I01 sS'value' p19282 S'Updated by' p19283 ssS'data_type' p19284 (dp19285 S'editable' p19286 I00 sS'value' p19287 S'entity' p19288 ssS'entity_type' p19289 (dp19290 S'editable' p19291 I00 sS'value' p19292 S'CustomNonProjectEntity01' p19293 ssS'editable' p19294 (dp19295 S'editable' p19296 I00 sS'value' p19297 I00 ssS'unique' p19298 (dp19299 S'editable' p19300 I00 sS'value' p19301 I00 ssS'properties' p19302 (dp19303 S'default_value' p19304 (dp19305 S'editable' p19306 I00 sS'value' p19307 NssS'summary_default' p19308 (dp19309 S'editable' p19310 I01 sS'value' p19311 S'none' p19312 ssS'valid_types' p19313 (dp19314 S'editable' p19315 I01 sS'value' p19316 (lp19317 S'HumanUser' p19318 aS'ApiUser' p19319 asssS'description' p19320 (dp19321 S'editable' p19322 I01 sS'value' p19323 g47 ssssS'ApiUser' p19324 (dp19325 S'description' p19326 (dp19327 S'mandatory' p19328 (dp19329 S'editable' p19330 I00 sS'value' p19331 I00 ssS'name' p19332 (dp19333 S'editable' p19334 I01 sS'value' p19335 S'Description' p19336 ssS'data_type' p19337 (dp19338 S'editable' p19339 I00 sS'value' p19340 S'text' p19341 ssS'entity_type' p19342 (dp19343 S'editable' p19344 I00 sS'value' p19345 S'ApiUser' p19346 ssS'editable' p19347 (dp19348 S'editable' p19349 I00 sS'value' p19350 I01 ssS'unique' p19351 (dp19352 S'editable' p19353 I00 sS'value' p19354 I00 ssS'properties' p19355 (dp19356 S'default_value' p19357 (dp19358 S'editable' p19359 I00 sS'value' p19360 NssS'summary_default' p19361 (dp19362 S'editable' p19363 I01 sS'value' p19364 S'none' p19365 sssS'description' p19366 (dp19367 S'editable' p19368 I01 sS'value' p19369 g47 sssS'firstname' p19370 (dp19371 S'mandatory' p19372 (dp19373 S'editable' p19374 I00 sS'value' p19375 I01 ssS'name' p19376 (dp19377 S'editable' p19378 I01 sS'value' p19379 S'Script Name' p19380 ssS'data_type' p19381 (dp19382 S'editable' p19383 I00 sS'value' p19384 S'text' p19385 ssS'entity_type' p19386 (dp19387 S'editable' p19388 I00 sS'value' p19389 S'ApiUser' p19390 ssS'editable' p19391 (dp19392 S'editable' p19393 I00 sS'value' p19394 I01 ssS'unique' p19395 (dp19396 S'editable' p19397 I00 sS'value' p19398 I00 ssS'properties' p19399 (dp19400 S'default_value' p19401 (dp19402 S'editable' p19403 I00 sS'value' p19404 NssS'summary_default' p19405 (dp19406 S'editable' p19407 I01 sS'value' p19408 S'none' p19409 sssS'description' p19410 (dp19411 S'editable' p19412 I01 sS'value' p19413 g47 sssS'lastname' p19414 (dp19415 S'mandatory' p19416 (dp19417 S'editable' p19418 I00 sS'value' p19419 I00 ssS'name' p19420 (dp19421 S'editable' p19422 I01 sS'value' p19423 S'Version' p19424 ssS'data_type' p19425 (dp19426 S'editable' p19427 I00 sS'value' p19428 S'text' p19429 ssS'entity_type' p19430 (dp19431 S'editable' p19432 I00 sS'value' p19433 S'ApiUser' p19434 ssS'editable' p19435 (dp19436 S'editable' p19437 I00 sS'value' p19438 I01 ssS'unique' p19439 (dp19440 S'editable' p19441 I00 sS'value' p19442 I00 ssS'properties' p19443 (dp19444 S'default_value' p19445 (dp19446 S'editable' p19447 I00 sS'value' p19448 NssS'summary_default' p19449 (dp19450 S'editable' p19451 I01 sS'value' p19452 S'none' p19453 sssS'description' p19454 (dp19455 S'editable' p19456 I01 sS'value' p19457 g47 sssS'created_at' p19458 (dp19459 S'mandatory' p19460 (dp19461 S'editable' p19462 I00 sS'value' p19463 I00 ssS'name' p19464 (dp19465 S'editable' p19466 I01 sS'value' p19467 S'Date Created' p19468 ssS'data_type' p19469 (dp19470 S'editable' p19471 I00 sS'value' p19472 S'date_time' p19473 ssS'entity_type' p19474 (dp19475 S'editable' p19476 I00 sS'value' p19477 S'ApiUser' p19478 ssS'editable' p19479 (dp19480 S'editable' p19481 I00 sS'value' p19482 I00 ssS'unique' p19483 (dp19484 S'editable' p19485 I00 sS'value' p19486 I00 ssS'properties' p19487 (dp19488 S'default_value' p19489 (dp19490 S'editable' p19491 I00 sS'value' p19492 NssS'summary_default' p19493 (dp19494 S'editable' p19495 I01 sS'value' p19496 S'none' p19497 sssS'description' p19498 (dp19499 S'editable' p19500 I01 sS'value' p19501 g47 sssS'generate_event_log_entries' p19502 (dp19503 S'mandatory' p19504 (dp19505 S'editable' p19506 I00 sS'value' p19507 I00 ssS'name' p19508 (dp19509 S'editable' p19510 I01 sS'value' p19511 S'Generate Events' p19512 ssS'data_type' p19513 (dp19514 S'editable' p19515 I00 sS'value' p19516 S'checkbox' p19517 ssS'entity_type' p19518 (dp19519 S'editable' p19520 I00 sS'value' p19521 S'ApiUser' p19522 ssS'editable' p19523 (dp19524 S'editable' p19525 I00 sS'value' p19526 I01 ssS'unique' p19527 (dp19528 S'editable' p19529 I00 sS'value' p19530 I00 ssS'properties' p19531 (dp19532 S'default_value' p19533 (dp19534 S'editable' p19535 I00 sS'value' p19536 I01 ssS'summary_default' p19537 (dp19538 S'editable' p19539 I01 sS'value' p19540 S'none' p19541 sssS'description' p19542 (dp19543 S'editable' p19544 I01 sS'value' p19545 g47 sssS'updated_at' p19546 (dp19547 S'mandatory' p19548 (dp19549 S'editable' p19550 I00 sS'value' p19551 I00 ssS'name' p19552 (dp19553 S'editable' p19554 I01 sS'value' p19555 S'Date Updated' p19556 ssS'data_type' p19557 (dp19558 S'editable' p19559 I00 sS'value' p19560 S'date_time' p19561 ssS'entity_type' p19562 (dp19563 S'editable' p19564 I00 sS'value' p19565 S'ApiUser' p19566 ssS'editable' p19567 (dp19568 S'editable' p19569 I00 sS'value' p19570 I00 ssS'unique' p19571 (dp19572 S'editable' p19573 I00 sS'value' p19574 I00 ssS'properties' p19575 (dp19576 S'default_value' p19577 (dp19578 S'editable' p19579 I00 sS'value' p19580 NssS'summary_default' p19581 (dp19582 S'editable' p19583 I01 sS'value' p19584 S'none' p19585 sssS'description' p19586 (dp19587 S'editable' p19588 I01 sS'value' p19589 g47 sssS'created_by' p19590 (dp19591 S'mandatory' p19592 (dp19593 S'editable' p19594 I00 sS'value' p19595 I00 ssS'name' p19596 (dp19597 S'editable' p19598 I01 sS'value' p19599 S'Created by' p19600 ssS'data_type' p19601 (dp19602 S'editable' p19603 I00 sS'value' p19604 S'entity' p19605 ssS'entity_type' p19606 (dp19607 S'editable' p19608 I00 sS'value' p19609 S'ApiUser' p19610 ssS'editable' p19611 (dp19612 S'editable' p19613 I00 sS'value' p19614 I00 ssS'unique' p19615 (dp19616 S'editable' p19617 I00 sS'value' p19618 I00 ssS'properties' p19619 (dp19620 S'default_value' p19621 (dp19622 S'editable' p19623 I00 sS'value' p19624 NssS'summary_default' p19625 (dp19626 S'editable' p19627 I01 sS'value' p19628 S'none' p19629 ssS'valid_types' p19630 (dp19631 S'editable' p19632 I01 sS'value' p19633 (lp19634 S'HumanUser' p19635 aS'ApiUser' p19636 asssS'description' p19637 (dp19638 S'editable' p19639 I01 sS'value' p19640 g47 sssS'email' p19641 (dp19642 S'mandatory' p19643 (dp19644 S'editable' p19645 I00 sS'value' p19646 I00 ssS'name' p19647 (dp19648 S'editable' p19649 I01 sS'value' p19650 S'Maintainer' p19651 ssS'data_type' p19652 (dp19653 S'editable' p19654 I00 sS'value' p19655 S'text' p19656 ssS'entity_type' p19657 (dp19658 S'editable' p19659 I00 sS'value' p19660 S'ApiUser' p19661 ssS'editable' p19662 (dp19663 S'editable' p19664 I00 sS'value' p19665 I01 ssS'unique' p19666 (dp19667 S'editable' p19668 I00 sS'value' p19669 I00 ssS'properties' p19670 (dp19671 S'default_value' p19672 (dp19673 S'editable' p19674 I00 sS'value' p19675 g47 ssS'summary_default' p19676 (dp19677 S'editable' p19678 I01 sS'value' p19679 S'none' p19680 sssS'description' p19681 (dp19682 S'editable' p19683 I01 sS'value' p19684 g47 sssS'permission_rule_set' p19685 (dp19686 S'mandatory' p19687 (dp19688 S'editable' p19689 I00 sS'value' p19690 I00 ssS'name' p19691 (dp19692 S'editable' p19693 I01 sS'value' p19694 S'Permission Group' p19695 ssS'data_type' p19696 (dp19697 S'editable' p19698 I00 sS'value' p19699 S'entity' p19700 ssS'entity_type' p19701 (dp19702 S'editable' p19703 I00 sS'value' p19704 S'ApiUser' p19705 ssS'editable' p19706 (dp19707 S'editable' p19708 I00 sS'value' p19709 I00 ssS'unique' p19710 (dp19711 S'editable' p19712 I00 sS'value' p19713 I00 ssS'properties' p19714 (dp19715 S'default_value' p19716 (dp19717 S'editable' p19718 I00 sS'value' p19719 NssS'summary_default' p19720 (dp19721 S'editable' p19722 I01 sS'value' p19723 S'none' p19724 ssS'valid_types' p19725 (dp19726 S'editable' p19727 I01 sS'value' p19728 (lp19729 S'PermissionRuleSet' p19730 asssS'description' p19731 (dp19732 S'editable' p19733 I01 sS'value' p19734 g47 sssS'filmstrip_image' p19735 (dp19736 S'mandatory' p19737 (dp19738 S'editable' p19739 I00 sS'value' p19740 I00 ssS'name' p19741 (dp19742 S'editable' p19743 I01 sS'value' p19744 S'Filmstrip Thumbnail' p19745 ssS'data_type' p19746 (dp19747 S'editable' p19748 I00 sS'value' p19749 S'image' p19750 ssS'entity_type' p19751 (dp19752 S'editable' p19753 I00 sS'value' p19754 S'ApiUser' p19755 ssS'editable' p19756 (dp19757 S'editable' p19758 I00 sS'value' p19759 I01 ssS'unique' p19760 (dp19761 S'editable' p19762 I00 sS'value' p19763 I00 ssS'properties' p19764 (dp19765 S'default_value' p19766 (dp19767 S'editable' p19768 I00 sS'value' p19769 NssS'summary_default' p19770 (dp19771 S'editable' p19772 I01 sS'value' p19773 S'none' p19774 sssS'description' p19775 (dp19776 S'editable' p19777 I01 sS'value' p19778 g47 sssS'image' p19779 (dp19780 S'mandatory' p19781 (dp19782 S'editable' p19783 I00 sS'value' p19784 I00 ssS'name' p19785 (dp19786 S'editable' p19787 I01 sS'value' p19788 S'Thumbnail' p19789 ssS'data_type' p19790 (dp19791 S'editable' p19792 I00 sS'value' p19793 S'image' p19794 ssS'entity_type' p19795 (dp19796 S'editable' p19797 I00 sS'value' p19798 S'ApiUser' p19799 ssS'editable' p19800 (dp19801 S'editable' p19802 I00 sS'value' p19803 I01 ssS'unique' p19804 (dp19805 S'editable' p19806 I00 sS'value' p19807 I00 ssS'properties' p19808 (dp19809 S'default_value' p19810 (dp19811 S'editable' p19812 I00 sS'value' p19813 NssS'summary_default' p19814 (dp19815 S'editable' p19816 I01 sS'value' p19817 S'none' p19818 sssS'description' p19819 (dp19820 S'editable' p19821 I01 sS'value' p19822 g47 sssS'cached_display_name' p19823 (dp19824 S'mandatory' p19825 (dp19826 S'editable' p19827 I00 sS'value' p19828 I00 ssS'name' p19829 (dp19830 S'editable' p19831 I01 sS'value' p19832 S'Cached Display Name' p19833 ssS'data_type' p19834 (dp19835 S'editable' p19836 I00 sS'value' p19837 S'text' p19838 ssS'entity_type' p19839 (dp19840 S'editable' p19841 I00 sS'value' p19842 S'ApiUser' p19843 ssS'editable' p19844 (dp19845 S'editable' p19846 I00 sS'value' p19847 I01 ssS'unique' p19848 (dp19849 S'editable' p19850 I00 sS'value' p19851 I00 ssS'properties' p19852 (dp19853 S'default_value' p19854 (dp19855 S'editable' p19856 I00 sS'value' p19857 NssS'summary_default' p19858 (dp19859 S'editable' p19860 I00 sS'value' p19861 S'none' p19862 sssS'description' p19863 (dp19864 S'editable' p19865 I01 sS'value' p19866 g47 sssS'tag_list' p19867 (dp19868 S'mandatory' p19869 (dp19870 S'editable' p19871 I00 sS'value' p19872 I00 ssS'name' p19873 (dp19874 S'editable' p19875 I01 sS'value' p19876 S'Tags' p19877 ssS'data_type' p19878 (dp19879 S'editable' p19880 I00 sS'value' p19881 S'tag_list' p19882 ssS'entity_type' p19883 (dp19884 S'editable' p19885 I00 sS'value' p19886 S'ApiUser' p19887 ssS'editable' p19888 (dp19889 S'editable' p19890 I00 sS'value' p19891 I01 ssS'unique' p19892 (dp19893 S'editable' p19894 I00 sS'value' p19895 I00 ssS'properties' p19896 (dp19897 S'default_value' p19898 (dp19899 S'editable' p19900 I00 sS'value' p19901 NssS'summary_default' p19902 (dp19903 S'editable' p19904 I01 sS'value' p19905 S'none' p19906 ssS'valid_types' p19907 (dp19908 S'editable' p19909 I01 sS'value' p19910 (lp19911 S'Tag' p19912 asssS'description' p19913 (dp19914 S'editable' p19915 I01 sS'value' p19916 g47 sssS'id' p19917 (dp19918 S'mandatory' p19919 (dp19920 S'editable' p19921 I00 sS'value' p19922 I00 ssS'name' p19923 (dp19924 S'editable' p19925 I01 sS'value' p19926 S'Id' p19927 ssS'data_type' p19928 (dp19929 S'editable' p19930 I00 sS'value' p19931 S'number' p19932 ssS'entity_type' p19933 (dp19934 S'editable' p19935 I00 sS'value' p19936 S'ApiUser' p19937 ssS'editable' p19938 (dp19939 S'editable' p19940 I00 sS'value' p19941 I00 ssS'unique' p19942 (dp19943 S'editable' p19944 I00 sS'value' p19945 I00 ssS'properties' p19946 (dp19947 S'default_value' p19948 (dp19949 S'editable' p19950 I00 sS'value' p19951 NssS'summary_default' p19952 (dp19953 S'editable' p19954 I01 sS'value' p19955 S'none' p19956 sssS'description' p19957 (dp19958 S'editable' p19959 I01 sS'value' p19960 g47 sssS'salted_password' p19961 (dp19962 S'mandatory' p19963 (dp19964 S'editable' p19965 I00 sS'value' p19966 I00 ssS'name' p19967 (dp19968 S'editable' p19969 I01 sS'value' p19970 S'Application Key' p19971 ssS'data_type' p19972 (dp19973 S'editable' p19974 I00 sS'value' p19975 S'text' p19976 ssS'entity_type' p19977 (dp19978 S'editable' p19979 I00 sS'value' p19980 S'ApiUser' p19981 ssS'editable' p19982 (dp19983 S'editable' p19984 I00 sS'value' p19985 I00 ssS'unique' p19986 (dp19987 S'editable' p19988 I00 sS'value' p19989 I00 ssS'properties' p19990 (dp19991 S'default_value' p19992 (dp19993 S'editable' p19994 I00 sS'value' p19995 g47 ssS'summary_default' p19996 (dp19997 S'editable' p19998 I01 sS'value' p19999 S'none' p20000 sssS'description' p20001 (dp20002 S'editable' p20003 I01 sS'value' p20004 g47 sssS'updated_by' p20005 (dp20006 S'mandatory' p20007 (dp20008 S'editable' p20009 I00 sS'value' p20010 I00 ssS'name' p20011 (dp20012 S'editable' p20013 I01 sS'value' p20014 S'Updated by' p20015 ssS'data_type' p20016 (dp20017 S'editable' p20018 I00 sS'value' p20019 S'entity' p20020 ssS'entity_type' p20021 (dp20022 S'editable' p20023 I00 sS'value' p20024 S'ApiUser' p20025 ssS'editable' p20026 (dp20027 S'editable' p20028 I00 sS'value' p20029 I00 ssS'unique' p20030 (dp20031 S'editable' p20032 I00 sS'value' p20033 I00 ssS'properties' p20034 (dp20035 S'default_value' p20036 (dp20037 S'editable' p20038 I00 sS'value' p20039 NssS'summary_default' p20040 (dp20041 S'editable' p20042 I01 sS'value' p20043 S'none' p20044 ssS'valid_types' p20045 (dp20046 S'editable' p20047 I01 sS'value' p20048 (lp20049 S'HumanUser' p20050 aS'ApiUser' p20051 asssS'description' p20052 (dp20053 S'editable' p20054 I01 sS'value' p20055 g47 ssssS'CustomNonProjectEntity03' p20056 (dp20057 S'open_notes_count' p20058 (dp20059 S'mandatory' p20060 (dp20061 S'editable' p20062 I00 sS'value' p20063 I00 ssS'name' p20064 (dp20065 S'editable' p20066 I01 sS'value' p20067 S'Open Notes Count' p20068 ssS'data_type' p20069 (dp20070 S'editable' p20071 I00 sS'value' p20072 S'text' p20073 ssS'entity_type' p20074 (dp20075 S'editable' p20076 I00 sS'value' p20077 S'CustomNonProjectEntity03' p20078 ssS'editable' p20079 (dp20080 S'editable' p20081 I00 sS'value' p20082 I00 ssS'unique' p20083 (dp20084 S'editable' p20085 I00 sS'value' p20086 I00 ssS'properties' p20087 (dp20088 S'default_value' p20089 (dp20090 S'editable' p20091 I00 sS'value' p20092 NssS'summary_default' p20093 (dp20094 S'editable' p20095 I01 sS'value' p20096 S'none' p20097 sssS'description' p20098 (dp20099 S'editable' p20100 I01 sS'value' p20101 g47 sssS'code' p20102 (dp20103 S'mandatory' p20104 (dp20105 S'editable' p20106 I00 sS'value' p20107 I01 ssS'name' p20108 (dp20109 S'editable' p20110 I01 sS'value' p20111 S'Custom Non Project Entity03 Name' p20112 ssS'data_type' p20113 (dp20114 S'editable' p20115 I00 sS'value' p20116 S'text' p20117 ssS'entity_type' p20118 (dp20119 S'editable' p20120 I00 sS'value' p20121 S'CustomNonProjectEntity03' p20122 ssS'editable' p20123 (dp20124 S'editable' p20125 I00 sS'value' p20126 I01 ssS'unique' p20127 (dp20128 S'editable' p20129 I00 sS'value' p20130 I00 ssS'properties' p20131 (dp20132 S'default_value' p20133 (dp20134 S'editable' p20135 I00 sS'value' p20136 NssS'summary_default' p20137 (dp20138 S'editable' p20139 I01 sS'value' p20140 S'none' p20141 sssS'description' p20142 (dp20143 S'editable' p20144 I01 sS'value' p20145 g47 sssS'open_notes' p20146 (dp20147 S'mandatory' p20148 (dp20149 S'editable' p20150 I00 sS'value' p20151 I00 ssS'name' p20152 (dp20153 S'editable' p20154 I01 sS'value' p20155 S'Open Notes' p20156 ssS'data_type' p20157 (dp20158 S'editable' p20159 I00 sS'value' p20160 S'multi_entity' p20161 ssS'entity_type' p20162 (dp20163 S'editable' p20164 I00 sS'value' p20165 S'CustomNonProjectEntity03' p20166 ssS'editable' p20167 (dp20168 S'editable' p20169 I00 sS'value' p20170 I00 ssS'unique' p20171 (dp20172 S'editable' p20173 I00 sS'value' p20174 I00 ssS'properties' p20175 (dp20176 S'default_value' p20177 (dp20178 S'editable' p20179 I00 sS'value' p20180 NssS'summary_default' p20181 (dp20182 S'editable' p20183 I01 sS'value' p20184 S'none' p20185 ssS'valid_types' p20186 (dp20187 S'editable' p20188 I01 sS'value' p20189 (lp20190 S'Note' p20191 asssS'description' p20192 (dp20193 S'editable' p20194 I01 sS'value' p20195 g47 sssS'description' p20196 (dp20197 S'mandatory' p20198 (dp20199 S'editable' p20200 I00 sS'value' p20201 I00 ssS'name' p20202 (dp20203 S'editable' p20204 I01 sS'value' p20205 S'Description' p20206 ssS'data_type' p20207 (dp20208 S'editable' p20209 I00 sS'value' p20210 S'text' p20211 ssS'entity_type' p20212 (dp20213 S'editable' p20214 I00 sS'value' p20215 S'CustomNonProjectEntity03' p20216 ssS'editable' p20217 (dp20218 S'editable' p20219 I00 sS'value' p20220 I01 ssS'unique' p20221 (dp20222 S'editable' p20223 I00 sS'value' p20224 I00 ssS'properties' p20225 (dp20226 S'default_value' p20227 (dp20228 S'editable' p20229 I00 sS'value' p20230 NssS'summary_default' p20231 (dp20232 S'editable' p20233 I01 sS'value' p20234 S'none' p20235 sssS'description' p20236 (dp20237 S'editable' p20238 I01 sS'value' p20239 g47 sssS'created_at' p20240 (dp20241 S'mandatory' p20242 (dp20243 S'editable' p20244 I00 sS'value' p20245 I00 ssS'name' p20246 (dp20247 S'editable' p20248 I01 sS'value' p20249 S'Date Created' p20250 ssS'data_type' p20251 (dp20252 S'editable' p20253 I00 sS'value' p20254 S'date_time' p20255 ssS'entity_type' p20256 (dp20257 S'editable' p20258 I00 sS'value' p20259 S'CustomNonProjectEntity03' p20260 ssS'editable' p20261 (dp20262 S'editable' p20263 I00 sS'value' p20264 I00 ssS'unique' p20265 (dp20266 S'editable' p20267 I00 sS'value' p20268 I00 ssS'properties' p20269 (dp20270 S'default_value' p20271 (dp20272 S'editable' p20273 I00 sS'value' p20274 NssS'summary_default' p20275 (dp20276 S'editable' p20277 I01 sS'value' p20278 S'none' p20279 sssS'description' p20280 (dp20281 S'editable' p20282 I01 sS'value' p20283 g47 sssS'updated_at' p20284 (dp20285 S'mandatory' p20286 (dp20287 S'editable' p20288 I00 sS'value' p20289 I00 ssS'name' p20290 (dp20291 S'editable' p20292 I01 sS'value' p20293 S'Date Updated' p20294 ssS'data_type' p20295 (dp20296 S'editable' p20297 I00 sS'value' p20298 S'date_time' p20299 ssS'entity_type' p20300 (dp20301 S'editable' p20302 I00 sS'value' p20303 S'CustomNonProjectEntity03' p20304 ssS'editable' p20305 (dp20306 S'editable' p20307 I00 sS'value' p20308 I00 ssS'unique' p20309 (dp20310 S'editable' p20311 I00 sS'value' p20312 I00 ssS'properties' p20313 (dp20314 S'default_value' p20315 (dp20316 S'editable' p20317 I00 sS'value' p20318 NssS'summary_default' p20319 (dp20320 S'editable' p20321 I01 sS'value' p20322 S'none' p20323 sssS'description' p20324 (dp20325 S'editable' p20326 I01 sS'value' p20327 g47 sssS'created_by' p20328 (dp20329 S'mandatory' p20330 (dp20331 S'editable' p20332 I00 sS'value' p20333 I00 ssS'name' p20334 (dp20335 S'editable' p20336 I01 sS'value' p20337 S'Created by' p20338 ssS'data_type' p20339 (dp20340 S'editable' p20341 I00 sS'value' p20342 S'entity' p20343 ssS'entity_type' p20344 (dp20345 S'editable' p20346 I00 sS'value' p20347 S'CustomNonProjectEntity03' p20348 ssS'editable' p20349 (dp20350 S'editable' p20351 I00 sS'value' p20352 I00 ssS'unique' p20353 (dp20354 S'editable' p20355 I00 sS'value' p20356 I00 ssS'properties' p20357 (dp20358 S'default_value' p20359 (dp20360 S'editable' p20361 I00 sS'value' p20362 NssS'summary_default' p20363 (dp20364 S'editable' p20365 I01 sS'value' p20366 S'none' p20367 ssS'valid_types' p20368 (dp20369 S'editable' p20370 I01 sS'value' p20371 (lp20372 S'HumanUser' p20373 aS'ApiUser' p20374 asssS'description' p20375 (dp20376 S'editable' p20377 I01 sS'value' p20378 g47 sssS'filmstrip_image' p20379 (dp20380 S'mandatory' p20381 (dp20382 S'editable' p20383 I00 sS'value' p20384 I00 ssS'name' p20385 (dp20386 S'editable' p20387 I01 sS'value' p20388 S'Filmstrip Thumbnail' p20389 ssS'data_type' p20390 (dp20391 S'editable' p20392 I00 sS'value' p20393 S'image' p20394 ssS'entity_type' p20395 (dp20396 S'editable' p20397 I00 sS'value' p20398 S'CustomNonProjectEntity03' p20399 ssS'editable' p20400 (dp20401 S'editable' p20402 I00 sS'value' p20403 I01 ssS'unique' p20404 (dp20405 S'editable' p20406 I00 sS'value' p20407 I00 ssS'properties' p20408 (dp20409 S'default_value' p20410 (dp20411 S'editable' p20412 I00 sS'value' p20413 NssS'summary_default' p20414 (dp20415 S'editable' p20416 I01 sS'value' p20417 S'none' p20418 sssS'description' p20419 (dp20420 S'editable' p20421 I01 sS'value' p20422 g47 sssS'sg_status_list' p20423 (dp20424 S'mandatory' p20425 (dp20426 S'editable' p20427 I00 sS'value' p20428 I00 ssS'name' p20429 (dp20430 S'editable' p20431 I01 sS'value' p20432 S'Status' p20433 ssS'data_type' p20434 (dp20435 S'editable' p20436 I00 sS'value' p20437 S'status_list' p20438 ssS'entity_type' p20439 (dp20440 S'editable' p20441 I00 sS'value' p20442 S'CustomNonProjectEntity03' p20443 ssS'editable' p20444 (dp20445 S'editable' p20446 I00 sS'value' p20447 I01 ssS'unique' p20448 (dp20449 S'editable' p20450 I00 sS'value' p20451 I00 ssS'properties' p20452 (dp20453 S'default_value' p20454 (dp20455 S'editable' p20456 I01 sS'value' p20457 S'wtg' p20458 ssS'valid_values' p20459 (dp20460 S'editable' p20461 I01 sS'value' p20462 (lp20463 S'cmpt' p20464 aS'ip' p20465 aS'wtg' p20466 assS'summary_default' p20467 (dp20468 S'editable' p20469 I01 sS'value' p20470 S'none' p20471 sssS'description' p20472 (dp20473 S'editable' p20474 I01 sS'value' p20475 g47 sssS'notes' p20476 (dp20477 S'mandatory' p20478 (dp20479 S'editable' p20480 I00 sS'value' p20481 I00 ssS'name' p20482 (dp20483 S'editable' p20484 I01 sS'value' p20485 S'Notes' p20486 ssS'data_type' p20487 (dp20488 S'editable' p20489 I00 sS'value' p20490 S'multi_entity' p20491 ssS'entity_type' p20492 (dp20493 S'editable' p20494 I00 sS'value' p20495 S'CustomNonProjectEntity03' p20496 ssS'editable' p20497 (dp20498 S'editable' p20499 I00 sS'value' p20500 I01 ssS'unique' p20501 (dp20502 S'editable' p20503 I00 sS'value' p20504 I00 ssS'properties' p20505 (dp20506 S'default_value' p20507 (dp20508 S'editable' p20509 I00 sS'value' p20510 NssS'summary_default' p20511 (dp20512 S'editable' p20513 I01 sS'value' p20514 S'none' p20515 ssS'valid_types' p20516 (dp20517 S'editable' p20518 I01 sS'value' p20519 (lp20520 S'Note' p20521 asssS'description' p20522 (dp20523 S'editable' p20524 I01 sS'value' p20525 g47 sssS'image' p20526 (dp20527 S'mandatory' p20528 (dp20529 S'editable' p20530 I00 sS'value' p20531 I00 ssS'name' p20532 (dp20533 S'editable' p20534 I01 sS'value' p20535 S'Thumbnail' p20536 ssS'data_type' p20537 (dp20538 S'editable' p20539 I00 sS'value' p20540 S'image' p20541 ssS'entity_type' p20542 (dp20543 S'editable' p20544 I00 sS'value' p20545 S'CustomNonProjectEntity03' p20546 ssS'editable' p20547 (dp20548 S'editable' p20549 I00 sS'value' p20550 I01 ssS'unique' p20551 (dp20552 S'editable' p20553 I00 sS'value' p20554 I00 ssS'properties' p20555 (dp20556 S'default_value' p20557 (dp20558 S'editable' p20559 I00 sS'value' p20560 NssS'summary_default' p20561 (dp20562 S'editable' p20563 I01 sS'value' p20564 S'none' p20565 sssS'description' p20566 (dp20567 S'editable' p20568 I01 sS'value' p20569 g47 sssS'cached_display_name' p20570 (dp20571 S'mandatory' p20572 (dp20573 S'editable' p20574 I00 sS'value' p20575 I00 ssS'name' p20576 (dp20577 S'editable' p20578 I01 sS'value' p20579 S'Cached Display Name' p20580 ssS'data_type' p20581 (dp20582 S'editable' p20583 I00 sS'value' p20584 S'text' p20585 ssS'entity_type' p20586 (dp20587 S'editable' p20588 I00 sS'value' p20589 S'CustomNonProjectEntity03' p20590 ssS'editable' p20591 (dp20592 S'editable' p20593 I00 sS'value' p20594 I01 ssS'unique' p20595 (dp20596 S'editable' p20597 I00 sS'value' p20598 I00 ssS'properties' p20599 (dp20600 S'default_value' p20601 (dp20602 S'editable' p20603 I00 sS'value' p20604 NssS'summary_default' p20605 (dp20606 S'editable' p20607 I00 sS'value' p20608 S'none' p20609 sssS'description' p20610 (dp20611 S'editable' p20612 I01 sS'value' p20613 g47 sssS'tag_list' p20614 (dp20615 S'mandatory' p20616 (dp20617 S'editable' p20618 I00 sS'value' p20619 I00 ssS'name' p20620 (dp20621 S'editable' p20622 I01 sS'value' p20623 S'Tags' p20624 ssS'data_type' p20625 (dp20626 S'editable' p20627 I00 sS'value' p20628 S'tag_list' p20629 ssS'entity_type' p20630 (dp20631 S'editable' p20632 I00 sS'value' p20633 S'CustomNonProjectEntity03' p20634 ssS'editable' p20635 (dp20636 S'editable' p20637 I00 sS'value' p20638 I01 ssS'unique' p20639 (dp20640 S'editable' p20641 I00 sS'value' p20642 I00 ssS'properties' p20643 (dp20644 S'default_value' p20645 (dp20646 S'editable' p20647 I00 sS'value' p20648 NssS'summary_default' p20649 (dp20650 S'editable' p20651 I01 sS'value' p20652 S'none' p20653 ssS'valid_types' p20654 (dp20655 S'editable' p20656 I01 sS'value' p20657 (lp20658 S'Tag' p20659 asssS'description' p20660 (dp20661 S'editable' p20662 I01 sS'value' p20663 g47 sssS'id' p20664 (dp20665 S'mandatory' p20666 (dp20667 S'editable' p20668 I00 sS'value' p20669 I00 ssS'name' p20670 (dp20671 S'editable' p20672 I01 sS'value' p20673 S'Id' p20674 ssS'data_type' p20675 (dp20676 S'editable' p20677 I00 sS'value' p20678 S'number' p20679 ssS'entity_type' p20680 (dp20681 S'editable' p20682 I00 sS'value' p20683 S'CustomNonProjectEntity03' p20684 ssS'editable' p20685 (dp20686 S'editable' p20687 I00 sS'value' p20688 I00 ssS'unique' p20689 (dp20690 S'editable' p20691 I00 sS'value' p20692 I00 ssS'properties' p20693 (dp20694 S'default_value' p20695 (dp20696 S'editable' p20697 I00 sS'value' p20698 NssS'summary_default' p20699 (dp20700 S'editable' p20701 I01 sS'value' p20702 S'none' p20703 sssS'description' p20704 (dp20705 S'editable' p20706 I01 sS'value' p20707 g47 sssS'updated_by' p20708 (dp20709 S'mandatory' p20710 (dp20711 S'editable' p20712 I00 sS'value' p20713 I00 ssS'name' p20714 (dp20715 S'editable' p20716 I01 sS'value' p20717 S'Updated by' p20718 ssS'data_type' p20719 (dp20720 S'editable' p20721 I00 sS'value' p20722 S'entity' p20723 ssS'entity_type' p20724 (dp20725 S'editable' p20726 I00 sS'value' p20727 S'CustomNonProjectEntity03' p20728 ssS'editable' p20729 (dp20730 S'editable' p20731 I00 sS'value' p20732 I00 ssS'unique' p20733 (dp20734 S'editable' p20735 I00 sS'value' p20736 I00 ssS'properties' p20737 (dp20738 S'default_value' p20739 (dp20740 S'editable' p20741 I00 sS'value' p20742 NssS'summary_default' p20743 (dp20744 S'editable' p20745 I01 sS'value' p20746 S'none' p20747 ssS'valid_types' p20748 (dp20749 S'editable' p20750 I01 sS'value' p20751 (lp20752 S'HumanUser' p20753 aS'ApiUser' p20754 asssS'description' p20755 (dp20756 S'editable' p20757 I01 sS'value' p20758 g47 ssssS'LaunchShotConnection' p20759 (dp20760 S'cached_display_name' p20761 (dp20762 S'mandatory' p20763 (dp20764 S'editable' p20765 I00 sS'value' p20766 I00 ssS'name' p20767 (dp20768 S'editable' p20769 I01 sS'value' p20770 S'Cached Display Name' p20771 ssS'data_type' p20772 (dp20773 S'editable' p20774 I00 sS'value' p20775 S'text' p20776 ssS'entity_type' p20777 (dp20778 S'editable' p20779 I00 sS'value' p20780 S'LaunchShotConnection' p20781 ssS'editable' p20782 (dp20783 S'editable' p20784 I00 sS'value' p20785 I01 ssS'unique' p20786 (dp20787 S'editable' p20788 I00 sS'value' p20789 I00 ssS'properties' p20790 (dp20791 S'default_value' p20792 (dp20793 S'editable' p20794 I00 sS'value' p20795 NssS'summary_default' p20796 (dp20797 S'editable' p20798 I00 sS'value' p20799 S'none' p20800 sssS'description' p20801 (dp20802 S'editable' p20803 I01 sS'value' p20804 g47 sssS'shot' p20805 (dp20806 S'mandatory' p20807 (dp20808 S'editable' p20809 I00 sS'value' p20810 I00 ssS'name' p20811 (dp20812 S'editable' p20813 I01 sS'value' p20814 S'Shot' p20815 ssS'data_type' p20816 (dp20817 S'editable' p20818 I00 sS'value' p20819 S'entity' p20820 ssS'entity_type' p20821 (dp20822 S'editable' p20823 I00 sS'value' p20824 S'LaunchShotConnection' p20825 ssS'editable' p20826 (dp20827 S'editable' p20828 I00 sS'value' p20829 I00 ssS'unique' p20830 (dp20831 S'editable' p20832 I00 sS'value' p20833 I00 ssS'properties' p20834 (dp20835 S'default_value' p20836 (dp20837 S'editable' p20838 I00 sS'value' p20839 NssS'summary_default' p20840 (dp20841 S'editable' p20842 I00 sS'value' p20843 S'none' p20844 ssS'valid_types' p20845 (dp20846 S'editable' p20847 I00 sS'value' p20848 (lp20849 S'Shot' p20850 asssS'description' p20851 (dp20852 S'editable' p20853 I01 sS'value' p20854 g47 sssS'id' p20855 (dp20856 S'mandatory' p20857 (dp20858 S'editable' p20859 I00 sS'value' p20860 I01 ssS'name' p20861 (dp20862 S'editable' p20863 I01 sS'value' p20864 S'Id' p20865 ssS'data_type' p20866 (dp20867 S'editable' p20868 I00 sS'value' p20869 S'number' p20870 ssS'entity_type' p20871 (dp20872 S'editable' p20873 I00 sS'value' p20874 S'LaunchShotConnection' p20875 ssS'editable' p20876 (dp20877 S'editable' p20878 I00 sS'value' p20879 I00 ssS'unique' p20880 (dp20881 S'editable' p20882 I00 sS'value' p20883 I00 ssS'properties' p20884 (dp20885 S'default_value' p20886 (dp20887 S'editable' p20888 I00 sS'value' p20889 NssS'summary_default' p20890 (dp20891 S'editable' p20892 I00 sS'value' p20893 S'none' p20894 sssS'description' p20895 (dp20896 S'editable' p20897 I01 sS'value' p20898 g47 sssS'launch' p20899 (dp20900 S'mandatory' p20901 (dp20902 S'editable' p20903 I00 sS'value' p20904 I00 ssS'name' p20905 (dp20906 S'editable' p20907 I01 sS'value' p20908 S'Launch' p20909 ssS'data_type' p20910 (dp20911 S'editable' p20912 I00 sS'value' p20913 S'entity' p20914 ssS'entity_type' p20915 (dp20916 S'editable' p20917 I00 sS'value' p20918 S'LaunchShotConnection' p20919 ssS'editable' p20920 (dp20921 S'editable' p20922 I00 sS'value' p20923 I00 ssS'unique' p20924 (dp20925 S'editable' p20926 I00 sS'value' p20927 I00 ssS'properties' p20928 (dp20929 S'default_value' p20930 (dp20931 S'editable' p20932 I00 sS'value' p20933 NssS'summary_default' p20934 (dp20935 S'editable' p20936 I00 sS'value' p20937 S'none' p20938 ssS'valid_types' p20939 (dp20940 S'editable' p20941 I00 sS'value' p20942 (lp20943 S'Launch' p20944 asssS'description' p20945 (dp20946 S'editable' p20947 I01 sS'value' p20948 g47 ssssS'ShotShotConnection' p20949 (dp20950 S'shot' p20951 (dp20952 S'mandatory' p20953 (dp20954 S'editable' p20955 I00 sS'value' p20956 I00 ssS'name' p20957 (dp20958 S'editable' p20959 I01 sS'value' p20960 S'Shot' p20961 ssS'data_type' p20962 (dp20963 S'editable' p20964 I00 sS'value' p20965 S'entity' p20966 ssS'entity_type' p20967 (dp20968 S'editable' p20969 I00 sS'value' p20970 S'ShotShotConnection' p20971 ssS'editable' p20972 (dp20973 S'editable' p20974 I00 sS'value' p20975 I00 ssS'unique' p20976 (dp20977 S'editable' p20978 I00 sS'value' p20979 I00 ssS'properties' p20980 (dp20981 S'default_value' p20982 (dp20983 S'editable' p20984 I00 sS'value' p20985 NssS'summary_default' p20986 (dp20987 S'editable' p20988 I00 sS'value' p20989 S'none' p20990 ssS'valid_types' p20991 (dp20992 S'editable' p20993 I00 sS'value' p20994 (lp20995 S'Shot' p20996 asssS'description' p20997 (dp20998 S'editable' p20999 I01 sS'value' p21000 g47 sssS'cached_display_name' p21001 (dp21002 S'mandatory' p21003 (dp21004 S'editable' p21005 I00 sS'value' p21006 I00 ssS'name' p21007 (dp21008 S'editable' p21009 I01 sS'value' p21010 S'Cached Display Name' p21011 ssS'data_type' p21012 (dp21013 S'editable' p21014 I00 sS'value' p21015 S'text' p21016 ssS'entity_type' p21017 (dp21018 S'editable' p21019 I00 sS'value' p21020 S'ShotShotConnection' p21021 ssS'editable' p21022 (dp21023 S'editable' p21024 I00 sS'value' p21025 I01 ssS'unique' p21026 (dp21027 S'editable' p21028 I00 sS'value' p21029 I00 ssS'properties' p21030 (dp21031 S'default_value' p21032 (dp21033 S'editable' p21034 I00 sS'value' p21035 NssS'summary_default' p21036 (dp21037 S'editable' p21038 I00 sS'value' p21039 S'none' p21040 sssS'description' p21041 (dp21042 S'editable' p21043 I01 sS'value' p21044 g47 sssS'parent_shot' p21045 (dp21046 S'mandatory' p21047 (dp21048 S'editable' p21049 I00 sS'value' p21050 I00 ssS'name' p21051 (dp21052 S'editable' p21053 I01 sS'value' p21054 S'Shot' p21055 ssS'data_type' p21056 (dp21057 S'editable' p21058 I00 sS'value' p21059 S'entity' p21060 ssS'entity_type' p21061 (dp21062 S'editable' p21063 I00 sS'value' p21064 S'ShotShotConnection' p21065 ssS'editable' p21066 (dp21067 S'editable' p21068 I00 sS'value' p21069 I00 ssS'unique' p21070 (dp21071 S'editable' p21072 I00 sS'value' p21073 I00 ssS'properties' p21074 (dp21075 S'default_value' p21076 (dp21077 S'editable' p21078 I00 sS'value' p21079 NssS'summary_default' p21080 (dp21081 S'editable' p21082 I00 sS'value' p21083 S'none' p21084 ssS'valid_types' p21085 (dp21086 S'editable' p21087 I00 sS'value' p21088 (lp21089 S'Shot' p21090 asssS'description' p21091 (dp21092 S'editable' p21093 I01 sS'value' p21094 g47 sssS'id' p21095 (dp21096 S'mandatory' p21097 (dp21098 S'editable' p21099 I00 sS'value' p21100 I01 ssS'name' p21101 (dp21102 S'editable' p21103 I01 sS'value' p21104 S'Id' p21105 ssS'data_type' p21106 (dp21107 S'editable' p21108 I00 sS'value' p21109 S'number' p21110 ssS'entity_type' p21111 (dp21112 S'editable' p21113 I00 sS'value' p21114 S'ShotShotConnection' p21115 ssS'editable' p21116 (dp21117 S'editable' p21118 I00 sS'value' p21119 I00 ssS'unique' p21120 (dp21121 S'editable' p21122 I00 sS'value' p21123 I00 ssS'properties' p21124 (dp21125 S'default_value' p21126 (dp21127 S'editable' p21128 I00 sS'value' p21129 NssS'summary_default' p21130 (dp21131 S'editable' p21132 I00 sS'value' p21133 S'none' p21134 sssS'description' p21135 (dp21136 S'editable' p21137 I01 sS'value' p21138 g47 ssssS'PerformerRoutineConnection' p21139 (dp21140 S'cached_display_name' p21141 (dp21142 S'mandatory' p21143 (dp21144 S'editable' p21145 I00 sS'value' p21146 I00 ssS'name' p21147 (dp21148 S'editable' p21149 I01 sS'value' p21150 S'Cached Display Name' p21151 ssS'data_type' p21152 (dp21153 S'editable' p21154 I00 sS'value' p21155 S'text' p21156 ssS'entity_type' p21157 (dp21158 S'editable' p21159 I00 sS'value' p21160 S'PerformerRoutineConnection' p21161 ssS'editable' p21162 (dp21163 S'editable' p21164 I00 sS'value' p21165 I01 ssS'unique' p21166 (dp21167 S'editable' p21168 I00 sS'value' p21169 I00 ssS'properties' p21170 (dp21171 S'default_value' p21172 (dp21173 S'editable' p21174 I00 sS'value' p21175 NssS'summary_default' p21176 (dp21177 S'editable' p21178 I00 sS'value' p21179 S'none' p21180 sssS'description' p21181 (dp21182 S'editable' p21183 I01 sS'value' p21184 g47 sssS'performer' p21185 (dp21186 S'mandatory' p21187 (dp21188 S'editable' p21189 I00 sS'value' p21190 I00 ssS'name' p21191 (dp21192 S'editable' p21193 I01 sS'value' p21194 S'Performer' p21195 ssS'data_type' p21196 (dp21197 S'editable' p21198 I00 sS'value' p21199 S'entity' p21200 ssS'entity_type' p21201 (dp21202 S'editable' p21203 I00 sS'value' p21204 S'PerformerRoutineConnection' p21205 ssS'editable' p21206 (dp21207 S'editable' p21208 I00 sS'value' p21209 I00 ssS'unique' p21210 (dp21211 S'editable' p21212 I00 sS'value' p21213 I00 ssS'properties' p21214 (dp21215 S'default_value' p21216 (dp21217 S'editable' p21218 I00 sS'value' p21219 NssS'summary_default' p21220 (dp21221 S'editable' p21222 I00 sS'value' p21223 S'none' p21224 ssS'valid_types' p21225 (dp21226 S'editable' p21227 I00 sS'value' p21228 (lp21229 S'Performer' p21230 asssS'description' p21231 (dp21232 S'editable' p21233 I01 sS'value' p21234 g47 sssS'id' p21235 (dp21236 S'mandatory' p21237 (dp21238 S'editable' p21239 I00 sS'value' p21240 I01 ssS'name' p21241 (dp21242 S'editable' p21243 I01 sS'value' p21244 S'Id' p21245 ssS'data_type' p21246 (dp21247 S'editable' p21248 I00 sS'value' p21249 S'number' p21250 ssS'entity_type' p21251 (dp21252 S'editable' p21253 I00 sS'value' p21254 S'PerformerRoutineConnection' p21255 ssS'editable' p21256 (dp21257 S'editable' p21258 I00 sS'value' p21259 I00 ssS'unique' p21260 (dp21261 S'editable' p21262 I00 sS'value' p21263 I00 ssS'properties' p21264 (dp21265 S'default_value' p21266 (dp21267 S'editable' p21268 I00 sS'value' p21269 NssS'summary_default' p21270 (dp21271 S'editable' p21272 I00 sS'value' p21273 S'none' p21274 sssS'description' p21275 (dp21276 S'editable' p21277 I01 sS'value' p21278 g47 sssS'routine' p21279 (dp21280 S'mandatory' p21281 (dp21282 S'editable' p21283 I00 sS'value' p21284 I00 ssS'name' p21285 (dp21286 S'editable' p21287 I01 sS'value' p21288 S'Mocap Routine' p21289 ssS'data_type' p21290 (dp21291 S'editable' p21292 I00 sS'value' p21293 S'entity' p21294 ssS'entity_type' p21295 (dp21296 S'editable' p21297 I00 sS'value' p21298 S'PerformerRoutineConnection' p21299 ssS'editable' p21300 (dp21301 S'editable' p21302 I00 sS'value' p21303 I00 ssS'unique' p21304 (dp21305 S'editable' p21306 I00 sS'value' p21307 I00 ssS'properties' p21308 (dp21309 S'default_value' p21310 (dp21311 S'editable' p21312 I00 sS'value' p21313 NssS'summary_default' p21314 (dp21315 S'editable' p21316 I00 sS'value' p21317 S'none' p21318 ssS'valid_types' p21319 (dp21320 S'editable' p21321 I00 sS'value' p21322 (lp21323 S'Routine' p21324 asssS'description' p21325 (dp21326 S'editable' p21327 I01 sS'value' p21328 g47 ssssS'PublishedFileType' p21329 (dp21330 S'code' p21331 (dp21332 S'mandatory' p21333 (dp21334 S'editable' p21335 I00 sS'value' p21336 I01 ssS'name' p21337 (dp21338 S'editable' p21339 I01 sS'value' p21340 S'Published File Type Name' p21341 ssS'data_type' p21342 (dp21343 S'editable' p21344 I00 sS'value' p21345 S'text' p21346 ssS'entity_type' p21347 (dp21348 S'editable' p21349 I00 sS'value' p21350 S'PublishedFileType' p21351 ssS'editable' p21352 (dp21353 S'editable' p21354 I00 sS'value' p21355 I01 ssS'unique' p21356 (dp21357 S'editable' p21358 I00 sS'value' p21359 I00 ssS'properties' p21360 (dp21361 S'default_value' p21362 (dp21363 S'editable' p21364 I00 sS'value' p21365 NssS'summary_default' p21366 (dp21367 S'editable' p21368 I01 sS'value' p21369 S'none' p21370 sssS'description' p21371 (dp21372 S'editable' p21373 I01 sS'value' p21374 g47 sssS'description' p21375 (dp21376 S'mandatory' p21377 (dp21378 S'editable' p21379 I00 sS'value' p21380 I00 ssS'name' p21381 (dp21382 S'editable' p21383 I01 sS'value' p21384 S'Description' p21385 ssS'data_type' p21386 (dp21387 S'editable' p21388 I00 sS'value' p21389 S'text' p21390 ssS'entity_type' p21391 (dp21392 S'editable' p21393 I00 sS'value' p21394 S'PublishedFileType' p21395 ssS'editable' p21396 (dp21397 S'editable' p21398 I00 sS'value' p21399 I01 ssS'unique' p21400 (dp21401 S'editable' p21402 I00 sS'value' p21403 I00 ssS'properties' p21404 (dp21405 S'default_value' p21406 (dp21407 S'editable' p21408 I00 sS'value' p21409 NssS'summary_default' p21410 (dp21411 S'editable' p21412 I01 sS'value' p21413 S'none' p21414 sssS'description' p21415 (dp21416 S'editable' p21417 I01 sS'value' p21418 g47 sssS'short_name' p21419 (dp21420 S'mandatory' p21421 (dp21422 S'editable' p21423 I00 sS'value' p21424 I00 ssS'name' p21425 (dp21426 S'editable' p21427 I01 sS'value' p21428 S'Short Name' p21429 ssS'data_type' p21430 (dp21431 S'editable' p21432 I00 sS'value' p21433 S'text' p21434 ssS'entity_type' p21435 (dp21436 S'editable' p21437 I00 sS'value' p21438 S'PublishedFileType' p21439 ssS'editable' p21440 (dp21441 S'editable' p21442 I00 sS'value' p21443 I01 ssS'unique' p21444 (dp21445 S'editable' p21446 I00 sS'value' p21447 I00 ssS'properties' p21448 (dp21449 S'default_value' p21450 (dp21451 S'editable' p21452 I00 sS'value' p21453 NssS'summary_default' p21454 (dp21455 S'editable' p21456 I01 sS'value' p21457 S'none' p21458 sssS'description' p21459 (dp21460 S'editable' p21461 I01 sS'value' p21462 g47 sssS'created_at' p21463 (dp21464 S'mandatory' p21465 (dp21466 S'editable' p21467 I00 sS'value' p21468 I00 ssS'name' p21469 (dp21470 S'editable' p21471 I01 sS'value' p21472 S'Date Created' p21473 ssS'data_type' p21474 (dp21475 S'editable' p21476 I00 sS'value' p21477 S'date_time' p21478 ssS'entity_type' p21479 (dp21480 S'editable' p21481 I00 sS'value' p21482 S'PublishedFileType' p21483 ssS'editable' p21484 (dp21485 S'editable' p21486 I00 sS'value' p21487 I00 ssS'unique' p21488 (dp21489 S'editable' p21490 I00 sS'value' p21491 I00 ssS'properties' p21492 (dp21493 S'default_value' p21494 (dp21495 S'editable' p21496 I00 sS'value' p21497 NssS'summary_default' p21498 (dp21499 S'editable' p21500 I01 sS'value' p21501 S'none' p21502 sssS'description' p21503 (dp21504 S'editable' p21505 I01 sS'value' p21506 g47 sssS'updated_at' p21507 (dp21508 S'mandatory' p21509 (dp21510 S'editable' p21511 I00 sS'value' p21512 I00 ssS'name' p21513 (dp21514 S'editable' p21515 I01 sS'value' p21516 S'Date Updated' p21517 ssS'data_type' p21518 (dp21519 S'editable' p21520 I00 sS'value' p21521 S'date_time' p21522 ssS'entity_type' p21523 (dp21524 S'editable' p21525 I00 sS'value' p21526 S'PublishedFileType' p21527 ssS'editable' p21528 (dp21529 S'editable' p21530 I00 sS'value' p21531 I00 ssS'unique' p21532 (dp21533 S'editable' p21534 I00 sS'value' p21535 I00 ssS'properties' p21536 (dp21537 S'default_value' p21538 (dp21539 S'editable' p21540 I00 sS'value' p21541 NssS'summary_default' p21542 (dp21543 S'editable' p21544 I01 sS'value' p21545 S'none' p21546 sssS'description' p21547 (dp21548 S'editable' p21549 I01 sS'value' p21550 g47 sssS'created_by' p21551 (dp21552 S'mandatory' p21553 (dp21554 S'editable' p21555 I00 sS'value' p21556 I00 ssS'name' p21557 (dp21558 S'editable' p21559 I01 sS'value' p21560 S'Created by' p21561 ssS'data_type' p21562 (dp21563 S'editable' p21564 I00 sS'value' p21565 S'entity' p21566 ssS'entity_type' p21567 (dp21568 S'editable' p21569 I00 sS'value' p21570 S'PublishedFileType' p21571 ssS'editable' p21572 (dp21573 S'editable' p21574 I00 sS'value' p21575 I00 ssS'unique' p21576 (dp21577 S'editable' p21578 I00 sS'value' p21579 I00 ssS'properties' p21580 (dp21581 S'default_value' p21582 (dp21583 S'editable' p21584 I00 sS'value' p21585 NssS'summary_default' p21586 (dp21587 S'editable' p21588 I01 sS'value' p21589 S'none' p21590 ssS'valid_types' p21591 (dp21592 S'editable' p21593 I01 sS'value' p21594 (lp21595 S'HumanUser' p21596 aS'ApiUser' p21597 asssS'description' p21598 (dp21599 S'editable' p21600 I01 sS'value' p21601 g47 sssS'sg_status_list' p21602 (dp21603 S'mandatory' p21604 (dp21605 S'editable' p21606 I00 sS'value' p21607 I00 ssS'name' p21608 (dp21609 S'editable' p21610 I01 sS'value' p21611 S'Status' p21612 ssS'data_type' p21613 (dp21614 S'editable' p21615 I00 sS'value' p21616 S'status_list' p21617 ssS'entity_type' p21618 (dp21619 S'editable' p21620 I00 sS'value' p21621 S'PublishedFileType' p21622 ssS'editable' p21623 (dp21624 S'editable' p21625 I00 sS'value' p21626 I01 ssS'unique' p21627 (dp21628 S'editable' p21629 I00 sS'value' p21630 I00 ssS'properties' p21631 (dp21632 S'default_value' p21633 (dp21634 S'editable' p21635 I01 sS'value' p21636 S'wtg' p21637 ssS'valid_values' p21638 (dp21639 S'editable' p21640 I01 sS'value' p21641 (lp21642 S'wtg' p21643 aS'ip' p21644 aS'cmpt' p21645 assS'summary_default' p21646 (dp21647 S'editable' p21648 I01 sS'value' p21649 S'none' p21650 sssS'description' p21651 (dp21652 S'editable' p21653 I01 sS'value' p21654 g47 sssS'image' p21655 (dp21656 S'mandatory' p21657 (dp21658 S'editable' p21659 I00 sS'value' p21660 I00 ssS'name' p21661 (dp21662 S'editable' p21663 I01 sS'value' p21664 S'Thumbnail' p21665 ssS'data_type' p21666 (dp21667 S'editable' p21668 I00 sS'value' p21669 S'image' p21670 ssS'entity_type' p21671 (dp21672 S'editable' p21673 I00 sS'value' p21674 S'PublishedFileType' p21675 ssS'editable' p21676 (dp21677 S'editable' p21678 I00 sS'value' p21679 I01 ssS'unique' p21680 (dp21681 S'editable' p21682 I00 sS'value' p21683 I00 ssS'properties' p21684 (dp21685 S'default_value' p21686 (dp21687 S'editable' p21688 I00 sS'value' p21689 NssS'summary_default' p21690 (dp21691 S'editable' p21692 I01 sS'value' p21693 S'none' p21694 sssS'description' p21695 (dp21696 S'editable' p21697 I01 sS'value' p21698 g47 sssS'cached_display_name' p21699 (dp21700 S'mandatory' p21701 (dp21702 S'editable' p21703 I00 sS'value' p21704 I00 ssS'name' p21705 (dp21706 S'editable' p21707 I01 sS'value' p21708 S'Cached Display Name' p21709 ssS'data_type' p21710 (dp21711 S'editable' p21712 I00 sS'value' p21713 S'text' p21714 ssS'entity_type' p21715 (dp21716 S'editable' p21717 I00 sS'value' p21718 S'PublishedFileType' p21719 ssS'editable' p21720 (dp21721 S'editable' p21722 I00 sS'value' p21723 I01 ssS'unique' p21724 (dp21725 S'editable' p21726 I00 sS'value' p21727 I00 ssS'properties' p21728 (dp21729 S'default_value' p21730 (dp21731 S'editable' p21732 I00 sS'value' p21733 NssS'summary_default' p21734 (dp21735 S'editable' p21736 I00 sS'value' p21737 S'none' p21738 sssS'description' p21739 (dp21740 S'editable' p21741 I01 sS'value' p21742 g47 sssS'tag_list' p21743 (dp21744 S'mandatory' p21745 (dp21746 S'editable' p21747 I00 sS'value' p21748 I00 ssS'name' p21749 (dp21750 S'editable' p21751 I01 sS'value' p21752 S'Tags' p21753 ssS'data_type' p21754 (dp21755 S'editable' p21756 I00 sS'value' p21757 S'tag_list' p21758 ssS'entity_type' p21759 (dp21760 S'editable' p21761 I00 sS'value' p21762 S'PublishedFileType' p21763 ssS'editable' p21764 (dp21765 S'editable' p21766 I00 sS'value' p21767 I01 ssS'unique' p21768 (dp21769 S'editable' p21770 I00 sS'value' p21771 I00 ssS'properties' p21772 (dp21773 S'default_value' p21774 (dp21775 S'editable' p21776 I00 sS'value' p21777 NssS'summary_default' p21778 (dp21779 S'editable' p21780 I01 sS'value' p21781 S'none' p21782 ssS'valid_types' p21783 (dp21784 S'editable' p21785 I01 sS'value' p21786 (lp21787 S'Tag' p21788 asssS'description' p21789 (dp21790 S'editable' p21791 I01 sS'value' p21792 g47 sssS'id' p21793 (dp21794 S'mandatory' p21795 (dp21796 S'editable' p21797 I00 sS'value' p21798 I00 ssS'name' p21799 (dp21800 S'editable' p21801 I01 sS'value' p21802 S'Id' p21803 ssS'data_type' p21804 (dp21805 S'editable' p21806 I00 sS'value' p21807 S'number' p21808 ssS'entity_type' p21809 (dp21810 S'editable' p21811 I00 sS'value' p21812 S'PublishedFileType' p21813 ssS'editable' p21814 (dp21815 S'editable' p21816 I00 sS'value' p21817 I00 ssS'unique' p21818 (dp21819 S'editable' p21820 I00 sS'value' p21821 I00 ssS'properties' p21822 (dp21823 S'default_value' p21824 (dp21825 S'editable' p21826 I00 sS'value' p21827 NssS'summary_default' p21828 (dp21829 S'editable' p21830 I01 sS'value' p21831 S'none' p21832 sssS'description' p21833 (dp21834 S'editable' p21835 I01 sS'value' p21836 g47 sssS'updated_by' p21837 (dp21838 S'mandatory' p21839 (dp21840 S'editable' p21841 I00 sS'value' p21842 I00 ssS'name' p21843 (dp21844 S'editable' p21845 I01 sS'value' p21846 S'Updated by' p21847 ssS'data_type' p21848 (dp21849 S'editable' p21850 I00 sS'value' p21851 S'entity' p21852 ssS'entity_type' p21853 (dp21854 S'editable' p21855 I00 sS'value' p21856 S'PublishedFileType' p21857 ssS'editable' p21858 (dp21859 S'editable' p21860 I00 sS'value' p21861 I00 ssS'unique' p21862 (dp21863 S'editable' p21864 I00 sS'value' p21865 I00 ssS'properties' p21866 (dp21867 S'default_value' p21868 (dp21869 S'editable' p21870 I00 sS'value' p21871 NssS'summary_default' p21872 (dp21873 S'editable' p21874 I01 sS'value' p21875 S'none' p21876 ssS'valid_types' p21877 (dp21878 S'editable' p21879 I01 sS'value' p21880 (lp21881 S'HumanUser' p21882 aS'ApiUser' p21883 asssS'description' p21884 (dp21885 S'editable' p21886 I01 sS'value' p21887 g47 ssssS'Element' p21888 (dp21889 S'sg_element_type' p21890 (dp21891 S'mandatory' p21892 (dp21893 S'editable' p21894 I00 sS'value' p21895 I00 ssS'name' p21896 (dp21897 S'editable' p21898 I01 sS'value' p21899 S'Type' p21900 ssS'data_type' p21901 (dp21902 S'editable' p21903 I00 sS'value' p21904 S'list' p21905 ssS'entity_type' p21906 (dp21907 S'editable' p21908 I00 sS'value' p21909 S'Element' p21910 ssS'editable' p21911 (dp21912 S'editable' p21913 I00 sS'value' p21914 I01 ssS'unique' p21915 (dp21916 S'editable' p21917 I00 sS'value' p21918 I00 ssS'properties' p21919 (dp21920 S'default_value' p21921 (dp21922 S'editable' p21923 I00 sS'value' p21924 NssS'valid_values' p21925 (dp21926 S'editable' p21927 I01 sS'value' p21928 (lp21929 ssS'summary_default' p21930 (dp21931 S'editable' p21932 I01 sS'value' p21933 S'none' p21934 sssS'description' p21935 (dp21936 S'editable' p21937 I01 sS'value' p21938 g47 sssS'open_notes_count' p21939 (dp21940 S'mandatory' p21941 (dp21942 S'editable' p21943 I00 sS'value' p21944 I00 ssS'name' p21945 (dp21946 S'editable' p21947 I01 sS'value' p21948 S'Open Notes Count' p21949 ssS'data_type' p21950 (dp21951 S'editable' p21952 I00 sS'value' p21953 S'text' p21954 ssS'entity_type' p21955 (dp21956 S'editable' p21957 I00 sS'value' p21958 S'Element' p21959 ssS'editable' p21960 (dp21961 S'editable' p21962 I00 sS'value' p21963 I00 ssS'unique' p21964 (dp21965 S'editable' p21966 I00 sS'value' p21967 I00 ssS'properties' p21968 (dp21969 S'default_value' p21970 (dp21971 S'editable' p21972 I00 sS'value' p21973 NssS'summary_default' p21974 (dp21975 S'editable' p21976 I01 sS'value' p21977 S'none' p21978 sssS'description' p21979 (dp21980 S'editable' p21981 I01 sS'value' p21982 g47 sssS'code' p21983 (dp21984 S'mandatory' p21985 (dp21986 S'editable' p21987 I00 sS'value' p21988 I01 ssS'name' p21989 (dp21990 S'editable' p21991 I01 sS'value' p21992 S'Element Name' p21993 ssS'data_type' p21994 (dp21995 S'editable' p21996 I00 sS'value' p21997 S'text' p21998 ssS'entity_type' p21999 (dp22000 S'editable' p22001 I00 sS'value' p22002 S'Element' p22003 ssS'editable' p22004 (dp22005 S'editable' p22006 I00 sS'value' p22007 I01 ssS'unique' p22008 (dp22009 S'editable' p22010 I00 sS'value' p22011 I00 ssS'properties' p22012 (dp22013 S'default_value' p22014 (dp22015 S'editable' p22016 I00 sS'value' p22017 NssS'summary_default' p22018 (dp22019 S'editable' p22020 I01 sS'value' p22021 S'none' p22022 sssS'description' p22023 (dp22024 S'editable' p22025 I01 sS'value' p22026 g47 sssS'image' p22027 (dp22028 S'mandatory' p22029 (dp22030 S'editable' p22031 I00 sS'value' p22032 I00 ssS'name' p22033 (dp22034 S'editable' p22035 I01 sS'value' p22036 S'Thumbnail' p22037 ssS'data_type' p22038 (dp22039 S'editable' p22040 I00 sS'value' p22041 S'image' p22042 ssS'entity_type' p22043 (dp22044 S'editable' p22045 I00 sS'value' p22046 S'Element' p22047 ssS'editable' p22048 (dp22049 S'editable' p22050 I00 sS'value' p22051 I01 ssS'unique' p22052 (dp22053 S'editable' p22054 I00 sS'value' p22055 I00 ssS'properties' p22056 (dp22057 S'default_value' p22058 (dp22059 S'editable' p22060 I00 sS'value' p22061 NssS'summary_default' p22062 (dp22063 S'editable' p22064 I01 sS'value' p22065 S'none' p22066 sssS'description' p22067 (dp22068 S'editable' p22069 I01 sS'value' p22070 g47 sssS'tag_list' p22071 (dp22072 S'mandatory' p22073 (dp22074 S'editable' p22075 I00 sS'value' p22076 I00 ssS'name' p22077 (dp22078 S'editable' p22079 I01 sS'value' p22080 S'Tags' p22081 ssS'data_type' p22082 (dp22083 S'editable' p22084 I00 sS'value' p22085 S'tag_list' p22086 ssS'entity_type' p22087 (dp22088 S'editable' p22089 I00 sS'value' p22090 S'Element' p22091 ssS'editable' p22092 (dp22093 S'editable' p22094 I00 sS'value' p22095 I01 ssS'unique' p22096 (dp22097 S'editable' p22098 I00 sS'value' p22099 I00 ssS'properties' p22100 (dp22101 S'default_value' p22102 (dp22103 S'editable' p22104 I00 sS'value' p22105 NssS'summary_default' p22106 (dp22107 S'editable' p22108 I01 sS'value' p22109 S'none' p22110 ssS'valid_types' p22111 (dp22112 S'editable' p22113 I01 sS'value' p22114 (lp22115 S'Tag' p22116 asssS'description' p22117 (dp22118 S'editable' p22119 I01 sS'value' p22120 g47 sssS'head_duration' p22121 (dp22122 S'mandatory' p22123 (dp22124 S'editable' p22125 I00 sS'value' p22126 I00 ssS'name' p22127 (dp22128 S'editable' p22129 I01 sS'value' p22130 S'Raw Head Duration' p22131 ssS'data_type' p22132 (dp22133 S'editable' p22134 I00 sS'value' p22135 S'number' p22136 ssS'entity_type' p22137 (dp22138 S'editable' p22139 I00 sS'value' p22140 S'Element' p22141 ssS'editable' p22142 (dp22143 S'editable' p22144 I00 sS'value' p22145 I01 ssS'unique' p22146 (dp22147 S'editable' p22148 I00 sS'value' p22149 I00 ssS'properties' p22150 (dp22151 S'default_value' p22152 (dp22153 S'editable' p22154 I00 sS'value' p22155 NssS'summary_default' p22156 (dp22157 S'editable' p22158 I01 sS'value' p22159 S'none' p22160 sssS'description' p22161 (dp22162 S'editable' p22163 I01 sS'value' p22164 g47 sssS'updated_at' p22165 (dp22166 S'mandatory' p22167 (dp22168 S'editable' p22169 I00 sS'value' p22170 I00 ssS'name' p22171 (dp22172 S'editable' p22173 I01 sS'value' p22174 S'Date Updated' p22175 ssS'data_type' p22176 (dp22177 S'editable' p22178 I00 sS'value' p22179 S'date_time' p22180 ssS'entity_type' p22181 (dp22182 S'editable' p22183 I00 sS'value' p22184 S'Element' p22185 ssS'editable' p22186 (dp22187 S'editable' p22188 I00 sS'value' p22189 I00 ssS'unique' p22190 (dp22191 S'editable' p22192 I00 sS'value' p22193 I00 ssS'properties' p22194 (dp22195 S'default_value' p22196 (dp22197 S'editable' p22198 I00 sS'value' p22199 NssS'summary_default' p22200 (dp22201 S'editable' p22202 I01 sS'value' p22203 S'none' p22204 sssS'description' p22205 (dp22206 S'editable' p22207 I01 sS'value' p22208 g47 sssS'tasks' p22209 (dp22210 S'mandatory' p22211 (dp22212 S'editable' p22213 I00 sS'value' p22214 I00 ssS'name' p22215 (dp22216 S'editable' p22217 I01 sS'value' p22218 S'Tasks' p22219 ssS'data_type' p22220 (dp22221 S'editable' p22222 I00 sS'value' p22223 S'multi_entity' p22224 ssS'entity_type' p22225 (dp22226 S'editable' p22227 I00 sS'value' p22228 S'Element' p22229 ssS'editable' p22230 (dp22231 S'editable' p22232 I00 sS'value' p22233 I01 ssS'unique' p22234 (dp22235 S'editable' p22236 I00 sS'value' p22237 I00 ssS'properties' p22238 (dp22239 S'default_value' p22240 (dp22241 S'editable' p22242 I00 sS'value' p22243 NssS'summary_default' p22244 (dp22245 S'editable' p22246 I01 sS'value' p22247 S'none' p22248 ssS'valid_types' p22249 (dp22250 S'editable' p22251 I01 sS'value' p22252 (lp22253 S'Task' p22254 asssS'description' p22255 (dp22256 S'editable' p22257 I01 sS'value' p22258 g47 sssS'cached_display_name' p22259 (dp22260 S'mandatory' p22261 (dp22262 S'editable' p22263 I00 sS'value' p22264 I00 ssS'name' p22265 (dp22266 S'editable' p22267 I01 sS'value' p22268 S'Cached Display Name' p22269 ssS'data_type' p22270 (dp22271 S'editable' p22272 I00 sS'value' p22273 S'text' p22274 ssS'entity_type' p22275 (dp22276 S'editable' p22277 I00 sS'value' p22278 S'Element' p22279 ssS'editable' p22280 (dp22281 S'editable' p22282 I00 sS'value' p22283 I01 ssS'unique' p22284 (dp22285 S'editable' p22286 I00 sS'value' p22287 I00 ssS'properties' p22288 (dp22289 S'default_value' p22290 (dp22291 S'editable' p22292 I00 sS'value' p22293 NssS'summary_default' p22294 (dp22295 S'editable' p22296 I00 sS'value' p22297 S'none' p22298 sssS'description' p22299 (dp22300 S'editable' p22301 I01 sS'value' p22302 g47 sssS'smart_cut_duration' p22303 (dp22304 S'mandatory' p22305 (dp22306 S'editable' p22307 I00 sS'value' p22308 I00 ssS'name' p22309 (dp22310 S'editable' p22311 I01 sS'value' p22312 S'Cut Duration' p22313 ssS'data_type' p22314 (dp22315 S'editable' p22316 I00 sS'value' p22317 S'number' p22318 ssS'entity_type' p22319 (dp22320 S'editable' p22321 I00 sS'value' p22322 S'Element' p22323 ssS'editable' p22324 (dp22325 S'editable' p22326 I00 sS'value' p22327 I01 ssS'unique' p22328 (dp22329 S'editable' p22330 I00 sS'value' p22331 I00 ssS'properties' p22332 (dp22333 S'default_value' p22334 (dp22335 S'editable' p22336 I00 sS'value' p22337 NssS'summary_default' p22338 (dp22339 S'editable' p22340 I01 sS'value' p22341 S'none' p22342 sssS'description' p22343 (dp22344 S'editable' p22345 I01 sS'value' p22346 g47 sssS'id' p22347 (dp22348 S'mandatory' p22349 (dp22350 S'editable' p22351 I00 sS'value' p22352 I00 ssS'name' p22353 (dp22354 S'editable' p22355 I01 sS'value' p22356 S'Id' p22357 ssS'data_type' p22358 (dp22359 S'editable' p22360 I00 sS'value' p22361 S'number' p22362 ssS'entity_type' p22363 (dp22364 S'editable' p22365 I00 sS'value' p22366 S'Element' p22367 ssS'editable' p22368 (dp22369 S'editable' p22370 I00 sS'value' p22371 I00 ssS'unique' p22372 (dp22373 S'editable' p22374 I00 sS'value' p22375 I00 ssS'properties' p22376 (dp22377 S'default_value' p22378 (dp22379 S'editable' p22380 I00 sS'value' p22381 NssS'summary_default' p22382 (dp22383 S'editable' p22384 I01 sS'value' p22385 S'none' p22386 sssS'description' p22387 (dp22388 S'editable' p22389 I01 sS'value' p22390 g47 sssS'updated_by' p22391 (dp22392 S'mandatory' p22393 (dp22394 S'editable' p22395 I00 sS'value' p22396 I00 ssS'name' p22397 (dp22398 S'editable' p22399 I01 sS'value' p22400 S'Updated by' p22401 ssS'data_type' p22402 (dp22403 S'editable' p22404 I00 sS'value' p22405 S'entity' p22406 ssS'entity_type' p22407 (dp22408 S'editable' p22409 I00 sS'value' p22410 S'Element' p22411 ssS'editable' p22412 (dp22413 S'editable' p22414 I00 sS'value' p22415 I00 ssS'unique' p22416 (dp22417 S'editable' p22418 I00 sS'value' p22419 I00 ssS'properties' p22420 (dp22421 S'default_value' p22422 (dp22423 S'editable' p22424 I00 sS'value' p22425 NssS'summary_default' p22426 (dp22427 S'editable' p22428 I01 sS'value' p22429 S'none' p22430 ssS'valid_types' p22431 (dp22432 S'editable' p22433 I01 sS'value' p22434 (lp22435 S'HumanUser' p22436 aS'ApiUser' p22437 asssS'description' p22438 (dp22439 S'editable' p22440 I01 sS'value' p22441 g47 sssS'open_notes' p22442 (dp22443 S'mandatory' p22444 (dp22445 S'editable' p22446 I00 sS'value' p22447 I00 ssS'name' p22448 (dp22449 S'editable' p22450 I01 sS'value' p22451 S'Open Notes' p22452 ssS'data_type' p22453 (dp22454 S'editable' p22455 I00 sS'value' p22456 S'multi_entity' p22457 ssS'entity_type' p22458 (dp22459 S'editable' p22460 I00 sS'value' p22461 S'Element' p22462 ssS'editable' p22463 (dp22464 S'editable' p22465 I00 sS'value' p22466 I00 ssS'unique' p22467 (dp22468 S'editable' p22469 I00 sS'value' p22470 I00 ssS'properties' p22471 (dp22472 S'default_value' p22473 (dp22474 S'editable' p22475 I00 sS'value' p22476 NssS'summary_default' p22477 (dp22478 S'editable' p22479 I01 sS'value' p22480 S'none' p22481 ssS'valid_types' p22482 (dp22483 S'editable' p22484 I01 sS'value' p22485 (lp22486 S'Note' p22487 asssS'description' p22488 (dp22489 S'editable' p22490 I01 sS'value' p22491 g47 sssS'task_template' p22492 (dp22493 S'mandatory' p22494 (dp22495 S'editable' p22496 I00 sS'value' p22497 I00 ssS'name' p22498 (dp22499 S'editable' p22500 I01 sS'value' p22501 S'Task Template' p22502 ssS'data_type' p22503 (dp22504 S'editable' p22505 I00 sS'value' p22506 S'entity' p22507 ssS'entity_type' p22508 (dp22509 S'editable' p22510 I00 sS'value' p22511 S'Element' p22512 ssS'editable' p22513 (dp22514 S'editable' p22515 I00 sS'value' p22516 I01 ssS'unique' p22517 (dp22518 S'editable' p22519 I00 sS'value' p22520 I00 ssS'properties' p22521 (dp22522 S'default_value' p22523 (dp22524 S'editable' p22525 I00 sS'value' p22526 NssS'summary_default' p22527 (dp22528 S'editable' p22529 I01 sS'value' p22530 S'none' p22531 ssS'valid_types' p22532 (dp22533 S'editable' p22534 I01 sS'value' p22535 (lp22536 S'TaskTemplate' p22537 asssS'description' p22538 (dp22539 S'editable' p22540 I01 sS'value' p22541 g47 sssS'created_by' p22542 (dp22543 S'mandatory' p22544 (dp22545 S'editable' p22546 I00 sS'value' p22547 I00 ssS'name' p22548 (dp22549 S'editable' p22550 I01 sS'value' p22551 S'Created by' p22552 ssS'data_type' p22553 (dp22554 S'editable' p22555 I00 sS'value' p22556 S'entity' p22557 ssS'entity_type' p22558 (dp22559 S'editable' p22560 I00 sS'value' p22561 S'Element' p22562 ssS'editable' p22563 (dp22564 S'editable' p22565 I00 sS'value' p22566 I00 ssS'unique' p22567 (dp22568 S'editable' p22569 I00 sS'value' p22570 I00 ssS'properties' p22571 (dp22572 S'default_value' p22573 (dp22574 S'editable' p22575 I00 sS'value' p22576 NssS'summary_default' p22577 (dp22578 S'editable' p22579 I01 sS'value' p22580 S'none' p22581 ssS'valid_types' p22582 (dp22583 S'editable' p22584 I01 sS'value' p22585 (lp22586 S'HumanUser' p22587 aS'ApiUser' p22588 asssS'description' p22589 (dp22590 S'editable' p22591 I01 sS'value' p22592 g47 sssS'smart_tail_duration' p22593 (dp22594 S'mandatory' p22595 (dp22596 S'editable' p22597 I00 sS'value' p22598 I00 ssS'name' p22599 (dp22600 S'editable' p22601 I01 sS'value' p22602 S'Tail Duration' p22603 ssS'data_type' p22604 (dp22605 S'editable' p22606 I00 sS'value' p22607 S'number' p22608 ssS'entity_type' p22609 (dp22610 S'editable' p22611 I00 sS'value' p22612 S'Element' p22613 ssS'editable' p22614 (dp22615 S'editable' p22616 I00 sS'value' p22617 I01 ssS'unique' p22618 (dp22619 S'editable' p22620 I00 sS'value' p22621 I00 ssS'properties' p22622 (dp22623 S'default_value' p22624 (dp22625 S'editable' p22626 I00 sS'value' p22627 NssS'summary_default' p22628 (dp22629 S'editable' p22630 I01 sS'value' p22631 S'none' p22632 sssS'description' p22633 (dp22634 S'editable' p22635 I01 sS'value' p22636 g47 sssS'sg_status_list' p22637 (dp22638 S'mandatory' p22639 (dp22640 S'editable' p22641 I00 sS'value' p22642 I00 ssS'name' p22643 (dp22644 S'editable' p22645 I01 sS'value' p22646 S'Status' p22647 ssS'data_type' p22648 (dp22649 S'editable' p22650 I00 sS'value' p22651 S'status_list' p22652 ssS'entity_type' p22653 (dp22654 S'editable' p22655 I00 sS'value' p22656 S'Element' p22657 ssS'editable' p22658 (dp22659 S'editable' p22660 I00 sS'value' p22661 I01 ssS'unique' p22662 (dp22663 S'editable' p22664 I00 sS'value' p22665 I00 ssS'properties' p22666 (dp22667 S'default_value' p22668 (dp22669 S'editable' p22670 I01 sS'value' p22671 S'na' p22672 ssS'valid_values' p22673 (dp22674 S'editable' p22675 I01 sS'value' p22676 (lp22677 S'na' p22678 assS'summary_default' p22679 (dp22680 S'editable' p22681 I01 sS'value' p22682 S'status_list' p22683 sssS'description' p22684 (dp22685 S'editable' p22686 I01 sS'value' p22687 g47 sssS'smart_head_in' p22688 (dp22689 S'mandatory' p22690 (dp22691 S'editable' p22692 I00 sS'value' p22693 I00 ssS'name' p22694 (dp22695 S'editable' p22696 I01 sS'value' p22697 S'Head In' p22698 ssS'data_type' p22699 (dp22700 S'editable' p22701 I00 sS'value' p22702 S'number' p22703 ssS'entity_type' p22704 (dp22705 S'editable' p22706 I00 sS'value' p22707 S'Element' p22708 ssS'editable' p22709 (dp22710 S'editable' p22711 I00 sS'value' p22712 I01 ssS'unique' p22713 (dp22714 S'editable' p22715 I00 sS'value' p22716 I00 ssS'properties' p22717 (dp22718 S'default_value' p22719 (dp22720 S'editable' p22721 I00 sS'value' p22722 NssS'summary_default' p22723 (dp22724 S'editable' p22725 I01 sS'value' p22726 S'none' p22727 sssS'description' p22728 (dp22729 S'editable' p22730 I01 sS'value' p22731 g47 sssS'smart_working_duration' p22732 (dp22733 S'mandatory' p22734 (dp22735 S'editable' p22736 I00 sS'value' p22737 I00 ssS'name' p22738 (dp22739 S'editable' p22740 I01 sS'value' p22741 S'Working Duration' p22742 ssS'data_type' p22743 (dp22744 S'editable' p22745 I00 sS'value' p22746 S'number' p22747 ssS'entity_type' p22748 (dp22749 S'editable' p22750 I00 sS'value' p22751 S'Element' p22752 ssS'editable' p22753 (dp22754 S'editable' p22755 I00 sS'value' p22756 I00 ssS'unique' p22757 (dp22758 S'editable' p22759 I00 sS'value' p22760 I00 ssS'properties' p22761 (dp22762 S'default_value' p22763 (dp22764 S'editable' p22765 I00 sS'value' p22766 NssS'summary_default' p22767 (dp22768 S'editable' p22769 I01 sS'value' p22770 S'none' p22771 sssS'description' p22772 (dp22773 S'editable' p22774 I01 sS'value' p22775 g47 sssS'head_in' p22776 (dp22777 S'mandatory' p22778 (dp22779 S'editable' p22780 I00 sS'value' p22781 I00 ssS'name' p22782 (dp22783 S'editable' p22784 I01 sS'value' p22785 S'Raw Head In' p22786 ssS'data_type' p22787 (dp22788 S'editable' p22789 I00 sS'value' p22790 S'number' p22791 ssS'entity_type' p22792 (dp22793 S'editable' p22794 I00 sS'value' p22795 S'Element' p22796 ssS'editable' p22797 (dp22798 S'editable' p22799 I00 sS'value' p22800 I01 ssS'unique' p22801 (dp22802 S'editable' p22803 I00 sS'value' p22804 I00 ssS'properties' p22805 (dp22806 S'default_value' p22807 (dp22808 S'editable' p22809 I00 sS'value' p22810 NssS'summary_default' p22811 (dp22812 S'editable' p22813 I01 sS'value' p22814 S'none' p22815 sssS'description' p22816 (dp22817 S'editable' p22818 I01 sS'value' p22819 g47 sssS'description' p22820 (dp22821 S'mandatory' p22822 (dp22823 S'editable' p22824 I00 sS'value' p22825 I00 ssS'name' p22826 (dp22827 S'editable' p22828 I01 sS'value' p22829 S'Description' p22830 ssS'data_type' p22831 (dp22832 S'editable' p22833 I00 sS'value' p22834 S'text' p22835 ssS'entity_type' p22836 (dp22837 S'editable' p22838 I00 sS'value' p22839 S'Element' p22840 ssS'editable' p22841 (dp22842 S'editable' p22843 I00 sS'value' p22844 I01 ssS'unique' p22845 (dp22846 S'editable' p22847 I00 sS'value' p22848 I00 ssS'properties' p22849 (dp22850 S'default_value' p22851 (dp22852 S'editable' p22853 I00 sS'value' p22854 NssS'summary_default' p22855 (dp22856 S'editable' p22857 I01 sS'value' p22858 S'none' p22859 sssS'description' p22860 (dp22861 S'editable' p22862 I01 sS'value' p22863 g47 sssS'smart_cut_out' p22864 (dp22865 S'mandatory' p22866 (dp22867 S'editable' p22868 I00 sS'value' p22869 I00 ssS'name' p22870 (dp22871 S'editable' p22872 I01 sS'value' p22873 S'Cut Out' p22874 ssS'data_type' p22875 (dp22876 S'editable' p22877 I00 sS'value' p22878 S'number' p22879 ssS'entity_type' p22880 (dp22881 S'editable' p22882 I00 sS'value' p22883 S'Element' p22884 ssS'editable' p22885 (dp22886 S'editable' p22887 I00 sS'value' p22888 I01 ssS'unique' p22889 (dp22890 S'editable' p22891 I00 sS'value' p22892 I00 ssS'properties' p22893 (dp22894 S'default_value' p22895 (dp22896 S'editable' p22897 I00 sS'value' p22898 NssS'summary_default' p22899 (dp22900 S'editable' p22901 I01 sS'value' p22902 S'none' p22903 sssS'description' p22904 (dp22905 S'editable' p22906 I01 sS'value' p22907 g47 sssS'tail_out' p22908 (dp22909 S'mandatory' p22910 (dp22911 S'editable' p22912 I00 sS'value' p22913 I00 ssS'name' p22914 (dp22915 S'editable' p22916 I01 sS'value' p22917 S'Raw Tail Out' p22918 ssS'data_type' p22919 (dp22920 S'editable' p22921 I00 sS'value' p22922 S'number' p22923 ssS'entity_type' p22924 (dp22925 S'editable' p22926 I00 sS'value' p22927 S'Element' p22928 ssS'editable' p22929 (dp22930 S'editable' p22931 I00 sS'value' p22932 I01 ssS'unique' p22933 (dp22934 S'editable' p22935 I00 sS'value' p22936 I00 ssS'properties' p22937 (dp22938 S'default_value' p22939 (dp22940 S'editable' p22941 I00 sS'value' p22942 NssS'summary_default' p22943 (dp22944 S'editable' p22945 I01 sS'value' p22946 S'none' p22947 sssS'description' p22948 (dp22949 S'editable' p22950 I01 sS'value' p22951 g47 sssS'smart_cut_in' p22952 (dp22953 S'mandatory' p22954 (dp22955 S'editable' p22956 I00 sS'value' p22957 I00 ssS'name' p22958 (dp22959 S'editable' p22960 I01 sS'value' p22961 S'Cut In' p22962 ssS'data_type' p22963 (dp22964 S'editable' p22965 I00 sS'value' p22966 S'number' p22967 ssS'entity_type' p22968 (dp22969 S'editable' p22970 I00 sS'value' p22971 S'Element' p22972 ssS'editable' p22973 (dp22974 S'editable' p22975 I00 sS'value' p22976 I01 ssS'unique' p22977 (dp22978 S'editable' p22979 I00 sS'value' p22980 I00 ssS'properties' p22981 (dp22982 S'default_value' p22983 (dp22984 S'editable' p22985 I00 sS'value' p22986 NssS'summary_default' p22987 (dp22988 S'editable' p22989 I01 sS'value' p22990 S'none' p22991 sssS'description' p22992 (dp22993 S'editable' p22994 I01 sS'value' p22995 g47 sssS'smart_cut_summary_display' p22996 (dp22997 S'mandatory' p22998 (dp22999 S'editable' p23000 I00 sS'value' p23001 I00 ssS'name' p23002 (dp23003 S'editable' p23004 I01 sS'value' p23005 S'Cut Summary' p23006 ssS'data_type' p23007 (dp23008 S'editable' p23009 I00 sS'value' p23010 S'text' p23011 ssS'entity_type' p23012 (dp23013 S'editable' p23014 I00 sS'value' p23015 S'Element' p23016 ssS'editable' p23017 (dp23018 S'editable' p23019 I00 sS'value' p23020 I00 ssS'unique' p23021 (dp23022 S'editable' p23023 I00 sS'value' p23024 I00 ssS'properties' p23025 (dp23026 S'default_value' p23027 (dp23028 S'editable' p23029 I00 sS'value' p23030 NssS'summary_default' p23031 (dp23032 S'editable' p23033 I01 sS'value' p23034 S'none' p23035 sssS'description' p23036 (dp23037 S'editable' p23038 I01 sS'value' p23039 g47 sssS'cut_in' p23040 (dp23041 S'mandatory' p23042 (dp23043 S'editable' p23044 I00 sS'value' p23045 I00 ssS'name' p23046 (dp23047 S'editable' p23048 I01 sS'value' p23049 S'Raw Cut In' p23050 ssS'data_type' p23051 (dp23052 S'editable' p23053 I00 sS'value' p23054 S'number' p23055 ssS'entity_type' p23056 (dp23057 S'editable' p23058 I00 sS'value' p23059 S'Element' p23060 ssS'editable' p23061 (dp23062 S'editable' p23063 I00 sS'value' p23064 I01 ssS'unique' p23065 (dp23066 S'editable' p23067 I00 sS'value' p23068 I00 ssS'properties' p23069 (dp23070 S'default_value' p23071 (dp23072 S'editable' p23073 I00 sS'value' p23074 NssS'summary_default' p23075 (dp23076 S'editable' p23077 I01 sS'value' p23078 S'none' p23079 sssS'description' p23080 (dp23081 S'editable' p23082 I01 sS'value' p23083 g47 sssS'smart_duration_summary_display' p23084 (dp23085 S'mandatory' p23086 (dp23087 S'editable' p23088 I00 sS'value' p23089 I00 ssS'name' p23090 (dp23091 S'editable' p23092 I01 sS'value' p23093 S'Duration Summary' p23094 ssS'data_type' p23095 (dp23096 S'editable' p23097 I00 sS'value' p23098 S'text' p23099 ssS'entity_type' p23100 (dp23101 S'editable' p23102 I00 sS'value' p23103 S'Element' p23104 ssS'editable' p23105 (dp23106 S'editable' p23107 I00 sS'value' p23108 I00 ssS'unique' p23109 (dp23110 S'editable' p23111 I00 sS'value' p23112 I00 ssS'properties' p23113 (dp23114 S'default_value' p23115 (dp23116 S'editable' p23117 I00 sS'value' p23118 NssS'summary_default' p23119 (dp23120 S'editable' p23121 I01 sS'value' p23122 S'none' p23123 sssS'description' p23124 (dp23125 S'editable' p23126 I01 sS'value' p23127 g47 sssS'tail_duration' p23128 (dp23129 S'mandatory' p23130 (dp23131 S'editable' p23132 I00 sS'value' p23133 I00 ssS'name' p23134 (dp23135 S'editable' p23136 I01 sS'value' p23137 S'Raw Tail Duration' p23138 ssS'data_type' p23139 (dp23140 S'editable' p23141 I00 sS'value' p23142 S'number' p23143 ssS'entity_type' p23144 (dp23145 S'editable' p23146 I00 sS'value' p23147 S'Element' p23148 ssS'editable' p23149 (dp23150 S'editable' p23151 I00 sS'value' p23152 I01 ssS'unique' p23153 (dp23154 S'editable' p23155 I00 sS'value' p23156 I00 ssS'properties' p23157 (dp23158 S'default_value' p23159 (dp23160 S'editable' p23161 I00 sS'value' p23162 NssS'summary_default' p23163 (dp23164 S'editable' p23165 I01 sS'value' p23166 S'none' p23167 sssS'description' p23168 (dp23169 S'editable' p23170 I01 sS'value' p23171 g47 sssS'smart_tail_out' p23172 (dp23173 S'mandatory' p23174 (dp23175 S'editable' p23176 I00 sS'value' p23177 I00 ssS'name' p23178 (dp23179 S'editable' p23180 I01 sS'value' p23181 S'Tail Out' p23182 ssS'data_type' p23183 (dp23184 S'editable' p23185 I00 sS'value' p23186 S'number' p23187 ssS'entity_type' p23188 (dp23189 S'editable' p23190 I00 sS'value' p23191 S'Element' p23192 ssS'editable' p23193 (dp23194 S'editable' p23195 I00 sS'value' p23196 I01 ssS'unique' p23197 (dp23198 S'editable' p23199 I00 sS'value' p23200 I00 ssS'properties' p23201 (dp23202 S'default_value' p23203 (dp23204 S'editable' p23205 I00 sS'value' p23206 NssS'summary_default' p23207 (dp23208 S'editable' p23209 I01 sS'value' p23210 S'none' p23211 sssS'description' p23212 (dp23213 S'editable' p23214 I01 sS'value' p23215 g47 sssS'step_0' p23216 (dp23217 S'mandatory' p23218 (dp23219 S'editable' p23220 I00 sS'value' p23221 I00 ssS'name' p23222 (dp23223 S'editable' p23224 I01 sS'value' p23225 S'ALL TASKS' p23226 ssS'data_type' p23227 (dp23228 S'editable' p23229 I00 sS'value' p23230 S'pivot_column' p23231 ssS'entity_type' p23232 (dp23233 S'editable' p23234 I00 sS'value' p23235 S'Element' p23236 ssS'editable' p23237 (dp23238 S'editable' p23239 I00 sS'value' p23240 I00 ssS'unique' p23241 (dp23242 S'editable' p23243 I00 sS'value' p23244 I00 ssS'properties' p23245 (dp23246 S'default_value' p23247 (dp23248 S'editable' p23249 I00 sS'value' p23250 NssS'summary_default' p23251 (dp23252 S'editable' p23253 I00 sS'value' p23254 S'none' p23255 sssS'description' p23256 (dp23257 S'editable' p23258 I01 sS'value' p23259 g47 sssS'cut_duration' p23260 (dp23261 S'mandatory' p23262 (dp23263 S'editable' p23264 I00 sS'value' p23265 I00 ssS'name' p23266 (dp23267 S'editable' p23268 I01 sS'value' p23269 S'Raw Cut Duration' p23270 ssS'data_type' p23271 (dp23272 S'editable' p23273 I00 sS'value' p23274 S'number' p23275 ssS'entity_type' p23276 (dp23277 S'editable' p23278 I00 sS'value' p23279 S'Element' p23280 ssS'editable' p23281 (dp23282 S'editable' p23283 I00 sS'value' p23284 I01 ssS'unique' p23285 (dp23286 S'editable' p23287 I00 sS'value' p23288 I00 ssS'properties' p23289 (dp23290 S'default_value' p23291 (dp23292 S'editable' p23293 I00 sS'value' p23294 NssS'summary_default' p23295 (dp23296 S'editable' p23297 I01 sS'value' p23298 S'none' p23299 sssS'description' p23300 (dp23301 S'editable' p23302 I01 sS'value' p23303 g47 sssS'smart_tail_in' p23304 (dp23305 S'mandatory' p23306 (dp23307 S'editable' p23308 I00 sS'value' p23309 I00 ssS'name' p23310 (dp23311 S'editable' p23312 I01 sS'value' p23313 S'Tail In' p23314 ssS'data_type' p23315 (dp23316 S'editable' p23317 I00 sS'value' p23318 S'number' p23319 ssS'entity_type' p23320 (dp23321 S'editable' p23322 I00 sS'value' p23323 S'Element' p23324 ssS'editable' p23325 (dp23326 S'editable' p23327 I00 sS'value' p23328 I01 ssS'unique' p23329 (dp23330 S'editable' p23331 I00 sS'value' p23332 I00 ssS'properties' p23333 (dp23334 S'default_value' p23335 (dp23336 S'editable' p23337 I00 sS'value' p23338 NssS'summary_default' p23339 (dp23340 S'editable' p23341 I01 sS'value' p23342 S'none' p23343 sssS'description' p23344 (dp23345 S'editable' p23346 I01 sS'value' p23347 g47 sssS'assets' p23348 (dp23349 S'mandatory' p23350 (dp23351 S'editable' p23352 I00 sS'value' p23353 I00 ssS'name' p23354 (dp23355 S'editable' p23356 I01 sS'value' p23357 S'Assets' p23358 ssS'data_type' p23359 (dp23360 S'editable' p23361 I00 sS'value' p23362 S'multi_entity' p23363 ssS'entity_type' p23364 (dp23365 S'editable' p23366 I00 sS'value' p23367 S'Element' p23368 ssS'editable' p23369 (dp23370 S'editable' p23371 I00 sS'value' p23372 I01 ssS'unique' p23373 (dp23374 S'editable' p23375 I00 sS'value' p23376 I00 ssS'properties' p23377 (dp23378 S'default_value' p23379 (dp23380 S'editable' p23381 I00 sS'value' p23382 NssS'summary_default' p23383 (dp23384 S'editable' p23385 I01 sS'value' p23386 S'none' p23387 ssS'valid_types' p23388 (dp23389 S'editable' p23390 I01 sS'value' p23391 (lp23392 S'Asset' p23393 asssS'description' p23394 (dp23395 S'editable' p23396 I01 sS'value' p23397 g47 sssS'smart_head_out' p23398 (dp23399 S'mandatory' p23400 (dp23401 S'editable' p23402 I00 sS'value' p23403 I00 ssS'name' p23404 (dp23405 S'editable' p23406 I01 sS'value' p23407 S'Head Out' p23408 ssS'data_type' p23409 (dp23410 S'editable' p23411 I00 sS'value' p23412 S'number' p23413 ssS'entity_type' p23414 (dp23415 S'editable' p23416 I00 sS'value' p23417 S'Element' p23418 ssS'editable' p23419 (dp23420 S'editable' p23421 I00 sS'value' p23422 I01 ssS'unique' p23423 (dp23424 S'editable' p23425 I00 sS'value' p23426 I00 ssS'properties' p23427 (dp23428 S'default_value' p23429 (dp23430 S'editable' p23431 I00 sS'value' p23432 NssS'summary_default' p23433 (dp23434 S'editable' p23435 I01 sS'value' p23436 S'none' p23437 sssS'description' p23438 (dp23439 S'editable' p23440 I01 sS'value' p23441 g47 sssS'created_at' p23442 (dp23443 S'mandatory' p23444 (dp23445 S'editable' p23446 I00 sS'value' p23447 I00 ssS'name' p23448 (dp23449 S'editable' p23450 I01 sS'value' p23451 S'Date Created' p23452 ssS'data_type' p23453 (dp23454 S'editable' p23455 I00 sS'value' p23456 S'date_time' p23457 ssS'entity_type' p23458 (dp23459 S'editable' p23460 I00 sS'value' p23461 S'Element' p23462 ssS'editable' p23463 (dp23464 S'editable' p23465 I00 sS'value' p23466 I00 ssS'unique' p23467 (dp23468 S'editable' p23469 I00 sS'value' p23470 I00 ssS'properties' p23471 (dp23472 S'default_value' p23473 (dp23474 S'editable' p23475 I00 sS'value' p23476 NssS'summary_default' p23477 (dp23478 S'editable' p23479 I01 sS'value' p23480 S'none' p23481 sssS'description' p23482 (dp23483 S'editable' p23484 I01 sS'value' p23485 g47 sssS'project' p23486 (dp23487 S'mandatory' p23488 (dp23489 S'editable' p23490 I00 sS'value' p23491 I00 ssS'name' p23492 (dp23493 S'editable' p23494 I01 sS'value' p23495 S'Project' p23496 ssS'data_type' p23497 (dp23498 S'editable' p23499 I00 sS'value' p23500 S'entity' p23501 ssS'entity_type' p23502 (dp23503 S'editable' p23504 I00 sS'value' p23505 S'Element' p23506 ssS'editable' p23507 (dp23508 S'editable' p23509 I00 sS'value' p23510 I01 ssS'unique' p23511 (dp23512 S'editable' p23513 I00 sS'value' p23514 I00 ssS'properties' p23515 (dp23516 S'default_value' p23517 (dp23518 S'editable' p23519 I00 sS'value' p23520 NssS'summary_default' p23521 (dp23522 S'editable' p23523 I01 sS'value' p23524 S'none' p23525 ssS'valid_types' p23526 (dp23527 S'editable' p23528 I01 sS'value' p23529 (lp23530 S'Project' p23531 asssS'description' p23532 (dp23533 S'editable' p23534 I01 sS'value' p23535 g47 sssS'filmstrip_image' p23536 (dp23537 S'mandatory' p23538 (dp23539 S'editable' p23540 I00 sS'value' p23541 I00 ssS'name' p23542 (dp23543 S'editable' p23544 I01 sS'value' p23545 S'Filmstrip Thumbnail' p23546 ssS'data_type' p23547 (dp23548 S'editable' p23549 I00 sS'value' p23550 S'image' p23551 ssS'entity_type' p23552 (dp23553 S'editable' p23554 I00 sS'value' p23555 S'Element' p23556 ssS'editable' p23557 (dp23558 S'editable' p23559 I00 sS'value' p23560 I01 ssS'unique' p23561 (dp23562 S'editable' p23563 I00 sS'value' p23564 I00 ssS'properties' p23565 (dp23566 S'default_value' p23567 (dp23568 S'editable' p23569 I00 sS'value' p23570 NssS'summary_default' p23571 (dp23572 S'editable' p23573 I01 sS'value' p23574 S'none' p23575 sssS'description' p23576 (dp23577 S'editable' p23578 I01 sS'value' p23579 g47 sssS'tail_in' p23580 (dp23581 S'mandatory' p23582 (dp23583 S'editable' p23584 I00 sS'value' p23585 I00 ssS'name' p23586 (dp23587 S'editable' p23588 I01 sS'value' p23589 S'Raw Tail In' p23590 ssS'data_type' p23591 (dp23592 S'editable' p23593 I00 sS'value' p23594 S'number' p23595 ssS'entity_type' p23596 (dp23597 S'editable' p23598 I00 sS'value' p23599 S'Element' p23600 ssS'editable' p23601 (dp23602 S'editable' p23603 I00 sS'value' p23604 I01 ssS'unique' p23605 (dp23606 S'editable' p23607 I00 sS'value' p23608 I00 ssS'properties' p23609 (dp23610 S'default_value' p23611 (dp23612 S'editable' p23613 I00 sS'value' p23614 NssS'summary_default' p23615 (dp23616 S'editable' p23617 I01 sS'value' p23618 S'none' p23619 sssS'description' p23620 (dp23621 S'editable' p23622 I01 sS'value' p23623 g47 sssS'shots' p23624 (dp23625 S'mandatory' p23626 (dp23627 S'editable' p23628 I00 sS'value' p23629 I00 ssS'name' p23630 (dp23631 S'editable' p23632 I01 sS'value' p23633 S'Shots' p23634 ssS'data_type' p23635 (dp23636 S'editable' p23637 I00 sS'value' p23638 S'multi_entity' p23639 ssS'entity_type' p23640 (dp23641 S'editable' p23642 I00 sS'value' p23643 S'Element' p23644 ssS'editable' p23645 (dp23646 S'editable' p23647 I00 sS'value' p23648 I01 ssS'unique' p23649 (dp23650 S'editable' p23651 I00 sS'value' p23652 I00 ssS'properties' p23653 (dp23654 S'default_value' p23655 (dp23656 S'editable' p23657 I00 sS'value' p23658 NssS'summary_default' p23659 (dp23660 S'editable' p23661 I01 sS'value' p23662 S'none' p23663 ssS'valid_types' p23664 (dp23665 S'editable' p23666 I01 sS'value' p23667 (lp23668 S'Shot' p23669 asssS'description' p23670 (dp23671 S'editable' p23672 I01 sS'value' p23673 g47 sssS'smart_head_duration' p23674 (dp23675 S'mandatory' p23676 (dp23677 S'editable' p23678 I00 sS'value' p23679 I00 ssS'name' p23680 (dp23681 S'editable' p23682 I01 sS'value' p23683 S'Head Duration' p23684 ssS'data_type' p23685 (dp23686 S'editable' p23687 I00 sS'value' p23688 S'number' p23689 ssS'entity_type' p23690 (dp23691 S'editable' p23692 I00 sS'value' p23693 S'Element' p23694 ssS'editable' p23695 (dp23696 S'editable' p23697 I00 sS'value' p23698 I01 ssS'unique' p23699 (dp23700 S'editable' p23701 I00 sS'value' p23702 I00 ssS'properties' p23703 (dp23704 S'default_value' p23705 (dp23706 S'editable' p23707 I00 sS'value' p23708 NssS'summary_default' p23709 (dp23710 S'editable' p23711 I01 sS'value' p23712 S'none' p23713 sssS'description' p23714 (dp23715 S'editable' p23716 I01 sS'value' p23717 g47 sssS'cut_out' p23718 (dp23719 S'mandatory' p23720 (dp23721 S'editable' p23722 I00 sS'value' p23723 I00 ssS'name' p23724 (dp23725 S'editable' p23726 I01 sS'value' p23727 S'Raw Cut Out' p23728 ssS'data_type' p23729 (dp23730 S'editable' p23731 I00 sS'value' p23732 S'number' p23733 ssS'entity_type' p23734 (dp23735 S'editable' p23736 I00 sS'value' p23737 S'Element' p23738 ssS'editable' p23739 (dp23740 S'editable' p23741 I00 sS'value' p23742 I01 ssS'unique' p23743 (dp23744 S'editable' p23745 I00 sS'value' p23746 I00 ssS'properties' p23747 (dp23748 S'default_value' p23749 (dp23750 S'editable' p23751 I00 sS'value' p23752 NssS'summary_default' p23753 (dp23754 S'editable' p23755 I01 sS'value' p23756 S'none' p23757 sssS'description' p23758 (dp23759 S'editable' p23760 I01 sS'value' p23761 g47 sssS'head_out' p23762 (dp23763 S'mandatory' p23764 (dp23765 S'editable' p23766 I00 sS'value' p23767 I00 ssS'name' p23768 (dp23769 S'editable' p23770 I01 sS'value' p23771 S'Raw Head Out' p23772 ssS'data_type' p23773 (dp23774 S'editable' p23775 I00 sS'value' p23776 S'number' p23777 ssS'entity_type' p23778 (dp23779 S'editable' p23780 I00 sS'value' p23781 S'Element' p23782 ssS'editable' p23783 (dp23784 S'editable' p23785 I00 sS'value' p23786 I01 ssS'unique' p23787 (dp23788 S'editable' p23789 I00 sS'value' p23790 I00 ssS'properties' p23791 (dp23792 S'default_value' p23793 (dp23794 S'editable' p23795 I00 sS'value' p23796 NssS'summary_default' p23797 (dp23798 S'editable' p23799 I01 sS'value' p23800 S'none' p23801 sssS'description' p23802 (dp23803 S'editable' p23804 I01 sS'value' p23805 g47 sssS'notes' p23806 (dp23807 S'mandatory' p23808 (dp23809 S'editable' p23810 I00 sS'value' p23811 I00 ssS'name' p23812 (dp23813 S'editable' p23814 I01 sS'value' p23815 S'Notes' p23816 ssS'data_type' p23817 (dp23818 S'editable' p23819 I00 sS'value' p23820 S'multi_entity' p23821 ssS'entity_type' p23822 (dp23823 S'editable' p23824 I00 sS'value' p23825 S'Element' p23826 ssS'editable' p23827 (dp23828 S'editable' p23829 I00 sS'value' p23830 I01 ssS'unique' p23831 (dp23832 S'editable' p23833 I00 sS'value' p23834 I00 ssS'properties' p23835 (dp23836 S'default_value' p23837 (dp23838 S'editable' p23839 I00 sS'value' p23840 NssS'summary_default' p23841 (dp23842 S'editable' p23843 I01 sS'value' p23844 S'none' p23845 ssS'valid_types' p23846 (dp23847 S'editable' p23848 I01 sS'value' p23849 (lp23850 S'Note' p23851 asssS'description' p23852 (dp23853 S'editable' p23854 I01 sS'value' p23855 g47 ssssS'TankType' p23856 (dp23857 S'code' p23858 (dp23859 S'mandatory' p23860 (dp23861 S'editable' p23862 I00 sS'value' p23863 I01 ssS'name' p23864 (dp23865 S'editable' p23866 I01 sS'value' p23867 S'Tank Type Name' p23868 ssS'data_type' p23869 (dp23870 S'editable' p23871 I00 sS'value' p23872 S'text' p23873 ssS'entity_type' p23874 (dp23875 S'editable' p23876 I00 sS'value' p23877 S'TankType' p23878 ssS'editable' p23879 (dp23880 S'editable' p23881 I00 sS'value' p23882 I01 ssS'unique' p23883 (dp23884 S'editable' p23885 I00 sS'value' p23886 I01 ssS'properties' p23887 (dp23888 S'default_value' p23889 (dp23890 S'editable' p23891 I00 sS'value' p23892 NssS'summary_default' p23893 (dp23894 S'editable' p23895 I01 sS'value' p23896 S'none' p23897 sssS'description' p23898 (dp23899 S'editable' p23900 I01 sS'value' p23901 g47 sssS'description' p23902 (dp23903 S'mandatory' p23904 (dp23905 S'editable' p23906 I00 sS'value' p23907 I00 ssS'name' p23908 (dp23909 S'editable' p23910 I01 sS'value' p23911 S'Description' p23912 ssS'data_type' p23913 (dp23914 S'editable' p23915 I00 sS'value' p23916 S'text' p23917 ssS'entity_type' p23918 (dp23919 S'editable' p23920 I00 sS'value' p23921 S'TankType' p23922 ssS'editable' p23923 (dp23924 S'editable' p23925 I00 sS'value' p23926 I01 ssS'unique' p23927 (dp23928 S'editable' p23929 I00 sS'value' p23930 I00 ssS'properties' p23931 (dp23932 S'default_value' p23933 (dp23934 S'editable' p23935 I00 sS'value' p23936 NssS'summary_default' p23937 (dp23938 S'editable' p23939 I01 sS'value' p23940 S'none' p23941 sssS'description' p23942 (dp23943 S'editable' p23944 I01 sS'value' p23945 g47 sssS'created_at' p23946 (dp23947 S'mandatory' p23948 (dp23949 S'editable' p23950 I00 sS'value' p23951 I00 ssS'name' p23952 (dp23953 S'editable' p23954 I01 sS'value' p23955 S'Date Created' p23956 ssS'data_type' p23957 (dp23958 S'editable' p23959 I00 sS'value' p23960 S'date_time' p23961 ssS'entity_type' p23962 (dp23963 S'editable' p23964 I00 sS'value' p23965 S'TankType' p23966 ssS'editable' p23967 (dp23968 S'editable' p23969 I00 sS'value' p23970 I00 ssS'unique' p23971 (dp23972 S'editable' p23973 I00 sS'value' p23974 I00 ssS'properties' p23975 (dp23976 S'default_value' p23977 (dp23978 S'editable' p23979 I00 sS'value' p23980 NssS'summary_default' p23981 (dp23982 S'editable' p23983 I01 sS'value' p23984 S'none' p23985 sssS'description' p23986 (dp23987 S'editable' p23988 I01 sS'value' p23989 g47 sssS'updated_at' p23990 (dp23991 S'mandatory' p23992 (dp23993 S'editable' p23994 I00 sS'value' p23995 I00 ssS'name' p23996 (dp23997 S'editable' p23998 I01 sS'value' p23999 S'Date Updated' p24000 ssS'data_type' p24001 (dp24002 S'editable' p24003 I00 sS'value' p24004 S'date_time' p24005 ssS'entity_type' p24006 (dp24007 S'editable' p24008 I00 sS'value' p24009 S'TankType' p24010 ssS'editable' p24011 (dp24012 S'editable' p24013 I00 sS'value' p24014 I00 ssS'unique' p24015 (dp24016 S'editable' p24017 I00 sS'value' p24018 I00 ssS'properties' p24019 (dp24020 S'default_value' p24021 (dp24022 S'editable' p24023 I00 sS'value' p24024 NssS'summary_default' p24025 (dp24026 S'editable' p24027 I01 sS'value' p24028 S'none' p24029 sssS'description' p24030 (dp24031 S'editable' p24032 I01 sS'value' p24033 g47 sssS'created_by' p24034 (dp24035 S'mandatory' p24036 (dp24037 S'editable' p24038 I00 sS'value' p24039 I00 ssS'name' p24040 (dp24041 S'editable' p24042 I01 sS'value' p24043 S'Created by' p24044 ssS'data_type' p24045 (dp24046 S'editable' p24047 I00 sS'value' p24048 S'entity' p24049 ssS'entity_type' p24050 (dp24051 S'editable' p24052 I00 sS'value' p24053 S'TankType' p24054 ssS'editable' p24055 (dp24056 S'editable' p24057 I00 sS'value' p24058 I00 ssS'unique' p24059 (dp24060 S'editable' p24061 I00 sS'value' p24062 I00 ssS'properties' p24063 (dp24064 S'default_value' p24065 (dp24066 S'editable' p24067 I00 sS'value' p24068 NssS'summary_default' p24069 (dp24070 S'editable' p24071 I01 sS'value' p24072 S'none' p24073 ssS'valid_types' p24074 (dp24075 S'editable' p24076 I01 sS'value' p24077 (lp24078 S'HumanUser' p24079 aS'ApiUser' p24080 asssS'description' p24081 (dp24082 S'editable' p24083 I01 sS'value' p24084 g47 sssS'project' p24085 (dp24086 S'mandatory' p24087 (dp24088 S'editable' p24089 I00 sS'value' p24090 I00 ssS'name' p24091 (dp24092 S'editable' p24093 I01 sS'value' p24094 S'Project' p24095 ssS'data_type' p24096 (dp24097 S'editable' p24098 I00 sS'value' p24099 S'entity' p24100 ssS'entity_type' p24101 (dp24102 S'editable' p24103 I00 sS'value' p24104 S'TankType' p24105 ssS'editable' p24106 (dp24107 S'editable' p24108 I00 sS'value' p24109 I01 ssS'unique' p24110 (dp24111 S'editable' p24112 I00 sS'value' p24113 I00 ssS'properties' p24114 (dp24115 S'default_value' p24116 (dp24117 S'editable' p24118 I00 sS'value' p24119 NssS'summary_default' p24120 (dp24121 S'editable' p24122 I01 sS'value' p24123 S'none' p24124 ssS'valid_types' p24125 (dp24126 S'editable' p24127 I01 sS'value' p24128 (lp24129 S'Project' p24130 asssS'description' p24131 (dp24132 S'editable' p24133 I01 sS'value' p24134 g47 sssS'sg_status_list' p24135 (dp24136 S'mandatory' p24137 (dp24138 S'editable' p24139 I00 sS'value' p24140 I00 ssS'name' p24141 (dp24142 S'editable' p24143 I01 sS'value' p24144 S'Status' p24145 ssS'data_type' p24146 (dp24147 S'editable' p24148 I00 sS'value' p24149 S'status_list' p24150 ssS'entity_type' p24151 (dp24152 S'editable' p24153 I00 sS'value' p24154 S'TankType' p24155 ssS'editable' p24156 (dp24157 S'editable' p24158 I00 sS'value' p24159 I01 ssS'unique' p24160 (dp24161 S'editable' p24162 I00 sS'value' p24163 I00 ssS'properties' p24164 (dp24165 S'default_value' p24166 (dp24167 S'editable' p24168 I01 sS'value' p24169 S'wtg' p24170 ssS'valid_values' p24171 (dp24172 S'editable' p24173 I01 sS'value' p24174 (lp24175 S'wtg' p24176 aS'ip' p24177 aS'cmpt' p24178 assS'summary_default' p24179 (dp24180 S'editable' p24181 I01 sS'value' p24182 S'none' p24183 sssS'description' p24184 (dp24185 S'editable' p24186 I01 sS'value' p24187 g47 sssS'image' p24188 (dp24189 S'mandatory' p24190 (dp24191 S'editable' p24192 I00 sS'value' p24193 I00 ssS'name' p24194 (dp24195 S'editable' p24196 I01 sS'value' p24197 S'Thumbnail' p24198 ssS'data_type' p24199 (dp24200 S'editable' p24201 I00 sS'value' p24202 S'image' p24203 ssS'entity_type' p24204 (dp24205 S'editable' p24206 I00 sS'value' p24207 S'TankType' p24208 ssS'editable' p24209 (dp24210 S'editable' p24211 I00 sS'value' p24212 I01 ssS'unique' p24213 (dp24214 S'editable' p24215 I00 sS'value' p24216 I00 ssS'properties' p24217 (dp24218 S'default_value' p24219 (dp24220 S'editable' p24221 I00 sS'value' p24222 NssS'summary_default' p24223 (dp24224 S'editable' p24225 I01 sS'value' p24226 S'none' p24227 sssS'description' p24228 (dp24229 S'editable' p24230 I01 sS'value' p24231 g47 sssS'cached_display_name' p24232 (dp24233 S'mandatory' p24234 (dp24235 S'editable' p24236 I00 sS'value' p24237 I00 ssS'name' p24238 (dp24239 S'editable' p24240 I01 sS'value' p24241 S'Cached Display Name' p24242 ssS'data_type' p24243 (dp24244 S'editable' p24245 I00 sS'value' p24246 S'text' p24247 ssS'entity_type' p24248 (dp24249 S'editable' p24250 I00 sS'value' p24251 S'TankType' p24252 ssS'editable' p24253 (dp24254 S'editable' p24255 I00 sS'value' p24256 I01 ssS'unique' p24257 (dp24258 S'editable' p24259 I00 sS'value' p24260 I00 ssS'properties' p24261 (dp24262 S'default_value' p24263 (dp24264 S'editable' p24265 I00 sS'value' p24266 NssS'summary_default' p24267 (dp24268 S'editable' p24269 I00 sS'value' p24270 S'none' p24271 sssS'description' p24272 (dp24273 S'editable' p24274 I01 sS'value' p24275 g47 sssS'tag_list' p24276 (dp24277 S'mandatory' p24278 (dp24279 S'editable' p24280 I00 sS'value' p24281 I00 ssS'name' p24282 (dp24283 S'editable' p24284 I01 sS'value' p24285 S'Tags' p24286 ssS'data_type' p24287 (dp24288 S'editable' p24289 I00 sS'value' p24290 S'tag_list' p24291 ssS'entity_type' p24292 (dp24293 S'editable' p24294 I00 sS'value' p24295 S'TankType' p24296 ssS'editable' p24297 (dp24298 S'editable' p24299 I00 sS'value' p24300 I01 ssS'unique' p24301 (dp24302 S'editable' p24303 I00 sS'value' p24304 I00 ssS'properties' p24305 (dp24306 S'default_value' p24307 (dp24308 S'editable' p24309 I00 sS'value' p24310 NssS'summary_default' p24311 (dp24312 S'editable' p24313 I01 sS'value' p24314 S'none' p24315 ssS'valid_types' p24316 (dp24317 S'editable' p24318 I01 sS'value' p24319 (lp24320 S'Tag' p24321 asssS'description' p24322 (dp24323 S'editable' p24324 I01 sS'value' p24325 g47 sssS'id' p24326 (dp24327 S'mandatory' p24328 (dp24329 S'editable' p24330 I00 sS'value' p24331 I00 ssS'name' p24332 (dp24333 S'editable' p24334 I01 sS'value' p24335 S'Id' p24336 ssS'data_type' p24337 (dp24338 S'editable' p24339 I00 sS'value' p24340 S'number' p24341 ssS'entity_type' p24342 (dp24343 S'editable' p24344 I00 sS'value' p24345 S'TankType' p24346 ssS'editable' p24347 (dp24348 S'editable' p24349 I00 sS'value' p24350 I00 ssS'unique' p24351 (dp24352 S'editable' p24353 I00 sS'value' p24354 I00 ssS'properties' p24355 (dp24356 S'default_value' p24357 (dp24358 S'editable' p24359 I00 sS'value' p24360 NssS'summary_default' p24361 (dp24362 S'editable' p24363 I01 sS'value' p24364 S'none' p24365 sssS'description' p24366 (dp24367 S'editable' p24368 I01 sS'value' p24369 g47 sssS'updated_by' p24370 (dp24371 S'mandatory' p24372 (dp24373 S'editable' p24374 I00 sS'value' p24375 I00 ssS'name' p24376 (dp24377 S'editable' p24378 I01 sS'value' p24379 S'Updated by' p24380 ssS'data_type' p24381 (dp24382 S'editable' p24383 I00 sS'value' p24384 S'entity' p24385 ssS'entity_type' p24386 (dp24387 S'editable' p24388 I00 sS'value' p24389 S'TankType' p24390 ssS'editable' p24391 (dp24392 S'editable' p24393 I00 sS'value' p24394 I00 ssS'unique' p24395 (dp24396 S'editable' p24397 I00 sS'value' p24398 I00 ssS'properties' p24399 (dp24400 S'default_value' p24401 (dp24402 S'editable' p24403 I00 sS'value' p24404 NssS'summary_default' p24405 (dp24406 S'editable' p24407 I01 sS'value' p24408 S'none' p24409 ssS'valid_types' p24410 (dp24411 S'editable' p24412 I01 sS'value' p24413 (lp24414 S'HumanUser' p24415 aS'ApiUser' p24416 asssS'description' p24417 (dp24418 S'editable' p24419 I01 sS'value' p24420 g47 ssssS'Icon' p24421 (dp24422 S'image_map_key' p24423 (dp24424 S'mandatory' p24425 (dp24426 S'editable' p24427 I00 sS'value' p24428 I00 ssS'name' p24429 (dp24430 S'editable' p24431 I01 sS'value' p24432 S'Image Map Key' p24433 ssS'data_type' p24434 (dp24435 S'editable' p24436 I00 sS'value' p24437 S'text' p24438 ssS'entity_type' p24439 (dp24440 S'editable' p24441 I00 sS'value' p24442 S'Icon' p24443 ssS'editable' p24444 (dp24445 S'editable' p24446 I00 sS'value' p24447 I00 ssS'unique' p24448 (dp24449 S'editable' p24450 I00 sS'value' p24451 I00 ssS'properties' p24452 (dp24453 S'default_value' p24454 (dp24455 S'editable' p24456 I00 sS'value' p24457 NssS'summary_default' p24458 (dp24459 S'editable' p24460 I01 sS'value' p24461 S'none' p24462 sssS'description' p24463 (dp24464 S'editable' p24465 I01 sS'value' p24466 g47 sssS'uuid' p24467 (dp24468 S'mandatory' p24469 (dp24470 S'editable' p24471 I00 sS'value' p24472 I00 ssS'name' p24473 (dp24474 S'editable' p24475 I01 sS'value' p24476 S'UUID' p24477 ssS'data_type' p24478 (dp24479 S'editable' p24480 I00 sS'value' p24481 S'uuid' p24482 ssS'entity_type' p24483 (dp24484 S'editable' p24485 I00 sS'value' p24486 S'Icon' p24487 ssS'editable' p24488 (dp24489 S'editable' p24490 I00 sS'value' p24491 I00 ssS'unique' p24492 (dp24493 S'editable' p24494 I00 sS'value' p24495 I00 ssS'properties' p24496 (dp24497 S'default_value' p24498 (dp24499 S'editable' p24500 I00 sS'value' p24501 NssS'summary_default' p24502 (dp24503 S'editable' p24504 I00 sS'value' p24505 S'none' p24506 sssS'description' p24507 (dp24508 S'editable' p24509 I01 sS'value' p24510 g47 sssS'icon_type' p24511 (dp24512 S'mandatory' p24513 (dp24514 S'editable' p24515 I00 sS'value' p24516 I00 ssS'name' p24517 (dp24518 S'editable' p24519 I01 sS'value' p24520 S'Icon Type' p24521 ssS'data_type' p24522 (dp24523 S'editable' p24524 I00 sS'value' p24525 S'list' p24526 ssS'entity_type' p24527 (dp24528 S'editable' p24529 I00 sS'value' p24530 S'Icon' p24531 ssS'editable' p24532 (dp24533 S'editable' p24534 I00 sS'value' p24535 I00 ssS'unique' p24536 (dp24537 S'editable' p24538 I00 sS'value' p24539 I00 ssS'properties' p24540 (dp24541 S'default_value' p24542 (dp24543 S'editable' p24544 I00 sS'value' p24545 NssS'valid_values' p24546 (dp24547 S'editable' p24548 I01 sS'value' p24549 (lp24550 S'permanent_status' p24551 aS'custom_status' p24552 assS'summary_default' p24553 (dp24554 S'editable' p24555 I01 sS'value' p24556 S'none' p24557 sssS'description' p24558 (dp24559 S'editable' p24560 I01 sS'value' p24561 g47 sssS'url' p24562 (dp24563 S'mandatory' p24564 (dp24565 S'editable' p24566 I00 sS'value' p24567 I00 ssS'name' p24568 (dp24569 S'editable' p24570 I01 sS'value' p24571 S'Icon URL' p24572 ssS'data_type' p24573 (dp24574 S'editable' p24575 I00 sS'value' p24576 S'text' p24577 ssS'entity_type' p24578 (dp24579 S'editable' p24580 I00 sS'value' p24581 S'Icon' p24582 ssS'editable' p24583 (dp24584 S'editable' p24585 I00 sS'value' p24586 I00 ssS'unique' p24587 (dp24588 S'editable' p24589 I00 sS'value' p24590 I00 ssS'properties' p24591 (dp24592 S'default_value' p24593 (dp24594 S'editable' p24595 I00 sS'value' p24596 NssS'summary_default' p24597 (dp24598 S'editable' p24599 I00 sS'value' p24600 S'none' p24601 sssS'description' p24602 (dp24603 S'editable' p24604 I01 sS'value' p24605 g47 sssS'html' p24606 (dp24607 S'mandatory' p24608 (dp24609 S'editable' p24610 I00 sS'value' p24611 I00 ssS'name' p24612 (dp24613 S'editable' p24614 I01 sS'value' p24615 S'Icon HTML' p24616 ssS'data_type' p24617 (dp24618 S'editable' p24619 I00 sS'value' p24620 S'text' p24621 ssS'entity_type' p24622 (dp24623 S'editable' p24624 I00 sS'value' p24625 S'Icon' p24626 ssS'editable' p24627 (dp24628 S'editable' p24629 I00 sS'value' p24630 I00 ssS'unique' p24631 (dp24632 S'editable' p24633 I00 sS'value' p24634 I00 ssS'properties' p24635 (dp24636 S'default_value' p24637 (dp24638 S'editable' p24639 I00 sS'value' p24640 NssS'summary_default' p24641 (dp24642 S'editable' p24643 I01 sS'value' p24644 S'none' p24645 sssS'description' p24646 (dp24647 S'editable' p24648 I01 sS'value' p24649 g47 sssS'display_type' p24650 (dp24651 S'mandatory' p24652 (dp24653 S'editable' p24654 I00 sS'value' p24655 I00 ssS'name' p24656 (dp24657 S'editable' p24658 I01 sS'value' p24659 S'Display Type' p24660 ssS'data_type' p24661 (dp24662 S'editable' p24663 I00 sS'value' p24664 S'list' p24665 ssS'entity_type' p24666 (dp24667 S'editable' p24668 I00 sS'value' p24669 S'Icon' p24670 ssS'editable' p24671 (dp24672 S'editable' p24673 I00 sS'value' p24674 I00 ssS'unique' p24675 (dp24676 S'editable' p24677 I00 sS'value' p24678 I00 ssS'properties' p24679 (dp24680 S'default_value' p24681 (dp24682 S'editable' p24683 I00 sS'value' p24684 NssS'valid_values' p24685 (dp24686 S'editable' p24687 I01 sS'value' p24688 (lp24689 S'html' p24690 aS'image' p24691 aS'image_map' p24692 assS'summary_default' p24693 (dp24694 S'editable' p24695 I01 sS'value' p24696 S'none' p24697 sssS'description' p24698 (dp24699 S'editable' p24700 I01 sS'value' p24701 g47 sssS'image_data' p24702 (dp24703 S'mandatory' p24704 (dp24705 S'editable' p24706 I00 sS'value' p24707 I00 ssS'name' p24708 (dp24709 S'editable' p24710 I01 sS'value' p24711 S'Image Data' p24712 ssS'data_type' p24713 (dp24714 S'editable' p24715 I00 sS'value' p24716 S'text' p24717 ssS'entity_type' p24718 (dp24719 S'editable' p24720 I00 sS'value' p24721 S'Icon' p24722 ssS'editable' p24723 (dp24724 S'editable' p24725 I00 sS'value' p24726 I00 ssS'unique' p24727 (dp24728 S'editable' p24729 I00 sS'value' p24730 I00 ssS'properties' p24731 (dp24732 S'default_value' p24733 (dp24734 S'editable' p24735 I00 sS'value' p24736 NssS'summary_default' p24737 (dp24738 S'editable' p24739 I01 sS'value' p24740 S'none' p24741 sssS'description' p24742 (dp24743 S'editable' p24744 I01 sS'value' p24745 g47 sssS'cached_display_name' p24746 (dp24747 S'mandatory' p24748 (dp24749 S'editable' p24750 I00 sS'value' p24751 I00 ssS'name' p24752 (dp24753 S'editable' p24754 I01 sS'value' p24755 S'Cached Display Name' p24756 ssS'data_type' p24757 (dp24758 S'editable' p24759 I00 sS'value' p24760 S'text' p24761 ssS'entity_type' p24762 (dp24763 S'editable' p24764 I00 sS'value' p24765 S'Icon' p24766 ssS'editable' p24767 (dp24768 S'editable' p24769 I00 sS'value' p24770 I00 ssS'unique' p24771 (dp24772 S'editable' p24773 I00 sS'value' p24774 I00 ssS'properties' p24775 (dp24776 S'default_value' p24777 (dp24778 S'editable' p24779 I00 sS'value' p24780 NssS'summary_default' p24781 (dp24782 S'editable' p24783 I00 sS'value' p24784 S'none' p24785 sssS'description' p24786 (dp24787 S'editable' p24788 I01 sS'value' p24789 g47 sssS'id' p24790 (dp24791 S'mandatory' p24792 (dp24793 S'editable' p24794 I00 sS'value' p24795 I00 ssS'name' p24796 (dp24797 S'editable' p24798 I01 sS'value' p24799 S'Id' p24800 ssS'data_type' p24801 (dp24802 S'editable' p24803 I00 sS'value' p24804 S'number' p24805 ssS'entity_type' p24806 (dp24807 S'editable' p24808 I00 sS'value' p24809 S'Icon' p24810 ssS'editable' p24811 (dp24812 S'editable' p24813 I00 sS'value' p24814 I00 ssS'unique' p24815 (dp24816 S'editable' p24817 I00 sS'value' p24818 I00 ssS'properties' p24819 (dp24820 S'default_value' p24821 (dp24822 S'editable' p24823 I00 sS'value' p24824 NssS'summary_default' p24825 (dp24826 S'editable' p24827 I00 sS'value' p24828 S'none' p24829 sssS'description' p24830 (dp24831 S'editable' p24832 I01 sS'value' p24833 g47 sssS'name' p24834 (dp24835 S'mandatory' p24836 (dp24837 S'editable' p24838 I00 sS'value' p24839 I00 ssS'name' p24840 (dp24841 S'editable' p24842 I01 sS'value' p24843 S'Status Name' p24844 ssS'data_type' p24845 (dp24846 S'editable' p24847 I00 sS'value' p24848 S'text' p24849 ssS'entity_type' p24850 (dp24851 S'editable' p24852 I00 sS'value' p24853 S'Icon' p24854 ssS'editable' p24855 (dp24856 S'editable' p24857 I00 sS'value' p24858 I00 ssS'unique' p24859 (dp24860 S'editable' p24861 I00 sS'value' p24862 I00 ssS'properties' p24863 (dp24864 S'default_value' p24865 (dp24866 S'editable' p24867 I00 sS'value' p24868 NssS'summary_default' p24869 (dp24870 S'editable' p24871 I01 sS'value' p24872 S'none' p24873 sssS'description' p24874 (dp24875 S'editable' p24876 I01 sS'value' p24877 g47 ssssS'LocalStorage' p24878 (dp24879 S'code' p24880 (dp24881 S'mandatory' p24882 (dp24883 S'editable' p24884 I00 sS'value' p24885 I01 ssS'name' p24886 (dp24887 S'editable' p24888 I01 sS'value' p24889 S'Local Storage Name' p24890 ssS'data_type' p24891 (dp24892 S'editable' p24893 I00 sS'value' p24894 S'text' p24895 ssS'entity_type' p24896 (dp24897 S'editable' p24898 I00 sS'value' p24899 S'LocalStorage' p24900 ssS'editable' p24901 (dp24902 S'editable' p24903 I00 sS'value' p24904 I01 ssS'unique' p24905 (dp24906 S'editable' p24907 I00 sS'value' p24908 I00 ssS'properties' p24909 (dp24910 S'default_value' p24911 (dp24912 S'editable' p24913 I00 sS'value' p24914 NssS'summary_default' p24915 (dp24916 S'editable' p24917 I00 sS'value' p24918 S'none' p24919 sssS'description' p24920 (dp24921 S'editable' p24922 I01 sS'value' p24923 g47 sssS'uuid' p24924 (dp24925 S'mandatory' p24926 (dp24927 S'editable' p24928 I00 sS'value' p24929 I00 ssS'name' p24930 (dp24931 S'editable' p24932 I01 sS'value' p24933 S'UUID' p24934 ssS'data_type' p24935 (dp24936 S'editable' p24937 I00 sS'value' p24938 S'uuid' p24939 ssS'entity_type' p24940 (dp24941 S'editable' p24942 I00 sS'value' p24943 S'LocalStorage' p24944 ssS'editable' p24945 (dp24946 S'editable' p24947 I00 sS'value' p24948 I00 ssS'unique' p24949 (dp24950 S'editable' p24951 I00 sS'value' p24952 I00 ssS'properties' p24953 (dp24954 S'default_value' p24955 (dp24956 S'editable' p24957 I00 sS'value' p24958 NssS'summary_default' p24959 (dp24960 S'editable' p24961 I00 sS'value' p24962 S'none' p24963 sssS'description' p24964 (dp24965 S'editable' p24966 I01 sS'value' p24967 g47 sssS'mac_path' p24968 (dp24969 S'mandatory' p24970 (dp24971 S'editable' p24972 I00 sS'value' p24973 I00 ssS'name' p24974 (dp24975 S'editable' p24976 I01 sS'value' p24977 S'Mac Path' p24978 ssS'data_type' p24979 (dp24980 S'editable' p24981 I00 sS'value' p24982 S'text' p24983 ssS'entity_type' p24984 (dp24985 S'editable' p24986 I00 sS'value' p24987 S'LocalStorage' p24988 ssS'editable' p24989 (dp24990 S'editable' p24991 I00 sS'value' p24992 I01 ssS'unique' p24993 (dp24994 S'editable' p24995 I00 sS'value' p24996 I00 ssS'properties' p24997 (dp24998 S'default_value' p24999 (dp25000 S'editable' p25001 I00 sS'value' p25002 NssS'summary_default' p25003 (dp25004 S'editable' p25005 I00 sS'value' p25006 S'none' p25007 sssS'description' p25008 (dp25009 S'editable' p25010 I01 sS'value' p25011 g47 sssS'created_at' p25012 (dp25013 S'mandatory' p25014 (dp25015 S'editable' p25016 I00 sS'value' p25017 I00 ssS'name' p25018 (dp25019 S'editable' p25020 I01 sS'value' p25021 S'Date Created' p25022 ssS'data_type' p25023 (dp25024 S'editable' p25025 I00 sS'value' p25026 S'date_time' p25027 ssS'entity_type' p25028 (dp25029 S'editable' p25030 I00 sS'value' p25031 S'LocalStorage' p25032 ssS'editable' p25033 (dp25034 S'editable' p25035 I00 sS'value' p25036 I00 ssS'unique' p25037 (dp25038 S'editable' p25039 I00 sS'value' p25040 I00 ssS'properties' p25041 (dp25042 S'default_value' p25043 (dp25044 S'editable' p25045 I00 sS'value' p25046 NssS'summary_default' p25047 (dp25048 S'editable' p25049 I00 sS'value' p25050 S'none' p25051 sssS'description' p25052 (dp25053 S'editable' p25054 I01 sS'value' p25055 g47 sssS'updated_at' p25056 (dp25057 S'mandatory' p25058 (dp25059 S'editable' p25060 I00 sS'value' p25061 I00 ssS'name' p25062 (dp25063 S'editable' p25064 I01 sS'value' p25065 S'Date Updated' p25066 ssS'data_type' p25067 (dp25068 S'editable' p25069 I00 sS'value' p25070 S'date_time' p25071 ssS'entity_type' p25072 (dp25073 S'editable' p25074 I00 sS'value' p25075 S'LocalStorage' p25076 ssS'editable' p25077 (dp25078 S'editable' p25079 I00 sS'value' p25080 I00 ssS'unique' p25081 (dp25082 S'editable' p25083 I00 sS'value' p25084 I00 ssS'properties' p25085 (dp25086 S'default_value' p25087 (dp25088 S'editable' p25089 I00 sS'value' p25090 NssS'summary_default' p25091 (dp25092 S'editable' p25093 I00 sS'value' p25094 S'none' p25095 sssS'description' p25096 (dp25097 S'editable' p25098 I01 sS'value' p25099 g47 sssS'created_by' p25100 (dp25101 S'mandatory' p25102 (dp25103 S'editable' p25104 I00 sS'value' p25105 I00 ssS'name' p25106 (dp25107 S'editable' p25108 I01 sS'value' p25109 S'Created by' p25110 ssS'data_type' p25111 (dp25112 S'editable' p25113 I00 sS'value' p25114 S'entity' p25115 ssS'entity_type' p25116 (dp25117 S'editable' p25118 I00 sS'value' p25119 S'LocalStorage' p25120 ssS'editable' p25121 (dp25122 S'editable' p25123 I00 sS'value' p25124 I00 ssS'unique' p25125 (dp25126 S'editable' p25127 I00 sS'value' p25128 I00 ssS'properties' p25129 (dp25130 S'default_value' p25131 (dp25132 S'editable' p25133 I00 sS'value' p25134 NssS'summary_default' p25135 (dp25136 S'editable' p25137 I00 sS'value' p25138 S'none' p25139 ssS'valid_types' p25140 (dp25141 S'editable' p25142 I00 sS'value' p25143 (lp25144 S'HumanUser' p25145 aS'ApiUser' p25146 asssS'description' p25147 (dp25148 S'editable' p25149 I01 sS'value' p25150 g47 sssS'windows_path' p25151 (dp25152 S'mandatory' p25153 (dp25154 S'editable' p25155 I00 sS'value' p25156 I00 ssS'name' p25157 (dp25158 S'editable' p25159 I01 sS'value' p25160 S'Windows Path' p25161 ssS'data_type' p25162 (dp25163 S'editable' p25164 I00 sS'value' p25165 S'text' p25166 ssS'entity_type' p25167 (dp25168 S'editable' p25169 I00 sS'value' p25170 S'LocalStorage' p25171 ssS'editable' p25172 (dp25173 S'editable' p25174 I00 sS'value' p25175 I01 ssS'unique' p25176 (dp25177 S'editable' p25178 I00 sS'value' p25179 I00 ssS'properties' p25180 (dp25181 S'default_value' p25182 (dp25183 S'editable' p25184 I00 sS'value' p25185 NssS'summary_default' p25186 (dp25187 S'editable' p25188 I00 sS'value' p25189 S'none' p25190 sssS'description' p25191 (dp25192 S'editable' p25193 I01 sS'value' p25194 g47 sssS'updated_by' p25195 (dp25196 S'mandatory' p25197 (dp25198 S'editable' p25199 I00 sS'value' p25200 I00 ssS'name' p25201 (dp25202 S'editable' p25203 I01 sS'value' p25204 S'Updated by' p25205 ssS'data_type' p25206 (dp25207 S'editable' p25208 I00 sS'value' p25209 S'entity' p25210 ssS'entity_type' p25211 (dp25212 S'editable' p25213 I00 sS'value' p25214 S'LocalStorage' p25215 ssS'editable' p25216 (dp25217 S'editable' p25218 I00 sS'value' p25219 I00 ssS'unique' p25220 (dp25221 S'editable' p25222 I00 sS'value' p25223 I00 ssS'properties' p25224 (dp25225 S'default_value' p25226 (dp25227 S'editable' p25228 I00 sS'value' p25229 NssS'summary_default' p25230 (dp25231 S'editable' p25232 I00 sS'value' p25233 S'none' p25234 ssS'valid_types' p25235 (dp25236 S'editable' p25237 I00 sS'value' p25238 (lp25239 S'HumanUser' p25240 aS'ApiUser' p25241 asssS'description' p25242 (dp25243 S'editable' p25244 I01 sS'value' p25245 g47 sssS'cached_display_name' p25246 (dp25247 S'mandatory' p25248 (dp25249 S'editable' p25250 I00 sS'value' p25251 I00 ssS'name' p25252 (dp25253 S'editable' p25254 I01 sS'value' p25255 S'Cached Display Name' p25256 ssS'data_type' p25257 (dp25258 S'editable' p25259 I00 sS'value' p25260 S'text' p25261 ssS'entity_type' p25262 (dp25263 S'editable' p25264 I00 sS'value' p25265 S'LocalStorage' p25266 ssS'editable' p25267 (dp25268 S'editable' p25269 I00 sS'value' p25270 I01 ssS'unique' p25271 (dp25272 S'editable' p25273 I00 sS'value' p25274 I00 ssS'properties' p25275 (dp25276 S'default_value' p25277 (dp25278 S'editable' p25279 I00 sS'value' p25280 NssS'summary_default' p25281 (dp25282 S'editable' p25283 I00 sS'value' p25284 S'none' p25285 sssS'description' p25286 (dp25287 S'editable' p25288 I01 sS'value' p25289 g47 sssS'id' p25290 (dp25291 S'mandatory' p25292 (dp25293 S'editable' p25294 I00 sS'value' p25295 I00 ssS'name' p25296 (dp25297 S'editable' p25298 I01 sS'value' p25299 S'Id' p25300 ssS'data_type' p25301 (dp25302 S'editable' p25303 I00 sS'value' p25304 S'number' p25305 ssS'entity_type' p25306 (dp25307 S'editable' p25308 I00 sS'value' p25309 S'LocalStorage' p25310 ssS'editable' p25311 (dp25312 S'editable' p25313 I00 sS'value' p25314 I00 ssS'unique' p25315 (dp25316 S'editable' p25317 I00 sS'value' p25318 I00 ssS'properties' p25319 (dp25320 S'default_value' p25321 (dp25322 S'editable' p25323 I00 sS'value' p25324 NssS'summary_default' p25325 (dp25326 S'editable' p25327 I00 sS'value' p25328 S'none' p25329 sssS'description' p25330 (dp25331 S'editable' p25332 I01 sS'value' p25333 g47 sssS'linux_path' p25334 (dp25335 S'mandatory' p25336 (dp25337 S'editable' p25338 I00 sS'value' p25339 I00 ssS'name' p25340 (dp25341 S'editable' p25342 I01 sS'value' p25343 S'Linux Path' p25344 ssS'data_type' p25345 (dp25346 S'editable' p25347 I00 sS'value' p25348 S'text' p25349 ssS'entity_type' p25350 (dp25351 S'editable' p25352 I00 sS'value' p25353 S'LocalStorage' p25354 ssS'editable' p25355 (dp25356 S'editable' p25357 I00 sS'value' p25358 I01 ssS'unique' p25359 (dp25360 S'editable' p25361 I00 sS'value' p25362 I00 ssS'properties' p25363 (dp25364 S'default_value' p25365 (dp25366 S'editable' p25367 I00 sS'value' p25368 NssS'summary_default' p25369 (dp25370 S'editable' p25371 I00 sS'value' p25372 S'none' p25373 sssS'description' p25374 (dp25375 S'editable' p25376 I01 sS'value' p25377 g47 sssS'description' p25378 (dp25379 S'mandatory' p25380 (dp25381 S'editable' p25382 I00 sS'value' p25383 I00 ssS'name' p25384 (dp25385 S'editable' p25386 I01 sS'value' p25387 S'Description' p25388 ssS'data_type' p25389 (dp25390 S'editable' p25391 I00 sS'value' p25392 S'text' p25393 ssS'entity_type' p25394 (dp25395 S'editable' p25396 I00 sS'value' p25397 S'LocalStorage' p25398 ssS'editable' p25399 (dp25400 S'editable' p25401 I00 sS'value' p25402 I01 ssS'unique' p25403 (dp25404 S'editable' p25405 I00 sS'value' p25406 I00 ssS'properties' p25407 (dp25408 S'default_value' p25409 (dp25410 S'editable' p25411 I00 sS'value' p25412 NssS'summary_default' p25413 (dp25414 S'editable' p25415 I00 sS'value' p25416 S'none' p25417 sssS'description' p25418 (dp25419 S'editable' p25420 I01 sS'value' p25421 g47 ssssS'TaskTemplate' p25422 (dp25423 S'open_notes_count' p25424 (dp25425 S'mandatory' p25426 (dp25427 S'editable' p25428 I00 sS'value' p25429 I00 ssS'name' p25430 (dp25431 S'editable' p25432 I01 sS'value' p25433 S'Open Notes Count' p25434 ssS'data_type' p25435 (dp25436 S'editable' p25437 I00 sS'value' p25438 S'text' p25439 ssS'entity_type' p25440 (dp25441 S'editable' p25442 I00 sS'value' p25443 S'TaskTemplate' p25444 ssS'editable' p25445 (dp25446 S'editable' p25447 I00 sS'value' p25448 I00 ssS'unique' p25449 (dp25450 S'editable' p25451 I00 sS'value' p25452 I00 ssS'properties' p25453 (dp25454 S'default_value' p25455 (dp25456 S'editable' p25457 I00 sS'value' p25458 NssS'summary_default' p25459 (dp25460 S'editable' p25461 I01 sS'value' p25462 S'none' p25463 sssS'description' p25464 (dp25465 S'editable' p25466 I01 sS'value' p25467 g47 sssS'code' p25468 (dp25469 S'mandatory' p25470 (dp25471 S'editable' p25472 I00 sS'value' p25473 I01 ssS'name' p25474 (dp25475 S'editable' p25476 I01 sS'value' p25477 S'Task Template Name' p25478 ssS'data_type' p25479 (dp25480 S'editable' p25481 I00 sS'value' p25482 S'text' p25483 ssS'entity_type' p25484 (dp25485 S'editable' p25486 I00 sS'value' p25487 S'TaskTemplate' p25488 ssS'editable' p25489 (dp25490 S'editable' p25491 I00 sS'value' p25492 I01 ssS'unique' p25493 (dp25494 S'editable' p25495 I00 sS'value' p25496 I00 ssS'properties' p25497 (dp25498 S'default_value' p25499 (dp25500 S'editable' p25501 I00 sS'value' p25502 NssS'summary_default' p25503 (dp25504 S'editable' p25505 I01 sS'value' p25506 S'none' p25507 sssS'description' p25508 (dp25509 S'editable' p25510 I01 sS'value' p25511 g47 sssS'open_notes' p25512 (dp25513 S'mandatory' p25514 (dp25515 S'editable' p25516 I00 sS'value' p25517 I00 ssS'name' p25518 (dp25519 S'editable' p25520 I01 sS'value' p25521 S'Open Notes' p25522 ssS'data_type' p25523 (dp25524 S'editable' p25525 I00 sS'value' p25526 S'multi_entity' p25527 ssS'entity_type' p25528 (dp25529 S'editable' p25530 I00 sS'value' p25531 S'TaskTemplate' p25532 ssS'editable' p25533 (dp25534 S'editable' p25535 I00 sS'value' p25536 I00 ssS'unique' p25537 (dp25538 S'editable' p25539 I00 sS'value' p25540 I00 ssS'properties' p25541 (dp25542 S'default_value' p25543 (dp25544 S'editable' p25545 I00 sS'value' p25546 NssS'summary_default' p25547 (dp25548 S'editable' p25549 I01 sS'value' p25550 S'none' p25551 ssS'valid_types' p25552 (dp25553 S'editable' p25554 I01 sS'value' p25555 (lp25556 S'Note' p25557 asssS'description' p25558 (dp25559 S'editable' p25560 I01 sS'value' p25561 g47 sssS'description' p25562 (dp25563 S'mandatory' p25564 (dp25565 S'editable' p25566 I00 sS'value' p25567 I00 ssS'name' p25568 (dp25569 S'editable' p25570 I01 sS'value' p25571 S'Description' p25572 ssS'data_type' p25573 (dp25574 S'editable' p25575 I00 sS'value' p25576 S'text' p25577 ssS'entity_type' p25578 (dp25579 S'editable' p25580 I00 sS'value' p25581 S'TaskTemplate' p25582 ssS'editable' p25583 (dp25584 S'editable' p25585 I00 sS'value' p25586 I01 ssS'unique' p25587 (dp25588 S'editable' p25589 I00 sS'value' p25590 I00 ssS'properties' p25591 (dp25592 S'default_value' p25593 (dp25594 S'editable' p25595 I00 sS'value' p25596 NssS'summary_default' p25597 (dp25598 S'editable' p25599 I01 sS'value' p25600 S'none' p25601 sssS'description' p25602 (dp25603 S'editable' p25604 I01 sS'value' p25605 g47 sssS'entity_type' p25606 (dp25607 S'mandatory' p25608 (dp25609 S'editable' p25610 I00 sS'value' p25611 I00 ssS'name' p25612 (dp25613 S'editable' p25614 I01 sS'value' p25615 S'Entity Type' p25616 ssS'data_type' p25617 (dp25618 S'editable' p25619 I00 sS'value' p25620 S'entity_type' p25621 ssS'entity_type' p25622 (dp25623 S'editable' p25624 I00 sS'value' p25625 S'TaskTemplate' p25626 ssS'editable' p25627 (dp25628 S'editable' p25629 I00 sS'value' p25630 I00 ssS'unique' p25631 (dp25632 S'editable' p25633 I00 sS'value' p25634 I00 ssS'properties' p25635 (dp25636 S'default_value' p25637 (dp25638 S'editable' p25639 I00 sS'value' p25640 NssS'summary_default' p25641 (dp25642 S'editable' p25643 I01 sS'value' p25644 S'none' p25645 sssS'description' p25646 (dp25647 S'editable' p25648 I01 sS'value' p25649 g47 sssS'notes' p25650 (dp25651 S'mandatory' p25652 (dp25653 S'editable' p25654 I00 sS'value' p25655 I00 ssS'name' p25656 (dp25657 S'editable' p25658 I01 sS'value' p25659 S'Notes' p25660 ssS'data_type' p25661 (dp25662 S'editable' p25663 I00 sS'value' p25664 S'multi_entity' p25665 ssS'entity_type' p25666 (dp25667 S'editable' p25668 I00 sS'value' p25669 S'TaskTemplate' p25670 ssS'editable' p25671 (dp25672 S'editable' p25673 I00 sS'value' p25674 I01 ssS'unique' p25675 (dp25676 S'editable' p25677 I00 sS'value' p25678 I00 ssS'properties' p25679 (dp25680 S'default_value' p25681 (dp25682 S'editable' p25683 I00 sS'value' p25684 NssS'summary_default' p25685 (dp25686 S'editable' p25687 I01 sS'value' p25688 S'none' p25689 ssS'valid_types' p25690 (dp25691 S'editable' p25692 I01 sS'value' p25693 (lp25694 S'Note' p25695 asssS'description' p25696 (dp25697 S'editable' p25698 I01 sS'value' p25699 g47 sssS'created_at' p25700 (dp25701 S'mandatory' p25702 (dp25703 S'editable' p25704 I00 sS'value' p25705 I00 ssS'name' p25706 (dp25707 S'editable' p25708 I01 sS'value' p25709 S'Date Created' p25710 ssS'data_type' p25711 (dp25712 S'editable' p25713 I00 sS'value' p25714 S'date_time' p25715 ssS'entity_type' p25716 (dp25717 S'editable' p25718 I00 sS'value' p25719 S'TaskTemplate' p25720 ssS'editable' p25721 (dp25722 S'editable' p25723 I00 sS'value' p25724 I00 ssS'unique' p25725 (dp25726 S'editable' p25727 I00 sS'value' p25728 I00 ssS'properties' p25729 (dp25730 S'default_value' p25731 (dp25732 S'editable' p25733 I00 sS'value' p25734 NssS'summary_default' p25735 (dp25736 S'editable' p25737 I01 sS'value' p25738 S'none' p25739 sssS'description' p25740 (dp25741 S'editable' p25742 I01 sS'value' p25743 g47 sssS'updated_at' p25744 (dp25745 S'mandatory' p25746 (dp25747 S'editable' p25748 I00 sS'value' p25749 I00 ssS'name' p25750 (dp25751 S'editable' p25752 I01 sS'value' p25753 S'Date Updated' p25754 ssS'data_type' p25755 (dp25756 S'editable' p25757 I00 sS'value' p25758 S'date_time' p25759 ssS'entity_type' p25760 (dp25761 S'editable' p25762 I00 sS'value' p25763 S'TaskTemplate' p25764 ssS'editable' p25765 (dp25766 S'editable' p25767 I00 sS'value' p25768 I00 ssS'unique' p25769 (dp25770 S'editable' p25771 I00 sS'value' p25772 I00 ssS'properties' p25773 (dp25774 S'default_value' p25775 (dp25776 S'editable' p25777 I00 sS'value' p25778 NssS'summary_default' p25779 (dp25780 S'editable' p25781 I01 sS'value' p25782 S'none' p25783 sssS'description' p25784 (dp25785 S'editable' p25786 I01 sS'value' p25787 g47 sssS'created_by' p25788 (dp25789 S'mandatory' p25790 (dp25791 S'editable' p25792 I00 sS'value' p25793 I00 ssS'name' p25794 (dp25795 S'editable' p25796 I01 sS'value' p25797 S'Created by' p25798 ssS'data_type' p25799 (dp25800 S'editable' p25801 I00 sS'value' p25802 S'entity' p25803 ssS'entity_type' p25804 (dp25805 S'editable' p25806 I00 sS'value' p25807 S'TaskTemplate' p25808 ssS'editable' p25809 (dp25810 S'editable' p25811 I00 sS'value' p25812 I00 ssS'unique' p25813 (dp25814 S'editable' p25815 I00 sS'value' p25816 I00 ssS'properties' p25817 (dp25818 S'default_value' p25819 (dp25820 S'editable' p25821 I00 sS'value' p25822 NssS'summary_default' p25823 (dp25824 S'editable' p25825 I01 sS'value' p25826 S'none' p25827 ssS'valid_types' p25828 (dp25829 S'editable' p25830 I01 sS'value' p25831 (lp25832 S'HumanUser' p25833 aS'ApiUser' p25834 asssS'description' p25835 (dp25836 S'editable' p25837 I01 sS'value' p25838 g47 sssS'task_count' p25839 (dp25840 S'mandatory' p25841 (dp25842 S'editable' p25843 I00 sS'value' p25844 I00 ssS'name' p25845 (dp25846 S'editable' p25847 I01 sS'value' p25848 S'Tasks' p25849 ssS'data_type' p25850 (dp25851 S'editable' p25852 I00 sS'value' p25853 S'number' p25854 ssS'entity_type' p25855 (dp25856 S'editable' p25857 I00 sS'value' p25858 S'TaskTemplate' p25859 ssS'editable' p25860 (dp25861 S'editable' p25862 I00 sS'value' p25863 I00 ssS'unique' p25864 (dp25865 S'editable' p25866 I00 sS'value' p25867 I00 ssS'properties' p25868 (dp25869 S'default_value' p25870 (dp25871 S'editable' p25872 I00 sS'value' p25873 NssS'summary_default' p25874 (dp25875 S'editable' p25876 I01 sS'value' p25877 S'none' p25878 sssS'description' p25879 (dp25880 S'editable' p25881 I01 sS'value' p25882 g47 sssS'cached_display_name' p25883 (dp25884 S'mandatory' p25885 (dp25886 S'editable' p25887 I00 sS'value' p25888 I00 ssS'name' p25889 (dp25890 S'editable' p25891 I01 sS'value' p25892 S'Cached Display Name' p25893 ssS'data_type' p25894 (dp25895 S'editable' p25896 I00 sS'value' p25897 S'text' p25898 ssS'entity_type' p25899 (dp25900 S'editable' p25901 I00 sS'value' p25902 S'TaskTemplate' p25903 ssS'editable' p25904 (dp25905 S'editable' p25906 I00 sS'value' p25907 I01 ssS'unique' p25908 (dp25909 S'editable' p25910 I00 sS'value' p25911 I00 ssS'properties' p25912 (dp25913 S'default_value' p25914 (dp25915 S'editable' p25916 I00 sS'value' p25917 NssS'summary_default' p25918 (dp25919 S'editable' p25920 I00 sS'value' p25921 S'none' p25922 sssS'description' p25923 (dp25924 S'editable' p25925 I01 sS'value' p25926 g47 sssS'id' p25927 (dp25928 S'mandatory' p25929 (dp25930 S'editable' p25931 I00 sS'value' p25932 I00 ssS'name' p25933 (dp25934 S'editable' p25935 I01 sS'value' p25936 S'Id' p25937 ssS'data_type' p25938 (dp25939 S'editable' p25940 I00 sS'value' p25941 S'number' p25942 ssS'entity_type' p25943 (dp25944 S'editable' p25945 I00 sS'value' p25946 S'TaskTemplate' p25947 ssS'editable' p25948 (dp25949 S'editable' p25950 I00 sS'value' p25951 I00 ssS'unique' p25952 (dp25953 S'editable' p25954 I00 sS'value' p25955 I00 ssS'properties' p25956 (dp25957 S'default_value' p25958 (dp25959 S'editable' p25960 I00 sS'value' p25961 NssS'summary_default' p25962 (dp25963 S'editable' p25964 I01 sS'value' p25965 S'none' p25966 sssS'description' p25967 (dp25968 S'editable' p25969 I01 sS'value' p25970 g47 sssS'updated_by' p25971 (dp25972 S'mandatory' p25973 (dp25974 S'editable' p25975 I00 sS'value' p25976 I00 ssS'name' p25977 (dp25978 S'editable' p25979 I01 sS'value' p25980 S'Updated by' p25981 ssS'data_type' p25982 (dp25983 S'editable' p25984 I00 sS'value' p25985 S'entity' p25986 ssS'entity_type' p25987 (dp25988 S'editable' p25989 I00 sS'value' p25990 S'TaskTemplate' p25991 ssS'editable' p25992 (dp25993 S'editable' p25994 I00 sS'value' p25995 I00 ssS'unique' p25996 (dp25997 S'editable' p25998 I00 sS'value' p25999 I00 ssS'properties' p26000 (dp26001 S'default_value' p26002 (dp26003 S'editable' p26004 I00 sS'value' p26005 NssS'summary_default' p26006 (dp26007 S'editable' p26008 I01 sS'value' p26009 S'none' p26010 ssS'valid_types' p26011 (dp26012 S'editable' p26013 I01 sS'value' p26014 (lp26015 S'HumanUser' p26016 aS'ApiUser' p26017 asssS'description' p26018 (dp26019 S'editable' p26020 I01 sS'value' p26021 g47 ssssS'RevisionTicketConnection' p26022 (dp26023 S'id' p26024 (dp26025 S'mandatory' p26026 (dp26027 S'editable' p26028 I00 sS'value' p26029 I01 ssS'name' p26030 (dp26031 S'editable' p26032 I01 sS'value' p26033 S'Id' p26034 ssS'data_type' p26035 (dp26036 S'editable' p26037 I00 sS'value' p26038 S'number' p26039 ssS'entity_type' p26040 (dp26041 S'editable' p26042 I00 sS'value' p26043 S'RevisionTicketConnection' p26044 ssS'editable' p26045 (dp26046 S'editable' p26047 I00 sS'value' p26048 I00 ssS'unique' p26049 (dp26050 S'editable' p26051 I00 sS'value' p26052 I00 ssS'properties' p26053 (dp26054 S'default_value' p26055 (dp26056 S'editable' p26057 I00 sS'value' p26058 NssS'summary_default' p26059 (dp26060 S'editable' p26061 I00 sS'value' p26062 S'none' p26063 sssS'description' p26064 (dp26065 S'editable' p26066 I01 sS'value' p26067 g47 sssS'cached_display_name' p26068 (dp26069 S'mandatory' p26070 (dp26071 S'editable' p26072 I00 sS'value' p26073 I00 ssS'name' p26074 (dp26075 S'editable' p26076 I01 sS'value' p26077 S'Cached Display Name' p26078 ssS'data_type' p26079 (dp26080 S'editable' p26081 I00 sS'value' p26082 S'text' p26083 ssS'entity_type' p26084 (dp26085 S'editable' p26086 I00 sS'value' p26087 S'RevisionTicketConnection' p26088 ssS'editable' p26089 (dp26090 S'editable' p26091 I00 sS'value' p26092 I01 ssS'unique' p26093 (dp26094 S'editable' p26095 I00 sS'value' p26096 I00 ssS'properties' p26097 (dp26098 S'default_value' p26099 (dp26100 S'editable' p26101 I00 sS'value' p26102 NssS'summary_default' p26103 (dp26104 S'editable' p26105 I00 sS'value' p26106 S'none' p26107 sssS'description' p26108 (dp26109 S'editable' p26110 I01 sS'value' p26111 g47 sssS'ticket' p26112 (dp26113 S'mandatory' p26114 (dp26115 S'editable' p26116 I00 sS'value' p26117 I00 ssS'name' p26118 (dp26119 S'editable' p26120 I01 sS'value' p26121 S'Ticket' p26122 ssS'data_type' p26123 (dp26124 S'editable' p26125 I00 sS'value' p26126 S'entity' p26127 ssS'entity_type' p26128 (dp26129 S'editable' p26130 I00 sS'value' p26131 S'RevisionTicketConnection' p26132 ssS'editable' p26133 (dp26134 S'editable' p26135 I00 sS'value' p26136 I00 ssS'unique' p26137 (dp26138 S'editable' p26139 I00 sS'value' p26140 I00 ssS'properties' p26141 (dp26142 S'default_value' p26143 (dp26144 S'editable' p26145 I00 sS'value' p26146 NssS'summary_default' p26147 (dp26148 S'editable' p26149 I00 sS'value' p26150 S'none' p26151 ssS'valid_types' p26152 (dp26153 S'editable' p26154 I00 sS'value' p26155 (lp26156 S'Ticket' p26157 asssS'description' p26158 (dp26159 S'editable' p26160 I01 sS'value' p26161 g47 sssS'revision' p26162 (dp26163 S'mandatory' p26164 (dp26165 S'editable' p26166 I00 sS'value' p26167 I00 ssS'name' p26168 (dp26169 S'editable' p26170 I01 sS'value' p26171 S'Revision' p26172 ssS'data_type' p26173 (dp26174 S'editable' p26175 I00 sS'value' p26176 S'entity' p26177 ssS'entity_type' p26178 (dp26179 S'editable' p26180 I00 sS'value' p26181 S'RevisionTicketConnection' p26182 ssS'editable' p26183 (dp26184 S'editable' p26185 I00 sS'value' p26186 I00 ssS'unique' p26187 (dp26188 S'editable' p26189 I00 sS'value' p26190 I00 ssS'properties' p26191 (dp26192 S'default_value' p26193 (dp26194 S'editable' p26195 I00 sS'value' p26196 NssS'summary_default' p26197 (dp26198 S'editable' p26199 I00 sS'value' p26200 S'none' p26201 ssS'valid_types' p26202 (dp26203 S'editable' p26204 I00 sS'value' p26205 (lp26206 S'Revision' p26207 asssS'description' p26208 (dp26209 S'editable' p26210 I01 sS'value' p26211 g47 ssssS'PerformerShootDayConnection' p26212 (dp26213 S'cached_display_name' p26214 (dp26215 S'mandatory' p26216 (dp26217 S'editable' p26218 I00 sS'value' p26219 I00 ssS'name' p26220 (dp26221 S'editable' p26222 I01 sS'value' p26223 S'Cached Display Name' p26224 ssS'data_type' p26225 (dp26226 S'editable' p26227 I00 sS'value' p26228 S'text' p26229 ssS'entity_type' p26230 (dp26231 S'editable' p26232 I00 sS'value' p26233 S'PerformerShootDayConnection' p26234 ssS'editable' p26235 (dp26236 S'editable' p26237 I00 sS'value' p26238 I01 ssS'unique' p26239 (dp26240 S'editable' p26241 I00 sS'value' p26242 I00 ssS'properties' p26243 (dp26244 S'default_value' p26245 (dp26246 S'editable' p26247 I00 sS'value' p26248 NssS'summary_default' p26249 (dp26250 S'editable' p26251 I00 sS'value' p26252 S'none' p26253 sssS'description' p26254 (dp26255 S'editable' p26256 I01 sS'value' p26257 g47 sssS'performer' p26258 (dp26259 S'mandatory' p26260 (dp26261 S'editable' p26262 I00 sS'value' p26263 I00 ssS'name' p26264 (dp26265 S'editable' p26266 I01 sS'value' p26267 S'Performer' p26268 ssS'data_type' p26269 (dp26270 S'editable' p26271 I00 sS'value' p26272 S'entity' p26273 ssS'entity_type' p26274 (dp26275 S'editable' p26276 I00 sS'value' p26277 S'PerformerShootDayConnection' p26278 ssS'editable' p26279 (dp26280 S'editable' p26281 I00 sS'value' p26282 I00 ssS'unique' p26283 (dp26284 S'editable' p26285 I00 sS'value' p26286 I00 ssS'properties' p26287 (dp26288 S'default_value' p26289 (dp26290 S'editable' p26291 I00 sS'value' p26292 NssS'summary_default' p26293 (dp26294 S'editable' p26295 I00 sS'value' p26296 S'none' p26297 ssS'valid_types' p26298 (dp26299 S'editable' p26300 I00 sS'value' p26301 (lp26302 S'Performer' p26303 asssS'description' p26304 (dp26305 S'editable' p26306 I01 sS'value' p26307 g47 sssS'id' p26308 (dp26309 S'mandatory' p26310 (dp26311 S'editable' p26312 I00 sS'value' p26313 I01 ssS'name' p26314 (dp26315 S'editable' p26316 I01 sS'value' p26317 S'Id' p26318 ssS'data_type' p26319 (dp26320 S'editable' p26321 I00 sS'value' p26322 S'number' p26323 ssS'entity_type' p26324 (dp26325 S'editable' p26326 I00 sS'value' p26327 S'PerformerShootDayConnection' p26328 ssS'editable' p26329 (dp26330 S'editable' p26331 I00 sS'value' p26332 I00 ssS'unique' p26333 (dp26334 S'editable' p26335 I00 sS'value' p26336 I00 ssS'properties' p26337 (dp26338 S'default_value' p26339 (dp26340 S'editable' p26341 I00 sS'value' p26342 NssS'summary_default' p26343 (dp26344 S'editable' p26345 I00 sS'value' p26346 S'none' p26347 sssS'description' p26348 (dp26349 S'editable' p26350 I01 sS'value' p26351 g47 sssS'shoot_day' p26352 (dp26353 S'mandatory' p26354 (dp26355 S'editable' p26356 I00 sS'value' p26357 I00 ssS'name' p26358 (dp26359 S'editable' p26360 I01 sS'value' p26361 S'Shoot Day' p26362 ssS'data_type' p26363 (dp26364 S'editable' p26365 I00 sS'value' p26366 S'entity' p26367 ssS'entity_type' p26368 (dp26369 S'editable' p26370 I00 sS'value' p26371 S'PerformerShootDayConnection' p26372 ssS'editable' p26373 (dp26374 S'editable' p26375 I00 sS'value' p26376 I00 ssS'unique' p26377 (dp26378 S'editable' p26379 I00 sS'value' p26380 I00 ssS'properties' p26381 (dp26382 S'default_value' p26383 (dp26384 S'editable' p26385 I00 sS'value' p26386 NssS'summary_default' p26387 (dp26388 S'editable' p26389 I00 sS'value' p26390 S'none' p26391 ssS'valid_types' p26392 (dp26393 S'editable' p26394 I00 sS'value' p26395 (lp26396 S'ShootDay' p26397 asssS'description' p26398 (dp26399 S'editable' p26400 I01 sS'value' p26401 g47 ssssS'PipelineConfiguration' p26402 (dp26403 S'code' p26404 (dp26405 S'mandatory' p26406 (dp26407 S'editable' p26408 I00 sS'value' p26409 I01 ssS'name' p26410 (dp26411 S'editable' p26412 I01 sS'value' p26413 S'Config Name' p26414 ssS'data_type' p26415 (dp26416 S'editable' p26417 I00 sS'value' p26418 S'text' p26419 ssS'entity_type' p26420 (dp26421 S'editable' p26422 I00 sS'value' p26423 S'PipelineConfiguration' p26424 ssS'editable' p26425 (dp26426 S'editable' p26427 I00 sS'value' p26428 I01 ssS'unique' p26429 (dp26430 S'editable' p26431 I00 sS'value' p26432 I00 ssS'properties' p26433 (dp26434 S'default_value' p26435 (dp26436 S'editable' p26437 I00 sS'value' p26438 NssS'summary_default' p26439 (dp26440 S'editable' p26441 I00 sS'value' p26442 S'none' p26443 sssS'description' p26444 (dp26445 S'editable' p26446 I01 sS'value' p26447 g47 sssS'users' p26448 (dp26449 S'mandatory' p26450 (dp26451 S'editable' p26452 I00 sS'value' p26453 I00 ssS'name' p26454 (dp26455 S'editable' p26456 I01 sS'value' p26457 S'User Restrictions' p26458 ssS'data_type' p26459 (dp26460 S'editable' p26461 I00 sS'value' p26462 S'multi_entity' p26463 ssS'entity_type' p26464 (dp26465 S'editable' p26466 I00 sS'value' p26467 S'PipelineConfiguration' p26468 ssS'editable' p26469 (dp26470 S'editable' p26471 I00 sS'value' p26472 I01 ssS'unique' p26473 (dp26474 S'editable' p26475 I00 sS'value' p26476 I00 ssS'properties' p26477 (dp26478 S'default_value' p26479 (dp26480 S'editable' p26481 I00 sS'value' p26482 NssS'summary_default' p26483 (dp26484 S'editable' p26485 I00 sS'value' p26486 S'none' p26487 ssS'valid_types' p26488 (dp26489 S'editable' p26490 I00 sS'value' p26491 (lp26492 S'HumanUser' p26493 asssS'description' p26494 (dp26495 S'editable' p26496 I01 sS'value' p26497 g47 sssS'mac_path' p26498 (dp26499 S'mandatory' p26500 (dp26501 S'editable' p26502 I00 sS'value' p26503 I00 ssS'name' p26504 (dp26505 S'editable' p26506 I01 sS'value' p26507 S'Mac Path' p26508 ssS'data_type' p26509 (dp26510 S'editable' p26511 I00 sS'value' p26512 S'text' p26513 ssS'entity_type' p26514 (dp26515 S'editable' p26516 I00 sS'value' p26517 S'PipelineConfiguration' p26518 ssS'editable' p26519 (dp26520 S'editable' p26521 I00 sS'value' p26522 I01 ssS'unique' p26523 (dp26524 S'editable' p26525 I00 sS'value' p26526 I00 ssS'properties' p26527 (dp26528 S'default_value' p26529 (dp26530 S'editable' p26531 I00 sS'value' p26532 NssS'summary_default' p26533 (dp26534 S'editable' p26535 I00 sS'value' p26536 S'none' p26537 sssS'description' p26538 (dp26539 S'editable' p26540 I01 sS'value' p26541 g47 sssS'created_at' p26542 (dp26543 S'mandatory' p26544 (dp26545 S'editable' p26546 I00 sS'value' p26547 I00 ssS'name' p26548 (dp26549 S'editable' p26550 I01 sS'value' p26551 S'Date Created' p26552 ssS'data_type' p26553 (dp26554 S'editable' p26555 I00 sS'value' p26556 S'date_time' p26557 ssS'entity_type' p26558 (dp26559 S'editable' p26560 I00 sS'value' p26561 S'PipelineConfiguration' p26562 ssS'editable' p26563 (dp26564 S'editable' p26565 I00 sS'value' p26566 I00 ssS'unique' p26567 (dp26568 S'editable' p26569 I00 sS'value' p26570 I00 ssS'properties' p26571 (dp26572 S'default_value' p26573 (dp26574 S'editable' p26575 I00 sS'value' p26576 NssS'summary_default' p26577 (dp26578 S'editable' p26579 I01 sS'value' p26580 S'none' p26581 sssS'description' p26582 (dp26583 S'editable' p26584 I01 sS'value' p26585 g47 sssS'updated_at' p26586 (dp26587 S'mandatory' p26588 (dp26589 S'editable' p26590 I00 sS'value' p26591 I00 ssS'name' p26592 (dp26593 S'editable' p26594 I01 sS'value' p26595 S'Date Updated' p26596 ssS'data_type' p26597 (dp26598 S'editable' p26599 I00 sS'value' p26600 S'date_time' p26601 ssS'entity_type' p26602 (dp26603 S'editable' p26604 I00 sS'value' p26605 S'PipelineConfiguration' p26606 ssS'editable' p26607 (dp26608 S'editable' p26609 I00 sS'value' p26610 I00 ssS'unique' p26611 (dp26612 S'editable' p26613 I00 sS'value' p26614 I00 ssS'properties' p26615 (dp26616 S'default_value' p26617 (dp26618 S'editable' p26619 I00 sS'value' p26620 NssS'summary_default' p26621 (dp26622 S'editable' p26623 I01 sS'value' p26624 S'none' p26625 sssS'description' p26626 (dp26627 S'editable' p26628 I01 sS'value' p26629 g47 sssS'created_by' p26630 (dp26631 S'mandatory' p26632 (dp26633 S'editable' p26634 I00 sS'value' p26635 I00 ssS'name' p26636 (dp26637 S'editable' p26638 I01 sS'value' p26639 S'Created by' p26640 ssS'data_type' p26641 (dp26642 S'editable' p26643 I00 sS'value' p26644 S'entity' p26645 ssS'entity_type' p26646 (dp26647 S'editable' p26648 I00 sS'value' p26649 S'PipelineConfiguration' p26650 ssS'editable' p26651 (dp26652 S'editable' p26653 I00 sS'value' p26654 I00 ssS'unique' p26655 (dp26656 S'editable' p26657 I00 sS'value' p26658 I00 ssS'properties' p26659 (dp26660 S'default_value' p26661 (dp26662 S'editable' p26663 I00 sS'value' p26664 NssS'summary_default' p26665 (dp26666 S'editable' p26667 I01 sS'value' p26668 S'none' p26669 ssS'valid_types' p26670 (dp26671 S'editable' p26672 I01 sS'value' p26673 (lp26674 S'HumanUser' p26675 aS'ApiUser' p26676 asssS'description' p26677 (dp26678 S'editable' p26679 I01 sS'value' p26680 g47 sssS'project' p26681 (dp26682 S'mandatory' p26683 (dp26684 S'editable' p26685 I00 sS'value' p26686 I00 ssS'name' p26687 (dp26688 S'editable' p26689 I01 sS'value' p26690 S'Project' p26691 ssS'data_type' p26692 (dp26693 S'editable' p26694 I00 sS'value' p26695 S'entity' p26696 ssS'entity_type' p26697 (dp26698 S'editable' p26699 I00 sS'value' p26700 S'PipelineConfiguration' p26701 ssS'editable' p26702 (dp26703 S'editable' p26704 I00 sS'value' p26705 I01 ssS'unique' p26706 (dp26707 S'editable' p26708 I00 sS'value' p26709 I00 ssS'properties' p26710 (dp26711 S'default_value' p26712 (dp26713 S'editable' p26714 I00 sS'value' p26715 NssS'summary_default' p26716 (dp26717 S'editable' p26718 I00 sS'value' p26719 S'none' p26720 ssS'valid_types' p26721 (dp26722 S'editable' p26723 I00 sS'value' p26724 (lp26725 S'Project' p26726 asssS'description' p26727 (dp26728 S'editable' p26729 I01 sS'value' p26730 g47 sssS'windows_path' p26731 (dp26732 S'mandatory' p26733 (dp26734 S'editable' p26735 I00 sS'value' p26736 I00 ssS'name' p26737 (dp26738 S'editable' p26739 I01 sS'value' p26740 S'Windows Path' p26741 ssS'data_type' p26742 (dp26743 S'editable' p26744 I00 sS'value' p26745 S'text' p26746 ssS'entity_type' p26747 (dp26748 S'editable' p26749 I00 sS'value' p26750 S'PipelineConfiguration' p26751 ssS'editable' p26752 (dp26753 S'editable' p26754 I00 sS'value' p26755 I01 ssS'unique' p26756 (dp26757 S'editable' p26758 I00 sS'value' p26759 I00 ssS'properties' p26760 (dp26761 S'default_value' p26762 (dp26763 S'editable' p26764 I00 sS'value' p26765 NssS'summary_default' p26766 (dp26767 S'editable' p26768 I00 sS'value' p26769 S'none' p26770 sssS'description' p26771 (dp26772 S'editable' p26773 I01 sS'value' p26774 g47 sssS'image' p26775 (dp26776 S'mandatory' p26777 (dp26778 S'editable' p26779 I00 sS'value' p26780 I00 ssS'name' p26781 (dp26782 S'editable' p26783 I01 sS'value' p26784 S'Thumbnail' p26785 ssS'data_type' p26786 (dp26787 S'editable' p26788 I00 sS'value' p26789 S'image' p26790 ssS'entity_type' p26791 (dp26792 S'editable' p26793 I00 sS'value' p26794 S'PipelineConfiguration' p26795 ssS'editable' p26796 (dp26797 S'editable' p26798 I00 sS'value' p26799 I01 ssS'unique' p26800 (dp26801 S'editable' p26802 I00 sS'value' p26803 I00 ssS'properties' p26804 (dp26805 S'default_value' p26806 (dp26807 S'editable' p26808 I00 sS'value' p26809 NssS'summary_default' p26810 (dp26811 S'editable' p26812 I01 sS'value' p26813 S'none' p26814 sssS'description' p26815 (dp26816 S'editable' p26817 I01 sS'value' p26818 g47 sssS'updated_by' p26819 (dp26820 S'mandatory' p26821 (dp26822 S'editable' p26823 I00 sS'value' p26824 I00 ssS'name' p26825 (dp26826 S'editable' p26827 I01 sS'value' p26828 S'Updated by' p26829 ssS'data_type' p26830 (dp26831 S'editable' p26832 I00 sS'value' p26833 S'entity' p26834 ssS'entity_type' p26835 (dp26836 S'editable' p26837 I00 sS'value' p26838 S'PipelineConfiguration' p26839 ssS'editable' p26840 (dp26841 S'editable' p26842 I00 sS'value' p26843 I00 ssS'unique' p26844 (dp26845 S'editable' p26846 I00 sS'value' p26847 I00 ssS'properties' p26848 (dp26849 S'default_value' p26850 (dp26851 S'editable' p26852 I00 sS'value' p26853 NssS'summary_default' p26854 (dp26855 S'editable' p26856 I01 sS'value' p26857 S'none' p26858 ssS'valid_types' p26859 (dp26860 S'editable' p26861 I01 sS'value' p26862 (lp26863 S'HumanUser' p26864 aS'ApiUser' p26865 asssS'description' p26866 (dp26867 S'editable' p26868 I01 sS'value' p26869 g47 sssS'cached_display_name' p26870 (dp26871 S'mandatory' p26872 (dp26873 S'editable' p26874 I00 sS'value' p26875 I00 ssS'name' p26876 (dp26877 S'editable' p26878 I01 sS'value' p26879 S'Cached Display Name' p26880 ssS'data_type' p26881 (dp26882 S'editable' p26883 I00 sS'value' p26884 S'text' p26885 ssS'entity_type' p26886 (dp26887 S'editable' p26888 I00 sS'value' p26889 S'PipelineConfiguration' p26890 ssS'editable' p26891 (dp26892 S'editable' p26893 I00 sS'value' p26894 I01 ssS'unique' p26895 (dp26896 S'editable' p26897 I00 sS'value' p26898 I00 ssS'properties' p26899 (dp26900 S'default_value' p26901 (dp26902 S'editable' p26903 I00 sS'value' p26904 NssS'summary_default' p26905 (dp26906 S'editable' p26907 I00 sS'value' p26908 S'none' p26909 sssS'description' p26910 (dp26911 S'editable' p26912 I01 sS'value' p26913 g47 sssS'tag_list' p26914 (dp26915 S'mandatory' p26916 (dp26917 S'editable' p26918 I00 sS'value' p26919 I00 ssS'name' p26920 (dp26921 S'editable' p26922 I01 sS'value' p26923 S'Tags' p26924 ssS'data_type' p26925 (dp26926 S'editable' p26927 I00 sS'value' p26928 S'tag_list' p26929 ssS'entity_type' p26930 (dp26931 S'editable' p26932 I00 sS'value' p26933 S'PipelineConfiguration' p26934 ssS'editable' p26935 (dp26936 S'editable' p26937 I00 sS'value' p26938 I01 ssS'unique' p26939 (dp26940 S'editable' p26941 I00 sS'value' p26942 I00 ssS'properties' p26943 (dp26944 S'default_value' p26945 (dp26946 S'editable' p26947 I00 sS'value' p26948 NssS'summary_default' p26949 (dp26950 S'editable' p26951 I01 sS'value' p26952 S'none' p26953 ssS'valid_types' p26954 (dp26955 S'editable' p26956 I01 sS'value' p26957 (lp26958 S'Tag' p26959 asssS'description' p26960 (dp26961 S'editable' p26962 I01 sS'value' p26963 g47 sssS'id' p26964 (dp26965 S'mandatory' p26966 (dp26967 S'editable' p26968 I00 sS'value' p26969 I00 ssS'name' p26970 (dp26971 S'editable' p26972 I01 sS'value' p26973 S'Id' p26974 ssS'data_type' p26975 (dp26976 S'editable' p26977 I00 sS'value' p26978 S'number' p26979 ssS'entity_type' p26980 (dp26981 S'editable' p26982 I00 sS'value' p26983 S'PipelineConfiguration' p26984 ssS'editable' p26985 (dp26986 S'editable' p26987 I00 sS'value' p26988 I00 ssS'unique' p26989 (dp26990 S'editable' p26991 I00 sS'value' p26992 I00 ssS'properties' p26993 (dp26994 S'default_value' p26995 (dp26996 S'editable' p26997 I00 sS'value' p26998 NssS'summary_default' p26999 (dp27000 S'editable' p27001 I01 sS'value' p27002 S'none' p27003 sssS'description' p27004 (dp27005 S'editable' p27006 I01 sS'value' p27007 g47 sssS'linux_path' p27008 (dp27009 S'mandatory' p27010 (dp27011 S'editable' p27012 I00 sS'value' p27013 I00 ssS'name' p27014 (dp27015 S'editable' p27016 I01 sS'value' p27017 S'Linux Path' p27018 ssS'data_type' p27019 (dp27020 S'editable' p27021 I00 sS'value' p27022 S'text' p27023 ssS'entity_type' p27024 (dp27025 S'editable' p27026 I00 sS'value' p27027 S'PipelineConfiguration' p27028 ssS'editable' p27029 (dp27030 S'editable' p27031 I00 sS'value' p27032 I01 ssS'unique' p27033 (dp27034 S'editable' p27035 I00 sS'value' p27036 I00 ssS'properties' p27037 (dp27038 S'default_value' p27039 (dp27040 S'editable' p27041 I00 sS'value' p27042 NssS'summary_default' p27043 (dp27044 S'editable' p27045 I00 sS'value' p27046 S'none' p27047 sssS'description' p27048 (dp27049 S'editable' p27050 I01 sS'value' p27051 g47 sssS'description' p27052 (dp27053 S'mandatory' p27054 (dp27055 S'editable' p27056 I00 sS'value' p27057 I00 ssS'name' p27058 (dp27059 S'editable' p27060 I01 sS'value' p27061 S'Description' p27062 ssS'data_type' p27063 (dp27064 S'editable' p27065 I00 sS'value' p27066 S'text' p27067 ssS'entity_type' p27068 (dp27069 S'editable' p27070 I00 sS'value' p27071 S'PipelineConfiguration' p27072 ssS'editable' p27073 (dp27074 S'editable' p27075 I00 sS'value' p27076 I01 ssS'unique' p27077 (dp27078 S'editable' p27079 I00 sS'value' p27080 I00 ssS'properties' p27081 (dp27082 S'default_value' p27083 (dp27084 S'editable' p27085 I00 sS'value' p27086 NssS'summary_default' p27087 (dp27088 S'editable' p27089 I00 sS'value' p27090 S'none' p27091 sssS'description' p27092 (dp27093 S'editable' p27094 I01 sS'value' p27095 g47 ssssS'LaunchSceneConnection' p27096 (dp27097 S'id' p27098 (dp27099 S'mandatory' p27100 (dp27101 S'editable' p27102 I00 sS'value' p27103 I01 ssS'name' p27104 (dp27105 S'editable' p27106 I01 sS'value' p27107 S'Id' p27108 ssS'data_type' p27109 (dp27110 S'editable' p27111 I00 sS'value' p27112 S'number' p27113 ssS'entity_type' p27114 (dp27115 S'editable' p27116 I00 sS'value' p27117 S'LaunchSceneConnection' p27118 ssS'editable' p27119 (dp27120 S'editable' p27121 I00 sS'value' p27122 I00 ssS'unique' p27123 (dp27124 S'editable' p27125 I00 sS'value' p27126 I00 ssS'properties' p27127 (dp27128 S'default_value' p27129 (dp27130 S'editable' p27131 I00 sS'value' p27132 NssS'summary_default' p27133 (dp27134 S'editable' p27135 I00 sS'value' p27136 S'none' p27137 sssS'description' p27138 (dp27139 S'editable' p27140 I01 sS'value' p27141 g47 sssS'cached_display_name' p27142 (dp27143 S'mandatory' p27144 (dp27145 S'editable' p27146 I00 sS'value' p27147 I00 ssS'name' p27148 (dp27149 S'editable' p27150 I01 sS'value' p27151 S'Cached Display Name' p27152 ssS'data_type' p27153 (dp27154 S'editable' p27155 I00 sS'value' p27156 S'text' p27157 ssS'entity_type' p27158 (dp27159 S'editable' p27160 I00 sS'value' p27161 S'LaunchSceneConnection' p27162 ssS'editable' p27163 (dp27164 S'editable' p27165 I00 sS'value' p27166 I01 ssS'unique' p27167 (dp27168 S'editable' p27169 I00 sS'value' p27170 I00 ssS'properties' p27171 (dp27172 S'default_value' p27173 (dp27174 S'editable' p27175 I00 sS'value' p27176 NssS'summary_default' p27177 (dp27178 S'editable' p27179 I00 sS'value' p27180 S'none' p27181 sssS'description' p27182 (dp27183 S'editable' p27184 I01 sS'value' p27185 g47 sssS'scene' p27186 (dp27187 S'mandatory' p27188 (dp27189 S'editable' p27190 I00 sS'value' p27191 I00 ssS'name' p27192 (dp27193 S'editable' p27194 I01 sS'value' p27195 S'Scene' p27196 ssS'data_type' p27197 (dp27198 S'editable' p27199 I00 sS'value' p27200 S'entity' p27201 ssS'entity_type' p27202 (dp27203 S'editable' p27204 I00 sS'value' p27205 S'LaunchSceneConnection' p27206 ssS'editable' p27207 (dp27208 S'editable' p27209 I00 sS'value' p27210 I00 ssS'unique' p27211 (dp27212 S'editable' p27213 I00 sS'value' p27214 I00 ssS'properties' p27215 (dp27216 S'default_value' p27217 (dp27218 S'editable' p27219 I00 sS'value' p27220 NssS'summary_default' p27221 (dp27222 S'editable' p27223 I00 sS'value' p27224 S'none' p27225 ssS'valid_types' p27226 (dp27227 S'editable' p27228 I00 sS'value' p27229 (lp27230 S'Scene' p27231 asssS'description' p27232 (dp27233 S'editable' p27234 I01 sS'value' p27235 g47 sssS'launch' p27236 (dp27237 S'mandatory' p27238 (dp27239 S'editable' p27240 I00 sS'value' p27241 I00 ssS'name' p27242 (dp27243 S'editable' p27244 I01 sS'value' p27245 S'Launch' p27246 ssS'data_type' p27247 (dp27248 S'editable' p27249 I00 sS'value' p27250 S'entity' p27251 ssS'entity_type' p27252 (dp27253 S'editable' p27254 I00 sS'value' p27255 S'LaunchSceneConnection' p27256 ssS'editable' p27257 (dp27258 S'editable' p27259 I00 sS'value' p27260 I00 ssS'unique' p27261 (dp27262 S'editable' p27263 I00 sS'value' p27264 I00 ssS'properties' p27265 (dp27266 S'default_value' p27267 (dp27268 S'editable' p27269 I00 sS'value' p27270 NssS'summary_default' p27271 (dp27272 S'editable' p27273 I00 sS'value' p27274 S'none' p27275 ssS'valid_types' p27276 (dp27277 S'editable' p27278 I00 sS'value' p27279 (lp27280 S'Launch' p27281 asssS'description' p27282 (dp27283 S'editable' p27284 I01 sS'value' p27285 g47 ssssS'GroupUserConnection' p27286 (dp27287 S'cached_display_name' p27288 (dp27289 S'mandatory' p27290 (dp27291 S'editable' p27292 I00 sS'value' p27293 I00 ssS'name' p27294 (dp27295 S'editable' p27296 I01 sS'value' p27297 S'Cached Display Name' p27298 ssS'data_type' p27299 (dp27300 S'editable' p27301 I00 sS'value' p27302 S'text' p27303 ssS'entity_type' p27304 (dp27305 S'editable' p27306 I00 sS'value' p27307 S'GroupUserConnection' p27308 ssS'editable' p27309 (dp27310 S'editable' p27311 I00 sS'value' p27312 I01 ssS'unique' p27313 (dp27314 S'editable' p27315 I00 sS'value' p27316 I00 ssS'properties' p27317 (dp27318 S'default_value' p27319 (dp27320 S'editable' p27321 I00 sS'value' p27322 NssS'summary_default' p27323 (dp27324 S'editable' p27325 I00 sS'value' p27326 S'none' p27327 sssS'description' p27328 (dp27329 S'editable' p27330 I01 sS'value' p27331 g47 sssS'group' p27332 (dp27333 S'mandatory' p27334 (dp27335 S'editable' p27336 I00 sS'value' p27337 I00 ssS'name' p27338 (dp27339 S'editable' p27340 I01 sS'value' p27341 S'Group' p27342 ssS'data_type' p27343 (dp27344 S'editable' p27345 I00 sS'value' p27346 S'entity' p27347 ssS'entity_type' p27348 (dp27349 S'editable' p27350 I00 sS'value' p27351 S'GroupUserConnection' p27352 ssS'editable' p27353 (dp27354 S'editable' p27355 I00 sS'value' p27356 I00 ssS'unique' p27357 (dp27358 S'editable' p27359 I00 sS'value' p27360 I00 ssS'properties' p27361 (dp27362 S'default_value' p27363 (dp27364 S'editable' p27365 I00 sS'value' p27366 NssS'summary_default' p27367 (dp27368 S'editable' p27369 I00 sS'value' p27370 S'none' p27371 ssS'valid_types' p27372 (dp27373 S'editable' p27374 I00 sS'value' p27375 (lp27376 S'Group' p27377 asssS'description' p27378 (dp27379 S'editable' p27380 I01 sS'value' p27381 g47 sssS'id' p27382 (dp27383 S'mandatory' p27384 (dp27385 S'editable' p27386 I00 sS'value' p27387 I01 ssS'name' p27388 (dp27389 S'editable' p27390 I01 sS'value' p27391 S'Id' p27392 ssS'data_type' p27393 (dp27394 S'editable' p27395 I00 sS'value' p27396 S'number' p27397 ssS'entity_type' p27398 (dp27399 S'editable' p27400 I00 sS'value' p27401 S'GroupUserConnection' p27402 ssS'editable' p27403 (dp27404 S'editable' p27405 I00 sS'value' p27406 I00 ssS'unique' p27407 (dp27408 S'editable' p27409 I00 sS'value' p27410 I00 ssS'properties' p27411 (dp27412 S'default_value' p27413 (dp27414 S'editable' p27415 I00 sS'value' p27416 NssS'summary_default' p27417 (dp27418 S'editable' p27419 I00 sS'value' p27420 S'none' p27421 sssS'description' p27422 (dp27423 S'editable' p27424 I01 sS'value' p27425 g47 sssS'user' p27426 (dp27427 S'mandatory' p27428 (dp27429 S'editable' p27430 I00 sS'value' p27431 I00 ssS'name' p27432 (dp27433 S'editable' p27434 I01 sS'value' p27435 S'Person' p27436 ssS'data_type' p27437 (dp27438 S'editable' p27439 I00 sS'value' p27440 S'entity' p27441 ssS'entity_type' p27442 (dp27443 S'editable' p27444 I00 sS'value' p27445 S'GroupUserConnection' p27446 ssS'editable' p27447 (dp27448 S'editable' p27449 I00 sS'value' p27450 I00 ssS'unique' p27451 (dp27452 S'editable' p27453 I00 sS'value' p27454 I00 ssS'properties' p27455 (dp27456 S'default_value' p27457 (dp27458 S'editable' p27459 I00 sS'value' p27460 NssS'summary_default' p27461 (dp27462 S'editable' p27463 I00 sS'value' p27464 S'none' p27465 ssS'valid_types' p27466 (dp27467 S'editable' p27468 I00 sS'value' p27469 (lp27470 S'HumanUser' p27471 asssS'description' p27472 (dp27473 S'editable' p27474 I01 sS'value' p27475 g47 ssssS'AssetSequenceConnection' p27476 (dp27477 S'id' p27478 (dp27479 S'mandatory' p27480 (dp27481 S'editable' p27482 I00 sS'value' p27483 I01 ssS'name' p27484 (dp27485 S'editable' p27486 I01 sS'value' p27487 S'Id' p27488 ssS'data_type' p27489 (dp27490 S'editable' p27491 I00 sS'value' p27492 S'number' p27493 ssS'entity_type' p27494 (dp27495 S'editable' p27496 I00 sS'value' p27497 S'AssetSequenceConnection' p27498 ssS'editable' p27499 (dp27500 S'editable' p27501 I00 sS'value' p27502 I00 ssS'unique' p27503 (dp27504 S'editable' p27505 I00 sS'value' p27506 I00 ssS'properties' p27507 (dp27508 S'default_value' p27509 (dp27510 S'editable' p27511 I00 sS'value' p27512 NssS'summary_default' p27513 (dp27514 S'editable' p27515 I00 sS'value' p27516 S'none' p27517 sssS'description' p27518 (dp27519 S'editable' p27520 I01 sS'value' p27521 g47 sssS'cached_display_name' p27522 (dp27523 S'mandatory' p27524 (dp27525 S'editable' p27526 I00 sS'value' p27527 I00 ssS'name' p27528 (dp27529 S'editable' p27530 I01 sS'value' p27531 S'Cached Display Name' p27532 ssS'data_type' p27533 (dp27534 S'editable' p27535 I00 sS'value' p27536 S'text' p27537 ssS'entity_type' p27538 (dp27539 S'editable' p27540 I00 sS'value' p27541 S'AssetSequenceConnection' p27542 ssS'editable' p27543 (dp27544 S'editable' p27545 I00 sS'value' p27546 I01 ssS'unique' p27547 (dp27548 S'editable' p27549 I00 sS'value' p27550 I00 ssS'properties' p27551 (dp27552 S'default_value' p27553 (dp27554 S'editable' p27555 I00 sS'value' p27556 NssS'summary_default' p27557 (dp27558 S'editable' p27559 I00 sS'value' p27560 S'none' p27561 sssS'description' p27562 (dp27563 S'editable' p27564 I01 sS'value' p27565 g47 sssS'asset' p27566 (dp27567 S'mandatory' p27568 (dp27569 S'editable' p27570 I00 sS'value' p27571 I00 ssS'name' p27572 (dp27573 S'editable' p27574 I01 sS'value' p27575 S'Asset' p27576 ssS'data_type' p27577 (dp27578 S'editable' p27579 I00 sS'value' p27580 S'entity' p27581 ssS'entity_type' p27582 (dp27583 S'editable' p27584 I00 sS'value' p27585 S'AssetSequenceConnection' p27586 ssS'editable' p27587 (dp27588 S'editable' p27589 I00 sS'value' p27590 I00 ssS'unique' p27591 (dp27592 S'editable' p27593 I00 sS'value' p27594 I00 ssS'properties' p27595 (dp27596 S'default_value' p27597 (dp27598 S'editable' p27599 I00 sS'value' p27600 NssS'summary_default' p27601 (dp27602 S'editable' p27603 I00 sS'value' p27604 S'none' p27605 ssS'valid_types' p27606 (dp27607 S'editable' p27608 I00 sS'value' p27609 (lp27610 S'Asset' p27611 asssS'description' p27612 (dp27613 S'editable' p27614 I01 sS'value' p27615 g47 sssS'sequence' p27616 (dp27617 S'mandatory' p27618 (dp27619 S'editable' p27620 I00 sS'value' p27621 I00 ssS'name' p27622 (dp27623 S'editable' p27624 I01 sS'value' p27625 S'Sequence' p27626 ssS'data_type' p27627 (dp27628 S'editable' p27629 I00 sS'value' p27630 S'entity' p27631 ssS'entity_type' p27632 (dp27633 S'editable' p27634 I00 sS'value' p27635 S'AssetSequenceConnection' p27636 ssS'editable' p27637 (dp27638 S'editable' p27639 I00 sS'value' p27640 I00 ssS'unique' p27641 (dp27642 S'editable' p27643 I00 sS'value' p27644 I00 ssS'properties' p27645 (dp27646 S'default_value' p27647 (dp27648 S'editable' p27649 I00 sS'value' p27650 NssS'summary_default' p27651 (dp27652 S'editable' p27653 I00 sS'value' p27654 S'none' p27655 ssS'valid_types' p27656 (dp27657 S'editable' p27658 I00 sS'value' p27659 (lp27660 S'Sequence' p27661 asssS'description' p27662 (dp27663 S'editable' p27664 I01 sS'value' p27665 g47 ssssS'Page' p27666 (dp27667 S'updated_at' p27668 (dp27669 S'mandatory' p27670 (dp27671 S'editable' p27672 I00 sS'value' p27673 I00 ssS'name' p27674 (dp27675 S'editable' p27676 I01 sS'value' p27677 S'Date Updated' p27678 ssS'data_type' p27679 (dp27680 S'editable' p27681 I00 sS'value' p27682 S'date_time' p27683 ssS'entity_type' p27684 (dp27685 S'editable' p27686 I00 sS'value' p27687 S'Page' p27688 ssS'editable' p27689 (dp27690 S'editable' p27691 I00 sS'value' p27692 I00 ssS'unique' p27693 (dp27694 S'editable' p27695 I00 sS'value' p27696 I00 ssS'properties' p27697 (dp27698 S'default_value' p27699 (dp27700 S'editable' p27701 I00 sS'value' p27702 NssS'summary_default' p27703 (dp27704 S'editable' p27705 I00 sS'value' p27706 S'none' p27707 sssS'description' p27708 (dp27709 S'editable' p27710 I01 sS'value' p27711 g47 sssS'cached_display_name' p27712 (dp27713 S'mandatory' p27714 (dp27715 S'editable' p27716 I00 sS'value' p27717 I00 ssS'name' p27718 (dp27719 S'editable' p27720 I01 sS'value' p27721 S'Cached Display Name' p27722 ssS'data_type' p27723 (dp27724 S'editable' p27725 I00 sS'value' p27726 S'text' p27727 ssS'entity_type' p27728 (dp27729 S'editable' p27730 I00 sS'value' p27731 S'Page' p27732 ssS'editable' p27733 (dp27734 S'editable' p27735 I00 sS'value' p27736 I01 ssS'unique' p27737 (dp27738 S'editable' p27739 I00 sS'value' p27740 I00 ssS'properties' p27741 (dp27742 S'default_value' p27743 (dp27744 S'editable' p27745 I00 sS'value' p27746 NssS'summary_default' p27747 (dp27748 S'editable' p27749 I00 sS'value' p27750 S'none' p27751 sssS'description' p27752 (dp27753 S'editable' p27754 I01 sS'value' p27755 g47 sssS'id' p27756 (dp27757 S'mandatory' p27758 (dp27759 S'editable' p27760 I00 sS'value' p27761 I00 ssS'name' p27762 (dp27763 S'editable' p27764 I01 sS'value' p27765 S'Id' p27766 ssS'data_type' p27767 (dp27768 S'editable' p27769 I00 sS'value' p27770 S'number' p27771 ssS'entity_type' p27772 (dp27773 S'editable' p27774 I00 sS'value' p27775 S'Page' p27776 ssS'editable' p27777 (dp27778 S'editable' p27779 I00 sS'value' p27780 I00 ssS'unique' p27781 (dp27782 S'editable' p27783 I00 sS'value' p27784 I00 ssS'properties' p27785 (dp27786 S'default_value' p27787 (dp27788 S'editable' p27789 I00 sS'value' p27790 NssS'summary_default' p27791 (dp27792 S'editable' p27793 I01 sS'value' p27794 S'none' p27795 sssS'description' p27796 (dp27797 S'editable' p27798 I01 sS'value' p27799 g47 sssS'accesses_by_current_user' p27800 (dp27801 S'mandatory' p27802 (dp27803 S'editable' p27804 I00 sS'value' p27805 I00 ssS'name' p27806 (dp27807 S'editable' p27808 I01 sS'value' p27809 S'Times Accessed' p27810 ssS'data_type' p27811 (dp27812 S'editable' p27813 I00 sS'value' p27814 S'number' p27815 ssS'entity_type' p27816 (dp27817 S'editable' p27818 I00 sS'value' p27819 S'Page' p27820 ssS'editable' p27821 (dp27822 S'editable' p27823 I00 sS'value' p27824 I00 ssS'unique' p27825 (dp27826 S'editable' p27827 I00 sS'value' p27828 I00 ssS'properties' p27829 (dp27830 S'default_value' p27831 (dp27832 S'editable' p27833 I00 sS'value' p27834 NssS'summary_default' p27835 (dp27836 S'editable' p27837 I01 sS'value' p27838 S'none' p27839 sssS'description' p27840 (dp27841 S'editable' p27842 I01 sS'value' p27843 g47 sssS'updated_by' p27844 (dp27845 S'mandatory' p27846 (dp27847 S'editable' p27848 I00 sS'value' p27849 I00 ssS'name' p27850 (dp27851 S'editable' p27852 I01 sS'value' p27853 S'Updated by' p27854 ssS'data_type' p27855 (dp27856 S'editable' p27857 I00 sS'value' p27858 S'entity' p27859 ssS'entity_type' p27860 (dp27861 S'editable' p27862 I00 sS'value' p27863 S'Page' p27864 ssS'editable' p27865 (dp27866 S'editable' p27867 I00 sS'value' p27868 I00 ssS'unique' p27869 (dp27870 S'editable' p27871 I00 sS'value' p27872 I00 ssS'properties' p27873 (dp27874 S'default_value' p27875 (dp27876 S'editable' p27877 I00 sS'value' p27878 NssS'summary_default' p27879 (dp27880 S'editable' p27881 I00 sS'value' p27882 S'none' p27883 ssS'valid_types' p27884 (dp27885 S'editable' p27886 I00 sS'value' p27887 (lp27888 S'HumanUser' p27889 aS'ApiUser' p27890 asssS'description' p27891 (dp27892 S'editable' p27893 I01 sS'value' p27894 g47 sssS'entity_type' p27895 (dp27896 S'mandatory' p27897 (dp27898 S'editable' p27899 I00 sS'value' p27900 I00 ssS'name' p27901 (dp27902 S'editable' p27903 I01 sS'value' p27904 S'Entity Type' p27905 ssS'data_type' p27906 (dp27907 S'editable' p27908 I00 sS'value' p27909 S'entity_type' p27910 ssS'entity_type' p27911 (dp27912 S'editable' p27913 I00 sS'value' p27914 S'Page' p27915 ssS'editable' p27916 (dp27917 S'editable' p27918 I00 sS'value' p27919 I00 ssS'unique' p27920 (dp27921 S'editable' p27922 I00 sS'value' p27923 I00 ssS'properties' p27924 (dp27925 S'default_value' p27926 (dp27927 S'editable' p27928 I00 sS'value' p27929 NssS'summary_default' p27930 (dp27931 S'editable' p27932 I01 sS'value' p27933 S'none' p27934 sssS'description' p27935 (dp27936 S'editable' p27937 I01 sS'value' p27938 g47 sssS'created_by' p27939 (dp27940 S'mandatory' p27941 (dp27942 S'editable' p27943 I00 sS'value' p27944 I00 ssS'name' p27945 (dp27946 S'editable' p27947 I01 sS'value' p27948 S'Created by' p27949 ssS'data_type' p27950 (dp27951 S'editable' p27952 I00 sS'value' p27953 S'entity' p27954 ssS'entity_type' p27955 (dp27956 S'editable' p27957 I00 sS'value' p27958 S'Page' p27959 ssS'editable' p27960 (dp27961 S'editable' p27962 I00 sS'value' p27963 I00 ssS'unique' p27964 (dp27965 S'editable' p27966 I00 sS'value' p27967 I00 ssS'properties' p27968 (dp27969 S'default_value' p27970 (dp27971 S'editable' p27972 I00 sS'value' p27973 NssS'summary_default' p27974 (dp27975 S'editable' p27976 I00 sS'value' p27977 S'none' p27978 ssS'valid_types' p27979 (dp27980 S'editable' p27981 I00 sS'value' p27982 (lp27983 S'HumanUser' p27984 aS'ApiUser' p27985 asssS'description' p27986 (dp27987 S'editable' p27988 I01 sS'value' p27989 g47 sssS'page_type' p27990 (dp27991 S'mandatory' p27992 (dp27993 S'editable' p27994 I00 sS'value' p27995 I00 ssS'name' p27996 (dp27997 S'editable' p27998 I01 sS'value' p27999 S'Page Type' p28000 ssS'data_type' p28001 (dp28002 S'editable' p28003 I00 sS'value' p28004 S'text' p28005 ssS'entity_type' p28006 (dp28007 S'editable' p28008 I00 sS'value' p28009 S'Page' p28010 ssS'editable' p28011 (dp28012 S'editable' p28013 I00 sS'value' p28014 I00 ssS'unique' p28015 (dp28016 S'editable' p28017 I00 sS'value' p28018 I00 ssS'properties' p28019 (dp28020 S'default_value' p28021 (dp28022 S'editable' p28023 I00 sS'value' p28024 NssS'summary_default' p28025 (dp28026 S'editable' p28027 I01 sS'value' p28028 S'none' p28029 sssS'description' p28030 (dp28031 S'editable' p28032 I01 sS'value' p28033 g47 sssS'current_user_favorite' p28034 (dp28035 S'mandatory' p28036 (dp28037 S'editable' p28038 I00 sS'value' p28039 I00 ssS'name' p28040 (dp28041 S'editable' p28042 I01 sS'value' p28043 S'Favorite' p28044 ssS'data_type' p28045 (dp28046 S'editable' p28047 I00 sS'value' p28048 S'checkbox' p28049 ssS'entity_type' p28050 (dp28051 S'editable' p28052 I00 sS'value' p28053 S'Page' p28054 ssS'editable' p28055 (dp28056 S'editable' p28057 I00 sS'value' p28058 I01 ssS'unique' p28059 (dp28060 S'editable' p28061 I00 sS'value' p28062 I00 ssS'properties' p28063 (dp28064 S'default_value' p28065 (dp28066 S'editable' p28067 I00 sS'value' p28068 NssS'summary_default' p28069 (dp28070 S'editable' p28071 I01 sS'value' p28072 S'none' p28073 sssS'description' p28074 (dp28075 S'editable' p28076 I01 sS'value' p28077 g47 sssS'shared' p28078 (dp28079 S'mandatory' p28080 (dp28081 S'editable' p28082 I00 sS'value' p28083 I00 ssS'name' p28084 (dp28085 S'editable' p28086 I01 sS'value' p28087 S'Shared' p28088 ssS'data_type' p28089 (dp28090 S'editable' p28091 I00 sS'value' p28092 S'checkbox' p28093 ssS'entity_type' p28094 (dp28095 S'editable' p28096 I00 sS'value' p28097 S'Page' p28098 ssS'editable' p28099 (dp28100 S'editable' p28101 I00 sS'value' p28102 I01 ssS'unique' p28103 (dp28104 S'editable' p28105 I00 sS'value' p28106 I00 ssS'properties' p28107 (dp28108 S'default_value' p28109 (dp28110 S'editable' p28111 I00 sS'value' p28112 I00 ssS'summary_default' p28113 (dp28114 S'editable' p28115 I01 sS'value' p28116 S'none' p28117 sssS'description' p28118 (dp28119 S'editable' p28120 I01 sS'value' p28121 g47 sssS'folder' p28122 (dp28123 S'mandatory' p28124 (dp28125 S'editable' p28126 I00 sS'value' p28127 I00 ssS'name' p28128 (dp28129 S'editable' p28130 I01 sS'value' p28131 S'Folder' p28132 ssS'data_type' p28133 (dp28134 S'editable' p28135 I00 sS'value' p28136 S'text' p28137 ssS'entity_type' p28138 (dp28139 S'editable' p28140 I00 sS'value' p28141 S'Page' p28142 ssS'editable' p28143 (dp28144 S'editable' p28145 I00 sS'value' p28146 I01 ssS'unique' p28147 (dp28148 S'editable' p28149 I00 sS'value' p28150 I00 ssS'properties' p28151 (dp28152 S'default_value' p28153 (dp28154 S'editable' p28155 I00 sS'value' p28156 NssS'summary_default' p28157 (dp28158 S'editable' p28159 I01 sS'value' p28160 S'none' p28161 sssS'description' p28162 (dp28163 S'editable' p28164 I01 sS'value' p28165 g47 sssS'last_accessed_by_current_user' p28166 (dp28167 S'mandatory' p28168 (dp28169 S'editable' p28170 I00 sS'value' p28171 I00 ssS'name' p28172 (dp28173 S'editable' p28174 I01 sS'value' p28175 S'Last Accessed by Me' p28176 ssS'data_type' p28177 (dp28178 S'editable' p28179 I00 sS'value' p28180 S'date_time' p28181 ssS'entity_type' p28182 (dp28183 S'editable' p28184 I00 sS'value' p28185 S'Page' p28186 ssS'editable' p28187 (dp28188 S'editable' p28189 I00 sS'value' p28190 I00 ssS'unique' p28191 (dp28192 S'editable' p28193 I00 sS'value' p28194 I00 ssS'properties' p28195 (dp28196 S'default_value' p28197 (dp28198 S'editable' p28199 I00 sS'value' p28200 NssS'summary_default' p28201 (dp28202 S'editable' p28203 I01 sS'value' p28204 S'none' p28205 sssS'description' p28206 (dp28207 S'editable' p28208 I01 sS'value' p28209 g47 sssS'description' p28210 (dp28211 S'mandatory' p28212 (dp28213 S'editable' p28214 I00 sS'value' p28215 I00 ssS'name' p28216 (dp28217 S'editable' p28218 I01 sS'value' p28219 S'Description' p28220 ssS'data_type' p28221 (dp28222 S'editable' p28223 I00 sS'value' p28224 S'text' p28225 ssS'entity_type' p28226 (dp28227 S'editable' p28228 I00 sS'value' p28229 S'Page' p28230 ssS'editable' p28231 (dp28232 S'editable' p28233 I00 sS'value' p28234 I01 ssS'unique' p28235 (dp28236 S'editable' p28237 I00 sS'value' p28238 I00 ssS'properties' p28239 (dp28240 S'default_value' p28241 (dp28242 S'editable' p28243 I00 sS'value' p28244 NssS'summary_default' p28245 (dp28246 S'editable' p28247 I00 sS'value' p28248 S'none' p28249 sssS'description' p28250 (dp28251 S'editable' p28252 I01 sS'value' p28253 g47 sssS'last_accessed' p28254 (dp28255 S'mandatory' p28256 (dp28257 S'editable' p28258 I00 sS'value' p28259 I00 ssS'name' p28260 (dp28261 S'editable' p28262 I01 sS'value' p28263 S'Last Accessed' p28264 ssS'data_type' p28265 (dp28266 S'editable' p28267 I00 sS'value' p28268 S'date_time' p28269 ssS'entity_type' p28270 (dp28271 S'editable' p28272 I00 sS'value' p28273 S'Page' p28274 ssS'editable' p28275 (dp28276 S'editable' p28277 I00 sS'value' p28278 I00 ssS'unique' p28279 (dp28280 S'editable' p28281 I00 sS'value' p28282 I00 ssS'properties' p28283 (dp28284 S'default_value' p28285 (dp28286 S'editable' p28287 I00 sS'value' p28288 NssS'summary_default' p28289 (dp28290 S'editable' p28291 I01 sS'value' p28292 S'none' p28293 sssS'description' p28294 (dp28295 S'editable' p28296 I01 sS'value' p28297 g47 sssS'default_type' p28298 (dp28299 S'mandatory' p28300 (dp28301 S'editable' p28302 I00 sS'value' p28303 I00 ssS'name' p28304 (dp28305 S'editable' p28306 I01 sS'value' p28307 S'Default Type' p28308 ssS'data_type' p28309 (dp28310 S'editable' p28311 I00 sS'value' p28312 S'text' p28313 ssS'entity_type' p28314 (dp28315 S'editable' p28316 I00 sS'value' p28317 S'Page' p28318 ssS'editable' p28319 (dp28320 S'editable' p28321 I00 sS'value' p28322 I00 ssS'unique' p28323 (dp28324 S'editable' p28325 I00 sS'value' p28326 I00 ssS'properties' p28327 (dp28328 S'default_value' p28329 (dp28330 S'editable' p28331 I00 sS'value' p28332 NssS'summary_default' p28333 (dp28334 S'editable' p28335 I01 sS'value' p28336 S'none' p28337 sssS'description' p28338 (dp28339 S'editable' p28340 I01 sS'value' p28341 g47 sssS'current_user_can_see' p28342 (dp28343 S'mandatory' p28344 (dp28345 S'editable' p28346 I00 sS'value' p28347 I00 ssS'name' p28348 (dp28349 S'editable' p28350 I01 sS'value' p28351 S'Current User Can See' p28352 ssS'data_type' p28353 (dp28354 S'editable' p28355 I00 sS'value' p28356 S'checkbox' p28357 ssS'entity_type' p28358 (dp28359 S'editable' p28360 I00 sS'value' p28361 S'Page' p28362 ssS'editable' p28363 (dp28364 S'editable' p28365 I00 sS'value' p28366 I00 ssS'unique' p28367 (dp28368 S'editable' p28369 I00 sS'value' p28370 I00 ssS'properties' p28371 (dp28372 S'default_value' p28373 (dp28374 S'editable' p28375 I00 sS'value' p28376 NssS'summary_default' p28377 (dp28378 S'editable' p28379 I00 sS'value' p28380 S'none' p28381 sssS'description' p28382 (dp28383 S'editable' p28384 I01 sS'value' p28385 g47 sssS'name' p28386 (dp28387 S'mandatory' p28388 (dp28389 S'editable' p28390 I00 sS'value' p28391 I01 ssS'name' p28392 (dp28393 S'editable' p28394 I01 sS'value' p28395 S'Name' p28396 ssS'data_type' p28397 (dp28398 S'editable' p28399 I00 sS'value' p28400 S'text' p28401 ssS'entity_type' p28402 (dp28403 S'editable' p28404 I00 sS'value' p28405 S'Page' p28406 ssS'editable' p28407 (dp28408 S'editable' p28409 I00 sS'value' p28410 I01 ssS'unique' p28411 (dp28412 S'editable' p28413 I00 sS'value' p28414 I00 ssS'properties' p28415 (dp28416 S'default_value' p28417 (dp28418 S'editable' p28419 I00 sS'value' p28420 NssS'summary_default' p28421 (dp28422 S'editable' p28423 I01 sS'value' p28424 S'none' p28425 sssS'description' p28426 (dp28427 S'editable' p28428 I01 sS'value' p28429 g47 sssS'admin' p28430 (dp28431 S'mandatory' p28432 (dp28433 S'editable' p28434 I00 sS'value' p28435 I00 ssS'name' p28436 (dp28437 S'editable' p28438 I01 sS'value' p28439 S'Admin Only' p28440 ssS'data_type' p28441 (dp28442 S'editable' p28443 I00 sS'value' p28444 S'checkbox' p28445 ssS'entity_type' p28446 (dp28447 S'editable' p28448 I00 sS'value' p28449 S'Page' p28450 ssS'editable' p28451 (dp28452 S'editable' p28453 I00 sS'value' p28454 I00 ssS'unique' p28455 (dp28456 S'editable' p28457 I00 sS'value' p28458 I00 ssS'properties' p28459 (dp28460 S'default_value' p28461 (dp28462 S'editable' p28463 I00 sS'value' p28464 I00 ssS'summary_default' p28465 (dp28466 S'editable' p28467 I01 sS'value' p28468 S'none' p28469 sssS'description' p28470 (dp28471 S'editable' p28472 I01 sS'value' p28473 g47 sssS'created_at' p28474 (dp28475 S'mandatory' p28476 (dp28477 S'editable' p28478 I00 sS'value' p28479 I00 ssS'name' p28480 (dp28481 S'editable' p28482 I01 sS'value' p28483 S'Date Created' p28484 ssS'data_type' p28485 (dp28486 S'editable' p28487 I00 sS'value' p28488 S'date_time' p28489 ssS'entity_type' p28490 (dp28491 S'editable' p28492 I00 sS'value' p28493 S'Page' p28494 ssS'editable' p28495 (dp28496 S'editable' p28497 I00 sS'value' p28498 I00 ssS'unique' p28499 (dp28500 S'editable' p28501 I00 sS'value' p28502 I00 ssS'properties' p28503 (dp28504 S'default_value' p28505 (dp28506 S'editable' p28507 I00 sS'value' p28508 NssS'summary_default' p28509 (dp28510 S'editable' p28511 I00 sS'value' p28512 S'none' p28513 sssS'description' p28514 (dp28515 S'editable' p28516 I01 sS'value' p28517 g47 sssS'project' p28518 (dp28519 S'mandatory' p28520 (dp28521 S'editable' p28522 I00 sS'value' p28523 I00 ssS'name' p28524 (dp28525 S'editable' p28526 I01 sS'value' p28527 S'Project' p28528 ssS'data_type' p28529 (dp28530 S'editable' p28531 I00 sS'value' p28532 S'entity' p28533 ssS'entity_type' p28534 (dp28535 S'editable' p28536 I00 sS'value' p28537 S'Page' p28538 ssS'editable' p28539 (dp28540 S'editable' p28541 I00 sS'value' p28542 I01 ssS'unique' p28543 (dp28544 S'editable' p28545 I00 sS'value' p28546 I00 ssS'properties' p28547 (dp28548 S'default_value' p28549 (dp28550 S'editable' p28551 I00 sS'value' p28552 NssS'summary_default' p28553 (dp28554 S'editable' p28555 I01 sS'value' p28556 S'none' p28557 ssS'valid_types' p28558 (dp28559 S'editable' p28560 I01 sS'value' p28561 (lp28562 S'Project' p28563 asssS'description' p28564 (dp28565 S'editable' p28566 I01 sS'value' p28567 g47 sssS'ui_category' p28568 (dp28569 S'mandatory' p28570 (dp28571 S'editable' p28572 I00 sS'value' p28573 I00 ssS'name' p28574 (dp28575 S'editable' p28576 I01 sS'value' p28577 S'UI Category' p28578 ssS'data_type' p28579 (dp28580 S'editable' p28581 I00 sS'value' p28582 S'text' p28583 ssS'entity_type' p28584 (dp28585 S'editable' p28586 I00 sS'value' p28587 S'Page' p28588 ssS'editable' p28589 (dp28590 S'editable' p28591 I00 sS'value' p28592 I00 ssS'unique' p28593 (dp28594 S'editable' p28595 I00 sS'value' p28596 I00 ssS'properties' p28597 (dp28598 S'default_value' p28599 (dp28600 S'editable' p28601 I00 sS'value' p28602 NssS'summary_default' p28603 (dp28604 S'editable' p28605 I01 sS'value' p28606 S'none' p28607 sssS'description' p28608 (dp28609 S'editable' p28610 I01 sS'value' p28611 g47 sssS'tag_list' p28612 (dp28613 S'mandatory' p28614 (dp28615 S'editable' p28616 I00 sS'value' p28617 I00 ssS'name' p28618 (dp28619 S'editable' p28620 I01 sS'value' p28621 S'Tags' p28622 ssS'data_type' p28623 (dp28624 S'editable' p28625 I00 sS'value' p28626 S'tag_list' p28627 ssS'entity_type' p28628 (dp28629 S'editable' p28630 I00 sS'value' p28631 S'Page' p28632 ssS'editable' p28633 (dp28634 S'editable' p28635 I00 sS'value' p28636 I01 ssS'unique' p28637 (dp28638 S'editable' p28639 I00 sS'value' p28640 I00 ssS'properties' p28641 (dp28642 S'default_value' p28643 (dp28644 S'editable' p28645 I00 sS'value' p28646 NssS'summary_default' p28647 (dp28648 S'editable' p28649 I01 sS'value' p28650 S'none' p28651 ssS'valid_types' p28652 (dp28653 S'editable' p28654 I01 sS'value' p28655 (lp28656 S'Tag' p28657 asssS'description' p28658 (dp28659 S'editable' p28660 I01 sS'value' p28661 g47 sssS'hits_last_month' p28662 (dp28663 S'mandatory' p28664 (dp28665 S'editable' p28666 I00 sS'value' p28667 I00 ssS'name' p28668 (dp28669 S'editable' p28670 I01 sS'value' p28671 S'Page Hits Last Month' p28672 ssS'data_type' p28673 (dp28674 S'editable' p28675 I00 sS'value' p28676 S'number' p28677 ssS'entity_type' p28678 (dp28679 S'editable' p28680 I00 sS'value' p28681 S'Page' p28682 ssS'editable' p28683 (dp28684 S'editable' p28685 I00 sS'value' p28686 I00 ssS'unique' p28687 (dp28688 S'editable' p28689 I00 sS'value' p28690 I00 ssS'properties' p28691 (dp28692 S'default_value' p28693 (dp28694 S'editable' p28695 I00 sS'value' p28696 NssS'summary_default' p28697 (dp28698 S'editable' p28699 I01 sS'value' p28700 S'none' p28701 sssS'description' p28702 (dp28703 S'editable' p28704 I01 sS'value' p28705 g47 ssssS'CustomEntity02' p28706 (dp28707 S'open_notes_count' p28708 (dp28709 S'mandatory' p28710 (dp28711 S'editable' p28712 I00 sS'value' p28713 I00 ssS'name' p28714 (dp28715 S'editable' p28716 I01 sS'value' p28717 S'Open Notes Count' p28718 ssS'data_type' p28719 (dp28720 S'editable' p28721 I00 sS'value' p28722 S'text' p28723 ssS'entity_type' p28724 (dp28725 S'editable' p28726 I00 sS'value' p28727 S'CustomEntity02' p28728 ssS'editable' p28729 (dp28730 S'editable' p28731 I00 sS'value' p28732 I00 ssS'unique' p28733 (dp28734 S'editable' p28735 I00 sS'value' p28736 I00 ssS'properties' p28737 (dp28738 S'default_value' p28739 (dp28740 S'editable' p28741 I00 sS'value' p28742 NssS'summary_default' p28743 (dp28744 S'editable' p28745 I01 sS'value' p28746 S'none' p28747 sssS'description' p28748 (dp28749 S'editable' p28750 I01 sS'value' p28751 g47 sssS'code' p28752 (dp28753 S'mandatory' p28754 (dp28755 S'editable' p28756 I00 sS'value' p28757 I01 ssS'name' p28758 (dp28759 S'editable' p28760 I01 sS'value' p28761 S'Custom Entity02 Name' p28762 ssS'data_type' p28763 (dp28764 S'editable' p28765 I00 sS'value' p28766 S'text' p28767 ssS'entity_type' p28768 (dp28769 S'editable' p28770 I00 sS'value' p28771 S'CustomEntity02' p28772 ssS'editable' p28773 (dp28774 S'editable' p28775 I00 sS'value' p28776 I01 ssS'unique' p28777 (dp28778 S'editable' p28779 I00 sS'value' p28780 I00 ssS'properties' p28781 (dp28782 S'default_value' p28783 (dp28784 S'editable' p28785 I00 sS'value' p28786 NssS'summary_default' p28787 (dp28788 S'editable' p28789 I01 sS'value' p28790 S'none' p28791 sssS'description' p28792 (dp28793 S'editable' p28794 I01 sS'value' p28795 g47 sssS'open_notes' p28796 (dp28797 S'mandatory' p28798 (dp28799 S'editable' p28800 I00 sS'value' p28801 I00 ssS'name' p28802 (dp28803 S'editable' p28804 I01 sS'value' p28805 S'Open Notes' p28806 ssS'data_type' p28807 (dp28808 S'editable' p28809 I00 sS'value' p28810 S'multi_entity' p28811 ssS'entity_type' p28812 (dp28813 S'editable' p28814 I00 sS'value' p28815 S'CustomEntity02' p28816 ssS'editable' p28817 (dp28818 S'editable' p28819 I00 sS'value' p28820 I00 ssS'unique' p28821 (dp28822 S'editable' p28823 I00 sS'value' p28824 I00 ssS'properties' p28825 (dp28826 S'default_value' p28827 (dp28828 S'editable' p28829 I00 sS'value' p28830 NssS'summary_default' p28831 (dp28832 S'editable' p28833 I01 sS'value' p28834 S'none' p28835 ssS'valid_types' p28836 (dp28837 S'editable' p28838 I01 sS'value' p28839 (lp28840 S'Note' p28841 asssS'description' p28842 (dp28843 S'editable' p28844 I01 sS'value' p28845 g47 sssS'description' p28846 (dp28847 S'mandatory' p28848 (dp28849 S'editable' p28850 I00 sS'value' p28851 I00 ssS'name' p28852 (dp28853 S'editable' p28854 I01 sS'value' p28855 S'Description' p28856 ssS'data_type' p28857 (dp28858 S'editable' p28859 I00 sS'value' p28860 S'text' p28861 ssS'entity_type' p28862 (dp28863 S'editable' p28864 I00 sS'value' p28865 S'CustomEntity02' p28866 ssS'editable' p28867 (dp28868 S'editable' p28869 I00 sS'value' p28870 I01 ssS'unique' p28871 (dp28872 S'editable' p28873 I00 sS'value' p28874 I00 ssS'properties' p28875 (dp28876 S'default_value' p28877 (dp28878 S'editable' p28879 I00 sS'value' p28880 NssS'summary_default' p28881 (dp28882 S'editable' p28883 I01 sS'value' p28884 S'none' p28885 sssS'description' p28886 (dp28887 S'editable' p28888 I01 sS'value' p28889 g47 sssS'created_at' p28890 (dp28891 S'mandatory' p28892 (dp28893 S'editable' p28894 I00 sS'value' p28895 I00 ssS'name' p28896 (dp28897 S'editable' p28898 I01 sS'value' p28899 S'Date Created' p28900 ssS'data_type' p28901 (dp28902 S'editable' p28903 I00 sS'value' p28904 S'date_time' p28905 ssS'entity_type' p28906 (dp28907 S'editable' p28908 I00 sS'value' p28909 S'CustomEntity02' p28910 ssS'editable' p28911 (dp28912 S'editable' p28913 I00 sS'value' p28914 I00 ssS'unique' p28915 (dp28916 S'editable' p28917 I00 sS'value' p28918 I00 ssS'properties' p28919 (dp28920 S'default_value' p28921 (dp28922 S'editable' p28923 I00 sS'value' p28924 NssS'summary_default' p28925 (dp28926 S'editable' p28927 I01 sS'value' p28928 S'none' p28929 sssS'description' p28930 (dp28931 S'editable' p28932 I01 sS'value' p28933 g47 sssS'updated_at' p28934 (dp28935 S'mandatory' p28936 (dp28937 S'editable' p28938 I00 sS'value' p28939 I00 ssS'name' p28940 (dp28941 S'editable' p28942 I01 sS'value' p28943 S'Date Updated' p28944 ssS'data_type' p28945 (dp28946 S'editable' p28947 I00 sS'value' p28948 S'date_time' p28949 ssS'entity_type' p28950 (dp28951 S'editable' p28952 I00 sS'value' p28953 S'CustomEntity02' p28954 ssS'editable' p28955 (dp28956 S'editable' p28957 I00 sS'value' p28958 I00 ssS'unique' p28959 (dp28960 S'editable' p28961 I00 sS'value' p28962 I00 ssS'properties' p28963 (dp28964 S'default_value' p28965 (dp28966 S'editable' p28967 I00 sS'value' p28968 NssS'summary_default' p28969 (dp28970 S'editable' p28971 I01 sS'value' p28972 S'none' p28973 sssS'description' p28974 (dp28975 S'editable' p28976 I01 sS'value' p28977 g47 sssS'created_by' p28978 (dp28979 S'mandatory' p28980 (dp28981 S'editable' p28982 I00 sS'value' p28983 I00 ssS'name' p28984 (dp28985 S'editable' p28986 I01 sS'value' p28987 S'Created by' p28988 ssS'data_type' p28989 (dp28990 S'editable' p28991 I00 sS'value' p28992 S'entity' p28993 ssS'entity_type' p28994 (dp28995 S'editable' p28996 I00 sS'value' p28997 S'CustomEntity02' p28998 ssS'editable' p28999 (dp29000 S'editable' p29001 I00 sS'value' p29002 I00 ssS'unique' p29003 (dp29004 S'editable' p29005 I00 sS'value' p29006 I00 ssS'properties' p29007 (dp29008 S'default_value' p29009 (dp29010 S'editable' p29011 I00 sS'value' p29012 NssS'summary_default' p29013 (dp29014 S'editable' p29015 I01 sS'value' p29016 S'none' p29017 ssS'valid_types' p29018 (dp29019 S'editable' p29020 I01 sS'value' p29021 (lp29022 S'HumanUser' p29023 aS'ApiUser' p29024 asssS'description' p29025 (dp29026 S'editable' p29027 I01 sS'value' p29028 g47 sssS'id' p29029 (dp29030 S'mandatory' p29031 (dp29032 S'editable' p29033 I00 sS'value' p29034 I00 ssS'name' p29035 (dp29036 S'editable' p29037 I01 sS'value' p29038 S'Id' p29039 ssS'data_type' p29040 (dp29041 S'editable' p29042 I00 sS'value' p29043 S'number' p29044 ssS'entity_type' p29045 (dp29046 S'editable' p29047 I00 sS'value' p29048 S'CustomEntity02' p29049 ssS'editable' p29050 (dp29051 S'editable' p29052 I00 sS'value' p29053 I00 ssS'unique' p29054 (dp29055 S'editable' p29056 I00 sS'value' p29057 I00 ssS'properties' p29058 (dp29059 S'default_value' p29060 (dp29061 S'editable' p29062 I00 sS'value' p29063 NssS'summary_default' p29064 (dp29065 S'editable' p29066 I01 sS'value' p29067 S'none' p29068 sssS'description' p29069 (dp29070 S'editable' p29071 I01 sS'value' p29072 g47 sssS'project' p29073 (dp29074 S'mandatory' p29075 (dp29076 S'editable' p29077 I00 sS'value' p29078 I00 ssS'name' p29079 (dp29080 S'editable' p29081 I01 sS'value' p29082 S'Project' p29083 ssS'data_type' p29084 (dp29085 S'editable' p29086 I00 sS'value' p29087 S'entity' p29088 ssS'entity_type' p29089 (dp29090 S'editable' p29091 I00 sS'value' p29092 S'CustomEntity02' p29093 ssS'editable' p29094 (dp29095 S'editable' p29096 I00 sS'value' p29097 I01 ssS'unique' p29098 (dp29099 S'editable' p29100 I00 sS'value' p29101 I00 ssS'properties' p29102 (dp29103 S'default_value' p29104 (dp29105 S'editable' p29106 I00 sS'value' p29107 NssS'summary_default' p29108 (dp29109 S'editable' p29110 I01 sS'value' p29111 S'none' p29112 ssS'valid_types' p29113 (dp29114 S'editable' p29115 I01 sS'value' p29116 (lp29117 S'Project' p29118 asssS'description' p29119 (dp29120 S'editable' p29121 I01 sS'value' p29122 g47 sssS'filmstrip_image' p29123 (dp29124 S'mandatory' p29125 (dp29126 S'editable' p29127 I00 sS'value' p29128 I00 ssS'name' p29129 (dp29130 S'editable' p29131 I01 sS'value' p29132 S'Filmstrip Thumbnail' p29133 ssS'data_type' p29134 (dp29135 S'editable' p29136 I00 sS'value' p29137 S'image' p29138 ssS'entity_type' p29139 (dp29140 S'editable' p29141 I00 sS'value' p29142 S'CustomEntity02' p29143 ssS'editable' p29144 (dp29145 S'editable' p29146 I00 sS'value' p29147 I01 ssS'unique' p29148 (dp29149 S'editable' p29150 I00 sS'value' p29151 I00 ssS'properties' p29152 (dp29153 S'default_value' p29154 (dp29155 S'editable' p29156 I00 sS'value' p29157 NssS'summary_default' p29158 (dp29159 S'editable' p29160 I01 sS'value' p29161 S'none' p29162 sssS'description' p29163 (dp29164 S'editable' p29165 I01 sS'value' p29166 g47 sssS'sg_status_list' p29167 (dp29168 S'mandatory' p29169 (dp29170 S'editable' p29171 I00 sS'value' p29172 I00 ssS'name' p29173 (dp29174 S'editable' p29175 I01 sS'value' p29176 S'Status' p29177 ssS'data_type' p29178 (dp29179 S'editable' p29180 I00 sS'value' p29181 S'status_list' p29182 ssS'entity_type' p29183 (dp29184 S'editable' p29185 I00 sS'value' p29186 S'CustomEntity02' p29187 ssS'editable' p29188 (dp29189 S'editable' p29190 I00 sS'value' p29191 I01 ssS'unique' p29192 (dp29193 S'editable' p29194 I00 sS'value' p29195 I00 ssS'properties' p29196 (dp29197 S'default_value' p29198 (dp29199 S'editable' p29200 I01 sS'value' p29201 S'wtg' p29202 ssS'valid_values' p29203 (dp29204 S'editable' p29205 I01 sS'value' p29206 (lp29207 S'cmpt' p29208 aS'ip' p29209 aS'wtg' p29210 assS'summary_default' p29211 (dp29212 S'editable' p29213 I01 sS'value' p29214 S'none' p29215 sssS'description' p29216 (dp29217 S'editable' p29218 I01 sS'value' p29219 g47 sssS'image' p29220 (dp29221 S'mandatory' p29222 (dp29223 S'editable' p29224 I00 sS'value' p29225 I00 ssS'name' p29226 (dp29227 S'editable' p29228 I01 sS'value' p29229 S'Thumbnail' p29230 ssS'data_type' p29231 (dp29232 S'editable' p29233 I00 sS'value' p29234 S'image' p29235 ssS'entity_type' p29236 (dp29237 S'editable' p29238 I00 sS'value' p29239 S'CustomEntity02' p29240 ssS'editable' p29241 (dp29242 S'editable' p29243 I00 sS'value' p29244 I01 ssS'unique' p29245 (dp29246 S'editable' p29247 I00 sS'value' p29248 I00 ssS'properties' p29249 (dp29250 S'default_value' p29251 (dp29252 S'editable' p29253 I00 sS'value' p29254 NssS'summary_default' p29255 (dp29256 S'editable' p29257 I01 sS'value' p29258 S'none' p29259 sssS'description' p29260 (dp29261 S'editable' p29262 I01 sS'value' p29263 g47 sssS'cached_display_name' p29264 (dp29265 S'mandatory' p29266 (dp29267 S'editable' p29268 I00 sS'value' p29269 I00 ssS'name' p29270 (dp29271 S'editable' p29272 I01 sS'value' p29273 S'Cached Display Name' p29274 ssS'data_type' p29275 (dp29276 S'editable' p29277 I00 sS'value' p29278 S'text' p29279 ssS'entity_type' p29280 (dp29281 S'editable' p29282 I00 sS'value' p29283 S'CustomEntity02' p29284 ssS'editable' p29285 (dp29286 S'editable' p29287 I00 sS'value' p29288 I01 ssS'unique' p29289 (dp29290 S'editable' p29291 I00 sS'value' p29292 I00 ssS'properties' p29293 (dp29294 S'default_value' p29295 (dp29296 S'editable' p29297 I00 sS'value' p29298 NssS'summary_default' p29299 (dp29300 S'editable' p29301 I00 sS'value' p29302 S'none' p29303 sssS'description' p29304 (dp29305 S'editable' p29306 I01 sS'value' p29307 g47 sssS'tag_list' p29308 (dp29309 S'mandatory' p29310 (dp29311 S'editable' p29312 I00 sS'value' p29313 I00 ssS'name' p29314 (dp29315 S'editable' p29316 I01 sS'value' p29317 S'Tags' p29318 ssS'data_type' p29319 (dp29320 S'editable' p29321 I00 sS'value' p29322 S'tag_list' p29323 ssS'entity_type' p29324 (dp29325 S'editable' p29326 I00 sS'value' p29327 S'CustomEntity02' p29328 ssS'editable' p29329 (dp29330 S'editable' p29331 I00 sS'value' p29332 I01 ssS'unique' p29333 (dp29334 S'editable' p29335 I00 sS'value' p29336 I00 ssS'properties' p29337 (dp29338 S'default_value' p29339 (dp29340 S'editable' p29341 I00 sS'value' p29342 NssS'summary_default' p29343 (dp29344 S'editable' p29345 I01 sS'value' p29346 S'none' p29347 ssS'valid_types' p29348 (dp29349 S'editable' p29350 I01 sS'value' p29351 (lp29352 S'Tag' p29353 asssS'description' p29354 (dp29355 S'editable' p29356 I01 sS'value' p29357 g47 sssS'notes' p29358 (dp29359 S'mandatory' p29360 (dp29361 S'editable' p29362 I00 sS'value' p29363 I00 ssS'name' p29364 (dp29365 S'editable' p29366 I01 sS'value' p29367 S'Notes' p29368 ssS'data_type' p29369 (dp29370 S'editable' p29371 I00 sS'value' p29372 S'multi_entity' p29373 ssS'entity_type' p29374 (dp29375 S'editable' p29376 I00 sS'value' p29377 S'CustomEntity02' p29378 ssS'editable' p29379 (dp29380 S'editable' p29381 I00 sS'value' p29382 I01 ssS'unique' p29383 (dp29384 S'editable' p29385 I00 sS'value' p29386 I00 ssS'properties' p29387 (dp29388 S'default_value' p29389 (dp29390 S'editable' p29391 I00 sS'value' p29392 NssS'summary_default' p29393 (dp29394 S'editable' p29395 I01 sS'value' p29396 S'none' p29397 ssS'valid_types' p29398 (dp29399 S'editable' p29400 I01 sS'value' p29401 (lp29402 S'Note' p29403 asssS'description' p29404 (dp29405 S'editable' p29406 I01 sS'value' p29407 g47 sssS'updated_by' p29408 (dp29409 S'mandatory' p29410 (dp29411 S'editable' p29412 I00 sS'value' p29413 I00 ssS'name' p29414 (dp29415 S'editable' p29416 I01 sS'value' p29417 S'Updated by' p29418 ssS'data_type' p29419 (dp29420 S'editable' p29421 I00 sS'value' p29422 S'entity' p29423 ssS'entity_type' p29424 (dp29425 S'editable' p29426 I00 sS'value' p29427 S'CustomEntity02' p29428 ssS'editable' p29429 (dp29430 S'editable' p29431 I00 sS'value' p29432 I00 ssS'unique' p29433 (dp29434 S'editable' p29435 I00 sS'value' p29436 I00 ssS'properties' p29437 (dp29438 S'default_value' p29439 (dp29440 S'editable' p29441 I00 sS'value' p29442 NssS'summary_default' p29443 (dp29444 S'editable' p29445 I01 sS'value' p29446 S'none' p29447 ssS'valid_types' p29448 (dp29449 S'editable' p29450 I01 sS'value' p29451 (lp29452 S'HumanUser' p29453 aS'ApiUser' p29454 asssS'description' p29455 (dp29456 S'editable' p29457 I01 sS'value' p29458 g47 ssssS'CustomEntity03' p29459 (dp29460 S'open_notes_count' p29461 (dp29462 S'mandatory' p29463 (dp29464 S'editable' p29465 I00 sS'value' p29466 I00 ssS'name' p29467 (dp29468 S'editable' p29469 I01 sS'value' p29470 S'Open Notes Count' p29471 ssS'data_type' p29472 (dp29473 S'editable' p29474 I00 sS'value' p29475 S'text' p29476 ssS'entity_type' p29477 (dp29478 S'editable' p29479 I00 sS'value' p29480 S'CustomEntity03' p29481 ssS'editable' p29482 (dp29483 S'editable' p29484 I00 sS'value' p29485 I00 ssS'unique' p29486 (dp29487 S'editable' p29488 I00 sS'value' p29489 I00 ssS'properties' p29490 (dp29491 S'default_value' p29492 (dp29493 S'editable' p29494 I00 sS'value' p29495 NssS'summary_default' p29496 (dp29497 S'editable' p29498 I01 sS'value' p29499 S'none' p29500 sssS'description' p29501 (dp29502 S'editable' p29503 I01 sS'value' p29504 g47 sssS'code' p29505 (dp29506 S'mandatory' p29507 (dp29508 S'editable' p29509 I00 sS'value' p29510 I01 ssS'name' p29511 (dp29512 S'editable' p29513 I01 sS'value' p29514 S'Custom Entity03 Name' p29515 ssS'data_type' p29516 (dp29517 S'editable' p29518 I00 sS'value' p29519 S'text' p29520 ssS'entity_type' p29521 (dp29522 S'editable' p29523 I00 sS'value' p29524 S'CustomEntity03' p29525 ssS'editable' p29526 (dp29527 S'editable' p29528 I00 sS'value' p29529 I01 ssS'unique' p29530 (dp29531 S'editable' p29532 I00 sS'value' p29533 I00 ssS'properties' p29534 (dp29535 S'default_value' p29536 (dp29537 S'editable' p29538 I00 sS'value' p29539 NssS'summary_default' p29540 (dp29541 S'editable' p29542 I01 sS'value' p29543 S'none' p29544 sssS'description' p29545 (dp29546 S'editable' p29547 I01 sS'value' p29548 g47 sssS'open_notes' p29549 (dp29550 S'mandatory' p29551 (dp29552 S'editable' p29553 I00 sS'value' p29554 I00 ssS'name' p29555 (dp29556 S'editable' p29557 I01 sS'value' p29558 S'Open Notes' p29559 ssS'data_type' p29560 (dp29561 S'editable' p29562 I00 sS'value' p29563 S'multi_entity' p29564 ssS'entity_type' p29565 (dp29566 S'editable' p29567 I00 sS'value' p29568 S'CustomEntity03' p29569 ssS'editable' p29570 (dp29571 S'editable' p29572 I00 sS'value' p29573 I00 ssS'unique' p29574 (dp29575 S'editable' p29576 I00 sS'value' p29577 I00 ssS'properties' p29578 (dp29579 S'default_value' p29580 (dp29581 S'editable' p29582 I00 sS'value' p29583 NssS'summary_default' p29584 (dp29585 S'editable' p29586 I01 sS'value' p29587 S'none' p29588 ssS'valid_types' p29589 (dp29590 S'editable' p29591 I01 sS'value' p29592 (lp29593 S'Note' p29594 asssS'description' p29595 (dp29596 S'editable' p29597 I01 sS'value' p29598 g47 sssS'description' p29599 (dp29600 S'mandatory' p29601 (dp29602 S'editable' p29603 I00 sS'value' p29604 I00 ssS'name' p29605 (dp29606 S'editable' p29607 I01 sS'value' p29608 S'Description' p29609 ssS'data_type' p29610 (dp29611 S'editable' p29612 I00 sS'value' p29613 S'text' p29614 ssS'entity_type' p29615 (dp29616 S'editable' p29617 I00 sS'value' p29618 S'CustomEntity03' p29619 ssS'editable' p29620 (dp29621 S'editable' p29622 I00 sS'value' p29623 I01 ssS'unique' p29624 (dp29625 S'editable' p29626 I00 sS'value' p29627 I00 ssS'properties' p29628 (dp29629 S'default_value' p29630 (dp29631 S'editable' p29632 I00 sS'value' p29633 NssS'summary_default' p29634 (dp29635 S'editable' p29636 I01 sS'value' p29637 S'none' p29638 sssS'description' p29639 (dp29640 S'editable' p29641 I01 sS'value' p29642 g47 sssS'created_at' p29643 (dp29644 S'mandatory' p29645 (dp29646 S'editable' p29647 I00 sS'value' p29648 I00 ssS'name' p29649 (dp29650 S'editable' p29651 I01 sS'value' p29652 S'Date Created' p29653 ssS'data_type' p29654 (dp29655 S'editable' p29656 I00 sS'value' p29657 S'date_time' p29658 ssS'entity_type' p29659 (dp29660 S'editable' p29661 I00 sS'value' p29662 S'CustomEntity03' p29663 ssS'editable' p29664 (dp29665 S'editable' p29666 I00 sS'value' p29667 I00 ssS'unique' p29668 (dp29669 S'editable' p29670 I00 sS'value' p29671 I00 ssS'properties' p29672 (dp29673 S'default_value' p29674 (dp29675 S'editable' p29676 I00 sS'value' p29677 NssS'summary_default' p29678 (dp29679 S'editable' p29680 I01 sS'value' p29681 S'none' p29682 sssS'description' p29683 (dp29684 S'editable' p29685 I01 sS'value' p29686 g47 sssS'updated_at' p29687 (dp29688 S'mandatory' p29689 (dp29690 S'editable' p29691 I00 sS'value' p29692 I00 ssS'name' p29693 (dp29694 S'editable' p29695 I01 sS'value' p29696 S'Date Updated' p29697 ssS'data_type' p29698 (dp29699 S'editable' p29700 I00 sS'value' p29701 S'date_time' p29702 ssS'entity_type' p29703 (dp29704 S'editable' p29705 I00 sS'value' p29706 S'CustomEntity03' p29707 ssS'editable' p29708 (dp29709 S'editable' p29710 I00 sS'value' p29711 I00 ssS'unique' p29712 (dp29713 S'editable' p29714 I00 sS'value' p29715 I00 ssS'properties' p29716 (dp29717 S'default_value' p29718 (dp29719 S'editable' p29720 I00 sS'value' p29721 NssS'summary_default' p29722 (dp29723 S'editable' p29724 I01 sS'value' p29725 S'none' p29726 sssS'description' p29727 (dp29728 S'editable' p29729 I01 sS'value' p29730 g47 sssS'created_by' p29731 (dp29732 S'mandatory' p29733 (dp29734 S'editable' p29735 I00 sS'value' p29736 I00 ssS'name' p29737 (dp29738 S'editable' p29739 I01 sS'value' p29740 S'Created by' p29741 ssS'data_type' p29742 (dp29743 S'editable' p29744 I00 sS'value' p29745 S'entity' p29746 ssS'entity_type' p29747 (dp29748 S'editable' p29749 I00 sS'value' p29750 S'CustomEntity03' p29751 ssS'editable' p29752 (dp29753 S'editable' p29754 I00 sS'value' p29755 I00 ssS'unique' p29756 (dp29757 S'editable' p29758 I00 sS'value' p29759 I00 ssS'properties' p29760 (dp29761 S'default_value' p29762 (dp29763 S'editable' p29764 I00 sS'value' p29765 NssS'summary_default' p29766 (dp29767 S'editable' p29768 I01 sS'value' p29769 S'none' p29770 ssS'valid_types' p29771 (dp29772 S'editable' p29773 I01 sS'value' p29774 (lp29775 S'HumanUser' p29776 aS'ApiUser' p29777 asssS'description' p29778 (dp29779 S'editable' p29780 I01 sS'value' p29781 g47 sssS'project' p29782 (dp29783 S'mandatory' p29784 (dp29785 S'editable' p29786 I00 sS'value' p29787 I00 ssS'name' p29788 (dp29789 S'editable' p29790 I01 sS'value' p29791 S'Project' p29792 ssS'data_type' p29793 (dp29794 S'editable' p29795 I00 sS'value' p29796 S'entity' p29797 ssS'entity_type' p29798 (dp29799 S'editable' p29800 I00 sS'value' p29801 S'CustomEntity03' p29802 ssS'editable' p29803 (dp29804 S'editable' p29805 I00 sS'value' p29806 I01 ssS'unique' p29807 (dp29808 S'editable' p29809 I00 sS'value' p29810 I00 ssS'properties' p29811 (dp29812 S'default_value' p29813 (dp29814 S'editable' p29815 I00 sS'value' p29816 NssS'summary_default' p29817 (dp29818 S'editable' p29819 I01 sS'value' p29820 S'none' p29821 ssS'valid_types' p29822 (dp29823 S'editable' p29824 I01 sS'value' p29825 (lp29826 S'Project' p29827 asssS'description' p29828 (dp29829 S'editable' p29830 I01 sS'value' p29831 g47 sssS'filmstrip_image' p29832 (dp29833 S'mandatory' p29834 (dp29835 S'editable' p29836 I00 sS'value' p29837 I00 ssS'name' p29838 (dp29839 S'editable' p29840 I01 sS'value' p29841 S'Filmstrip Thumbnail' p29842 ssS'data_type' p29843 (dp29844 S'editable' p29845 I00 sS'value' p29846 S'image' p29847 ssS'entity_type' p29848 (dp29849 S'editable' p29850 I00 sS'value' p29851 S'CustomEntity03' p29852 ssS'editable' p29853 (dp29854 S'editable' p29855 I00 sS'value' p29856 I01 ssS'unique' p29857 (dp29858 S'editable' p29859 I00 sS'value' p29860 I00 ssS'properties' p29861 (dp29862 S'default_value' p29863 (dp29864 S'editable' p29865 I00 sS'value' p29866 NssS'summary_default' p29867 (dp29868 S'editable' p29869 I01 sS'value' p29870 S'none' p29871 sssS'description' p29872 (dp29873 S'editable' p29874 I01 sS'value' p29875 g47 sssS'sg_status_list' p29876 (dp29877 S'mandatory' p29878 (dp29879 S'editable' p29880 I00 sS'value' p29881 I00 ssS'name' p29882 (dp29883 S'editable' p29884 I01 sS'value' p29885 S'Status' p29886 ssS'data_type' p29887 (dp29888 S'editable' p29889 I00 sS'value' p29890 S'status_list' p29891 ssS'entity_type' p29892 (dp29893 S'editable' p29894 I00 sS'value' p29895 S'CustomEntity03' p29896 ssS'editable' p29897 (dp29898 S'editable' p29899 I00 sS'value' p29900 I01 ssS'unique' p29901 (dp29902 S'editable' p29903 I00 sS'value' p29904 I00 ssS'properties' p29905 (dp29906 S'default_value' p29907 (dp29908 S'editable' p29909 I01 sS'value' p29910 S'wtg' p29911 ssS'valid_values' p29912 (dp29913 S'editable' p29914 I01 sS'value' p29915 (lp29916 S'cmpt' p29917 aS'ip' p29918 aS'wtg' p29919 assS'summary_default' p29920 (dp29921 S'editable' p29922 I01 sS'value' p29923 S'none' p29924 sssS'description' p29925 (dp29926 S'editable' p29927 I01 sS'value' p29928 g47 sssS'notes' p29929 (dp29930 S'mandatory' p29931 (dp29932 S'editable' p29933 I00 sS'value' p29934 I00 ssS'name' p29935 (dp29936 S'editable' p29937 I01 sS'value' p29938 S'Notes' p29939 ssS'data_type' p29940 (dp29941 S'editable' p29942 I00 sS'value' p29943 S'multi_entity' p29944 ssS'entity_type' p29945 (dp29946 S'editable' p29947 I00 sS'value' p29948 S'CustomEntity03' p29949 ssS'editable' p29950 (dp29951 S'editable' p29952 I00 sS'value' p29953 I01 ssS'unique' p29954 (dp29955 S'editable' p29956 I00 sS'value' p29957 I00 ssS'properties' p29958 (dp29959 S'default_value' p29960 (dp29961 S'editable' p29962 I00 sS'value' p29963 NssS'summary_default' p29964 (dp29965 S'editable' p29966 I01 sS'value' p29967 S'none' p29968 ssS'valid_types' p29969 (dp29970 S'editable' p29971 I01 sS'value' p29972 (lp29973 S'Note' p29974 asssS'description' p29975 (dp29976 S'editable' p29977 I01 sS'value' p29978 g47 sssS'image' p29979 (dp29980 S'mandatory' p29981 (dp29982 S'editable' p29983 I00 sS'value' p29984 I00 ssS'name' p29985 (dp29986 S'editable' p29987 I01 sS'value' p29988 S'Thumbnail' p29989 ssS'data_type' p29990 (dp29991 S'editable' p29992 I00 sS'value' p29993 S'image' p29994 ssS'entity_type' p29995 (dp29996 S'editable' p29997 I00 sS'value' p29998 S'CustomEntity03' p29999 ssS'editable' p30000 (dp30001 S'editable' p30002 I00 sS'value' p30003 I01 ssS'unique' p30004 (dp30005 S'editable' p30006 I00 sS'value' p30007 I00 ssS'properties' p30008 (dp30009 S'default_value' p30010 (dp30011 S'editable' p30012 I00 sS'value' p30013 NssS'summary_default' p30014 (dp30015 S'editable' p30016 I01 sS'value' p30017 S'none' p30018 sssS'description' p30019 (dp30020 S'editable' p30021 I01 sS'value' p30022 g47 sssS'cached_display_name' p30023 (dp30024 S'mandatory' p30025 (dp30026 S'editable' p30027 I00 sS'value' p30028 I00 ssS'name' p30029 (dp30030 S'editable' p30031 I01 sS'value' p30032 S'Cached Display Name' p30033 ssS'data_type' p30034 (dp30035 S'editable' p30036 I00 sS'value' p30037 S'text' p30038 ssS'entity_type' p30039 (dp30040 S'editable' p30041 I00 sS'value' p30042 S'CustomEntity03' p30043 ssS'editable' p30044 (dp30045 S'editable' p30046 I00 sS'value' p30047 I01 ssS'unique' p30048 (dp30049 S'editable' p30050 I00 sS'value' p30051 I00 ssS'properties' p30052 (dp30053 S'default_value' p30054 (dp30055 S'editable' p30056 I00 sS'value' p30057 NssS'summary_default' p30058 (dp30059 S'editable' p30060 I00 sS'value' p30061 S'none' p30062 sssS'description' p30063 (dp30064 S'editable' p30065 I01 sS'value' p30066 g47 sssS'tag_list' p30067 (dp30068 S'mandatory' p30069 (dp30070 S'editable' p30071 I00 sS'value' p30072 I00 ssS'name' p30073 (dp30074 S'editable' p30075 I01 sS'value' p30076 S'Tags' p30077 ssS'data_type' p30078 (dp30079 S'editable' p30080 I00 sS'value' p30081 S'tag_list' p30082 ssS'entity_type' p30083 (dp30084 S'editable' p30085 I00 sS'value' p30086 S'CustomEntity03' p30087 ssS'editable' p30088 (dp30089 S'editable' p30090 I00 sS'value' p30091 I01 ssS'unique' p30092 (dp30093 S'editable' p30094 I00 sS'value' p30095 I00 ssS'properties' p30096 (dp30097 S'default_value' p30098 (dp30099 S'editable' p30100 I00 sS'value' p30101 NssS'summary_default' p30102 (dp30103 S'editable' p30104 I01 sS'value' p30105 S'none' p30106 ssS'valid_types' p30107 (dp30108 S'editable' p30109 I01 sS'value' p30110 (lp30111 S'Tag' p30112 asssS'description' p30113 (dp30114 S'editable' p30115 I01 sS'value' p30116 g47 sssS'id' p30117 (dp30118 S'mandatory' p30119 (dp30120 S'editable' p30121 I00 sS'value' p30122 I00 ssS'name' p30123 (dp30124 S'editable' p30125 I01 sS'value' p30126 S'Id' p30127 ssS'data_type' p30128 (dp30129 S'editable' p30130 I00 sS'value' p30131 S'number' p30132 ssS'entity_type' p30133 (dp30134 S'editable' p30135 I00 sS'value' p30136 S'CustomEntity03' p30137 ssS'editable' p30138 (dp30139 S'editable' p30140 I00 sS'value' p30141 I00 ssS'unique' p30142 (dp30143 S'editable' p30144 I00 sS'value' p30145 I00 ssS'properties' p30146 (dp30147 S'default_value' p30148 (dp30149 S'editable' p30150 I00 sS'value' p30151 NssS'summary_default' p30152 (dp30153 S'editable' p30154 I01 sS'value' p30155 S'none' p30156 sssS'description' p30157 (dp30158 S'editable' p30159 I01 sS'value' p30160 g47 sssS'updated_by' p30161 (dp30162 S'mandatory' p30163 (dp30164 S'editable' p30165 I00 sS'value' p30166 I00 ssS'name' p30167 (dp30168 S'editable' p30169 I01 sS'value' p30170 S'Updated by' p30171 ssS'data_type' p30172 (dp30173 S'editable' p30174 I00 sS'value' p30175 S'entity' p30176 ssS'entity_type' p30177 (dp30178 S'editable' p30179 I00 sS'value' p30180 S'CustomEntity03' p30181 ssS'editable' p30182 (dp30183 S'editable' p30184 I00 sS'value' p30185 I00 ssS'unique' p30186 (dp30187 S'editable' p30188 I00 sS'value' p30189 I00 ssS'properties' p30190 (dp30191 S'default_value' p30192 (dp30193 S'editable' p30194 I00 sS'value' p30195 NssS'summary_default' p30196 (dp30197 S'editable' p30198 I01 sS'value' p30199 S'none' p30200 ssS'valid_types' p30201 (dp30202 S'editable' p30203 I01 sS'value' p30204 (lp30205 S'HumanUser' p30206 aS'ApiUser' p30207 asssS'description' p30208 (dp30209 S'editable' p30210 I01 sS'value' p30211 g47 ssssS'FilesystemLocation' p30212 (dp30213 S'code' p30214 (dp30215 S'mandatory' p30216 (dp30217 S'editable' p30218 I00 sS'value' p30219 I01 ssS'name' p30220 (dp30221 S'editable' p30222 I01 sS'value' p30223 S'FilesystemLocation Name' p30224 ssS'data_type' p30225 (dp30226 S'editable' p30227 I00 sS'value' p30228 S'text' p30229 ssS'entity_type' p30230 (dp30231 S'editable' p30232 I00 sS'value' p30233 S'FilesystemLocation' p30234 ssS'editable' p30235 (dp30236 S'editable' p30237 I00 sS'value' p30238 I01 ssS'unique' p30239 (dp30240 S'editable' p30241 I00 sS'value' p30242 I00 ssS'properties' p30243 (dp30244 S'default_value' p30245 (dp30246 S'editable' p30247 I00 sS'value' p30248 NssS'summary_default' p30249 (dp30250 S'editable' p30251 I00 sS'value' p30252 S'none' p30253 sssS'description' p30254 (dp30255 S'editable' p30256 I01 sS'value' p30257 g47 sssS'linked_entity_type' p30258 (dp30259 S'mandatory' p30260 (dp30261 S'editable' p30262 I00 sS'value' p30263 I00 ssS'name' p30264 (dp30265 S'editable' p30266 I01 sS'value' p30267 S'Linked Entity Type' p30268 ssS'data_type' p30269 (dp30270 S'editable' p30271 I00 sS'value' p30272 S'text' p30273 ssS'entity_type' p30274 (dp30275 S'editable' p30276 I00 sS'value' p30277 S'FilesystemLocation' p30278 ssS'editable' p30279 (dp30280 S'editable' p30281 I00 sS'value' p30282 I01 ssS'unique' p30283 (dp30284 S'editable' p30285 I00 sS'value' p30286 I00 ssS'properties' p30287 (dp30288 S'default_value' p30289 (dp30290 S'editable' p30291 I00 sS'value' p30292 NssS'summary_default' p30293 (dp30294 S'editable' p30295 I01 sS'value' p30296 S'none' p30297 sssS'description' p30298 (dp30299 S'editable' p30300 I01 sS'value' p30301 g47 sssS'linked_entity_id' p30302 (dp30303 S'mandatory' p30304 (dp30305 S'editable' p30306 I00 sS'value' p30307 I00 ssS'name' p30308 (dp30309 S'editable' p30310 I01 sS'value' p30311 S'Linked Entity Id' p30312 ssS'data_type' p30313 (dp30314 S'editable' p30315 I00 sS'value' p30316 S'number' p30317 ssS'entity_type' p30318 (dp30319 S'editable' p30320 I00 sS'value' p30321 S'FilesystemLocation' p30322 ssS'editable' p30323 (dp30324 S'editable' p30325 I00 sS'value' p30326 I01 ssS'unique' p30327 (dp30328 S'editable' p30329 I00 sS'value' p30330 I00 ssS'properties' p30331 (dp30332 S'default_value' p30333 (dp30334 S'editable' p30335 I00 sS'value' p30336 NssS'summary_default' p30337 (dp30338 S'editable' p30339 I01 sS'value' p30340 S'none' p30341 sssS'description' p30342 (dp30343 S'editable' p30344 I01 sS'value' p30345 g47 sssS'is_primary' p30346 (dp30347 S'mandatory' p30348 (dp30349 S'editable' p30350 I00 sS'value' p30351 I00 ssS'name' p30352 (dp30353 S'editable' p30354 I01 sS'value' p30355 S'Primary' p30356 ssS'data_type' p30357 (dp30358 S'editable' p30359 I00 sS'value' p30360 S'checkbox' p30361 ssS'entity_type' p30362 (dp30363 S'editable' p30364 I00 sS'value' p30365 S'FilesystemLocation' p30366 ssS'editable' p30367 (dp30368 S'editable' p30369 I00 sS'value' p30370 I01 ssS'unique' p30371 (dp30372 S'editable' p30373 I00 sS'value' p30374 I00 ssS'properties' p30375 (dp30376 S'default_value' p30377 (dp30378 S'editable' p30379 I00 sS'value' p30380 NssS'summary_default' p30381 (dp30382 S'editable' p30383 I01 sS'value' p30384 S'none' p30385 sssS'description' p30386 (dp30387 S'editable' p30388 I01 sS'value' p30389 g47 sssS'created_at' p30390 (dp30391 S'mandatory' p30392 (dp30393 S'editable' p30394 I00 sS'value' p30395 I00 ssS'name' p30396 (dp30397 S'editable' p30398 I01 sS'value' p30399 S'Date Created' p30400 ssS'data_type' p30401 (dp30402 S'editable' p30403 I00 sS'value' p30404 S'date_time' p30405 ssS'entity_type' p30406 (dp30407 S'editable' p30408 I00 sS'value' p30409 S'FilesystemLocation' p30410 ssS'editable' p30411 (dp30412 S'editable' p30413 I00 sS'value' p30414 I00 ssS'unique' p30415 (dp30416 S'editable' p30417 I00 sS'value' p30418 I00 ssS'properties' p30419 (dp30420 S'default_value' p30421 (dp30422 S'editable' p30423 I00 sS'value' p30424 NssS'summary_default' p30425 (dp30426 S'editable' p30427 I01 sS'value' p30428 S'none' p30429 sssS'description' p30430 (dp30431 S'editable' p30432 I01 sS'value' p30433 g47 sssS'updated_at' p30434 (dp30435 S'mandatory' p30436 (dp30437 S'editable' p30438 I00 sS'value' p30439 I00 ssS'name' p30440 (dp30441 S'editable' p30442 I01 sS'value' p30443 S'Date Updated' p30444 ssS'data_type' p30445 (dp30446 S'editable' p30447 I00 sS'value' p30448 S'date_time' p30449 ssS'entity_type' p30450 (dp30451 S'editable' p30452 I00 sS'value' p30453 S'FilesystemLocation' p30454 ssS'editable' p30455 (dp30456 S'editable' p30457 I00 sS'value' p30458 I00 ssS'unique' p30459 (dp30460 S'editable' p30461 I00 sS'value' p30462 I00 ssS'properties' p30463 (dp30464 S'default_value' p30465 (dp30466 S'editable' p30467 I00 sS'value' p30468 NssS'summary_default' p30469 (dp30470 S'editable' p30471 I01 sS'value' p30472 S'none' p30473 sssS'description' p30474 (dp30475 S'editable' p30476 I01 sS'value' p30477 g47 sssS'created_by' p30478 (dp30479 S'mandatory' p30480 (dp30481 S'editable' p30482 I00 sS'value' p30483 I00 ssS'name' p30484 (dp30485 S'editable' p30486 I01 sS'value' p30487 S'Created by' p30488 ssS'data_type' p30489 (dp30490 S'editable' p30491 I00 sS'value' p30492 S'entity' p30493 ssS'entity_type' p30494 (dp30495 S'editable' p30496 I00 sS'value' p30497 S'FilesystemLocation' p30498 ssS'editable' p30499 (dp30500 S'editable' p30501 I00 sS'value' p30502 I00 ssS'unique' p30503 (dp30504 S'editable' p30505 I00 sS'value' p30506 I00 ssS'properties' p30507 (dp30508 S'default_value' p30509 (dp30510 S'editable' p30511 I00 sS'value' p30512 NssS'summary_default' p30513 (dp30514 S'editable' p30515 I01 sS'value' p30516 S'none' p30517 ssS'valid_types' p30518 (dp30519 S'editable' p30520 I01 sS'value' p30521 (lp30522 S'HumanUser' p30523 aS'ApiUser' p30524 asssS'description' p30525 (dp30526 S'editable' p30527 I01 sS'value' p30528 g47 sssS'entity' p30529 (dp30530 S'mandatory' p30531 (dp30532 S'editable' p30533 I00 sS'value' p30534 I00 ssS'name' p30535 (dp30536 S'editable' p30537 I01 sS'value' p30538 S'Link' p30539 ssS'data_type' p30540 (dp30541 S'editable' p30542 I00 sS'value' p30543 S'entity' p30544 ssS'entity_type' p30545 (dp30546 S'editable' p30547 I00 sS'value' p30548 S'FilesystemLocation' p30549 ssS'editable' p30550 (dp30551 S'editable' p30552 I00 sS'value' p30553 I01 ssS'unique' p30554 (dp30555 S'editable' p30556 I00 sS'value' p30557 I00 ssS'properties' p30558 (dp30559 S'default_value' p30560 (dp30561 S'editable' p30562 I00 sS'value' p30563 NssS'summary_default' p30564 (dp30565 S'editable' p30566 I01 sS'value' p30567 S'none' p30568 ssS'valid_types' p30569 (dp30570 S'editable' p30571 I01 sS'value' p30572 (lp30573 S'Asset' p30574 aS'Shot' p30575 aS'Sequence' p30576 asssS'description' p30577 (dp30578 S'editable' p30579 I01 sS'value' p30580 g47 sssS'project' p30581 (dp30582 S'mandatory' p30583 (dp30584 S'editable' p30585 I00 sS'value' p30586 I00 ssS'name' p30587 (dp30588 S'editable' p30589 I01 sS'value' p30590 S'Project' p30591 ssS'data_type' p30592 (dp30593 S'editable' p30594 I00 sS'value' p30595 S'entity' p30596 ssS'entity_type' p30597 (dp30598 S'editable' p30599 I00 sS'value' p30600 S'FilesystemLocation' p30601 ssS'editable' p30602 (dp30603 S'editable' p30604 I00 sS'value' p30605 I01 ssS'unique' p30606 (dp30607 S'editable' p30608 I00 sS'value' p30609 I00 ssS'properties' p30610 (dp30611 S'default_value' p30612 (dp30613 S'editable' p30614 I00 sS'value' p30615 NssS'summary_default' p30616 (dp30617 S'editable' p30618 I01 sS'value' p30619 S'none' p30620 ssS'valid_types' p30621 (dp30622 S'editable' p30623 I01 sS'value' p30624 (lp30625 S'Project' p30626 asssS'description' p30627 (dp30628 S'editable' p30629 I01 sS'value' p30630 g47 sssS'updated_by' p30631 (dp30632 S'mandatory' p30633 (dp30634 S'editable' p30635 I00 sS'value' p30636 I00 ssS'name' p30637 (dp30638 S'editable' p30639 I01 sS'value' p30640 S'Updated by' p30641 ssS'data_type' p30642 (dp30643 S'editable' p30644 I00 sS'value' p30645 S'entity' p30646 ssS'entity_type' p30647 (dp30648 S'editable' p30649 I00 sS'value' p30650 S'FilesystemLocation' p30651 ssS'editable' p30652 (dp30653 S'editable' p30654 I00 sS'value' p30655 I00 ssS'unique' p30656 (dp30657 S'editable' p30658 I00 sS'value' p30659 I00 ssS'properties' p30660 (dp30661 S'default_value' p30662 (dp30663 S'editable' p30664 I00 sS'value' p30665 NssS'summary_default' p30666 (dp30667 S'editable' p30668 I01 sS'value' p30669 S'none' p30670 ssS'valid_types' p30671 (dp30672 S'editable' p30673 I01 sS'value' p30674 (lp30675 S'HumanUser' p30676 aS'ApiUser' p30677 asssS'description' p30678 (dp30679 S'editable' p30680 I01 sS'value' p30681 g47 sssS'configuration_metadata' p30682 (dp30683 S'mandatory' p30684 (dp30685 S'editable' p30686 I00 sS'value' p30687 I00 ssS'name' p30688 (dp30689 S'editable' p30690 I01 sS'value' p30691 S'Configuration Metadata' p30692 ssS'data_type' p30693 (dp30694 S'editable' p30695 I00 sS'value' p30696 S'text' p30697 ssS'entity_type' p30698 (dp30699 S'editable' p30700 I00 sS'value' p30701 S'FilesystemLocation' p30702 ssS'editable' p30703 (dp30704 S'editable' p30705 I00 sS'value' p30706 I01 ssS'unique' p30707 (dp30708 S'editable' p30709 I00 sS'value' p30710 I00 ssS'properties' p30711 (dp30712 S'default_value' p30713 (dp30714 S'editable' p30715 I00 sS'value' p30716 NssS'summary_default' p30717 (dp30718 S'editable' p30719 I01 sS'value' p30720 S'none' p30721 sssS'description' p30722 (dp30723 S'editable' p30724 I01 sS'value' p30725 g47 sssS'path' p30726 (dp30727 S'mandatory' p30728 (dp30729 S'editable' p30730 I00 sS'value' p30731 I00 ssS'name' p30732 (dp30733 S'editable' p30734 I01 sS'value' p30735 S'Path' p30736 ssS'data_type' p30737 (dp30738 S'editable' p30739 I00 sS'value' p30740 S'url' p30741 ssS'entity_type' p30742 (dp30743 S'editable' p30744 I00 sS'value' p30745 S'FilesystemLocation' p30746 ssS'editable' p30747 (dp30748 S'editable' p30749 I00 sS'value' p30750 I01 ssS'unique' p30751 (dp30752 S'editable' p30753 I00 sS'value' p30754 I00 ssS'properties' p30755 (dp30756 S'default_value' p30757 (dp30758 S'editable' p30759 I00 sS'value' p30760 NssS'open_in_new_window' p30761 (dp30762 S'editable' p30763 I01 sS'value' p30764 I01 ssS'summary_default' p30765 (dp30766 S'editable' p30767 I01 sS'value' p30768 S'none' p30769 sssS'description' p30770 (dp30771 S'editable' p30772 I01 sS'value' p30773 g47 sssS'id' p30774 (dp30775 S'mandatory' p30776 (dp30777 S'editable' p30778 I00 sS'value' p30779 I00 ssS'name' p30780 (dp30781 S'editable' p30782 I01 sS'value' p30783 S'Id' p30784 ssS'data_type' p30785 (dp30786 S'editable' p30787 I00 sS'value' p30788 S'number' p30789 ssS'entity_type' p30790 (dp30791 S'editable' p30792 I00 sS'value' p30793 S'FilesystemLocation' p30794 ssS'editable' p30795 (dp30796 S'editable' p30797 I00 sS'value' p30798 I00 ssS'unique' p30799 (dp30800 S'editable' p30801 I00 sS'value' p30802 I00 ssS'properties' p30803 (dp30804 S'default_value' p30805 (dp30806 S'editable' p30807 I00 sS'value' p30808 NssS'summary_default' p30809 (dp30810 S'editable' p30811 I00 sS'value' p30812 S'none' p30813 sssS'description' p30814 (dp30815 S'editable' p30816 I01 sS'value' p30817 g47 sssS'pipeline_configuration' p30818 (dp30819 S'mandatory' p30820 (dp30821 S'editable' p30822 I00 sS'value' p30823 I00 ssS'name' p30824 (dp30825 S'editable' p30826 I01 sS'value' p30827 S'Pipeline Configuration' p30828 ssS'data_type' p30829 (dp30830 S'editable' p30831 I00 sS'value' p30832 S'entity' p30833 ssS'entity_type' p30834 (dp30835 S'editable' p30836 I00 sS'value' p30837 S'FilesystemLocation' p30838 ssS'editable' p30839 (dp30840 S'editable' p30841 I00 sS'value' p30842 I01 ssS'unique' p30843 (dp30844 S'editable' p30845 I00 sS'value' p30846 I00 ssS'properties' p30847 (dp30848 S'default_value' p30849 (dp30850 S'editable' p30851 I00 sS'value' p30852 NssS'summary_default' p30853 (dp30854 S'editable' p30855 I01 sS'value' p30856 S'none' p30857 ssS'valid_types' p30858 (dp30859 S'editable' p30860 I01 sS'value' p30861 (lp30862 S'PipelineConfiguration' p30863 asssS'description' p30864 (dp30865 S'editable' p30866 I01 sS'value' p30867 g47 ssssS'CustomEntity01' p30868 (dp30869 S'open_notes_count' p30870 (dp30871 S'mandatory' p30872 (dp30873 S'editable' p30874 I00 sS'value' p30875 I00 ssS'name' p30876 (dp30877 S'editable' p30878 I01 sS'value' p30879 S'Open Notes Count' p30880 ssS'data_type' p30881 (dp30882 S'editable' p30883 I00 sS'value' p30884 S'text' p30885 ssS'entity_type' p30886 (dp30887 S'editable' p30888 I00 sS'value' p30889 S'CustomEntity01' p30890 ssS'editable' p30891 (dp30892 S'editable' p30893 I00 sS'value' p30894 I00 ssS'unique' p30895 (dp30896 S'editable' p30897 I00 sS'value' p30898 I00 ssS'properties' p30899 (dp30900 S'default_value' p30901 (dp30902 S'editable' p30903 I00 sS'value' p30904 NssS'summary_default' p30905 (dp30906 S'editable' p30907 I01 sS'value' p30908 S'none' p30909 sssS'description' p30910 (dp30911 S'editable' p30912 I01 sS'value' p30913 g47 sssS'code' p30914 (dp30915 S'mandatory' p30916 (dp30917 S'editable' p30918 I00 sS'value' p30919 I01 ssS'name' p30920 (dp30921 S'editable' p30922 I01 sS'value' p30923 S'Disk Location Name' p30924 ssS'data_type' p30925 (dp30926 S'editable' p30927 I00 sS'value' p30928 S'text' p30929 ssS'entity_type' p30930 (dp30931 S'editable' p30932 I00 sS'value' p30933 S'CustomEntity01' p30934 ssS'editable' p30935 (dp30936 S'editable' p30937 I00 sS'value' p30938 I01 ssS'unique' p30939 (dp30940 S'editable' p30941 I00 sS'value' p30942 I00 ssS'properties' p30943 (dp30944 S'default_value' p30945 (dp30946 S'editable' p30947 I00 sS'value' p30948 NssS'summary_default' p30949 (dp30950 S'editable' p30951 I01 sS'value' p30952 S'none' p30953 sssS'description' p30954 (dp30955 S'editable' p30956 I01 sS'value' p30957 g47 sssS'image' p30958 (dp30959 S'mandatory' p30960 (dp30961 S'editable' p30962 I00 sS'value' p30963 I00 ssS'name' p30964 (dp30965 S'editable' p30966 I01 sS'value' p30967 S'Thumbnail' p30968 ssS'data_type' p30969 (dp30970 S'editable' p30971 I00 sS'value' p30972 S'image' p30973 ssS'entity_type' p30974 (dp30975 S'editable' p30976 I00 sS'value' p30977 S'CustomEntity01' p30978 ssS'editable' p30979 (dp30980 S'editable' p30981 I00 sS'value' p30982 I01 ssS'unique' p30983 (dp30984 S'editable' p30985 I00 sS'value' p30986 I00 ssS'properties' p30987 (dp30988 S'default_value' p30989 (dp30990 S'editable' p30991 I00 sS'value' p30992 NssS'summary_default' p30993 (dp30994 S'editable' p30995 I01 sS'value' p30996 S'none' p30997 sssS'description' p30998 (dp30999 S'editable' p31000 I01 sS'value' p31001 g47 sssS'updated_at' p31002 (dp31003 S'mandatory' p31004 (dp31005 S'editable' p31006 I00 sS'value' p31007 I00 ssS'name' p31008 (dp31009 S'editable' p31010 I01 sS'value' p31011 S'Date Updated' p31012 ssS'data_type' p31013 (dp31014 S'editable' p31015 I00 sS'value' p31016 S'date_time' p31017 ssS'entity_type' p31018 (dp31019 S'editable' p31020 I00 sS'value' p31021 S'CustomEntity01' p31022 ssS'editable' p31023 (dp31024 S'editable' p31025 I00 sS'value' p31026 I00 ssS'unique' p31027 (dp31028 S'editable' p31029 I00 sS'value' p31030 I00 ssS'properties' p31031 (dp31032 S'default_value' p31033 (dp31034 S'editable' p31035 I00 sS'value' p31036 NssS'summary_default' p31037 (dp31038 S'editable' p31039 I01 sS'value' p31040 S'none' p31041 sssS'description' p31042 (dp31043 S'editable' p31044 I01 sS'value' p31045 g47 sssS'cached_display_name' p31046 (dp31047 S'mandatory' p31048 (dp31049 S'editable' p31050 I00 sS'value' p31051 I00 ssS'name' p31052 (dp31053 S'editable' p31054 I01 sS'value' p31055 S'Cached Display Name' p31056 ssS'data_type' p31057 (dp31058 S'editable' p31059 I00 sS'value' p31060 S'text' p31061 ssS'entity_type' p31062 (dp31063 S'editable' p31064 I00 sS'value' p31065 S'CustomEntity01' p31066 ssS'editable' p31067 (dp31068 S'editable' p31069 I00 sS'value' p31070 I01 ssS'unique' p31071 (dp31072 S'editable' p31073 I00 sS'value' p31074 I00 ssS'properties' p31075 (dp31076 S'default_value' p31077 (dp31078 S'editable' p31079 I00 sS'value' p31080 NssS'summary_default' p31081 (dp31082 S'editable' p31083 I00 sS'value' p31084 S'none' p31085 sssS'description' p31086 (dp31087 S'editable' p31088 I01 sS'value' p31089 g47 sssS'id' p31090 (dp31091 S'mandatory' p31092 (dp31093 S'editable' p31094 I00 sS'value' p31095 I00 ssS'name' p31096 (dp31097 S'editable' p31098 I01 sS'value' p31099 S'Id' p31100 ssS'data_type' p31101 (dp31102 S'editable' p31103 I00 sS'value' p31104 S'number' p31105 ssS'entity_type' p31106 (dp31107 S'editable' p31108 I00 sS'value' p31109 S'CustomEntity01' p31110 ssS'editable' p31111 (dp31112 S'editable' p31113 I00 sS'value' p31114 I00 ssS'unique' p31115 (dp31116 S'editable' p31117 I00 sS'value' p31118 I00 ssS'properties' p31119 (dp31120 S'default_value' p31121 (dp31122 S'editable' p31123 I00 sS'value' p31124 NssS'summary_default' p31125 (dp31126 S'editable' p31127 I01 sS'value' p31128 S'none' p31129 sssS'description' p31130 (dp31131 S'editable' p31132 I01 sS'value' p31133 g47 sssS'updated_by' p31134 (dp31135 S'mandatory' p31136 (dp31137 S'editable' p31138 I00 sS'value' p31139 I00 ssS'name' p31140 (dp31141 S'editable' p31142 I01 sS'value' p31143 S'Updated by' p31144 ssS'data_type' p31145 (dp31146 S'editable' p31147 I00 sS'value' p31148 S'entity' p31149 ssS'entity_type' p31150 (dp31151 S'editable' p31152 I00 sS'value' p31153 S'CustomEntity01' p31154 ssS'editable' p31155 (dp31156 S'editable' p31157 I00 sS'value' p31158 I00 ssS'unique' p31159 (dp31160 S'editable' p31161 I00 sS'value' p31162 I00 ssS'properties' p31163 (dp31164 S'default_value' p31165 (dp31166 S'editable' p31167 I00 sS'value' p31168 NssS'summary_default' p31169 (dp31170 S'editable' p31171 I01 sS'value' p31172 S'none' p31173 ssS'valid_types' p31174 (dp31175 S'editable' p31176 I01 sS'value' p31177 (lp31178 S'HumanUser' p31179 aS'ApiUser' p31180 asssS'description' p31181 (dp31182 S'editable' p31183 I01 sS'value' p31184 g47 sssS'open_notes' p31185 (dp31186 S'mandatory' p31187 (dp31188 S'editable' p31189 I00 sS'value' p31190 I00 ssS'name' p31191 (dp31192 S'editable' p31193 I01 sS'value' p31194 S'Open Notes' p31195 ssS'data_type' p31196 (dp31197 S'editable' p31198 I00 sS'value' p31199 S'multi_entity' p31200 ssS'entity_type' p31201 (dp31202 S'editable' p31203 I00 sS'value' p31204 S'CustomEntity01' p31205 ssS'editable' p31206 (dp31207 S'editable' p31208 I00 sS'value' p31209 I00 ssS'unique' p31210 (dp31211 S'editable' p31212 I00 sS'value' p31213 I00 ssS'properties' p31214 (dp31215 S'default_value' p31216 (dp31217 S'editable' p31218 I00 sS'value' p31219 NssS'summary_default' p31220 (dp31221 S'editable' p31222 I01 sS'value' p31223 S'none' p31224 ssS'valid_types' p31225 (dp31226 S'editable' p31227 I01 sS'value' p31228 (lp31229 S'Note' p31230 asssS'description' p31231 (dp31232 S'editable' p31233 I01 sS'value' p31234 g47 sssS'sg_metadata' p31235 (dp31236 S'mandatory' p31237 (dp31238 S'editable' p31239 I00 sS'value' p31240 I00 ssS'name' p31241 (dp31242 S'editable' p31243 I01 sS'value' p31244 S'metadata' p31245 ssS'data_type' p31246 (dp31247 S'editable' p31248 I00 sS'value' p31249 S'text' p31250 ssS'entity_type' p31251 (dp31252 S'editable' p31253 I00 sS'value' p31254 S'CustomEntity01' p31255 ssS'editable' p31256 (dp31257 S'editable' p31258 I00 sS'value' p31259 I01 ssS'unique' p31260 (dp31261 S'editable' p31262 I00 sS'value' p31263 I00 ssS'properties' p31264 (dp31265 S'default_value' p31266 (dp31267 S'editable' p31268 I00 sS'value' p31269 NssS'summary_default' p31270 (dp31271 S'editable' p31272 I01 sS'value' p31273 S'none' p31274 sssS'description' p31275 (dp31276 S'editable' p31277 I01 sS'value' p31278 g47 sssS'created_by' p31279 (dp31280 S'mandatory' p31281 (dp31282 S'editable' p31283 I00 sS'value' p31284 I00 ssS'name' p31285 (dp31286 S'editable' p31287 I01 sS'value' p31288 S'Created by' p31289 ssS'data_type' p31290 (dp31291 S'editable' p31292 I00 sS'value' p31293 S'entity' p31294 ssS'entity_type' p31295 (dp31296 S'editable' p31297 I00 sS'value' p31298 S'CustomEntity01' p31299 ssS'editable' p31300 (dp31301 S'editable' p31302 I00 sS'value' p31303 I00 ssS'unique' p31304 (dp31305 S'editable' p31306 I00 sS'value' p31307 I00 ssS'properties' p31308 (dp31309 S'default_value' p31310 (dp31311 S'editable' p31312 I00 sS'value' p31313 NssS'summary_default' p31314 (dp31315 S'editable' p31316 I01 sS'value' p31317 S'none' p31318 ssS'valid_types' p31319 (dp31320 S'editable' p31321 I01 sS'value' p31322 (lp31323 S'HumanUser' p31324 aS'ApiUser' p31325 asssS'description' p31326 (dp31327 S'editable' p31328 I01 sS'value' p31329 g47 sssS'sg_path' p31330 (dp31331 S'mandatory' p31332 (dp31333 S'editable' p31334 I00 sS'value' p31335 I00 ssS'name' p31336 (dp31337 S'editable' p31338 I01 sS'value' p31339 S'Path' p31340 ssS'data_type' p31341 (dp31342 S'editable' p31343 I00 sS'value' p31344 S'url' p31345 ssS'entity_type' p31346 (dp31347 S'editable' p31348 I00 sS'value' p31349 S'CustomEntity01' p31350 ssS'editable' p31351 (dp31352 S'editable' p31353 I00 sS'value' p31354 I01 ssS'unique' p31355 (dp31356 S'editable' p31357 I00 sS'value' p31358 I00 ssS'properties' p31359 (dp31360 S'default_value' p31361 (dp31362 S'editable' p31363 I00 sS'value' p31364 NssS'open_in_new_window' p31365 (dp31366 S'editable' p31367 I01 sS'value' p31368 I01 ssS'summary_default' p31369 (dp31370 S'editable' p31371 I01 sS'value' p31372 S'none' p31373 sssS'description' p31374 (dp31375 S'editable' p31376 I01 sS'value' p31377 g47 sssS'sg_status_list' p31378 (dp31379 S'mandatory' p31380 (dp31381 S'editable' p31382 I00 sS'value' p31383 I00 ssS'name' p31384 (dp31385 S'editable' p31386 I01 sS'value' p31387 S'Status' p31388 ssS'data_type' p31389 (dp31390 S'editable' p31391 I00 sS'value' p31392 S'status_list' p31393 ssS'entity_type' p31394 (dp31395 S'editable' p31396 I00 sS'value' p31397 S'CustomEntity01' p31398 ssS'editable' p31399 (dp31400 S'editable' p31401 I00 sS'value' p31402 I01 ssS'unique' p31403 (dp31404 S'editable' p31405 I00 sS'value' p31406 I00 ssS'properties' p31407 (dp31408 S'default_value' p31409 (dp31410 S'editable' p31411 I01 sS'value' p31412 S'wtg' p31413 ssS'valid_values' p31414 (dp31415 S'editable' p31416 I01 sS'value' p31417 (lp31418 S'cmpt' p31419 aS'ip' p31420 aS'wtg' p31421 assS'summary_default' p31422 (dp31423 S'editable' p31424 I01 sS'value' p31425 S'none' p31426 sssS'description' p31427 (dp31428 S'editable' p31429 I01 sS'value' p31430 g47 sssS'sg_entity_name' p31431 (dp31432 S'mandatory' p31433 (dp31434 S'editable' p31435 I00 sS'value' p31436 I00 ssS'name' p31437 (dp31438 S'editable' p31439 I01 sS'value' p31440 S'Entity Name' p31441 ssS'data_type' p31442 (dp31443 S'editable' p31444 I00 sS'value' p31445 S'text' p31446 ssS'entity_type' p31447 (dp31448 S'editable' p31449 I00 sS'value' p31450 S'CustomEntity01' p31451 ssS'editable' p31452 (dp31453 S'editable' p31454 I00 sS'value' p31455 I01 ssS'unique' p31456 (dp31457 S'editable' p31458 I00 sS'value' p31459 I00 ssS'properties' p31460 (dp31461 S'default_value' p31462 (dp31463 S'editable' p31464 I00 sS'value' p31465 NssS'summary_default' p31466 (dp31467 S'editable' p31468 I01 sS'value' p31469 S'none' p31470 sssS'description' p31471 (dp31472 S'editable' p31473 I01 sS'value' p31474 g47 sssS'sg_secondary_entities' p31475 (dp31476 S'mandatory' p31477 (dp31478 S'editable' p31479 I00 sS'value' p31480 I00 ssS'name' p31481 (dp31482 S'editable' p31483 I01 sS'value' p31484 S'Secondary Entities' p31485 ssS'data_type' p31486 (dp31487 S'editable' p31488 I00 sS'value' p31489 S'text' p31490 ssS'entity_type' p31491 (dp31492 S'editable' p31493 I00 sS'value' p31494 S'CustomEntity01' p31495 ssS'editable' p31496 (dp31497 S'editable' p31498 I00 sS'value' p31499 I01 ssS'unique' p31500 (dp31501 S'editable' p31502 I00 sS'value' p31503 I00 ssS'properties' p31504 (dp31505 S'default_value' p31506 (dp31507 S'editable' p31508 I00 sS'value' p31509 NssS'summary_default' p31510 (dp31511 S'editable' p31512 I01 sS'value' p31513 S'none' p31514 sssS'description' p31515 (dp31516 S'editable' p31517 I01 sS'value' p31518 g47 sssS'sg_entity' p31519 (dp31520 S'mandatory' p31521 (dp31522 S'editable' p31523 I00 sS'value' p31524 I00 ssS'name' p31525 (dp31526 S'editable' p31527 I01 sS'value' p31528 S'Entity' p31529 ssS'data_type' p31530 (dp31531 S'editable' p31532 I00 sS'value' p31533 S'entity' p31534 ssS'entity_type' p31535 (dp31536 S'editable' p31537 I00 sS'value' p31538 S'CustomEntity01' p31539 ssS'editable' p31540 (dp31541 S'editable' p31542 I00 sS'value' p31543 I01 ssS'unique' p31544 (dp31545 S'editable' p31546 I00 sS'value' p31547 I00 ssS'properties' p31548 (dp31549 S'default_value' p31550 (dp31551 S'editable' p31552 I00 sS'value' p31553 NssS'summary_default' p31554 (dp31555 S'editable' p31556 I01 sS'value' p31557 S'none' p31558 ssS'valid_types' p31559 (dp31560 S'editable' p31561 I01 sS'value' p31562 (lp31563 S'Asset' p31564 aS'Booking' p31565 aS'Department' p31566 aS'CustomEntity01' p31567 aS'Attachment' p31568 aS'Group' p31569 aS'Note' p31570 aS'Page' p31571 aS'HumanUser' p31572 aS'Phase' p31573 aS'Playlist' p31574 aS'PipelineConfiguration' p31575 aS'Project' p31576 aS'PublishedFileDependency' p31577 aS'PublishedFile' p31578 aS'PublishedFileType' p31579 aS'ApiUser' p31580 aS'Sequence' p31581 aS'Shot' p31582 aS'Step' p31583 aS'TankDependency' p31584 aS'TankPublishedFile' p31585 aS'TankType' p31586 aS'Task' p31587 aS'TimeLog' p31588 aS'Version' p31589 aS'TaskTemplate' p31590 asssS'description' p31591 (dp31592 S'editable' p31593 I01 sS'value' p31594 g47 sssS'description' p31595 (dp31596 S'mandatory' p31597 (dp31598 S'editable' p31599 I00 sS'value' p31600 I00 ssS'name' p31601 (dp31602 S'editable' p31603 I01 sS'value' p31604 S'Description' p31605 ssS'data_type' p31606 (dp31607 S'editable' p31608 I00 sS'value' p31609 S'text' p31610 ssS'entity_type' p31611 (dp31612 S'editable' p31613 I00 sS'value' p31614 S'CustomEntity01' p31615 ssS'editable' p31616 (dp31617 S'editable' p31618 I00 sS'value' p31619 I01 ssS'unique' p31620 (dp31621 S'editable' p31622 I00 sS'value' p31623 I00 ssS'properties' p31624 (dp31625 S'default_value' p31626 (dp31627 S'editable' p31628 I00 sS'value' p31629 NssS'summary_default' p31630 (dp31631 S'editable' p31632 I01 sS'value' p31633 S'none' p31634 sssS'description' p31635 (dp31636 S'editable' p31637 I01 sS'value' p31638 g47 sssS'sg_pipeline_configuration' p31639 (dp31640 S'mandatory' p31641 (dp31642 S'editable' p31643 I00 sS'value' p31644 I00 ssS'name' p31645 (dp31646 S'editable' p31647 I01 sS'value' p31648 S'Pipeline Configuration' p31649 ssS'data_type' p31650 (dp31651 S'editable' p31652 I00 sS'value' p31653 S'entity' p31654 ssS'entity_type' p31655 (dp31656 S'editable' p31657 I00 sS'value' p31658 S'CustomEntity01' p31659 ssS'editable' p31660 (dp31661 S'editable' p31662 I00 sS'value' p31663 I01 ssS'unique' p31664 (dp31665 S'editable' p31666 I00 sS'value' p31667 I00 ssS'properties' p31668 (dp31669 S'default_value' p31670 (dp31671 S'editable' p31672 I00 sS'value' p31673 NssS'summary_default' p31674 (dp31675 S'editable' p31676 I01 sS'value' p31677 S'none' p31678 ssS'valid_types' p31679 (dp31680 S'editable' p31681 I01 sS'value' p31682 (lp31683 S'PipelineConfiguration' p31684 asssS'description' p31685 (dp31686 S'editable' p31687 I01 sS'value' p31688 g47 sssS'sg_primary' p31689 (dp31690 S'mandatory' p31691 (dp31692 S'editable' p31693 I00 sS'value' p31694 I00 ssS'name' p31695 (dp31696 S'editable' p31697 I01 sS'value' p31698 S'Primary' p31699 ssS'data_type' p31700 (dp31701 S'editable' p31702 I00 sS'value' p31703 S'checkbox' p31704 ssS'entity_type' p31705 (dp31706 S'editable' p31707 I00 sS'value' p31708 S'CustomEntity01' p31709 ssS'editable' p31710 (dp31711 S'editable' p31712 I00 sS'value' p31713 I01 ssS'unique' p31714 (dp31715 S'editable' p31716 I00 sS'value' p31717 I00 ssS'properties' p31718 (dp31719 S'default_value' p31720 (dp31721 S'editable' p31722 I00 sS'value' p31723 I00 ssS'summary_default' p31724 (dp31725 S'editable' p31726 I01 sS'value' p31727 S'none' p31728 sssS'description' p31729 (dp31730 S'editable' p31731 I01 sS'value' p31732 g47 sssS'sg_id_at_creation' p31733 (dp31734 S'mandatory' p31735 (dp31736 S'editable' p31737 I00 sS'value' p31738 I00 ssS'name' p31739 (dp31740 S'editable' p31741 I01 sS'value' p31742 S'Id At Creation' p31743 ssS'data_type' p31744 (dp31745 S'editable' p31746 I00 sS'value' p31747 S'number' p31748 ssS'entity_type' p31749 (dp31750 S'editable' p31751 I00 sS'value' p31752 S'CustomEntity01' p31753 ssS'editable' p31754 (dp31755 S'editable' p31756 I00 sS'value' p31757 I01 ssS'unique' p31758 (dp31759 S'editable' p31760 I00 sS'value' p31761 I00 ssS'properties' p31762 (dp31763 S'default_value' p31764 (dp31765 S'editable' p31766 I00 sS'value' p31767 NssS'summary_default' p31768 (dp31769 S'editable' p31770 I01 sS'value' p31771 S'none' p31772 sssS'description' p31773 (dp31774 S'editable' p31775 I01 sS'value' p31776 g47 sssS'sg_name_at_creation' p31777 (dp31778 S'mandatory' p31779 (dp31780 S'editable' p31781 I00 sS'value' p31782 I00 ssS'name' p31783 (dp31784 S'editable' p31785 I01 sS'value' p31786 S'Name At Creation' p31787 ssS'data_type' p31788 (dp31789 S'editable' p31790 I00 sS'value' p31791 S'text' p31792 ssS'entity_type' p31793 (dp31794 S'editable' p31795 I00 sS'value' p31796 S'CustomEntity01' p31797 ssS'editable' p31798 (dp31799 S'editable' p31800 I00 sS'value' p31801 I01 ssS'unique' p31802 (dp31803 S'editable' p31804 I00 sS'value' p31805 I00 ssS'properties' p31806 (dp31807 S'default_value' p31808 (dp31809 S'editable' p31810 I00 sS'value' p31811 NssS'summary_default' p31812 (dp31813 S'editable' p31814 I01 sS'value' p31815 S'none' p31816 sssS'description' p31817 (dp31818 S'editable' p31819 I01 sS'value' p31820 g47 sssS'sg_root' p31821 (dp31822 S'mandatory' p31823 (dp31824 S'editable' p31825 I00 sS'value' p31826 I00 ssS'name' p31827 (dp31828 S'editable' p31829 I01 sS'value' p31830 S'Root' p31831 ssS'data_type' p31832 (dp31833 S'editable' p31834 I00 sS'value' p31835 S'text' p31836 ssS'entity_type' p31837 (dp31838 S'editable' p31839 I00 sS'value' p31840 S'CustomEntity01' p31841 ssS'editable' p31842 (dp31843 S'editable' p31844 I00 sS'value' p31845 I01 ssS'unique' p31846 (dp31847 S'editable' p31848 I00 sS'value' p31849 I00 ssS'properties' p31850 (dp31851 S'default_value' p31852 (dp31853 S'editable' p31854 I00 sS'value' p31855 NssS'summary_default' p31856 (dp31857 S'editable' p31858 I01 sS'value' p31859 S'none' p31860 sssS'description' p31861 (dp31862 S'editable' p31863 I01 sS'value' p31864 g47 sssS'sg_entity_type_1' p31865 (dp31866 S'mandatory' p31867 (dp31868 S'editable' p31869 I00 sS'value' p31870 I00 ssS'name' p31871 (dp31872 S'editable' p31873 I01 sS'value' p31874 S'Entity Type' p31875 ssS'data_type' p31876 (dp31877 S'editable' p31878 I00 sS'value' p31879 S'text' p31880 ssS'entity_type' p31881 (dp31882 S'editable' p31883 I00 sS'value' p31884 S'CustomEntity01' p31885 ssS'editable' p31886 (dp31887 S'editable' p31888 I00 sS'value' p31889 I01 ssS'unique' p31890 (dp31891 S'editable' p31892 I00 sS'value' p31893 I00 ssS'properties' p31894 (dp31895 S'default_value' p31896 (dp31897 S'editable' p31898 I00 sS'value' p31899 NssS'summary_default' p31900 (dp31901 S'editable' p31902 I01 sS'value' p31903 S'none' p31904 sssS'description' p31905 (dp31906 S'editable' p31907 I01 sS'value' p31908 g47 sssS'notes' p31909 (dp31910 S'mandatory' p31911 (dp31912 S'editable' p31913 I00 sS'value' p31914 I00 ssS'name' p31915 (dp31916 S'editable' p31917 I01 sS'value' p31918 S'Notes' p31919 ssS'data_type' p31920 (dp31921 S'editable' p31922 I00 sS'value' p31923 S'multi_entity' p31924 ssS'entity_type' p31925 (dp31926 S'editable' p31927 I00 sS'value' p31928 S'CustomEntity01' p31929 ssS'editable' p31930 (dp31931 S'editable' p31932 I00 sS'value' p31933 I01 ssS'unique' p31934 (dp31935 S'editable' p31936 I00 sS'value' p31937 I00 ssS'properties' p31938 (dp31939 S'default_value' p31940 (dp31941 S'editable' p31942 I00 sS'value' p31943 NssS'summary_default' p31944 (dp31945 S'editable' p31946 I01 sS'value' p31947 S'none' p31948 ssS'valid_types' p31949 (dp31950 S'editable' p31951 I01 sS'value' p31952 (lp31953 S'Note' p31954 asssS'description' p31955 (dp31956 S'editable' p31957 I01 sS'value' p31958 g47 sssS'sg_relative_path' p31959 (dp31960 S'mandatory' p31961 (dp31962 S'editable' p31963 I00 sS'value' p31964 I00 ssS'name' p31965 (dp31966 S'editable' p31967 I01 sS'value' p31968 S'Relative Path' p31969 ssS'data_type' p31970 (dp31971 S'editable' p31972 I00 sS'value' p31973 S'text' p31974 ssS'entity_type' p31975 (dp31976 S'editable' p31977 I00 sS'value' p31978 S'CustomEntity01' p31979 ssS'editable' p31980 (dp31981 S'editable' p31982 I00 sS'value' p31983 I01 ssS'unique' p31984 (dp31985 S'editable' p31986 I00 sS'value' p31987 I00 ssS'properties' p31988 (dp31989 S'default_value' p31990 (dp31991 S'editable' p31992 I00 sS'value' p31993 NssS'summary_default' p31994 (dp31995 S'editable' p31996 I01 sS'value' p31997 S'none' p31998 sssS'description' p31999 (dp32000 S'editable' p32001 I01 sS'value' p32002 g47 sssS'project' p32003 (dp32004 S'mandatory' p32005 (dp32006 S'editable' p32007 I00 sS'value' p32008 I00 ssS'name' p32009 (dp32010 S'editable' p32011 I01 sS'value' p32012 S'Project' p32013 ssS'data_type' p32014 (dp32015 S'editable' p32016 I00 sS'value' p32017 S'entity' p32018 ssS'entity_type' p32019 (dp32020 S'editable' p32021 I00 sS'value' p32022 S'CustomEntity01' p32023 ssS'editable' p32024 (dp32025 S'editable' p32026 I00 sS'value' p32027 I01 ssS'unique' p32028 (dp32029 S'editable' p32030 I00 sS'value' p32031 I00 ssS'properties' p32032 (dp32033 S'default_value' p32034 (dp32035 S'editable' p32036 I00 sS'value' p32037 NssS'summary_default' p32038 (dp32039 S'editable' p32040 I01 sS'value' p32041 S'none' p32042 ssS'valid_types' p32043 (dp32044 S'editable' p32045 I01 sS'value' p32046 (lp32047 S'Project' p32048 asssS'description' p32049 (dp32050 S'editable' p32051 I01 sS'value' p32052 g47 sssS'filmstrip_image' p32053 (dp32054 S'mandatory' p32055 (dp32056 S'editable' p32057 I00 sS'value' p32058 I00 ssS'name' p32059 (dp32060 S'editable' p32061 I01 sS'value' p32062 S'Filmstrip Thumbnail' p32063 ssS'data_type' p32064 (dp32065 S'editable' p32066 I00 sS'value' p32067 S'image' p32068 ssS'entity_type' p32069 (dp32070 S'editable' p32071 I00 sS'value' p32072 S'CustomEntity01' p32073 ssS'editable' p32074 (dp32075 S'editable' p32076 I00 sS'value' p32077 I01 ssS'unique' p32078 (dp32079 S'editable' p32080 I00 sS'value' p32081 I00 ssS'properties' p32082 (dp32083 S'default_value' p32084 (dp32085 S'editable' p32086 I00 sS'value' p32087 NssS'summary_default' p32088 (dp32089 S'editable' p32090 I01 sS'value' p32091 S'none' p32092 sssS'description' p32093 (dp32094 S'editable' p32095 I01 sS'value' p32096 g47 sssS'sg_type_at_creation' p32097 (dp32098 S'mandatory' p32099 (dp32100 S'editable' p32101 I00 sS'value' p32102 I00 ssS'name' p32103 (dp32104 S'editable' p32105 I01 sS'value' p32106 S'Type At Creation' p32107 ssS'data_type' p32108 (dp32109 S'editable' p32110 I00 sS'value' p32111 S'text' p32112 ssS'entity_type' p32113 (dp32114 S'editable' p32115 I00 sS'value' p32116 S'CustomEntity01' p32117 ssS'editable' p32118 (dp32119 S'editable' p32120 I00 sS'value' p32121 I01 ssS'unique' p32122 (dp32123 S'editable' p32124 I00 sS'value' p32125 I00 ssS'properties' p32126 (dp32127 S'default_value' p32128 (dp32129 S'editable' p32130 I00 sS'value' p32131 NssS'summary_default' p32132 (dp32133 S'editable' p32134 I01 sS'value' p32135 S'none' p32136 sssS'description' p32137 (dp32138 S'editable' p32139 I01 sS'value' p32140 g47 sssS'tag_list' p32141 (dp32142 S'mandatory' p32143 (dp32144 S'editable' p32145 I00 sS'value' p32146 I00 ssS'name' p32147 (dp32148 S'editable' p32149 I01 sS'value' p32150 S'Tags' p32151 ssS'data_type' p32152 (dp32153 S'editable' p32154 I00 sS'value' p32155 S'tag_list' p32156 ssS'entity_type' p32157 (dp32158 S'editable' p32159 I00 sS'value' p32160 S'CustomEntity01' p32161 ssS'editable' p32162 (dp32163 S'editable' p32164 I00 sS'value' p32165 I01 ssS'unique' p32166 (dp32167 S'editable' p32168 I00 sS'value' p32169 I00 ssS'properties' p32170 (dp32171 S'default_value' p32172 (dp32173 S'editable' p32174 I00 sS'value' p32175 NssS'summary_default' p32176 (dp32177 S'editable' p32178 I01 sS'value' p32179 S'none' p32180 ssS'valid_types' p32181 (dp32182 S'editable' p32183 I01 sS'value' p32184 (lp32185 S'Tag' p32186 asssS'description' p32187 (dp32188 S'editable' p32189 I01 sS'value' p32190 g47 sssS'created_at' p32191 (dp32192 S'mandatory' p32193 (dp32194 S'editable' p32195 I00 sS'value' p32196 I00 ssS'name' p32197 (dp32198 S'editable' p32199 I01 sS'value' p32200 S'Date Created' p32201 ssS'data_type' p32202 (dp32203 S'editable' p32204 I00 sS'value' p32205 S'date_time' p32206 ssS'entity_type' p32207 (dp32208 S'editable' p32209 I00 sS'value' p32210 S'CustomEntity01' p32211 ssS'editable' p32212 (dp32213 S'editable' p32214 I00 sS'value' p32215 I00 ssS'unique' p32216 (dp32217 S'editable' p32218 I00 sS'value' p32219 I00 ssS'properties' p32220 (dp32221 S'default_value' p32222 (dp32223 S'editable' p32224 I00 sS'value' p32225 NssS'summary_default' p32226 (dp32227 S'editable' p32228 I01 sS'value' p32229 S'none' p32230 sssS'description' p32231 (dp32232 S'editable' p32233 I01 sS'value' p32234 g47 sssS'sg_configuration_metadata' p32235 (dp32236 S'mandatory' p32237 (dp32238 S'editable' p32239 I00 sS'value' p32240 I00 ssS'name' p32241 (dp32242 S'editable' p32243 I01 sS'value' p32244 S'Configuration Metadata' p32245 ssS'data_type' p32246 (dp32247 S'editable' p32248 I00 sS'value' p32249 S'text' p32250 ssS'entity_type' p32251 (dp32252 S'editable' p32253 I00 sS'value' p32254 S'CustomEntity01' p32255 ssS'editable' p32256 (dp32257 S'editable' p32258 I00 sS'value' p32259 I01 ssS'unique' p32260 (dp32261 S'editable' p32262 I00 sS'value' p32263 I00 ssS'properties' p32264 (dp32265 S'default_value' p32266 (dp32267 S'editable' p32268 I00 sS'value' p32269 NssS'summary_default' p32270 (dp32271 S'editable' p32272 I01 sS'value' p32273 S'none' p32274 sssS'description' p32275 (dp32276 S'editable' p32277 I01 sS'value' p32278 g47 ssssS'Shot' p32279 (dp32280 S'open_notes_count' p32281 (dp32282 S'mandatory' p32283 (dp32284 S'editable' p32285 I00 sS'value' p32286 I00 ssS'name' p32287 (dp32288 S'editable' p32289 I01 sS'value' p32290 S'Open Notes Count' p32291 ssS'data_type' p32292 (dp32293 S'editable' p32294 I00 sS'value' p32295 S'text' p32296 ssS'entity_type' p32297 (dp32298 S'editable' p32299 I00 sS'value' p32300 S'Shot' p32301 ssS'editable' p32302 (dp32303 S'editable' p32304 I00 sS'value' p32305 I00 ssS'unique' p32306 (dp32307 S'editable' p32308 I00 sS'value' p32309 I00 ssS'properties' p32310 (dp32311 S'default_value' p32312 (dp32313 S'editable' p32314 I00 sS'value' p32315 NssS'summary_default' p32316 (dp32317 S'editable' p32318 I01 sS'value' p32319 S'none' p32320 sssS'description' p32321 (dp32322 S'editable' p32323 I01 sS'value' p32324 g47 sssS'code' p32325 (dp32326 S'mandatory' p32327 (dp32328 S'editable' p32329 I00 sS'value' p32330 I01 ssS'name' p32331 (dp32332 S'editable' p32333 I01 sS'value' p32334 S'Shot Code' p32335 ssS'data_type' p32336 (dp32337 S'editable' p32338 I00 sS'value' p32339 S'text' p32340 ssS'entity_type' p32341 (dp32342 S'editable' p32343 I00 sS'value' p32344 S'Shot' p32345 ssS'editable' p32346 (dp32347 S'editable' p32348 I00 sS'value' p32349 I01 ssS'unique' p32350 (dp32351 S'editable' p32352 I00 sS'value' p32353 I00 ssS'properties' p32354 (dp32355 S'default_value' p32356 (dp32357 S'editable' p32358 I00 sS'value' p32359 NssS'summary_default' p32360 (dp32361 S'editable' p32362 I01 sS'value' p32363 S'none' p32364 sssS'description' p32365 (dp32366 S'editable' p32367 I01 sS'value' p32368 g47 sssS'step_13' p32369 (dp32370 S'mandatory' p32371 (dp32372 S'editable' p32373 I00 sS'value' p32374 I00 ssS'name' p32375 (dp32376 S'editable' p32377 I01 sS'value' p32378 S'Layout' p32379 ssS'data_type' p32380 (dp32381 S'editable' p32382 I00 sS'value' p32383 S'pivot_column' p32384 ssS'entity_type' p32385 (dp32386 S'editable' p32387 I00 sS'value' p32388 S'Shot' p32389 ssS'editable' p32390 (dp32391 S'editable' p32392 I00 sS'value' p32393 I00 ssS'unique' p32394 (dp32395 S'editable' p32396 I00 sS'value' p32397 I00 ssS'properties' p32398 (dp32399 S'default_value' p32400 (dp32401 S'editable' p32402 I00 sS'value' p32403 NssS'summary_default' p32404 (dp32405 S'editable' p32406 I00 sS'value' p32407 S'none' p32408 sssS'description' p32409 (dp32410 S'editable' p32411 I01 sS'value' p32412 g47 sssS'smart_head_out' p32413 (dp32414 S'mandatory' p32415 (dp32416 S'editable' p32417 I00 sS'value' p32418 I00 ssS'name' p32419 (dp32420 S'editable' p32421 I01 sS'value' p32422 S'Head Out' p32423 ssS'data_type' p32424 (dp32425 S'editable' p32426 I00 sS'value' p32427 S'number' p32428 ssS'entity_type' p32429 (dp32430 S'editable' p32431 I00 sS'value' p32432 S'Shot' p32433 ssS'editable' p32434 (dp32435 S'editable' p32436 I00 sS'value' p32437 I01 ssS'unique' p32438 (dp32439 S'editable' p32440 I00 sS'value' p32441 I00 ssS'properties' p32442 (dp32443 S'default_value' p32444 (dp32445 S'editable' p32446 I00 sS'value' p32447 NssS'summary_default' p32448 (dp32449 S'editable' p32450 I01 sS'value' p32451 S'none' p32452 sssS'description' p32453 (dp32454 S'editable' p32455 I01 sS'value' p32456 g47 sssS'sg_sequence' p32457 (dp32458 S'mandatory' p32459 (dp32460 S'editable' p32461 I00 sS'value' p32462 I00 ssS'name' p32463 (dp32464 S'editable' p32465 I01 sS'value' p32466 S'Sequence' p32467 ssS'data_type' p32468 (dp32469 S'editable' p32470 I00 sS'value' p32471 S'entity' p32472 ssS'entity_type' p32473 (dp32474 S'editable' p32475 I00 sS'value' p32476 S'Shot' p32477 ssS'editable' p32478 (dp32479 S'editable' p32480 I00 sS'value' p32481 I01 ssS'unique' p32482 (dp32483 S'editable' p32484 I00 sS'value' p32485 I00 ssS'properties' p32486 (dp32487 S'default_value' p32488 (dp32489 S'editable' p32490 I00 sS'value' p32491 NssS'summary_default' p32492 (dp32493 S'editable' p32494 I01 sS'value' p32495 S'none' p32496 ssS'valid_types' p32497 (dp32498 S'editable' p32499 I01 sS'value' p32500 (lp32501 S'Sequence' p32502 asssS'description' p32503 (dp32504 S'editable' p32505 I01 sS'value' p32506 g47 sssS'image' p32507 (dp32508 S'mandatory' p32509 (dp32510 S'editable' p32511 I00 sS'value' p32512 I00 ssS'name' p32513 (dp32514 S'editable' p32515 I01 sS'value' p32516 S'Thumbnail' p32517 ssS'data_type' p32518 (dp32519 S'editable' p32520 I00 sS'value' p32521 S'image' p32522 ssS'entity_type' p32523 (dp32524 S'editable' p32525 I00 sS'value' p32526 S'Shot' p32527 ssS'editable' p32528 (dp32529 S'editable' p32530 I00 sS'value' p32531 I01 ssS'unique' p32532 (dp32533 S'editable' p32534 I00 sS'value' p32535 I00 ssS'properties' p32536 (dp32537 S'default_value' p32538 (dp32539 S'editable' p32540 I00 sS'value' p32541 NssS'summary_default' p32542 (dp32543 S'editable' p32544 I01 sS'value' p32545 S'none' p32546 sssS'description' p32547 (dp32548 S'editable' p32549 I01 sS'value' p32550 g47 sssS'tag_list' p32551 (dp32552 S'mandatory' p32553 (dp32554 S'editable' p32555 I00 sS'value' p32556 I00 ssS'name' p32557 (dp32558 S'editable' p32559 I01 sS'value' p32560 S'Tags' p32561 ssS'data_type' p32562 (dp32563 S'editable' p32564 I00 sS'value' p32565 S'tag_list' p32566 ssS'entity_type' p32567 (dp32568 S'editable' p32569 I00 sS'value' p32570 S'Shot' p32571 ssS'editable' p32572 (dp32573 S'editable' p32574 I00 sS'value' p32575 I01 ssS'unique' p32576 (dp32577 S'editable' p32578 I00 sS'value' p32579 I00 ssS'properties' p32580 (dp32581 S'default_value' p32582 (dp32583 S'editable' p32584 I00 sS'value' p32585 NssS'summary_default' p32586 (dp32587 S'editable' p32588 I01 sS'value' p32589 S'none' p32590 ssS'valid_types' p32591 (dp32592 S'editable' p32593 I01 sS'value' p32594 (lp32595 S'Tag' p32596 asssS'description' p32597 (dp32598 S'editable' p32599 I01 sS'value' p32600 g47 sssS'head_duration' p32601 (dp32602 S'mandatory' p32603 (dp32604 S'editable' p32605 I00 sS'value' p32606 I00 ssS'name' p32607 (dp32608 S'editable' p32609 I01 sS'value' p32610 S'Raw Head Duration' p32611 ssS'data_type' p32612 (dp32613 S'editable' p32614 I00 sS'value' p32615 S'number' p32616 ssS'entity_type' p32617 (dp32618 S'editable' p32619 I00 sS'value' p32620 S'Shot' p32621 ssS'editable' p32622 (dp32623 S'editable' p32624 I00 sS'value' p32625 I01 ssS'unique' p32626 (dp32627 S'editable' p32628 I00 sS'value' p32629 I00 ssS'properties' p32630 (dp32631 S'default_value' p32632 (dp32633 S'editable' p32634 I00 sS'value' p32635 NssS'summary_default' p32636 (dp32637 S'editable' p32638 I01 sS'value' p32639 S'none' p32640 sssS'description' p32641 (dp32642 S'editable' p32643 I01 sS'value' p32644 g47 sssS'updated_at' p32645 (dp32646 S'mandatory' p32647 (dp32648 S'editable' p32649 I00 sS'value' p32650 I00 ssS'name' p32651 (dp32652 S'editable' p32653 I01 sS'value' p32654 S'Date Updated' p32655 ssS'data_type' p32656 (dp32657 S'editable' p32658 I00 sS'value' p32659 S'date_time' p32660 ssS'entity_type' p32661 (dp32662 S'editable' p32663 I00 sS'value' p32664 S'Shot' p32665 ssS'editable' p32666 (dp32667 S'editable' p32668 I00 sS'value' p32669 I00 ssS'unique' p32670 (dp32671 S'editable' p32672 I00 sS'value' p32673 I00 ssS'properties' p32674 (dp32675 S'default_value' p32676 (dp32677 S'editable' p32678 I00 sS'value' p32679 NssS'summary_default' p32680 (dp32681 S'editable' p32682 I01 sS'value' p32683 S'none' p32684 sssS'description' p32685 (dp32686 S'editable' p32687 I01 sS'value' p32688 g47 sssS'head_in' p32689 (dp32690 S'mandatory' p32691 (dp32692 S'editable' p32693 I00 sS'value' p32694 I00 ssS'name' p32695 (dp32696 S'editable' p32697 I01 sS'value' p32698 S'Raw Head In' p32699 ssS'data_type' p32700 (dp32701 S'editable' p32702 I00 sS'value' p32703 S'number' p32704 ssS'entity_type' p32705 (dp32706 S'editable' p32707 I00 sS'value' p32708 S'Shot' p32709 ssS'editable' p32710 (dp32711 S'editable' p32712 I00 sS'value' p32713 I01 ssS'unique' p32714 (dp32715 S'editable' p32716 I00 sS'value' p32717 I00 ssS'properties' p32718 (dp32719 S'default_value' p32720 (dp32721 S'editable' p32722 I00 sS'value' p32723 NssS'summary_default' p32724 (dp32725 S'editable' p32726 I01 sS'value' p32727 S'none' p32728 sssS'description' p32729 (dp32730 S'editable' p32731 I01 sS'value' p32732 g47 sssS'tasks' p32733 (dp32734 S'mandatory' p32735 (dp32736 S'editable' p32737 I00 sS'value' p32738 I00 ssS'name' p32739 (dp32740 S'editable' p32741 I01 sS'value' p32742 S'Tasks' p32743 ssS'data_type' p32744 (dp32745 S'editable' p32746 I00 sS'value' p32747 S'multi_entity' p32748 ssS'entity_type' p32749 (dp32750 S'editable' p32751 I00 sS'value' p32752 S'Shot' p32753 ssS'editable' p32754 (dp32755 S'editable' p32756 I00 sS'value' p32757 I01 ssS'unique' p32758 (dp32759 S'editable' p32760 I00 sS'value' p32761 I00 ssS'properties' p32762 (dp32763 S'default_value' p32764 (dp32765 S'editable' p32766 I00 sS'value' p32767 NssS'summary_default' p32768 (dp32769 S'editable' p32770 I01 sS'value' p32771 S'none' p32772 ssS'valid_types' p32773 (dp32774 S'editable' p32775 I01 sS'value' p32776 (lp32777 S'Task' p32778 asssS'description' p32779 (dp32780 S'editable' p32781 I01 sS'value' p32782 g47 sssS'filmstrip_image' p32783 (dp32784 S'mandatory' p32785 (dp32786 S'editable' p32787 I00 sS'value' p32788 I00 ssS'name' p32789 (dp32790 S'editable' p32791 I01 sS'value' p32792 S'Filmstrip Thumbnail' p32793 ssS'data_type' p32794 (dp32795 S'editable' p32796 I00 sS'value' p32797 S'image' p32798 ssS'entity_type' p32799 (dp32800 S'editable' p32801 I00 sS'value' p32802 S'Shot' p32803 ssS'editable' p32804 (dp32805 S'editable' p32806 I00 sS'value' p32807 I01 ssS'unique' p32808 (dp32809 S'editable' p32810 I00 sS'value' p32811 I00 ssS'properties' p32812 (dp32813 S'default_value' p32814 (dp32815 S'editable' p32816 I00 sS'value' p32817 NssS'summary_default' p32818 (dp32819 S'editable' p32820 I01 sS'value' p32821 S'none' p32822 sssS'description' p32823 (dp32824 S'editable' p32825 I01 sS'value' p32826 g47 sssS'sg_cut_duration' p32827 (dp32828 S'mandatory' p32829 (dp32830 S'editable' p32831 I00 sS'value' p32832 I00 ssS'name' p32833 (dp32834 S'editable' p32835 I01 sS'value' p32836 S'Cut Duration' p32837 ssS'data_type' p32838 (dp32839 S'editable' p32840 I00 sS'value' p32841 S'number' p32842 ssS'entity_type' p32843 (dp32844 S'editable' p32845 I00 sS'value' p32846 S'Shot' p32847 ssS'editable' p32848 (dp32849 S'editable' p32850 I00 sS'value' p32851 I01 ssS'unique' p32852 (dp32853 S'editable' p32854 I00 sS'value' p32855 I00 ssS'properties' p32856 (dp32857 S'default_value' p32858 (dp32859 S'editable' p32860 I00 sS'value' p32861 NssS'summary_default' p32862 (dp32863 S'editable' p32864 I01 sS'value' p32865 S'sum' p32866 sssS'description' p32867 (dp32868 S'editable' p32869 I01 sS'value' p32870 S'Duration of this shot in the cut.' p32871 sssS'cached_display_name' p32872 (dp32873 S'mandatory' p32874 (dp32875 S'editable' p32876 I00 sS'value' p32877 I00 ssS'name' p32878 (dp32879 S'editable' p32880 I01 sS'value' p32881 S'Cached Display Name' p32882 ssS'data_type' p32883 (dp32884 S'editable' p32885 I00 sS'value' p32886 S'text' p32887 ssS'entity_type' p32888 (dp32889 S'editable' p32890 I00 sS'value' p32891 S'Shot' p32892 ssS'editable' p32893 (dp32894 S'editable' p32895 I00 sS'value' p32896 I01 ssS'unique' p32897 (dp32898 S'editable' p32899 I00 sS'value' p32900 I00 ssS'properties' p32901 (dp32902 S'default_value' p32903 (dp32904 S'editable' p32905 I00 sS'value' p32906 NssS'summary_default' p32907 (dp32908 S'editable' p32909 I00 sS'value' p32910 S'none' p32911 sssS'description' p32912 (dp32913 S'editable' p32914 I01 sS'value' p32915 g47 sssS'smart_cut_duration' p32916 (dp32917 S'mandatory' p32918 (dp32919 S'editable' p32920 I00 sS'value' p32921 I00 ssS'name' p32922 (dp32923 S'editable' p32924 I01 sS'value' p32925 S'Cut Duration' p32926 ssS'data_type' p32927 (dp32928 S'editable' p32929 I00 sS'value' p32930 S'number' p32931 ssS'entity_type' p32932 (dp32933 S'editable' p32934 I00 sS'value' p32935 S'Shot' p32936 ssS'editable' p32937 (dp32938 S'editable' p32939 I00 sS'value' p32940 I01 ssS'unique' p32941 (dp32942 S'editable' p32943 I00 sS'value' p32944 I00 ssS'properties' p32945 (dp32946 S'default_value' p32947 (dp32948 S'editable' p32949 I00 sS'value' p32950 NssS'summary_default' p32951 (dp32952 S'editable' p32953 I01 sS'value' p32954 S'none' p32955 sssS'description' p32956 (dp32957 S'editable' p32958 I01 sS'value' p32959 g47 sssS'id' p32960 (dp32961 S'mandatory' p32962 (dp32963 S'editable' p32964 I00 sS'value' p32965 I00 ssS'name' p32966 (dp32967 S'editable' p32968 I01 sS'value' p32969 S'Id' p32970 ssS'data_type' p32971 (dp32972 S'editable' p32973 I00 sS'value' p32974 S'number' p32975 ssS'entity_type' p32976 (dp32977 S'editable' p32978 I00 sS'value' p32979 S'Shot' p32980 ssS'editable' p32981 (dp32982 S'editable' p32983 I00 sS'value' p32984 I00 ssS'unique' p32985 (dp32986 S'editable' p32987 I00 sS'value' p32988 I00 ssS'properties' p32989 (dp32990 S'default_value' p32991 (dp32992 S'editable' p32993 I00 sS'value' p32994 NssS'summary_default' p32995 (dp32996 S'editable' p32997 I01 sS'value' p32998 S'none' p32999 sssS'description' p33000 (dp33001 S'editable' p33002 I01 sS'value' p33003 g47 sssS'updated_by' p33004 (dp33005 S'mandatory' p33006 (dp33007 S'editable' p33008 I00 sS'value' p33009 I00 ssS'name' p33010 (dp33011 S'editable' p33012 I01 sS'value' p33013 S'Updated by' p33014 ssS'data_type' p33015 (dp33016 S'editable' p33017 I00 sS'value' p33018 S'entity' p33019 ssS'entity_type' p33020 (dp33021 S'editable' p33022 I00 sS'value' p33023 S'Shot' p33024 ssS'editable' p33025 (dp33026 S'editable' p33027 I00 sS'value' p33028 I00 ssS'unique' p33029 (dp33030 S'editable' p33031 I00 sS'value' p33032 I00 ssS'properties' p33033 (dp33034 S'default_value' p33035 (dp33036 S'editable' p33037 I00 sS'value' p33038 NssS'summary_default' p33039 (dp33040 S'editable' p33041 I01 sS'value' p33042 S'none' p33043 ssS'valid_types' p33044 (dp33045 S'editable' p33046 I01 sS'value' p33047 (lp33048 S'HumanUser' p33049 aS'ApiUser' p33050 asssS'description' p33051 (dp33052 S'editable' p33053 I01 sS'value' p33054 g47 sssS'open_notes' p33055 (dp33056 S'mandatory' p33057 (dp33058 S'editable' p33059 I00 sS'value' p33060 I00 ssS'name' p33061 (dp33062 S'editable' p33063 I01 sS'value' p33064 S'Open Notes' p33065 ssS'data_type' p33066 (dp33067 S'editable' p33068 I00 sS'value' p33069 S'multi_entity' p33070 ssS'entity_type' p33071 (dp33072 S'editable' p33073 I00 sS'value' p33074 S'Shot' p33075 ssS'editable' p33076 (dp33077 S'editable' p33078 I00 sS'value' p33079 I00 ssS'unique' p33080 (dp33081 S'editable' p33082 I00 sS'value' p33083 I00 ssS'properties' p33084 (dp33085 S'default_value' p33086 (dp33087 S'editable' p33088 I00 sS'value' p33089 NssS'summary_default' p33090 (dp33091 S'editable' p33092 I01 sS'value' p33093 S'none' p33094 ssS'valid_types' p33095 (dp33096 S'editable' p33097 I01 sS'value' p33098 (lp33099 S'Note' p33100 asssS'description' p33101 (dp33102 S'editable' p33103 I01 sS'value' p33104 g47 sssS'addressings_cc' p33105 (dp33106 S'mandatory' p33107 (dp33108 S'editable' p33109 I00 sS'value' p33110 I00 ssS'name' p33111 (dp33112 S'editable' p33113 I01 sS'value' p33114 S'Cc' p33115 ssS'data_type' p33116 (dp33117 S'editable' p33118 I00 sS'value' p33119 S'multi_entity' p33120 ssS'entity_type' p33121 (dp33122 S'editable' p33123 I00 sS'value' p33124 S'Shot' p33125 ssS'editable' p33126 (dp33127 S'editable' p33128 I00 sS'value' p33129 I01 ssS'unique' p33130 (dp33131 S'editable' p33132 I00 sS'value' p33133 I00 ssS'properties' p33134 (dp33135 S'default_value' p33136 (dp33137 S'editable' p33138 I00 sS'value' p33139 NssS'summary_default' p33140 (dp33141 S'editable' p33142 I01 sS'value' p33143 S'none' p33144 ssS'valid_types' p33145 (dp33146 S'editable' p33147 I01 sS'value' p33148 (lp33149 S'Group' p33150 aS'HumanUser' p33151 asssS'description' p33152 (dp33153 S'editable' p33154 I01 sS'value' p33155 g47 sssS'sg_working_duration' p33156 (dp33157 S'mandatory' p33158 (dp33159 S'editable' p33160 I00 sS'value' p33161 I00 ssS'name' p33162 (dp33163 S'editable' p33164 I01 sS'value' p33165 S'Working Duration' p33166 ssS'data_type' p33167 (dp33168 S'editable' p33169 I00 sS'value' p33170 S'number' p33171 ssS'entity_type' p33172 (dp33173 S'editable' p33174 I00 sS'value' p33175 S'Shot' p33176 ssS'editable' p33177 (dp33178 S'editable' p33179 I00 sS'value' p33180 I01 ssS'unique' p33181 (dp33182 S'editable' p33183 I00 sS'value' p33184 I00 ssS'properties' p33185 (dp33186 S'default_value' p33187 (dp33188 S'editable' p33189 I00 sS'value' p33190 NssS'summary_default' p33191 (dp33192 S'editable' p33193 I01 sS'value' p33194 S'none' p33195 sssS'description' p33196 (dp33197 S'editable' p33198 I01 sS'value' p33199 S'The full duration of available frames in this Shot from Head In to Tail Out.' p33200 sssS'sg_shotnumber' p33201 (dp33202 S'mandatory' p33203 (dp33204 S'editable' p33205 I00 sS'value' p33206 I00 ssS'name' p33207 (dp33208 S'editable' p33209 I01 sS'value' p33210 S'shotnumber' p33211 ssS'data_type' p33212 (dp33213 S'editable' p33214 I00 sS'value' p33215 S'text' p33216 ssS'entity_type' p33217 (dp33218 S'editable' p33219 I00 sS'value' p33220 S'Shot' p33221 ssS'editable' p33222 (dp33223 S'editable' p33224 I00 sS'value' p33225 I01 ssS'unique' p33226 (dp33227 S'editable' p33228 I00 sS'value' p33229 I00 ssS'properties' p33230 (dp33231 S'default_value' p33232 (dp33233 S'editable' p33234 I00 sS'value' p33235 NssS'summary_default' p33236 (dp33237 S'editable' p33238 I01 sS'value' p33239 S'none' p33240 sssS'description' p33241 (dp33242 S'editable' p33243 I01 sS'value' p33244 g47 sssS'task_template' p33245 (dp33246 S'mandatory' p33247 (dp33248 S'editable' p33249 I00 sS'value' p33250 I00 ssS'name' p33251 (dp33252 S'editable' p33253 I01 sS'value' p33254 S'Task Template' p33255 ssS'data_type' p33256 (dp33257 S'editable' p33258 I00 sS'value' p33259 S'entity' p33260 ssS'entity_type' p33261 (dp33262 S'editable' p33263 I00 sS'value' p33264 S'Shot' p33265 ssS'editable' p33266 (dp33267 S'editable' p33268 I00 sS'value' p33269 I01 ssS'unique' p33270 (dp33271 S'editable' p33272 I00 sS'value' p33273 I00 ssS'properties' p33274 (dp33275 S'default_value' p33276 (dp33277 S'editable' p33278 I00 sS'value' p33279 NssS'summary_default' p33280 (dp33281 S'editable' p33282 I01 sS'value' p33283 S'none' p33284 ssS'valid_types' p33285 (dp33286 S'editable' p33287 I01 sS'value' p33288 (lp33289 S'TaskTemplate' p33290 asssS'description' p33291 (dp33292 S'editable' p33293 I01 sS'value' p33294 g47 sssS'created_by' p33295 (dp33296 S'mandatory' p33297 (dp33298 S'editable' p33299 I00 sS'value' p33300 I00 ssS'name' p33301 (dp33302 S'editable' p33303 I01 sS'value' p33304 S'Created by' p33305 ssS'data_type' p33306 (dp33307 S'editable' p33308 I00 sS'value' p33309 S'entity' p33310 ssS'entity_type' p33311 (dp33312 S'editable' p33313 I00 sS'value' p33314 S'Shot' p33315 ssS'editable' p33316 (dp33317 S'editable' p33318 I00 sS'value' p33319 I00 ssS'unique' p33320 (dp33321 S'editable' p33322 I00 sS'value' p33323 I00 ssS'properties' p33324 (dp33325 S'default_value' p33326 (dp33327 S'editable' p33328 I00 sS'value' p33329 NssS'summary_default' p33330 (dp33331 S'editable' p33332 I01 sS'value' p33333 S'none' p33334 ssS'valid_types' p33335 (dp33336 S'editable' p33337 I01 sS'value' p33338 (lp33339 S'HumanUser' p33340 aS'ApiUser' p33341 asssS'description' p33342 (dp33343 S'editable' p33344 I01 sS'value' p33345 g47 sssS'smart_tail_duration' p33346 (dp33347 S'mandatory' p33348 (dp33349 S'editable' p33350 I00 sS'value' p33351 I00 ssS'name' p33352 (dp33353 S'editable' p33354 I01 sS'value' p33355 S'Tail Duration' p33356 ssS'data_type' p33357 (dp33358 S'editable' p33359 I00 sS'value' p33360 S'number' p33361 ssS'entity_type' p33362 (dp33363 S'editable' p33364 I00 sS'value' p33365 S'Shot' p33366 ssS'editable' p33367 (dp33368 S'editable' p33369 I00 sS'value' p33370 I01 ssS'unique' p33371 (dp33372 S'editable' p33373 I00 sS'value' p33374 I00 ssS'properties' p33375 (dp33376 S'default_value' p33377 (dp33378 S'editable' p33379 I00 sS'value' p33380 NssS'summary_default' p33381 (dp33382 S'editable' p33383 I01 sS'value' p33384 S'none' p33385 sssS'description' p33386 (dp33387 S'editable' p33388 I01 sS'value' p33389 g47 sssS'parent_shots' p33390 (dp33391 S'mandatory' p33392 (dp33393 S'editable' p33394 I00 sS'value' p33395 I00 ssS'name' p33396 (dp33397 S'editable' p33398 I01 sS'value' p33399 S'Parent Shots' p33400 ssS'data_type' p33401 (dp33402 S'editable' p33403 I00 sS'value' p33404 S'multi_entity' p33405 ssS'entity_type' p33406 (dp33407 S'editable' p33408 I00 sS'value' p33409 S'Shot' p33410 ssS'editable' p33411 (dp33412 S'editable' p33413 I00 sS'value' p33414 I01 ssS'unique' p33415 (dp33416 S'editable' p33417 I00 sS'value' p33418 I00 ssS'properties' p33419 (dp33420 S'default_value' p33421 (dp33422 S'editable' p33423 I00 sS'value' p33424 NssS'summary_default' p33425 (dp33426 S'editable' p33427 I01 sS'value' p33428 S'none' p33429 ssS'valid_types' p33430 (dp33431 S'editable' p33432 I01 sS'value' p33433 (lp33434 S'Shot' p33435 asssS'description' p33436 (dp33437 S'editable' p33438 I01 sS'value' p33439 g47 sssS'sg_status_list' p33440 (dp33441 S'mandatory' p33442 (dp33443 S'editable' p33444 I00 sS'value' p33445 I00 ssS'name' p33446 (dp33447 S'editable' p33448 I01 sS'value' p33449 S'Status' p33450 ssS'data_type' p33451 (dp33452 S'editable' p33453 I00 sS'value' p33454 S'status_list' p33455 ssS'entity_type' p33456 (dp33457 S'editable' p33458 I00 sS'value' p33459 S'Shot' p33460 ssS'editable' p33461 (dp33462 S'editable' p33463 I00 sS'value' p33464 I01 ssS'unique' p33465 (dp33466 S'editable' p33467 I00 sS'value' p33468 I00 ssS'properties' p33469 (dp33470 S'default_value' p33471 (dp33472 S'editable' p33473 I01 sS'value' p33474 S'wtg' p33475 ssS'valid_values' p33476 (dp33477 S'editable' p33478 I01 sS'value' p33479 (lp33480 S'cbb' p33481 aS'fin' p33482 aS'ip' p33483 aS'omt' p33484 aS'hld' p33485 aS'rdy' p33486 aS'wtg' p33487 assS'summary_default' p33488 (dp33489 S'editable' p33490 I01 sS'value' p33491 S'status_list' p33492 sssS'description' p33493 (dp33494 S'editable' p33495 I01 sS'value' p33496 g47 sssS'smart_head_in' p33497 (dp33498 S'mandatory' p33499 (dp33500 S'editable' p33501 I00 sS'value' p33502 I00 ssS'name' p33503 (dp33504 S'editable' p33505 I01 sS'value' p33506 S'Head In' p33507 ssS'data_type' p33508 (dp33509 S'editable' p33510 I00 sS'value' p33511 S'number' p33512 ssS'entity_type' p33513 (dp33514 S'editable' p33515 I00 sS'value' p33516 S'Shot' p33517 ssS'editable' p33518 (dp33519 S'editable' p33520 I00 sS'value' p33521 I01 ssS'unique' p33522 (dp33523 S'editable' p33524 I00 sS'value' p33525 I00 ssS'properties' p33526 (dp33527 S'default_value' p33528 (dp33529 S'editable' p33530 I00 sS'value' p33531 NssS'summary_default' p33532 (dp33533 S'editable' p33534 I01 sS'value' p33535 S'none' p33536 sssS'description' p33537 (dp33538 S'editable' p33539 I01 sS'value' p33540 g47 sssS'smart_working_duration' p33541 (dp33542 S'mandatory' p33543 (dp33544 S'editable' p33545 I00 sS'value' p33546 I00 ssS'name' p33547 (dp33548 S'editable' p33549 I01 sS'value' p33550 S'Working Duration' p33551 ssS'data_type' p33552 (dp33553 S'editable' p33554 I00 sS'value' p33555 S'number' p33556 ssS'entity_type' p33557 (dp33558 S'editable' p33559 I00 sS'value' p33560 S'Shot' p33561 ssS'editable' p33562 (dp33563 S'editable' p33564 I00 sS'value' p33565 I00 ssS'unique' p33566 (dp33567 S'editable' p33568 I00 sS'value' p33569 I00 ssS'properties' p33570 (dp33571 S'default_value' p33572 (dp33573 S'editable' p33574 I00 sS'value' p33575 NssS'summary_default' p33576 (dp33577 S'editable' p33578 I01 sS'value' p33579 S'none' p33580 sssS'description' p33581 (dp33582 S'editable' p33583 I01 sS'value' p33584 g47 sssS'sg_cut_in' p33585 (dp33586 S'mandatory' p33587 (dp33588 S'editable' p33589 I00 sS'value' p33590 I00 ssS'name' p33591 (dp33592 S'editable' p33593 I01 sS'value' p33594 S'Cut In' p33595 ssS'data_type' p33596 (dp33597 S'editable' p33598 I00 sS'value' p33599 S'number' p33600 ssS'entity_type' p33601 (dp33602 S'editable' p33603 I00 sS'value' p33604 S'Shot' p33605 ssS'editable' p33606 (dp33607 S'editable' p33608 I00 sS'value' p33609 I01 ssS'unique' p33610 (dp33611 S'editable' p33612 I00 sS'value' p33613 I00 ssS'properties' p33614 (dp33615 S'default_value' p33616 (dp33617 S'editable' p33618 I00 sS'value' p33619 NssS'summary_default' p33620 (dp33621 S'editable' p33622 I01 sS'value' p33623 S'sum' p33624 sssS'description' p33625 (dp33626 S'editable' p33627 I01 sS'value' p33628 S'The first frame used in the cut. This input comes from editorial and is used for playback of movie and frames.' p33629 sssS'elements' p33630 (dp33631 S'mandatory' p33632 (dp33633 S'editable' p33634 I00 sS'value' p33635 I00 ssS'name' p33636 (dp33637 S'editable' p33638 I01 sS'value' p33639 S'Elements' p33640 ssS'data_type' p33641 (dp33642 S'editable' p33643 I00 sS'value' p33644 S'multi_entity' p33645 ssS'entity_type' p33646 (dp33647 S'editable' p33648 I00 sS'value' p33649 S'Shot' p33650 ssS'editable' p33651 (dp33652 S'editable' p33653 I00 sS'value' p33654 I01 ssS'unique' p33655 (dp33656 S'editable' p33657 I00 sS'value' p33658 I00 ssS'properties' p33659 (dp33660 S'default_value' p33661 (dp33662 S'editable' p33663 I00 sS'value' p33664 NssS'summary_default' p33665 (dp33666 S'editable' p33667 I00 sS'value' p33668 S'none' p33669 ssS'valid_types' p33670 (dp33671 S'editable' p33672 I00 sS'value' p33673 (lp33674 S'Element' p33675 asssS'description' p33676 (dp33677 S'editable' p33678 I01 sS'value' p33679 g47 sssS'sg_shot_type' p33680 (dp33681 S'mandatory' p33682 (dp33683 S'editable' p33684 I00 sS'value' p33685 I00 ssS'name' p33686 (dp33687 S'editable' p33688 I01 sS'value' p33689 S'Type' p33690 ssS'data_type' p33691 (dp33692 S'editable' p33693 I00 sS'value' p33694 S'list' p33695 ssS'entity_type' p33696 (dp33697 S'editable' p33698 I00 sS'value' p33699 S'Shot' p33700 ssS'editable' p33701 (dp33702 S'editable' p33703 I00 sS'value' p33704 I01 ssS'unique' p33705 (dp33706 S'editable' p33707 I00 sS'value' p33708 I00 ssS'properties' p33709 (dp33710 S'default_value' p33711 (dp33712 S'editable' p33713 I00 sS'value' p33714 NssS'valid_values' p33715 (dp33716 S'editable' p33717 I01 sS'value' p33718 (lp33719 ssS'summary_default' p33720 (dp33721 S'editable' p33722 I01 sS'value' p33723 S'none' p33724 sssS'description' p33725 (dp33726 S'editable' p33727 I01 sS'value' p33728 g47 sssS'description' p33729 (dp33730 S'mandatory' p33731 (dp33732 S'editable' p33733 I00 sS'value' p33734 I00 ssS'name' p33735 (dp33736 S'editable' p33737 I01 sS'value' p33738 S'Description' p33739 ssS'data_type' p33740 (dp33741 S'editable' p33742 I00 sS'value' p33743 S'text' p33744 ssS'entity_type' p33745 (dp33746 S'editable' p33747 I00 sS'value' p33748 S'Shot' p33749 ssS'editable' p33750 (dp33751 S'editable' p33752 I00 sS'value' p33753 I01 ssS'unique' p33754 (dp33755 S'editable' p33756 I00 sS'value' p33757 I00 ssS'properties' p33758 (dp33759 S'default_value' p33760 (dp33761 S'editable' p33762 I00 sS'value' p33763 NssS'summary_default' p33764 (dp33765 S'editable' p33766 I01 sS'value' p33767 S'none' p33768 sssS'description' p33769 (dp33770 S'editable' p33771 I01 sS'value' p33772 g47 sssS'smart_cut_out' p33773 (dp33774 S'mandatory' p33775 (dp33776 S'editable' p33777 I00 sS'value' p33778 I00 ssS'name' p33779 (dp33780 S'editable' p33781 I01 sS'value' p33782 S'Cut Out' p33783 ssS'data_type' p33784 (dp33785 S'editable' p33786 I00 sS'value' p33787 S'number' p33788 ssS'entity_type' p33789 (dp33790 S'editable' p33791 I00 sS'value' p33792 S'Shot' p33793 ssS'editable' p33794 (dp33795 S'editable' p33796 I00 sS'value' p33797 I01 ssS'unique' p33798 (dp33799 S'editable' p33800 I00 sS'value' p33801 I00 ssS'properties' p33802 (dp33803 S'default_value' p33804 (dp33805 S'editable' p33806 I00 sS'value' p33807 NssS'summary_default' p33808 (dp33809 S'editable' p33810 I01 sS'value' p33811 S'none' p33812 sssS'description' p33813 (dp33814 S'editable' p33815 I01 sS'value' p33816 g47 sssS'tail_out' p33817 (dp33818 S'mandatory' p33819 (dp33820 S'editable' p33821 I00 sS'value' p33822 I00 ssS'name' p33823 (dp33824 S'editable' p33825 I01 sS'value' p33826 S'Raw Tail Out' p33827 ssS'data_type' p33828 (dp33829 S'editable' p33830 I00 sS'value' p33831 S'number' p33832 ssS'entity_type' p33833 (dp33834 S'editable' p33835 I00 sS'value' p33836 S'Shot' p33837 ssS'editable' p33838 (dp33839 S'editable' p33840 I00 sS'value' p33841 I01 ssS'unique' p33842 (dp33843 S'editable' p33844 I00 sS'value' p33845 I00 ssS'properties' p33846 (dp33847 S'default_value' p33848 (dp33849 S'editable' p33850 I00 sS'value' p33851 NssS'summary_default' p33852 (dp33853 S'editable' p33854 I01 sS'value' p33855 S'none' p33856 sssS'description' p33857 (dp33858 S'editable' p33859 I01 sS'value' p33860 g47 sssS'sg_cut_out' p33861 (dp33862 S'mandatory' p33863 (dp33864 S'editable' p33865 I00 sS'value' p33866 I00 ssS'name' p33867 (dp33868 S'editable' p33869 I01 sS'value' p33870 S'Cut Out' p33871 ssS'data_type' p33872 (dp33873 S'editable' p33874 I00 sS'value' p33875 S'number' p33876 ssS'entity_type' p33877 (dp33878 S'editable' p33879 I00 sS'value' p33880 S'Shot' p33881 ssS'editable' p33882 (dp33883 S'editable' p33884 I00 sS'value' p33885 I01 ssS'unique' p33886 (dp33887 S'editable' p33888 I00 sS'value' p33889 I00 ssS'properties' p33890 (dp33891 S'default_value' p33892 (dp33893 S'editable' p33894 I00 sS'value' p33895 NssS'summary_default' p33896 (dp33897 S'editable' p33898 I01 sS'value' p33899 S'sum' p33900 sssS'description' p33901 (dp33902 S'editable' p33903 I01 sS'value' p33904 S'The last frame used in the cut. This input comes from editorial and is used for playback of movie and frames.' p33905 sssS'sg_tail_out' p33906 (dp33907 S'mandatory' p33908 (dp33909 S'editable' p33910 I00 sS'value' p33911 I00 ssS'name' p33912 (dp33913 S'editable' p33914 I01 sS'value' p33915 S'Tail Out' p33916 ssS'data_type' p33917 (dp33918 S'editable' p33919 I00 sS'value' p33920 S'number' p33921 ssS'entity_type' p33922 (dp33923 S'editable' p33924 I00 sS'value' p33925 S'Shot' p33926 ssS'editable' p33927 (dp33928 S'editable' p33929 I00 sS'value' p33930 I01 ssS'unique' p33931 (dp33932 S'editable' p33933 I00 sS'value' p33934 I00 ssS'properties' p33935 (dp33936 S'default_value' p33937 (dp33938 S'editable' p33939 I00 sS'value' p33940 NssS'summary_default' p33941 (dp33942 S'editable' p33943 I01 sS'value' p33944 S'none' p33945 sssS'description' p33946 (dp33947 S'editable' p33948 I01 sS'value' p33949 S'The last frame number that footage is available for this Shot.' p33950 sssS'smart_cut_in' p33951 (dp33952 S'mandatory' p33953 (dp33954 S'editable' p33955 I00 sS'value' p33956 I00 ssS'name' p33957 (dp33958 S'editable' p33959 I01 sS'value' p33960 S'Cut In' p33961 ssS'data_type' p33962 (dp33963 S'editable' p33964 I00 sS'value' p33965 S'number' p33966 ssS'entity_type' p33967 (dp33968 S'editable' p33969 I00 sS'value' p33970 S'Shot' p33971 ssS'editable' p33972 (dp33973 S'editable' p33974 I00 sS'value' p33975 I01 ssS'unique' p33976 (dp33977 S'editable' p33978 I00 sS'value' p33979 I00 ssS'properties' p33980 (dp33981 S'default_value' p33982 (dp33983 S'editable' p33984 I00 sS'value' p33985 NssS'summary_default' p33986 (dp33987 S'editable' p33988 I01 sS'value' p33989 S'none' p33990 sssS'description' p33991 (dp33992 S'editable' p33993 I01 sS'value' p33994 g47 sssS'smart_cut_summary_display' p33995 (dp33996 S'mandatory' p33997 (dp33998 S'editable' p33999 I00 sS'value' p34000 I00 ssS'name' p34001 (dp34002 S'editable' p34003 I01 sS'value' p34004 S'Cut Summary' p34005 ssS'data_type' p34006 (dp34007 S'editable' p34008 I00 sS'value' p34009 S'text' p34010 ssS'entity_type' p34011 (dp34012 S'editable' p34013 I00 sS'value' p34014 S'Shot' p34015 ssS'editable' p34016 (dp34017 S'editable' p34018 I00 sS'value' p34019 I00 ssS'unique' p34020 (dp34021 S'editable' p34022 I00 sS'value' p34023 I00 ssS'properties' p34024 (dp34025 S'default_value' p34026 (dp34027 S'editable' p34028 I00 sS'value' p34029 NssS'summary_default' p34030 (dp34031 S'editable' p34032 I01 sS'value' p34033 S'none' p34034 sssS'description' p34035 (dp34036 S'editable' p34037 I01 sS'value' p34038 g47 sssS'cut_in' p34039 (dp34040 S'mandatory' p34041 (dp34042 S'editable' p34043 I00 sS'value' p34044 I00 ssS'name' p34045 (dp34046 S'editable' p34047 I01 sS'value' p34048 S'Raw Cut In' p34049 ssS'data_type' p34050 (dp34051 S'editable' p34052 I00 sS'value' p34053 S'number' p34054 ssS'entity_type' p34055 (dp34056 S'editable' p34057 I00 sS'value' p34058 S'Shot' p34059 ssS'editable' p34060 (dp34061 S'editable' p34062 I00 sS'value' p34063 I01 ssS'unique' p34064 (dp34065 S'editable' p34066 I00 sS'value' p34067 I00 ssS'properties' p34068 (dp34069 S'default_value' p34070 (dp34071 S'editable' p34072 I00 sS'value' p34073 NssS'summary_default' p34074 (dp34075 S'editable' p34076 I01 sS'value' p34077 S'none' p34078 sssS'description' p34079 (dp34080 S'editable' p34081 I01 sS'value' p34082 g47 sssS'smart_duration_summary_display' p34083 (dp34084 S'mandatory' p34085 (dp34086 S'editable' p34087 I00 sS'value' p34088 I00 ssS'name' p34089 (dp34090 S'editable' p34091 I01 sS'value' p34092 S'Duration Summary' p34093 ssS'data_type' p34094 (dp34095 S'editable' p34096 I00 sS'value' p34097 S'text' p34098 ssS'entity_type' p34099 (dp34100 S'editable' p34101 I00 sS'value' p34102 S'Shot' p34103 ssS'editable' p34104 (dp34105 S'editable' p34106 I00 sS'value' p34107 I00 ssS'unique' p34108 (dp34109 S'editable' p34110 I00 sS'value' p34111 I00 ssS'properties' p34112 (dp34113 S'default_value' p34114 (dp34115 S'editable' p34116 I00 sS'value' p34117 NssS'summary_default' p34118 (dp34119 S'editable' p34120 I01 sS'value' p34121 S'none' p34122 sssS'description' p34123 (dp34124 S'editable' p34125 I01 sS'value' p34126 g47 sssS'tail_duration' p34127 (dp34128 S'mandatory' p34129 (dp34130 S'editable' p34131 I00 sS'value' p34132 I00 ssS'name' p34133 (dp34134 S'editable' p34135 I01 sS'value' p34136 S'Raw Tail Duration' p34137 ssS'data_type' p34138 (dp34139 S'editable' p34140 I00 sS'value' p34141 S'number' p34142 ssS'entity_type' p34143 (dp34144 S'editable' p34145 I00 sS'value' p34146 S'Shot' p34147 ssS'editable' p34148 (dp34149 S'editable' p34150 I00 sS'value' p34151 I01 ssS'unique' p34152 (dp34153 S'editable' p34154 I00 sS'value' p34155 I00 ssS'properties' p34156 (dp34157 S'default_value' p34158 (dp34159 S'editable' p34160 I00 sS'value' p34161 NssS'summary_default' p34162 (dp34163 S'editable' p34164 I01 sS'value' p34165 S'none' p34166 sssS'description' p34167 (dp34168 S'editable' p34169 I01 sS'value' p34170 g47 sssS'smart_tail_out' p34171 (dp34172 S'mandatory' p34173 (dp34174 S'editable' p34175 I00 sS'value' p34176 I00 ssS'name' p34177 (dp34178 S'editable' p34179 I01 sS'value' p34180 S'Tail Out' p34181 ssS'data_type' p34182 (dp34183 S'editable' p34184 I00 sS'value' p34185 S'number' p34186 ssS'entity_type' p34187 (dp34188 S'editable' p34189 I00 sS'value' p34190 S'Shot' p34191 ssS'editable' p34192 (dp34193 S'editable' p34194 I00 sS'value' p34195 I01 ssS'unique' p34196 (dp34197 S'editable' p34198 I00 sS'value' p34199 I00 ssS'properties' p34200 (dp34201 S'default_value' p34202 (dp34203 S'editable' p34204 I00 sS'value' p34205 NssS'summary_default' p34206 (dp34207 S'editable' p34208 I01 sS'value' p34209 S'none' p34210 sssS'description' p34211 (dp34212 S'editable' p34213 I01 sS'value' p34214 g47 sssS'step_0' p34215 (dp34216 S'mandatory' p34217 (dp34218 S'editable' p34219 I00 sS'value' p34220 I00 ssS'name' p34221 (dp34222 S'editable' p34223 I01 sS'value' p34224 S'ALL TASKS' p34225 ssS'data_type' p34226 (dp34227 S'editable' p34228 I00 sS'value' p34229 S'pivot_column' p34230 ssS'entity_type' p34231 (dp34232 S'editable' p34233 I00 sS'value' p34234 S'Shot' p34235 ssS'editable' p34236 (dp34237 S'editable' p34238 I00 sS'value' p34239 I00 ssS'unique' p34240 (dp34241 S'editable' p34242 I00 sS'value' p34243 I00 ssS'properties' p34244 (dp34245 S'default_value' p34246 (dp34247 S'editable' p34248 I00 sS'value' p34249 NssS'summary_default' p34250 (dp34251 S'editable' p34252 I00 sS'value' p34253 S'none' p34254 sssS'description' p34255 (dp34256 S'editable' p34257 I01 sS'value' p34258 g47 sssS'cut_duration' p34259 (dp34260 S'mandatory' p34261 (dp34262 S'editable' p34263 I00 sS'value' p34264 I00 ssS'name' p34265 (dp34266 S'editable' p34267 I01 sS'value' p34268 S'Raw Cut Duration' p34269 ssS'data_type' p34270 (dp34271 S'editable' p34272 I00 sS'value' p34273 S'number' p34274 ssS'entity_type' p34275 (dp34276 S'editable' p34277 I00 sS'value' p34278 S'Shot' p34279 ssS'editable' p34280 (dp34281 S'editable' p34282 I00 sS'value' p34283 I01 ssS'unique' p34284 (dp34285 S'editable' p34286 I00 sS'value' p34287 I00 ssS'properties' p34288 (dp34289 S'default_value' p34290 (dp34291 S'editable' p34292 I00 sS'value' p34293 NssS'summary_default' p34294 (dp34295 S'editable' p34296 I01 sS'value' p34297 S'none' p34298 sssS'description' p34299 (dp34300 S'editable' p34301 I01 sS'value' p34302 g47 sssS'step_5' p34303 (dp34304 S'mandatory' p34305 (dp34306 S'editable' p34307 I00 sS'value' p34308 I00 ssS'name' p34309 (dp34310 S'editable' p34311 I01 sS'value' p34312 S'Anm' p34313 ssS'data_type' p34314 (dp34315 S'editable' p34316 I00 sS'value' p34317 S'pivot_column' p34318 ssS'entity_type' p34319 (dp34320 S'editable' p34321 I00 sS'value' p34322 S'Shot' p34323 ssS'editable' p34324 (dp34325 S'editable' p34326 I00 sS'value' p34327 I00 ssS'unique' p34328 (dp34329 S'editable' p34330 I00 sS'value' p34331 I00 ssS'properties' p34332 (dp34333 S'default_value' p34334 (dp34335 S'editable' p34336 I00 sS'value' p34337 NssS'summary_default' p34338 (dp34339 S'editable' p34340 I00 sS'value' p34341 S'none' p34342 sssS'description' p34343 (dp34344 S'editable' p34345 I01 sS'value' p34346 g47 sssS'assets' p34347 (dp34348 S'mandatory' p34349 (dp34350 S'editable' p34351 I00 sS'value' p34352 I00 ssS'name' p34353 (dp34354 S'editable' p34355 I01 sS'value' p34356 S'Assets' p34357 ssS'data_type' p34358 (dp34359 S'editable' p34360 I00 sS'value' p34361 S'multi_entity' p34362 ssS'entity_type' p34363 (dp34364 S'editable' p34365 I00 sS'value' p34366 S'Shot' p34367 ssS'editable' p34368 (dp34369 S'editable' p34370 I00 sS'value' p34371 I01 ssS'unique' p34372 (dp34373 S'editable' p34374 I00 sS'value' p34375 I00 ssS'properties' p34376 (dp34377 S'default_value' p34378 (dp34379 S'editable' p34380 I00 sS'value' p34381 NssS'summary_default' p34382 (dp34383 S'editable' p34384 I01 sS'value' p34385 S'none' p34386 ssS'valid_types' p34387 (dp34388 S'editable' p34389 I01 sS'value' p34390 (lp34391 S'Asset' p34392 asssS'description' p34393 (dp34394 S'editable' p34395 I01 sS'value' p34396 g47 sssS'step_7' p34397 (dp34398 S'mandatory' p34399 (dp34400 S'editable' p34401 I00 sS'value' p34402 I00 ssS'name' p34403 (dp34404 S'editable' p34405 I01 sS'value' p34406 S'Light' p34407 ssS'data_type' p34408 (dp34409 S'editable' p34410 I00 sS'value' p34411 S'pivot_column' p34412 ssS'entity_type' p34413 (dp34414 S'editable' p34415 I00 sS'value' p34416 S'Shot' p34417 ssS'editable' p34418 (dp34419 S'editable' p34420 I00 sS'value' p34421 I00 ssS'unique' p34422 (dp34423 S'editable' p34424 I00 sS'value' p34425 I00 ssS'properties' p34426 (dp34427 S'default_value' p34428 (dp34429 S'editable' p34430 I00 sS'value' p34431 NssS'summary_default' p34432 (dp34433 S'editable' p34434 I00 sS'value' p34435 S'none' p34436 sssS'description' p34437 (dp34438 S'editable' p34439 I01 sS'value' p34440 g47 sssS'step_6' p34441 (dp34442 S'mandatory' p34443 (dp34444 S'editable' p34445 I00 sS'value' p34446 I00 ssS'name' p34447 (dp34448 S'editable' p34449 I01 sS'value' p34450 S'FX' p34451 ssS'data_type' p34452 (dp34453 S'editable' p34454 I00 sS'value' p34455 S'pivot_column' p34456 ssS'entity_type' p34457 (dp34458 S'editable' p34459 I00 sS'value' p34460 S'Shot' p34461 ssS'editable' p34462 (dp34463 S'editable' p34464 I00 sS'value' p34465 I00 ssS'unique' p34466 (dp34467 S'editable' p34468 I00 sS'value' p34469 I00 ssS'properties' p34470 (dp34471 S'default_value' p34472 (dp34473 S'editable' p34474 I00 sS'value' p34475 NssS'summary_default' p34476 (dp34477 S'editable' p34478 I00 sS'value' p34479 S'none' p34480 sssS'description' p34481 (dp34482 S'editable' p34483 I01 sS'value' p34484 g47 sssS'smart_tail_in' p34485 (dp34486 S'mandatory' p34487 (dp34488 S'editable' p34489 I00 sS'value' p34490 I00 ssS'name' p34491 (dp34492 S'editable' p34493 I01 sS'value' p34494 S'Tail In' p34495 ssS'data_type' p34496 (dp34497 S'editable' p34498 I00 sS'value' p34499 S'number' p34500 ssS'entity_type' p34501 (dp34502 S'editable' p34503 I00 sS'value' p34504 S'Shot' p34505 ssS'editable' p34506 (dp34507 S'editable' p34508 I00 sS'value' p34509 I01 ssS'unique' p34510 (dp34511 S'editable' p34512 I00 sS'value' p34513 I00 ssS'properties' p34514 (dp34515 S'default_value' p34516 (dp34517 S'editable' p34518 I00 sS'value' p34519 NssS'summary_default' p34520 (dp34521 S'editable' p34522 I01 sS'value' p34523 S'none' p34524 sssS'description' p34525 (dp34526 S'editable' p34527 I01 sS'value' p34528 g47 sssS'step_8' p34529 (dp34530 S'mandatory' p34531 (dp34532 S'editable' p34533 I00 sS'value' p34534 I00 ssS'name' p34535 (dp34536 S'editable' p34537 I01 sS'value' p34538 S'Comp' p34539 ssS'data_type' p34540 (dp34541 S'editable' p34542 I00 sS'value' p34543 S'pivot_column' p34544 ssS'entity_type' p34545 (dp34546 S'editable' p34547 I00 sS'value' p34548 S'Shot' p34549 ssS'editable' p34550 (dp34551 S'editable' p34552 I00 sS'value' p34553 I00 ssS'unique' p34554 (dp34555 S'editable' p34556 I00 sS'value' p34557 I00 ssS'properties' p34558 (dp34559 S'default_value' p34560 (dp34561 S'editable' p34562 I00 sS'value' p34563 NssS'summary_default' p34564 (dp34565 S'editable' p34566 I00 sS'value' p34567 S'none' p34568 sssS'description' p34569 (dp34570 S'editable' p34571 I01 sS'value' p34572 g47 sssS'created_at' p34573 (dp34574 S'mandatory' p34575 (dp34576 S'editable' p34577 I00 sS'value' p34578 I00 ssS'name' p34579 (dp34580 S'editable' p34581 I01 sS'value' p34582 S'Date Created' p34583 ssS'data_type' p34584 (dp34585 S'editable' p34586 I00 sS'value' p34587 S'date_time' p34588 ssS'entity_type' p34589 (dp34590 S'editable' p34591 I00 sS'value' p34592 S'Shot' p34593 ssS'editable' p34594 (dp34595 S'editable' p34596 I00 sS'value' p34597 I00 ssS'unique' p34598 (dp34599 S'editable' p34600 I00 sS'value' p34601 I00 ssS'properties' p34602 (dp34603 S'default_value' p34604 (dp34605 S'editable' p34606 I00 sS'value' p34607 NssS'summary_default' p34608 (dp34609 S'editable' p34610 I01 sS'value' p34611 S'none' p34612 sssS'description' p34613 (dp34614 S'editable' p34615 I01 sS'value' p34616 g47 sssS'sg_scene' p34617 (dp34618 S'mandatory' p34619 (dp34620 S'editable' p34621 I00 sS'value' p34622 I00 ssS'name' p34623 (dp34624 S'editable' p34625 I01 sS'value' p34626 S'Scene' p34627 ssS'data_type' p34628 (dp34629 S'editable' p34630 I00 sS'value' p34631 S'entity' p34632 ssS'entity_type' p34633 (dp34634 S'editable' p34635 I00 sS'value' p34636 S'Shot' p34637 ssS'editable' p34638 (dp34639 S'editable' p34640 I00 sS'value' p34641 I01 ssS'unique' p34642 (dp34643 S'editable' p34644 I00 sS'value' p34645 I00 ssS'properties' p34646 (dp34647 S'default_value' p34648 (dp34649 S'editable' p34650 I00 sS'value' p34651 NssS'summary_default' p34652 (dp34653 S'editable' p34654 I01 sS'value' p34655 S'none' p34656 ssS'valid_types' p34657 (dp34658 S'editable' p34659 I01 sS'value' p34660 (lp34661 S'Scene' p34662 asssS'description' p34663 (dp34664 S'editable' p34665 I01 sS'value' p34666 g47 sssS'sg_cut_order' p34667 (dp34668 S'mandatory' p34669 (dp34670 S'editable' p34671 I00 sS'value' p34672 I00 ssS'name' p34673 (dp34674 S'editable' p34675 I01 sS'value' p34676 S'Cut Order' p34677 ssS'data_type' p34678 (dp34679 S'editable' p34680 I00 sS'value' p34681 S'number' p34682 ssS'entity_type' p34683 (dp34684 S'editable' p34685 I00 sS'value' p34686 S'Shot' p34687 ssS'editable' p34688 (dp34689 S'editable' p34690 I00 sS'value' p34691 I01 ssS'unique' p34692 (dp34693 S'editable' p34694 I00 sS'value' p34695 I00 ssS'properties' p34696 (dp34697 S'default_value' p34698 (dp34699 S'editable' p34700 I00 sS'value' p34701 NssS'summary_default' p34702 (dp34703 S'editable' p34704 I01 sS'value' p34705 S'none' p34706 sssS'description' p34707 (dp34708 S'editable' p34709 I01 sS'value' p34710 S'Order that the Shot plays in the overall cut for the entire Project. Used for sorting Shots and Versions of Shots when playing in cut order and pulling in neighboring Shots of Versions to the current one being viewed.' p34711 sssS'project' p34712 (dp34713 S'mandatory' p34714 (dp34715 S'editable' p34716 I00 sS'value' p34717 I00 ssS'name' p34718 (dp34719 S'editable' p34720 I01 sS'value' p34721 S'Project' p34722 ssS'data_type' p34723 (dp34724 S'editable' p34725 I00 sS'value' p34726 S'entity' p34727 ssS'entity_type' p34728 (dp34729 S'editable' p34730 I00 sS'value' p34731 S'Shot' p34732 ssS'editable' p34733 (dp34734 S'editable' p34735 I00 sS'value' p34736 I01 ssS'unique' p34737 (dp34738 S'editable' p34739 I00 sS'value' p34740 I00 ssS'properties' p34741 (dp34742 S'default_value' p34743 (dp34744 S'editable' p34745 I00 sS'value' p34746 NssS'summary_default' p34747 (dp34748 S'editable' p34749 I01 sS'value' p34750 S'none' p34751 ssS'valid_types' p34752 (dp34753 S'editable' p34754 I01 sS'value' p34755 (lp34756 S'Project' p34757 asssS'description' p34758 (dp34759 S'editable' p34760 I01 sS'value' p34761 g47 sssS'sg_head_in' p34762 (dp34763 S'mandatory' p34764 (dp34765 S'editable' p34766 I00 sS'value' p34767 I00 ssS'name' p34768 (dp34769 S'editable' p34770 I01 sS'value' p34771 S'Head In' p34772 ssS'data_type' p34773 (dp34774 S'editable' p34775 I00 sS'value' p34776 S'number' p34777 ssS'entity_type' p34778 (dp34779 S'editable' p34780 I00 sS'value' p34781 S'Shot' p34782 ssS'editable' p34783 (dp34784 S'editable' p34785 I00 sS'value' p34786 I01 ssS'unique' p34787 (dp34788 S'editable' p34789 I00 sS'value' p34790 I00 ssS'properties' p34791 (dp34792 S'default_value' p34793 (dp34794 S'editable' p34795 I00 sS'value' p34796 NssS'summary_default' p34797 (dp34798 S'editable' p34799 I01 sS'value' p34800 S'none' p34801 sssS'description' p34802 (dp34803 S'editable' p34804 I01 sS'value' p34805 S'The first frame number that footage is available for this Shot.' p34806 sssS'tail_in' p34807 (dp34808 S'mandatory' p34809 (dp34810 S'editable' p34811 I00 sS'value' p34812 I00 ssS'name' p34813 (dp34814 S'editable' p34815 I01 sS'value' p34816 S'Raw Tail In' p34817 ssS'data_type' p34818 (dp34819 S'editable' p34820 I00 sS'value' p34821 S'number' p34822 ssS'entity_type' p34823 (dp34824 S'editable' p34825 I00 sS'value' p34826 S'Shot' p34827 ssS'editable' p34828 (dp34829 S'editable' p34830 I00 sS'value' p34831 I01 ssS'unique' p34832 (dp34833 S'editable' p34834 I00 sS'value' p34835 I00 ssS'properties' p34836 (dp34837 S'default_value' p34838 (dp34839 S'editable' p34840 I00 sS'value' p34841 NssS'summary_default' p34842 (dp34843 S'editable' p34844 I01 sS'value' p34845 S'none' p34846 sssS'description' p34847 (dp34848 S'editable' p34849 I01 sS'value' p34850 g47 sssS'shots' p34851 (dp34852 S'mandatory' p34853 (dp34854 S'editable' p34855 I00 sS'value' p34856 I00 ssS'name' p34857 (dp34858 S'editable' p34859 I01 sS'value' p34860 S'Sub Shots' p34861 ssS'data_type' p34862 (dp34863 S'editable' p34864 I00 sS'value' p34865 S'multi_entity' p34866 ssS'entity_type' p34867 (dp34868 S'editable' p34869 I00 sS'value' p34870 S'Shot' p34871 ssS'editable' p34872 (dp34873 S'editable' p34874 I00 sS'value' p34875 I01 ssS'unique' p34876 (dp34877 S'editable' p34878 I00 sS'value' p34879 I00 ssS'properties' p34880 (dp34881 S'default_value' p34882 (dp34883 S'editable' p34884 I00 sS'value' p34885 NssS'summary_default' p34886 (dp34887 S'editable' p34888 I01 sS'value' p34889 S'none' p34890 ssS'valid_types' p34891 (dp34892 S'editable' p34893 I01 sS'value' p34894 (lp34895 S'Shot' p34896 asssS'description' p34897 (dp34898 S'editable' p34899 I01 sS'value' p34900 g47 sssS'smart_head_duration' p34901 (dp34902 S'mandatory' p34903 (dp34904 S'editable' p34905 I00 sS'value' p34906 I00 ssS'name' p34907 (dp34908 S'editable' p34909 I01 sS'value' p34910 S'Head Duration' p34911 ssS'data_type' p34912 (dp34913 S'editable' p34914 I00 sS'value' p34915 S'number' p34916 ssS'entity_type' p34917 (dp34918 S'editable' p34919 I00 sS'value' p34920 S'Shot' p34921 ssS'editable' p34922 (dp34923 S'editable' p34924 I00 sS'value' p34925 I01 ssS'unique' p34926 (dp34927 S'editable' p34928 I00 sS'value' p34929 I00 ssS'properties' p34930 (dp34931 S'default_value' p34932 (dp34933 S'editable' p34934 I00 sS'value' p34935 NssS'summary_default' p34936 (dp34937 S'editable' p34938 I01 sS'value' p34939 S'none' p34940 sssS'description' p34941 (dp34942 S'editable' p34943 I01 sS'value' p34944 g47 sssS'cut_out' p34945 (dp34946 S'mandatory' p34947 (dp34948 S'editable' p34949 I00 sS'value' p34950 I00 ssS'name' p34951 (dp34952 S'editable' p34953 I01 sS'value' p34954 S'Raw Cut Out' p34955 ssS'data_type' p34956 (dp34957 S'editable' p34958 I00 sS'value' p34959 S'number' p34960 ssS'entity_type' p34961 (dp34962 S'editable' p34963 I00 sS'value' p34964 S'Shot' p34965 ssS'editable' p34966 (dp34967 S'editable' p34968 I00 sS'value' p34969 I01 ssS'unique' p34970 (dp34971 S'editable' p34972 I00 sS'value' p34973 I00 ssS'properties' p34974 (dp34975 S'default_value' p34976 (dp34977 S'editable' p34978 I00 sS'value' p34979 NssS'summary_default' p34980 (dp34981 S'editable' p34982 I01 sS'value' p34983 S'none' p34984 sssS'description' p34985 (dp34986 S'editable' p34987 I01 sS'value' p34988 g47 sssS'head_out' p34989 (dp34990 S'mandatory' p34991 (dp34992 S'editable' p34993 I00 sS'value' p34994 I00 ssS'name' p34995 (dp34996 S'editable' p34997 I01 sS'value' p34998 S'Raw Head Out' p34999 ssS'data_type' p35000 (dp35001 S'editable' p35002 I00 sS'value' p35003 S'number' p35004 ssS'entity_type' p35005 (dp35006 S'editable' p35007 I00 sS'value' p35008 S'Shot' p35009 ssS'editable' p35010 (dp35011 S'editable' p35012 I00 sS'value' p35013 I01 ssS'unique' p35014 (dp35015 S'editable' p35016 I00 sS'value' p35017 I00 ssS'properties' p35018 (dp35019 S'default_value' p35020 (dp35021 S'editable' p35022 I00 sS'value' p35023 NssS'summary_default' p35024 (dp35025 S'editable' p35026 I01 sS'value' p35027 S'none' p35028 sssS'description' p35029 (dp35030 S'editable' p35031 I01 sS'value' p35032 g47 sssS'notes' p35033 (dp35034 S'mandatory' p35035 (dp35036 S'editable' p35037 I00 sS'value' p35038 I00 ssS'name' p35039 (dp35040 S'editable' p35041 I01 sS'value' p35042 S'Notes' p35043 ssS'data_type' p35044 (dp35045 S'editable' p35046 I00 sS'value' p35047 S'multi_entity' p35048 ssS'entity_type' p35049 (dp35050 S'editable' p35051 I00 sS'value' p35052 S'Shot' p35053 ssS'editable' p35054 (dp35055 S'editable' p35056 I00 sS'value' p35057 I01 ssS'unique' p35058 (dp35059 S'editable' p35060 I00 sS'value' p35061 I00 ssS'properties' p35062 (dp35063 S'default_value' p35064 (dp35065 S'editable' p35066 I00 sS'value' p35067 NssS'summary_default' p35068 (dp35069 S'editable' p35070 I01 sS'value' p35071 S'none' p35072 ssS'valid_types' p35073 (dp35074 S'editable' p35075 I01 sS'value' p35076 (lp35077 S'Note' p35078 asssS'description' p35079 (dp35080 S'editable' p35081 I01 sS'value' p35082 g47 ssssS'TankPublishedFile' p35083 (dp35084 S'open_notes_count' p35085 (dp35086 S'mandatory' p35087 (dp35088 S'editable' p35089 I00 sS'value' p35090 I00 ssS'name' p35091 (dp35092 S'editable' p35093 I01 sS'value' p35094 S'Open Notes Count' p35095 ssS'data_type' p35096 (dp35097 S'editable' p35098 I00 sS'value' p35099 S'text' p35100 ssS'entity_type' p35101 (dp35102 S'editable' p35103 I00 sS'value' p35104 S'TankPublishedFile' p35105 ssS'editable' p35106 (dp35107 S'editable' p35108 I00 sS'value' p35109 I00 ssS'unique' p35110 (dp35111 S'editable' p35112 I00 sS'value' p35113 I00 ssS'properties' p35114 (dp35115 S'default_value' p35116 (dp35117 S'editable' p35118 I00 sS'value' p35119 NssS'summary_default' p35120 (dp35121 S'editable' p35122 I01 sS'value' p35123 S'none' p35124 sssS'description' p35125 (dp35126 S'editable' p35127 I01 sS'value' p35128 g47 sssS'code' p35129 (dp35130 S'mandatory' p35131 (dp35132 S'editable' p35133 I00 sS'value' p35134 I01 ssS'name' p35135 (dp35136 S'editable' p35137 I01 sS'value' p35138 S'Tank Published File Name' p35139 ssS'data_type' p35140 (dp35141 S'editable' p35142 I00 sS'value' p35143 S'text' p35144 ssS'entity_type' p35145 (dp35146 S'editable' p35147 I00 sS'value' p35148 S'TankPublishedFile' p35149 ssS'editable' p35150 (dp35151 S'editable' p35152 I00 sS'value' p35153 I01 ssS'unique' p35154 (dp35155 S'editable' p35156 I00 sS'value' p35157 I00 ssS'properties' p35158 (dp35159 S'default_value' p35160 (dp35161 S'editable' p35162 I00 sS'value' p35163 NssS'summary_default' p35164 (dp35165 S'editable' p35166 I01 sS'value' p35167 S'none' p35168 sssS'description' p35169 (dp35170 S'editable' p35171 I01 sS'value' p35172 g47 sssS'image' p35173 (dp35174 S'mandatory' p35175 (dp35176 S'editable' p35177 I00 sS'value' p35178 I00 ssS'name' p35179 (dp35180 S'editable' p35181 I01 sS'value' p35182 S'Thumbnail' p35183 ssS'data_type' p35184 (dp35185 S'editable' p35186 I00 sS'value' p35187 S'image' p35188 ssS'entity_type' p35189 (dp35190 S'editable' p35191 I00 sS'value' p35192 S'TankPublishedFile' p35193 ssS'editable' p35194 (dp35195 S'editable' p35196 I00 sS'value' p35197 I01 ssS'unique' p35198 (dp35199 S'editable' p35200 I00 sS'value' p35201 I00 ssS'properties' p35202 (dp35203 S'default_value' p35204 (dp35205 S'editable' p35206 I00 sS'value' p35207 NssS'summary_default' p35208 (dp35209 S'editable' p35210 I01 sS'value' p35211 S'none' p35212 sssS'description' p35213 (dp35214 S'editable' p35215 I01 sS'value' p35216 g47 sssS'updated_at' p35217 (dp35218 S'mandatory' p35219 (dp35220 S'editable' p35221 I00 sS'value' p35222 I00 ssS'name' p35223 (dp35224 S'editable' p35225 I01 sS'value' p35226 S'Date Updated' p35227 ssS'data_type' p35228 (dp35229 S'editable' p35230 I00 sS'value' p35231 S'date_time' p35232 ssS'entity_type' p35233 (dp35234 S'editable' p35235 I00 sS'value' p35236 S'TankPublishedFile' p35237 ssS'editable' p35238 (dp35239 S'editable' p35240 I00 sS'value' p35241 I00 ssS'unique' p35242 (dp35243 S'editable' p35244 I00 sS'value' p35245 I00 ssS'properties' p35246 (dp35247 S'default_value' p35248 (dp35249 S'editable' p35250 I00 sS'value' p35251 NssS'summary_default' p35252 (dp35253 S'editable' p35254 I01 sS'value' p35255 S'none' p35256 sssS'description' p35257 (dp35258 S'editable' p35259 I01 sS'value' p35260 g47 sssS'entity' p35261 (dp35262 S'mandatory' p35263 (dp35264 S'editable' p35265 I00 sS'value' p35266 I00 ssS'name' p35267 (dp35268 S'editable' p35269 I01 sS'value' p35270 S'Link' p35271 ssS'data_type' p35272 (dp35273 S'editable' p35274 I00 sS'value' p35275 S'entity' p35276 ssS'entity_type' p35277 (dp35278 S'editable' p35279 I00 sS'value' p35280 S'TankPublishedFile' p35281 ssS'editable' p35282 (dp35283 S'editable' p35284 I00 sS'value' p35285 I00 ssS'unique' p35286 (dp35287 S'editable' p35288 I00 sS'value' p35289 I00 ssS'properties' p35290 (dp35291 S'default_value' p35292 (dp35293 S'editable' p35294 I00 sS'value' p35295 NssS'summary_default' p35296 (dp35297 S'editable' p35298 I01 sS'value' p35299 S'none' p35300 ssS'valid_types' p35301 (dp35302 S'editable' p35303 I01 sS'value' p35304 (lp35305 S'Asset' p35306 aS'Shot' p35307 aS'Project' p35308 asssS'description' p35309 (dp35310 S'editable' p35311 I01 sS'value' p35312 g47 sssS'cached_display_name' p35313 (dp35314 S'mandatory' p35315 (dp35316 S'editable' p35317 I00 sS'value' p35318 I00 ssS'name' p35319 (dp35320 S'editable' p35321 I01 sS'value' p35322 S'Cached Display Name' p35323 ssS'data_type' p35324 (dp35325 S'editable' p35326 I00 sS'value' p35327 S'text' p35328 ssS'entity_type' p35329 (dp35330 S'editable' p35331 I00 sS'value' p35332 S'TankPublishedFile' p35333 ssS'editable' p35334 (dp35335 S'editable' p35336 I00 sS'value' p35337 I01 ssS'unique' p35338 (dp35339 S'editable' p35340 I00 sS'value' p35341 I00 ssS'properties' p35342 (dp35343 S'default_value' p35344 (dp35345 S'editable' p35346 I00 sS'value' p35347 NssS'summary_default' p35348 (dp35349 S'editable' p35350 I00 sS'value' p35351 S'none' p35352 sssS'description' p35353 (dp35354 S'editable' p35355 I01 sS'value' p35356 g47 sssS'downstream_tank_published_files' p35357 (dp35358 S'mandatory' p35359 (dp35360 S'editable' p35361 I00 sS'value' p35362 I00 ssS'name' p35363 (dp35364 S'editable' p35365 I01 sS'value' p35366 S'Downstream Tank Published Files' p35367 ssS'data_type' p35368 (dp35369 S'editable' p35370 I00 sS'value' p35371 S'multi_entity' p35372 ssS'entity_type' p35373 (dp35374 S'editable' p35375 I00 sS'value' p35376 S'TankPublishedFile' p35377 ssS'editable' p35378 (dp35379 S'editable' p35380 I00 sS'value' p35381 I01 ssS'unique' p35382 (dp35383 S'editable' p35384 I00 sS'value' p35385 I00 ssS'properties' p35386 (dp35387 S'default_value' p35388 (dp35389 S'editable' p35390 I00 sS'value' p35391 NssS'summary_default' p35392 (dp35393 S'editable' p35394 I00 sS'value' p35395 S'none' p35396 ssS'valid_types' p35397 (dp35398 S'editable' p35399 I00 sS'value' p35400 (lp35401 S'TankPublishedFile' p35402 asssS'description' p35403 (dp35404 S'editable' p35405 I01 sS'value' p35406 g47 sssS'path_cache' p35407 (dp35408 S'mandatory' p35409 (dp35410 S'editable' p35411 I00 sS'value' p35412 I00 ssS'name' p35413 (dp35414 S'editable' p35415 I01 sS'value' p35416 S'Path Cache' p35417 ssS'data_type' p35418 (dp35419 S'editable' p35420 I00 sS'value' p35421 S'text' p35422 ssS'entity_type' p35423 (dp35424 S'editable' p35425 I00 sS'value' p35426 S'TankPublishedFile' p35427 ssS'editable' p35428 (dp35429 S'editable' p35430 I00 sS'value' p35431 I00 ssS'unique' p35432 (dp35433 S'editable' p35434 I00 sS'value' p35435 I00 ssS'properties' p35436 (dp35437 S'default_value' p35438 (dp35439 S'editable' p35440 I00 sS'value' p35441 NssS'summary_default' p35442 (dp35443 S'editable' p35444 I01 sS'value' p35445 S'none' p35446 sssS'description' p35447 (dp35448 S'editable' p35449 I01 sS'value' p35450 g47 sssS'id' p35451 (dp35452 S'mandatory' p35453 (dp35454 S'editable' p35455 I00 sS'value' p35456 I00 ssS'name' p35457 (dp35458 S'editable' p35459 I01 sS'value' p35460 S'Id' p35461 ssS'data_type' p35462 (dp35463 S'editable' p35464 I00 sS'value' p35465 S'number' p35466 ssS'entity_type' p35467 (dp35468 S'editable' p35469 I00 sS'value' p35470 S'TankPublishedFile' p35471 ssS'editable' p35472 (dp35473 S'editable' p35474 I00 sS'value' p35475 I00 ssS'unique' p35476 (dp35477 S'editable' p35478 I00 sS'value' p35479 I00 ssS'properties' p35480 (dp35481 S'default_value' p35482 (dp35483 S'editable' p35484 I00 sS'value' p35485 NssS'summary_default' p35486 (dp35487 S'editable' p35488 I01 sS'value' p35489 S'none' p35490 sssS'description' p35491 (dp35492 S'editable' p35493 I01 sS'value' p35494 g47 sssS'updated_by' p35495 (dp35496 S'mandatory' p35497 (dp35498 S'editable' p35499 I00 sS'value' p35500 I00 ssS'name' p35501 (dp35502 S'editable' p35503 I01 sS'value' p35504 S'Updated by' p35505 ssS'data_type' p35506 (dp35507 S'editable' p35508 I00 sS'value' p35509 S'entity' p35510 ssS'entity_type' p35511 (dp35512 S'editable' p35513 I00 sS'value' p35514 S'TankPublishedFile' p35515 ssS'editable' p35516 (dp35517 S'editable' p35518 I00 sS'value' p35519 I00 ssS'unique' p35520 (dp35521 S'editable' p35522 I00 sS'value' p35523 I00 ssS'properties' p35524 (dp35525 S'default_value' p35526 (dp35527 S'editable' p35528 I00 sS'value' p35529 NssS'summary_default' p35530 (dp35531 S'editable' p35532 I01 sS'value' p35533 S'none' p35534 ssS'valid_types' p35535 (dp35536 S'editable' p35537 I01 sS'value' p35538 (lp35539 S'HumanUser' p35540 aS'ApiUser' p35541 asssS'description' p35542 (dp35543 S'editable' p35544 I01 sS'value' p35545 g47 sssS'open_notes' p35546 (dp35547 S'mandatory' p35548 (dp35549 S'editable' p35550 I00 sS'value' p35551 I00 ssS'name' p35552 (dp35553 S'editable' p35554 I01 sS'value' p35555 S'Open Notes' p35556 ssS'data_type' p35557 (dp35558 S'editable' p35559 I00 sS'value' p35560 S'multi_entity' p35561 ssS'entity_type' p35562 (dp35563 S'editable' p35564 I00 sS'value' p35565 S'TankPublishedFile' p35566 ssS'editable' p35567 (dp35568 S'editable' p35569 I00 sS'value' p35570 I00 ssS'unique' p35571 (dp35572 S'editable' p35573 I00 sS'value' p35574 I00 ssS'properties' p35575 (dp35576 S'default_value' p35577 (dp35578 S'editable' p35579 I00 sS'value' p35580 NssS'summary_default' p35581 (dp35582 S'editable' p35583 I01 sS'value' p35584 S'none' p35585 ssS'valid_types' p35586 (dp35587 S'editable' p35588 I01 sS'value' p35589 (lp35590 S'Note' p35591 asssS'description' p35592 (dp35593 S'editable' p35594 I01 sS'value' p35595 g47 sssS'upstream_tank_published_files' p35596 (dp35597 S'mandatory' p35598 (dp35599 S'editable' p35600 I00 sS'value' p35601 I00 ssS'name' p35602 (dp35603 S'editable' p35604 I01 sS'value' p35605 S'Upstream Tank Published Files' p35606 ssS'data_type' p35607 (dp35608 S'editable' p35609 I00 sS'value' p35610 S'multi_entity' p35611 ssS'entity_type' p35612 (dp35613 S'editable' p35614 I00 sS'value' p35615 S'TankPublishedFile' p35616 ssS'editable' p35617 (dp35618 S'editable' p35619 I00 sS'value' p35620 I01 ssS'unique' p35621 (dp35622 S'editable' p35623 I00 sS'value' p35624 I00 ssS'properties' p35625 (dp35626 S'default_value' p35627 (dp35628 S'editable' p35629 I00 sS'value' p35630 NssS'summary_default' p35631 (dp35632 S'editable' p35633 I00 sS'value' p35634 S'none' p35635 ssS'valid_types' p35636 (dp35637 S'editable' p35638 I00 sS'value' p35639 (lp35640 S'TankPublishedFile' p35641 asssS'description' p35642 (dp35643 S'editable' p35644 I01 sS'value' p35645 g47 sssS'created_by' p35646 (dp35647 S'mandatory' p35648 (dp35649 S'editable' p35650 I00 sS'value' p35651 I00 ssS'name' p35652 (dp35653 S'editable' p35654 I01 sS'value' p35655 S'Created by' p35656 ssS'data_type' p35657 (dp35658 S'editable' p35659 I00 sS'value' p35660 S'entity' p35661 ssS'entity_type' p35662 (dp35663 S'editable' p35664 I00 sS'value' p35665 S'TankPublishedFile' p35666 ssS'editable' p35667 (dp35668 S'editable' p35669 I00 sS'value' p35670 I00 ssS'unique' p35671 (dp35672 S'editable' p35673 I00 sS'value' p35674 I00 ssS'properties' p35675 (dp35676 S'default_value' p35677 (dp35678 S'editable' p35679 I00 sS'value' p35680 NssS'summary_default' p35681 (dp35682 S'editable' p35683 I01 sS'value' p35684 S'none' p35685 ssS'valid_types' p35686 (dp35687 S'editable' p35688 I01 sS'value' p35689 (lp35690 S'HumanUser' p35691 aS'ApiUser' p35692 asssS'description' p35693 (dp35694 S'editable' p35695 I01 sS'value' p35696 g47 sssS'sg_status_list' p35697 (dp35698 S'mandatory' p35699 (dp35700 S'editable' p35701 I00 sS'value' p35702 I00 ssS'name' p35703 (dp35704 S'editable' p35705 I01 sS'value' p35706 S'Status' p35707 ssS'data_type' p35708 (dp35709 S'editable' p35710 I00 sS'value' p35711 S'status_list' p35712 ssS'entity_type' p35713 (dp35714 S'editable' p35715 I00 sS'value' p35716 S'TankPublishedFile' p35717 ssS'editable' p35718 (dp35719 S'editable' p35720 I00 sS'value' p35721 I01 ssS'unique' p35722 (dp35723 S'editable' p35724 I00 sS'value' p35725 I00 ssS'properties' p35726 (dp35727 S'default_value' p35728 (dp35729 S'editable' p35730 I01 sS'value' p35731 S'wtg' p35732 ssS'valid_values' p35733 (dp35734 S'editable' p35735 I01 sS'value' p35736 (lp35737 S'wtg' p35738 aS'ip' p35739 aS'cmpt' p35740 assS'summary_default' p35741 (dp35742 S'editable' p35743 I01 sS'value' p35744 S'none' p35745 sssS'description' p35746 (dp35747 S'editable' p35748 I01 sS'value' p35749 g47 sssS'description' p35750 (dp35751 S'mandatory' p35752 (dp35753 S'editable' p35754 I00 sS'value' p35755 I00 ssS'name' p35756 (dp35757 S'editable' p35758 I01 sS'value' p35759 S'Description' p35760 ssS'data_type' p35761 (dp35762 S'editable' p35763 I00 sS'value' p35764 S'text' p35765 ssS'entity_type' p35766 (dp35767 S'editable' p35768 I00 sS'value' p35769 S'TankPublishedFile' p35770 ssS'editable' p35771 (dp35772 S'editable' p35773 I00 sS'value' p35774 I01 ssS'unique' p35775 (dp35776 S'editable' p35777 I00 sS'value' p35778 I00 ssS'properties' p35779 (dp35780 S'default_value' p35781 (dp35782 S'editable' p35783 I00 sS'value' p35784 NssS'summary_default' p35785 (dp35786 S'editable' p35787 I01 sS'value' p35788 S'none' p35789 sssS'description' p35790 (dp35791 S'editable' p35792 I01 sS'value' p35793 g47 sssS'path_cache_storage' p35794 (dp35795 S'mandatory' p35796 (dp35797 S'editable' p35798 I00 sS'value' p35799 I00 ssS'name' p35800 (dp35801 S'editable' p35802 I01 sS'value' p35803 S'Path Cache Storage' p35804 ssS'data_type' p35805 (dp35806 S'editable' p35807 I00 sS'value' p35808 S'entity' p35809 ssS'entity_type' p35810 (dp35811 S'editable' p35812 I00 sS'value' p35813 S'TankPublishedFile' p35814 ssS'editable' p35815 (dp35816 S'editable' p35817 I00 sS'value' p35818 I00 ssS'unique' p35819 (dp35820 S'editable' p35821 I00 sS'value' p35822 I00 ssS'properties' p35823 (dp35824 S'default_value' p35825 (dp35826 S'editable' p35827 I00 sS'value' p35828 NssS'summary_default' p35829 (dp35830 S'editable' p35831 I01 sS'value' p35832 S'none' p35833 ssS'valid_types' p35834 (dp35835 S'editable' p35836 I01 sS'value' p35837 (lp35838 S'LocalStorage' p35839 asssS'description' p35840 (dp35841 S'editable' p35842 I01 sS'value' p35843 g47 sssS'path' p35844 (dp35845 S'mandatory' p35846 (dp35847 S'editable' p35848 I00 sS'value' p35849 I00 ssS'name' p35850 (dp35851 S'editable' p35852 I01 sS'value' p35853 S'Path' p35854 ssS'data_type' p35855 (dp35856 S'editable' p35857 I00 sS'value' p35858 S'url' p35859 ssS'entity_type' p35860 (dp35861 S'editable' p35862 I00 sS'value' p35863 S'TankPublishedFile' p35864 ssS'editable' p35865 (dp35866 S'editable' p35867 I00 sS'value' p35868 I00 ssS'unique' p35869 (dp35870 S'editable' p35871 I00 sS'value' p35872 I00 ssS'properties' p35873 (dp35874 S'default_value' p35875 (dp35876 S'editable' p35877 I00 sS'value' p35878 NssS'open_in_new_window' p35879 (dp35880 S'editable' p35881 I01 sS'value' p35882 I01 ssS'summary_default' p35883 (dp35884 S'editable' p35885 I01 sS'value' p35886 S'none' p35887 sssS'description' p35888 (dp35889 S'editable' p35890 I01 sS'value' p35891 g47 sssS'version_number' p35892 (dp35893 S'mandatory' p35894 (dp35895 S'editable' p35896 I00 sS'value' p35897 I00 ssS'name' p35898 (dp35899 S'editable' p35900 I01 sS'value' p35901 S'Version Number' p35902 ssS'data_type' p35903 (dp35904 S'editable' p35905 I00 sS'value' p35906 S'number' p35907 ssS'entity_type' p35908 (dp35909 S'editable' p35910 I00 sS'value' p35911 S'TankPublishedFile' p35912 ssS'editable' p35913 (dp35914 S'editable' p35915 I00 sS'value' p35916 I00 ssS'unique' p35917 (dp35918 S'editable' p35919 I00 sS'value' p35920 I00 ssS'properties' p35921 (dp35922 S'default_value' p35923 (dp35924 S'editable' p35925 I00 sS'value' p35926 NssS'summary_default' p35927 (dp35928 S'editable' p35929 I01 sS'value' p35930 S'none' p35931 sssS'description' p35932 (dp35933 S'editable' p35934 I01 sS'value' p35935 g47 sssS'task' p35936 (dp35937 S'mandatory' p35938 (dp35939 S'editable' p35940 I00 sS'value' p35941 I00 ssS'name' p35942 (dp35943 S'editable' p35944 I01 sS'value' p35945 S'Task' p35946 ssS'data_type' p35947 (dp35948 S'editable' p35949 I00 sS'value' p35950 S'entity' p35951 ssS'entity_type' p35952 (dp35953 S'editable' p35954 I00 sS'value' p35955 S'TankPublishedFile' p35956 ssS'editable' p35957 (dp35958 S'editable' p35959 I00 sS'value' p35960 I00 ssS'unique' p35961 (dp35962 S'editable' p35963 I00 sS'value' p35964 I00 ssS'properties' p35965 (dp35966 S'default_value' p35967 (dp35968 S'editable' p35969 I00 sS'value' p35970 NssS'summary_default' p35971 (dp35972 S'editable' p35973 I01 sS'value' p35974 S'none' p35975 ssS'valid_types' p35976 (dp35977 S'editable' p35978 I01 sS'value' p35979 (lp35980 S'Task' p35981 asssS'description' p35982 (dp35983 S'editable' p35984 I01 sS'value' p35985 g47 sssS'name' p35986 (dp35987 S'mandatory' p35988 (dp35989 S'editable' p35990 I00 sS'value' p35991 I00 ssS'name' p35992 (dp35993 S'editable' p35994 I01 sS'value' p35995 S'Name' p35996 ssS'data_type' p35997 (dp35998 S'editable' p35999 I00 sS'value' p36000 S'text' p36001 ssS'entity_type' p36002 (dp36003 S'editable' p36004 I00 sS'value' p36005 S'TankPublishedFile' p36006 ssS'editable' p36007 (dp36008 S'editable' p36009 I00 sS'value' p36010 I00 ssS'unique' p36011 (dp36012 S'editable' p36013 I00 sS'value' p36014 I00 ssS'properties' p36015 (dp36016 S'default_value' p36017 (dp36018 S'editable' p36019 I00 sS'value' p36020 NssS'summary_default' p36021 (dp36022 S'editable' p36023 I01 sS'value' p36024 S'none' p36025 sssS'description' p36026 (dp36027 S'editable' p36028 I01 sS'value' p36029 g47 sssS'created_at' p36030 (dp36031 S'mandatory' p36032 (dp36033 S'editable' p36034 I00 sS'value' p36035 I00 ssS'name' p36036 (dp36037 S'editable' p36038 I01 sS'value' p36039 S'Date Created' p36040 ssS'data_type' p36041 (dp36042 S'editable' p36043 I00 sS'value' p36044 S'date_time' p36045 ssS'entity_type' p36046 (dp36047 S'editable' p36048 I00 sS'value' p36049 S'TankPublishedFile' p36050 ssS'editable' p36051 (dp36052 S'editable' p36053 I00 sS'value' p36054 I00 ssS'unique' p36055 (dp36056 S'editable' p36057 I00 sS'value' p36058 I00 ssS'properties' p36059 (dp36060 S'default_value' p36061 (dp36062 S'editable' p36063 I00 sS'value' p36064 NssS'summary_default' p36065 (dp36066 S'editable' p36067 I01 sS'value' p36068 S'none' p36069 sssS'description' p36070 (dp36071 S'editable' p36072 I01 sS'value' p36073 g47 sssS'tank_type' p36074 (dp36075 S'mandatory' p36076 (dp36077 S'editable' p36078 I00 sS'value' p36079 I00 ssS'name' p36080 (dp36081 S'editable' p36082 I01 sS'value' p36083 S'Tank Type' p36084 ssS'data_type' p36085 (dp36086 S'editable' p36087 I00 sS'value' p36088 S'entity' p36089 ssS'entity_type' p36090 (dp36091 S'editable' p36092 I00 sS'value' p36093 S'TankPublishedFile' p36094 ssS'editable' p36095 (dp36096 S'editable' p36097 I00 sS'value' p36098 I00 ssS'unique' p36099 (dp36100 S'editable' p36101 I00 sS'value' p36102 I00 ssS'properties' p36103 (dp36104 S'default_value' p36105 (dp36106 S'editable' p36107 I00 sS'value' p36108 NssS'summary_default' p36109 (dp36110 S'editable' p36111 I01 sS'value' p36112 S'none' p36113 ssS'valid_types' p36114 (dp36115 S'editable' p36116 I01 sS'value' p36117 (lp36118 S'TankType' p36119 asssS'description' p36120 (dp36121 S'editable' p36122 I01 sS'value' p36123 g47 sssS'project' p36124 (dp36125 S'mandatory' p36126 (dp36127 S'editable' p36128 I00 sS'value' p36129 I00 ssS'name' p36130 (dp36131 S'editable' p36132 I01 sS'value' p36133 S'Project' p36134 ssS'data_type' p36135 (dp36136 S'editable' p36137 I00 sS'value' p36138 S'entity' p36139 ssS'entity_type' p36140 (dp36141 S'editable' p36142 I00 sS'value' p36143 S'TankPublishedFile' p36144 ssS'editable' p36145 (dp36146 S'editable' p36147 I00 sS'value' p36148 I01 ssS'unique' p36149 (dp36150 S'editable' p36151 I00 sS'value' p36152 I00 ssS'properties' p36153 (dp36154 S'default_value' p36155 (dp36156 S'editable' p36157 I00 sS'value' p36158 NssS'summary_default' p36159 (dp36160 S'editable' p36161 I01 sS'value' p36162 S'none' p36163 ssS'valid_types' p36164 (dp36165 S'editable' p36166 I01 sS'value' p36167 (lp36168 S'Project' p36169 asssS'description' p36170 (dp36171 S'editable' p36172 I01 sS'value' p36173 g47 sssS'tag_list' p36174 (dp36175 S'mandatory' p36176 (dp36177 S'editable' p36178 I00 sS'value' p36179 I00 ssS'name' p36180 (dp36181 S'editable' p36182 I01 sS'value' p36183 S'Tags' p36184 ssS'data_type' p36185 (dp36186 S'editable' p36187 I00 sS'value' p36188 S'tag_list' p36189 ssS'entity_type' p36190 (dp36191 S'editable' p36192 I00 sS'value' p36193 S'TankPublishedFile' p36194 ssS'editable' p36195 (dp36196 S'editable' p36197 I00 sS'value' p36198 I01 ssS'unique' p36199 (dp36200 S'editable' p36201 I00 sS'value' p36202 I00 ssS'properties' p36203 (dp36204 S'default_value' p36205 (dp36206 S'editable' p36207 I00 sS'value' p36208 NssS'summary_default' p36209 (dp36210 S'editable' p36211 I01 sS'value' p36212 S'none' p36213 ssS'valid_types' p36214 (dp36215 S'editable' p36216 I01 sS'value' p36217 (lp36218 S'Tag' p36219 asssS'description' p36220 (dp36221 S'editable' p36222 I01 sS'value' p36223 g47 sssS'notes' p36224 (dp36225 S'mandatory' p36226 (dp36227 S'editable' p36228 I00 sS'value' p36229 I00 ssS'name' p36230 (dp36231 S'editable' p36232 I01 sS'value' p36233 S'Notes' p36234 ssS'data_type' p36235 (dp36236 S'editable' p36237 I00 sS'value' p36238 S'multi_entity' p36239 ssS'entity_type' p36240 (dp36241 S'editable' p36242 I00 sS'value' p36243 S'TankPublishedFile' p36244 ssS'editable' p36245 (dp36246 S'editable' p36247 I00 sS'value' p36248 I01 ssS'unique' p36249 (dp36250 S'editable' p36251 I00 sS'value' p36252 I00 ssS'properties' p36253 (dp36254 S'default_value' p36255 (dp36256 S'editable' p36257 I00 sS'value' p36258 NssS'summary_default' p36259 (dp36260 S'editable' p36261 I01 sS'value' p36262 S'none' p36263 ssS'valid_types' p36264 (dp36265 S'editable' p36266 I01 sS'value' p36267 (lp36268 S'Note' p36269 asssS'description' p36270 (dp36271 S'editable' p36272 I01 sS'value' p36273 g47 ssssS'CustomEntity04' p36274 (dp36275 S'open_notes_count' p36276 (dp36277 S'mandatory' p36278 (dp36279 S'editable' p36280 I00 sS'value' p36281 I00 ssS'name' p36282 (dp36283 S'editable' p36284 I01 sS'value' p36285 S'Open Notes Count' p36286 ssS'data_type' p36287 (dp36288 S'editable' p36289 I00 sS'value' p36290 S'text' p36291 ssS'entity_type' p36292 (dp36293 S'editable' p36294 I00 sS'value' p36295 S'CustomEntity04' p36296 ssS'editable' p36297 (dp36298 S'editable' p36299 I00 sS'value' p36300 I00 ssS'unique' p36301 (dp36302 S'editable' p36303 I00 sS'value' p36304 I00 ssS'properties' p36305 (dp36306 S'default_value' p36307 (dp36308 S'editable' p36309 I00 sS'value' p36310 NssS'summary_default' p36311 (dp36312 S'editable' p36313 I01 sS'value' p36314 S'none' p36315 sssS'description' p36316 (dp36317 S'editable' p36318 I01 sS'value' p36319 g47 sssS'code' p36320 (dp36321 S'mandatory' p36322 (dp36323 S'editable' p36324 I00 sS'value' p36325 I01 ssS'name' p36326 (dp36327 S'editable' p36328 I01 sS'value' p36329 S'Custom Entity04 Name' p36330 ssS'data_type' p36331 (dp36332 S'editable' p36333 I00 sS'value' p36334 S'text' p36335 ssS'entity_type' p36336 (dp36337 S'editable' p36338 I00 sS'value' p36339 S'CustomEntity04' p36340 ssS'editable' p36341 (dp36342 S'editable' p36343 I00 sS'value' p36344 I01 ssS'unique' p36345 (dp36346 S'editable' p36347 I00 sS'value' p36348 I00 ssS'properties' p36349 (dp36350 S'default_value' p36351 (dp36352 S'editable' p36353 I00 sS'value' p36354 NssS'summary_default' p36355 (dp36356 S'editable' p36357 I01 sS'value' p36358 S'none' p36359 sssS'description' p36360 (dp36361 S'editable' p36362 I01 sS'value' p36363 g47 sssS'open_notes' p36364 (dp36365 S'mandatory' p36366 (dp36367 S'editable' p36368 I00 sS'value' p36369 I00 ssS'name' p36370 (dp36371 S'editable' p36372 I01 sS'value' p36373 S'Open Notes' p36374 ssS'data_type' p36375 (dp36376 S'editable' p36377 I00 sS'value' p36378 S'multi_entity' p36379 ssS'entity_type' p36380 (dp36381 S'editable' p36382 I00 sS'value' p36383 S'CustomEntity04' p36384 ssS'editable' p36385 (dp36386 S'editable' p36387 I00 sS'value' p36388 I00 ssS'unique' p36389 (dp36390 S'editable' p36391 I00 sS'value' p36392 I00 ssS'properties' p36393 (dp36394 S'default_value' p36395 (dp36396 S'editable' p36397 I00 sS'value' p36398 NssS'summary_default' p36399 (dp36400 S'editable' p36401 I01 sS'value' p36402 S'none' p36403 ssS'valid_types' p36404 (dp36405 S'editable' p36406 I01 sS'value' p36407 (lp36408 S'Note' p36409 asssS'description' p36410 (dp36411 S'editable' p36412 I01 sS'value' p36413 g47 sssS'description' p36414 (dp36415 S'mandatory' p36416 (dp36417 S'editable' p36418 I00 sS'value' p36419 I00 ssS'name' p36420 (dp36421 S'editable' p36422 I01 sS'value' p36423 S'Description' p36424 ssS'data_type' p36425 (dp36426 S'editable' p36427 I00 sS'value' p36428 S'text' p36429 ssS'entity_type' p36430 (dp36431 S'editable' p36432 I00 sS'value' p36433 S'CustomEntity04' p36434 ssS'editable' p36435 (dp36436 S'editable' p36437 I00 sS'value' p36438 I01 ssS'unique' p36439 (dp36440 S'editable' p36441 I00 sS'value' p36442 I00 ssS'properties' p36443 (dp36444 S'default_value' p36445 (dp36446 S'editable' p36447 I00 sS'value' p36448 NssS'summary_default' p36449 (dp36450 S'editable' p36451 I01 sS'value' p36452 S'none' p36453 sssS'description' p36454 (dp36455 S'editable' p36456 I01 sS'value' p36457 g47 sssS'created_at' p36458 (dp36459 S'mandatory' p36460 (dp36461 S'editable' p36462 I00 sS'value' p36463 I00 ssS'name' p36464 (dp36465 S'editable' p36466 I01 sS'value' p36467 S'Date Created' p36468 ssS'data_type' p36469 (dp36470 S'editable' p36471 I00 sS'value' p36472 S'date_time' p36473 ssS'entity_type' p36474 (dp36475 S'editable' p36476 I00 sS'value' p36477 S'CustomEntity04' p36478 ssS'editable' p36479 (dp36480 S'editable' p36481 I00 sS'value' p36482 I00 ssS'unique' p36483 (dp36484 S'editable' p36485 I00 sS'value' p36486 I00 ssS'properties' p36487 (dp36488 S'default_value' p36489 (dp36490 S'editable' p36491 I00 sS'value' p36492 NssS'summary_default' p36493 (dp36494 S'editable' p36495 I01 sS'value' p36496 S'none' p36497 sssS'description' p36498 (dp36499 S'editable' p36500 I01 sS'value' p36501 g47 sssS'updated_at' p36502 (dp36503 S'mandatory' p36504 (dp36505 S'editable' p36506 I00 sS'value' p36507 I00 ssS'name' p36508 (dp36509 S'editable' p36510 I01 sS'value' p36511 S'Date Updated' p36512 ssS'data_type' p36513 (dp36514 S'editable' p36515 I00 sS'value' p36516 S'date_time' p36517 ssS'entity_type' p36518 (dp36519 S'editable' p36520 I00 sS'value' p36521 S'CustomEntity04' p36522 ssS'editable' p36523 (dp36524 S'editable' p36525 I00 sS'value' p36526 I00 ssS'unique' p36527 (dp36528 S'editable' p36529 I00 sS'value' p36530 I00 ssS'properties' p36531 (dp36532 S'default_value' p36533 (dp36534 S'editable' p36535 I00 sS'value' p36536 NssS'summary_default' p36537 (dp36538 S'editable' p36539 I01 sS'value' p36540 S'none' p36541 sssS'description' p36542 (dp36543 S'editable' p36544 I01 sS'value' p36545 g47 sssS'created_by' p36546 (dp36547 S'mandatory' p36548 (dp36549 S'editable' p36550 I00 sS'value' p36551 I00 ssS'name' p36552 (dp36553 S'editable' p36554 I01 sS'value' p36555 S'Created by' p36556 ssS'data_type' p36557 (dp36558 S'editable' p36559 I00 sS'value' p36560 S'entity' p36561 ssS'entity_type' p36562 (dp36563 S'editable' p36564 I00 sS'value' p36565 S'CustomEntity04' p36566 ssS'editable' p36567 (dp36568 S'editable' p36569 I00 sS'value' p36570 I00 ssS'unique' p36571 (dp36572 S'editable' p36573 I00 sS'value' p36574 I00 ssS'properties' p36575 (dp36576 S'default_value' p36577 (dp36578 S'editable' p36579 I00 sS'value' p36580 NssS'summary_default' p36581 (dp36582 S'editable' p36583 I01 sS'value' p36584 S'none' p36585 ssS'valid_types' p36586 (dp36587 S'editable' p36588 I01 sS'value' p36589 (lp36590 S'HumanUser' p36591 aS'ApiUser' p36592 asssS'description' p36593 (dp36594 S'editable' p36595 I01 sS'value' p36596 g47 sssS'id' p36597 (dp36598 S'mandatory' p36599 (dp36600 S'editable' p36601 I00 sS'value' p36602 I00 ssS'name' p36603 (dp36604 S'editable' p36605 I01 sS'value' p36606 S'Id' p36607 ssS'data_type' p36608 (dp36609 S'editable' p36610 I00 sS'value' p36611 S'number' p36612 ssS'entity_type' p36613 (dp36614 S'editable' p36615 I00 sS'value' p36616 S'CustomEntity04' p36617 ssS'editable' p36618 (dp36619 S'editable' p36620 I00 sS'value' p36621 I00 ssS'unique' p36622 (dp36623 S'editable' p36624 I00 sS'value' p36625 I00 ssS'properties' p36626 (dp36627 S'default_value' p36628 (dp36629 S'editable' p36630 I00 sS'value' p36631 NssS'summary_default' p36632 (dp36633 S'editable' p36634 I01 sS'value' p36635 S'none' p36636 sssS'description' p36637 (dp36638 S'editable' p36639 I01 sS'value' p36640 g47 sssS'project' p36641 (dp36642 S'mandatory' p36643 (dp36644 S'editable' p36645 I00 sS'value' p36646 I00 ssS'name' p36647 (dp36648 S'editable' p36649 I01 sS'value' p36650 S'Project' p36651 ssS'data_type' p36652 (dp36653 S'editable' p36654 I00 sS'value' p36655 S'entity' p36656 ssS'entity_type' p36657 (dp36658 S'editable' p36659 I00 sS'value' p36660 S'CustomEntity04' p36661 ssS'editable' p36662 (dp36663 S'editable' p36664 I00 sS'value' p36665 I01 ssS'unique' p36666 (dp36667 S'editable' p36668 I00 sS'value' p36669 I00 ssS'properties' p36670 (dp36671 S'default_value' p36672 (dp36673 S'editable' p36674 I00 sS'value' p36675 NssS'summary_default' p36676 (dp36677 S'editable' p36678 I01 sS'value' p36679 S'none' p36680 ssS'valid_types' p36681 (dp36682 S'editable' p36683 I01 sS'value' p36684 (lp36685 S'Project' p36686 asssS'description' p36687 (dp36688 S'editable' p36689 I01 sS'value' p36690 g47 sssS'filmstrip_image' p36691 (dp36692 S'mandatory' p36693 (dp36694 S'editable' p36695 I00 sS'value' p36696 I00 ssS'name' p36697 (dp36698 S'editable' p36699 I01 sS'value' p36700 S'Filmstrip Thumbnail' p36701 ssS'data_type' p36702 (dp36703 S'editable' p36704 I00 sS'value' p36705 S'image' p36706 ssS'entity_type' p36707 (dp36708 S'editable' p36709 I00 sS'value' p36710 S'CustomEntity04' p36711 ssS'editable' p36712 (dp36713 S'editable' p36714 I00 sS'value' p36715 I01 ssS'unique' p36716 (dp36717 S'editable' p36718 I00 sS'value' p36719 I00 ssS'properties' p36720 (dp36721 S'default_value' p36722 (dp36723 S'editable' p36724 I00 sS'value' p36725 NssS'summary_default' p36726 (dp36727 S'editable' p36728 I01 sS'value' p36729 S'none' p36730 sssS'description' p36731 (dp36732 S'editable' p36733 I01 sS'value' p36734 g47 sssS'sg_status_list' p36735 (dp36736 S'mandatory' p36737 (dp36738 S'editable' p36739 I00 sS'value' p36740 I00 ssS'name' p36741 (dp36742 S'editable' p36743 I01 sS'value' p36744 S'Status' p36745 ssS'data_type' p36746 (dp36747 S'editable' p36748 I00 sS'value' p36749 S'status_list' p36750 ssS'entity_type' p36751 (dp36752 S'editable' p36753 I00 sS'value' p36754 S'CustomEntity04' p36755 ssS'editable' p36756 (dp36757 S'editable' p36758 I00 sS'value' p36759 I01 ssS'unique' p36760 (dp36761 S'editable' p36762 I00 sS'value' p36763 I00 ssS'properties' p36764 (dp36765 S'default_value' p36766 (dp36767 S'editable' p36768 I01 sS'value' p36769 S'wtg' p36770 ssS'valid_values' p36771 (dp36772 S'editable' p36773 I01 sS'value' p36774 (lp36775 S'cmpt' p36776 aS'ip' p36777 aS'wtg' p36778 assS'summary_default' p36779 (dp36780 S'editable' p36781 I01 sS'value' p36782 S'none' p36783 sssS'description' p36784 (dp36785 S'editable' p36786 I01 sS'value' p36787 g47 sssS'image' p36788 (dp36789 S'mandatory' p36790 (dp36791 S'editable' p36792 I00 sS'value' p36793 I00 ssS'name' p36794 (dp36795 S'editable' p36796 I01 sS'value' p36797 S'Thumbnail' p36798 ssS'data_type' p36799 (dp36800 S'editable' p36801 I00 sS'value' p36802 S'image' p36803 ssS'entity_type' p36804 (dp36805 S'editable' p36806 I00 sS'value' p36807 S'CustomEntity04' p36808 ssS'editable' p36809 (dp36810 S'editable' p36811 I00 sS'value' p36812 I01 ssS'unique' p36813 (dp36814 S'editable' p36815 I00 sS'value' p36816 I00 ssS'properties' p36817 (dp36818 S'default_value' p36819 (dp36820 S'editable' p36821 I00 sS'value' p36822 NssS'summary_default' p36823 (dp36824 S'editable' p36825 I01 sS'value' p36826 S'none' p36827 sssS'description' p36828 (dp36829 S'editable' p36830 I01 sS'value' p36831 g47 sssS'cached_display_name' p36832 (dp36833 S'mandatory' p36834 (dp36835 S'editable' p36836 I00 sS'value' p36837 I00 ssS'name' p36838 (dp36839 S'editable' p36840 I01 sS'value' p36841 S'Cached Display Name' p36842 ssS'data_type' p36843 (dp36844 S'editable' p36845 I00 sS'value' p36846 S'text' p36847 ssS'entity_type' p36848 (dp36849 S'editable' p36850 I00 sS'value' p36851 S'CustomEntity04' p36852 ssS'editable' p36853 (dp36854 S'editable' p36855 I00 sS'value' p36856 I01 ssS'unique' p36857 (dp36858 S'editable' p36859 I00 sS'value' p36860 I00 ssS'properties' p36861 (dp36862 S'default_value' p36863 (dp36864 S'editable' p36865 I00 sS'value' p36866 NssS'summary_default' p36867 (dp36868 S'editable' p36869 I00 sS'value' p36870 S'none' p36871 sssS'description' p36872 (dp36873 S'editable' p36874 I01 sS'value' p36875 g47 sssS'tag_list' p36876 (dp36877 S'mandatory' p36878 (dp36879 S'editable' p36880 I00 sS'value' p36881 I00 ssS'name' p36882 (dp36883 S'editable' p36884 I01 sS'value' p36885 S'Tags' p36886 ssS'data_type' p36887 (dp36888 S'editable' p36889 I00 sS'value' p36890 S'tag_list' p36891 ssS'entity_type' p36892 (dp36893 S'editable' p36894 I00 sS'value' p36895 S'CustomEntity04' p36896 ssS'editable' p36897 (dp36898 S'editable' p36899 I00 sS'value' p36900 I01 ssS'unique' p36901 (dp36902 S'editable' p36903 I00 sS'value' p36904 I00 ssS'properties' p36905 (dp36906 S'default_value' p36907 (dp36908 S'editable' p36909 I00 sS'value' p36910 NssS'summary_default' p36911 (dp36912 S'editable' p36913 I01 sS'value' p36914 S'none' p36915 ssS'valid_types' p36916 (dp36917 S'editable' p36918 I01 sS'value' p36919 (lp36920 S'Tag' p36921 asssS'description' p36922 (dp36923 S'editable' p36924 I01 sS'value' p36925 g47 sssS'notes' p36926 (dp36927 S'mandatory' p36928 (dp36929 S'editable' p36930 I00 sS'value' p36931 I00 ssS'name' p36932 (dp36933 S'editable' p36934 I01 sS'value' p36935 S'Notes' p36936 ssS'data_type' p36937 (dp36938 S'editable' p36939 I00 sS'value' p36940 S'multi_entity' p36941 ssS'entity_type' p36942 (dp36943 S'editable' p36944 I00 sS'value' p36945 S'CustomEntity04' p36946 ssS'editable' p36947 (dp36948 S'editable' p36949 I00 sS'value' p36950 I01 ssS'unique' p36951 (dp36952 S'editable' p36953 I00 sS'value' p36954 I00 ssS'properties' p36955 (dp36956 S'default_value' p36957 (dp36958 S'editable' p36959 I00 sS'value' p36960 NssS'summary_default' p36961 (dp36962 S'editable' p36963 I01 sS'value' p36964 S'none' p36965 ssS'valid_types' p36966 (dp36967 S'editable' p36968 I01 sS'value' p36969 (lp36970 S'Note' p36971 asssS'description' p36972 (dp36973 S'editable' p36974 I01 sS'value' p36975 g47 sssS'updated_by' p36976 (dp36977 S'mandatory' p36978 (dp36979 S'editable' p36980 I00 sS'value' p36981 I00 ssS'name' p36982 (dp36983 S'editable' p36984 I01 sS'value' p36985 S'Updated by' p36986 ssS'data_type' p36987 (dp36988 S'editable' p36989 I00 sS'value' p36990 S'entity' p36991 ssS'entity_type' p36992 (dp36993 S'editable' p36994 I00 sS'value' p36995 S'CustomEntity04' p36996 ssS'editable' p36997 (dp36998 S'editable' p36999 I00 sS'value' p37000 I00 ssS'unique' p37001 (dp37002 S'editable' p37003 I00 sS'value' p37004 I00 ssS'properties' p37005 (dp37006 S'default_value' p37007 (dp37008 S'editable' p37009 I00 sS'value' p37010 NssS'summary_default' p37011 (dp37012 S'editable' p37013 I01 sS'value' p37014 S'none' p37015 ssS'valid_types' p37016 (dp37017 S'editable' p37018 I01 sS'value' p37019 (lp37020 S'HumanUser' p37021 aS'ApiUser' p37022 asssS'description' p37023 (dp37024 S'editable' p37025 I01 sS'value' p37026 g47 ssssS'Sequence' p37027 (dp37028 S'sg_sequence_type' p37029 (dp37030 S'mandatory' p37031 (dp37032 S'editable' p37033 I00 sS'value' p37034 I00 ssS'name' p37035 (dp37036 S'editable' p37037 I01 sS'value' p37038 S'Type' p37039 ssS'data_type' p37040 (dp37041 S'editable' p37042 I00 sS'value' p37043 S'list' p37044 ssS'entity_type' p37045 (dp37046 S'editable' p37047 I00 sS'value' p37048 S'Sequence' p37049 ssS'editable' p37050 (dp37051 S'editable' p37052 I00 sS'value' p37053 I01 ssS'unique' p37054 (dp37055 S'editable' p37056 I00 sS'value' p37057 I00 ssS'properties' p37058 (dp37059 S'default_value' p37060 (dp37061 S'editable' p37062 I00 sS'value' p37063 NssS'valid_values' p37064 (dp37065 S'editable' p37066 I01 sS'value' p37067 (lp37068 ssS'summary_default' p37069 (dp37070 S'editable' p37071 I01 sS'value' p37072 S'none' p37073 sssS'description' p37074 (dp37075 S'editable' p37076 I01 sS'value' p37077 g47 sssS'open_notes_count' p37078 (dp37079 S'mandatory' p37080 (dp37081 S'editable' p37082 I00 sS'value' p37083 I00 ssS'name' p37084 (dp37085 S'editable' p37086 I01 sS'value' p37087 S'Open Notes Count' p37088 ssS'data_type' p37089 (dp37090 S'editable' p37091 I00 sS'value' p37092 S'text' p37093 ssS'entity_type' p37094 (dp37095 S'editable' p37096 I00 sS'value' p37097 S'Sequence' p37098 ssS'editable' p37099 (dp37100 S'editable' p37101 I00 sS'value' p37102 I00 ssS'unique' p37103 (dp37104 S'editable' p37105 I00 sS'value' p37106 I00 ssS'properties' p37107 (dp37108 S'default_value' p37109 (dp37110 S'editable' p37111 I00 sS'value' p37112 NssS'summary_default' p37113 (dp37114 S'editable' p37115 I01 sS'value' p37116 S'none' p37117 sssS'description' p37118 (dp37119 S'editable' p37120 I01 sS'value' p37121 g47 sssS'code' p37122 (dp37123 S'mandatory' p37124 (dp37125 S'editable' p37126 I00 sS'value' p37127 I01 ssS'name' p37128 (dp37129 S'editable' p37130 I01 sS'value' p37131 S'Sequence Name' p37132 ssS'data_type' p37133 (dp37134 S'editable' p37135 I00 sS'value' p37136 S'text' p37137 ssS'entity_type' p37138 (dp37139 S'editable' p37140 I00 sS'value' p37141 S'Sequence' p37142 ssS'editable' p37143 (dp37144 S'editable' p37145 I00 sS'value' p37146 I01 ssS'unique' p37147 (dp37148 S'editable' p37149 I00 sS'value' p37150 I00 ssS'properties' p37151 (dp37152 S'default_value' p37153 (dp37154 S'editable' p37155 I00 sS'value' p37156 NssS'summary_default' p37157 (dp37158 S'editable' p37159 I01 sS'value' p37160 S'none' p37161 sssS'description' p37162 (dp37163 S'editable' p37164 I01 sS'value' p37165 g47 sssS'image' p37166 (dp37167 S'mandatory' p37168 (dp37169 S'editable' p37170 I00 sS'value' p37171 I00 ssS'name' p37172 (dp37173 S'editable' p37174 I01 sS'value' p37175 S'Thumbnail' p37176 ssS'data_type' p37177 (dp37178 S'editable' p37179 I00 sS'value' p37180 S'image' p37181 ssS'entity_type' p37182 (dp37183 S'editable' p37184 I00 sS'value' p37185 S'Sequence' p37186 ssS'editable' p37187 (dp37188 S'editable' p37189 I00 sS'value' p37190 I01 ssS'unique' p37191 (dp37192 S'editable' p37193 I00 sS'value' p37194 I00 ssS'properties' p37195 (dp37196 S'default_value' p37197 (dp37198 S'editable' p37199 I00 sS'value' p37200 NssS'summary_default' p37201 (dp37202 S'editable' p37203 I01 sS'value' p37204 S'none' p37205 sssS'description' p37206 (dp37207 S'editable' p37208 I01 sS'value' p37209 g47 sssS'updated_at' p37210 (dp37211 S'mandatory' p37212 (dp37213 S'editable' p37214 I00 sS'value' p37215 I00 ssS'name' p37216 (dp37217 S'editable' p37218 I01 sS'value' p37219 S'Date Updated' p37220 ssS'data_type' p37221 (dp37222 S'editable' p37223 I00 sS'value' p37224 S'date_time' p37225 ssS'entity_type' p37226 (dp37227 S'editable' p37228 I00 sS'value' p37229 S'Sequence' p37230 ssS'editable' p37231 (dp37232 S'editable' p37233 I00 sS'value' p37234 I00 ssS'unique' p37235 (dp37236 S'editable' p37237 I00 sS'value' p37238 I00 ssS'properties' p37239 (dp37240 S'default_value' p37241 (dp37242 S'editable' p37243 I00 sS'value' p37244 NssS'summary_default' p37245 (dp37246 S'editable' p37247 I01 sS'value' p37248 S'none' p37249 sssS'description' p37250 (dp37251 S'editable' p37252 I01 sS'value' p37253 g47 sssS'tasks' p37254 (dp37255 S'mandatory' p37256 (dp37257 S'editable' p37258 I00 sS'value' p37259 I00 ssS'name' p37260 (dp37261 S'editable' p37262 I01 sS'value' p37263 S'Tasks' p37264 ssS'data_type' p37265 (dp37266 S'editable' p37267 I00 sS'value' p37268 S'multi_entity' p37269 ssS'entity_type' p37270 (dp37271 S'editable' p37272 I00 sS'value' p37273 S'Sequence' p37274 ssS'editable' p37275 (dp37276 S'editable' p37277 I00 sS'value' p37278 I01 ssS'unique' p37279 (dp37280 S'editable' p37281 I00 sS'value' p37282 I00 ssS'properties' p37283 (dp37284 S'default_value' p37285 (dp37286 S'editable' p37287 I00 sS'value' p37288 NssS'summary_default' p37289 (dp37290 S'editable' p37291 I01 sS'value' p37292 S'none' p37293 ssS'valid_types' p37294 (dp37295 S'editable' p37296 I01 sS'value' p37297 (lp37298 S'Task' p37299 asssS'description' p37300 (dp37301 S'editable' p37302 I01 sS'value' p37303 g47 sssS'cached_display_name' p37304 (dp37305 S'mandatory' p37306 (dp37307 S'editable' p37308 I00 sS'value' p37309 I00 ssS'name' p37310 (dp37311 S'editable' p37312 I01 sS'value' p37313 S'Cached Display Name' p37314 ssS'data_type' p37315 (dp37316 S'editable' p37317 I00 sS'value' p37318 S'text' p37319 ssS'entity_type' p37320 (dp37321 S'editable' p37322 I00 sS'value' p37323 S'Sequence' p37324 ssS'editable' p37325 (dp37326 S'editable' p37327 I00 sS'value' p37328 I01 ssS'unique' p37329 (dp37330 S'editable' p37331 I00 sS'value' p37332 I00 ssS'properties' p37333 (dp37334 S'default_value' p37335 (dp37336 S'editable' p37337 I00 sS'value' p37338 NssS'summary_default' p37339 (dp37340 S'editable' p37341 I00 sS'value' p37342 S'none' p37343 sssS'description' p37344 (dp37345 S'editable' p37346 I01 sS'value' p37347 g47 sssS'id' p37348 (dp37349 S'mandatory' p37350 (dp37351 S'editable' p37352 I00 sS'value' p37353 I00 ssS'name' p37354 (dp37355 S'editable' p37356 I01 sS'value' p37357 S'Id' p37358 ssS'data_type' p37359 (dp37360 S'editable' p37361 I00 sS'value' p37362 S'number' p37363 ssS'entity_type' p37364 (dp37365 S'editable' p37366 I00 sS'value' p37367 S'Sequence' p37368 ssS'editable' p37369 (dp37370 S'editable' p37371 I00 sS'value' p37372 I00 ssS'unique' p37373 (dp37374 S'editable' p37375 I00 sS'value' p37376 I00 ssS'properties' p37377 (dp37378 S'default_value' p37379 (dp37380 S'editable' p37381 I00 sS'value' p37382 NssS'summary_default' p37383 (dp37384 S'editable' p37385 I01 sS'value' p37386 S'none' p37387 sssS'description' p37388 (dp37389 S'editable' p37390 I01 sS'value' p37391 g47 sssS'sg_due_1' p37392 (dp37393 S'mandatory' p37394 (dp37395 S'editable' p37396 I00 sS'value' p37397 I00 ssS'name' p37398 (dp37399 S'editable' p37400 I01 sS'value' p37401 S'Due' p37402 ssS'data_type' p37403 (dp37404 S'editable' p37405 I00 sS'value' p37406 S'date' p37407 ssS'entity_type' p37408 (dp37409 S'editable' p37410 I00 sS'value' p37411 S'Sequence' p37412 ssS'editable' p37413 (dp37414 S'editable' p37415 I00 sS'value' p37416 I01 ssS'unique' p37417 (dp37418 S'editable' p37419 I00 sS'value' p37420 I00 ssS'properties' p37421 (dp37422 S'default_value' p37423 (dp37424 S'editable' p37425 I00 sS'value' p37426 NssS'summary_default' p37427 (dp37428 S'editable' p37429 I01 sS'value' p37430 S'none' p37431 sssS'description' p37432 (dp37433 S'editable' p37434 I01 sS'value' p37435 g47 sssS'open_notes' p37436 (dp37437 S'mandatory' p37438 (dp37439 S'editable' p37440 I00 sS'value' p37441 I00 ssS'name' p37442 (dp37443 S'editable' p37444 I01 sS'value' p37445 S'Open Notes' p37446 ssS'data_type' p37447 (dp37448 S'editable' p37449 I00 sS'value' p37450 S'multi_entity' p37451 ssS'entity_type' p37452 (dp37453 S'editable' p37454 I00 sS'value' p37455 S'Sequence' p37456 ssS'editable' p37457 (dp37458 S'editable' p37459 I00 sS'value' p37460 I00 ssS'unique' p37461 (dp37462 S'editable' p37463 I00 sS'value' p37464 I00 ssS'properties' p37465 (dp37466 S'default_value' p37467 (dp37468 S'editable' p37469 I00 sS'value' p37470 NssS'summary_default' p37471 (dp37472 S'editable' p37473 I01 sS'value' p37474 S'none' p37475 ssS'valid_types' p37476 (dp37477 S'editable' p37478 I01 sS'value' p37479 (lp37480 S'Note' p37481 asssS'description' p37482 (dp37483 S'editable' p37484 I01 sS'value' p37485 g47 sssS'description' p37486 (dp37487 S'mandatory' p37488 (dp37489 S'editable' p37490 I00 sS'value' p37491 I00 ssS'name' p37492 (dp37493 S'editable' p37494 I01 sS'value' p37495 S'Description' p37496 ssS'data_type' p37497 (dp37498 S'editable' p37499 I00 sS'value' p37500 S'text' p37501 ssS'entity_type' p37502 (dp37503 S'editable' p37504 I00 sS'value' p37505 S'Sequence' p37506 ssS'editable' p37507 (dp37508 S'editable' p37509 I00 sS'value' p37510 I01 ssS'unique' p37511 (dp37512 S'editable' p37513 I00 sS'value' p37514 I00 ssS'properties' p37515 (dp37516 S'default_value' p37517 (dp37518 S'editable' p37519 I00 sS'value' p37520 NssS'summary_default' p37521 (dp37522 S'editable' p37523 I01 sS'value' p37524 S'none' p37525 sssS'description' p37526 (dp37527 S'editable' p37528 I01 sS'value' p37529 g47 sssS'task_template' p37530 (dp37531 S'mandatory' p37532 (dp37533 S'editable' p37534 I00 sS'value' p37535 I00 ssS'name' p37536 (dp37537 S'editable' p37538 I01 sS'value' p37539 S'Task Template' p37540 ssS'data_type' p37541 (dp37542 S'editable' p37543 I00 sS'value' p37544 S'entity' p37545 ssS'entity_type' p37546 (dp37547 S'editable' p37548 I00 sS'value' p37549 S'Sequence' p37550 ssS'editable' p37551 (dp37552 S'editable' p37553 I00 sS'value' p37554 I01 ssS'unique' p37555 (dp37556 S'editable' p37557 I00 sS'value' p37558 I00 ssS'properties' p37559 (dp37560 S'default_value' p37561 (dp37562 S'editable' p37563 I00 sS'value' p37564 NssS'summary_default' p37565 (dp37566 S'editable' p37567 I01 sS'value' p37568 S'none' p37569 ssS'valid_types' p37570 (dp37571 S'editable' p37572 I01 sS'value' p37573 (lp37574 S'TaskTemplate' p37575 asssS'description' p37576 (dp37577 S'editable' p37578 I01 sS'value' p37579 g47 sssS'created_by' p37580 (dp37581 S'mandatory' p37582 (dp37583 S'editable' p37584 I00 sS'value' p37585 I00 ssS'name' p37586 (dp37587 S'editable' p37588 I01 sS'value' p37589 S'Created by' p37590 ssS'data_type' p37591 (dp37592 S'editable' p37593 I00 sS'value' p37594 S'entity' p37595 ssS'entity_type' p37596 (dp37597 S'editable' p37598 I00 sS'value' p37599 S'Sequence' p37600 ssS'editable' p37601 (dp37602 S'editable' p37603 I00 sS'value' p37604 I00 ssS'unique' p37605 (dp37606 S'editable' p37607 I00 sS'value' p37608 I00 ssS'properties' p37609 (dp37610 S'default_value' p37611 (dp37612 S'editable' p37613 I00 sS'value' p37614 NssS'summary_default' p37615 (dp37616 S'editable' p37617 I01 sS'value' p37618 S'none' p37619 ssS'valid_types' p37620 (dp37621 S'editable' p37622 I01 sS'value' p37623 (lp37624 S'HumanUser' p37625 aS'ApiUser' p37626 asssS'description' p37627 (dp37628 S'editable' p37629 I01 sS'value' p37630 g47 sssS'sg_status_list' p37631 (dp37632 S'mandatory' p37633 (dp37634 S'editable' p37635 I00 sS'value' p37636 I00 ssS'name' p37637 (dp37638 S'editable' p37639 I01 sS'value' p37640 S'Status' p37641 ssS'data_type' p37642 (dp37643 S'editable' p37644 I00 sS'value' p37645 S'status_list' p37646 ssS'entity_type' p37647 (dp37648 S'editable' p37649 I00 sS'value' p37650 S'Sequence' p37651 ssS'editable' p37652 (dp37653 S'editable' p37654 I00 sS'value' p37655 I01 ssS'unique' p37656 (dp37657 S'editable' p37658 I00 sS'value' p37659 I00 ssS'properties' p37660 (dp37661 S'default_value' p37662 (dp37663 S'editable' p37664 I01 sS'value' p37665 S'ip' p37666 ssS'valid_values' p37667 (dp37668 S'editable' p37669 I01 sS'value' p37670 (lp37671 S'fin' p37672 aS'ip' p37673 aS'omt' p37674 aS'hld' p37675 assS'summary_default' p37676 (dp37677 S'editable' p37678 I01 sS'value' p37679 S'status_list' p37680 sssS'description' p37681 (dp37682 S'editable' p37683 I01 sS'value' p37684 g47 sssS'updated_by' p37685 (dp37686 S'mandatory' p37687 (dp37688 S'editable' p37689 I00 sS'value' p37690 I00 ssS'name' p37691 (dp37692 S'editable' p37693 I01 sS'value' p37694 S'Updated by' p37695 ssS'data_type' p37696 (dp37697 S'editable' p37698 I00 sS'value' p37699 S'entity' p37700 ssS'entity_type' p37701 (dp37702 S'editable' p37703 I00 sS'value' p37704 S'Sequence' p37705 ssS'editable' p37706 (dp37707 S'editable' p37708 I00 sS'value' p37709 I00 ssS'unique' p37710 (dp37711 S'editable' p37712 I00 sS'value' p37713 I00 ssS'properties' p37714 (dp37715 S'default_value' p37716 (dp37717 S'editable' p37718 I00 sS'value' p37719 NssS'summary_default' p37720 (dp37721 S'editable' p37722 I01 sS'value' p37723 S'none' p37724 ssS'valid_types' p37725 (dp37726 S'editable' p37727 I01 sS'value' p37728 (lp37729 S'HumanUser' p37730 aS'ApiUser' p37731 asssS'description' p37732 (dp37733 S'editable' p37734 I01 sS'value' p37735 g47 sssS'addressings_cc' p37736 (dp37737 S'mandatory' p37738 (dp37739 S'editable' p37740 I00 sS'value' p37741 I00 ssS'name' p37742 (dp37743 S'editable' p37744 I01 sS'value' p37745 S'Cc' p37746 ssS'data_type' p37747 (dp37748 S'editable' p37749 I00 sS'value' p37750 S'multi_entity' p37751 ssS'entity_type' p37752 (dp37753 S'editable' p37754 I00 sS'value' p37755 S'Sequence' p37756 ssS'editable' p37757 (dp37758 S'editable' p37759 I00 sS'value' p37760 I01 ssS'unique' p37761 (dp37762 S'editable' p37763 I00 sS'value' p37764 I00 ssS'properties' p37765 (dp37766 S'default_value' p37767 (dp37768 S'editable' p37769 I00 sS'value' p37770 NssS'summary_default' p37771 (dp37772 S'editable' p37773 I01 sS'value' p37774 S'none' p37775 ssS'valid_types' p37776 (dp37777 S'editable' p37778 I01 sS'value' p37779 (lp37780 S'Group' p37781 aS'HumanUser' p37782 asssS'description' p37783 (dp37784 S'editable' p37785 I01 sS'value' p37786 g47 sssS'sg_sequencenumber' p37787 (dp37788 S'mandatory' p37789 (dp37790 S'editable' p37791 I00 sS'value' p37792 I00 ssS'name' p37793 (dp37794 S'editable' p37795 I01 sS'value' p37796 S'sequencenumber' p37797 ssS'data_type' p37798 (dp37799 S'editable' p37800 I00 sS'value' p37801 S'text' p37802 ssS'entity_type' p37803 (dp37804 S'editable' p37805 I00 sS'value' p37806 S'Sequence' p37807 ssS'editable' p37808 (dp37809 S'editable' p37810 I00 sS'value' p37811 I01 ssS'unique' p37812 (dp37813 S'editable' p37814 I00 sS'value' p37815 I00 ssS'properties' p37816 (dp37817 S'default_value' p37818 (dp37819 S'editable' p37820 I00 sS'value' p37821 NssS'summary_default' p37822 (dp37823 S'editable' p37824 I01 sS'value' p37825 S'none' p37826 sssS'description' p37827 (dp37828 S'editable' p37829 I01 sS'value' p37830 g47 sssS'step_0' p37831 (dp37832 S'mandatory' p37833 (dp37834 S'editable' p37835 I00 sS'value' p37836 I00 ssS'name' p37837 (dp37838 S'editable' p37839 I01 sS'value' p37840 S'ALL TASKS' p37841 ssS'data_type' p37842 (dp37843 S'editable' p37844 I00 sS'value' p37845 S'pivot_column' p37846 ssS'entity_type' p37847 (dp37848 S'editable' p37849 I00 sS'value' p37850 S'Sequence' p37851 ssS'editable' p37852 (dp37853 S'editable' p37854 I00 sS'value' p37855 I00 ssS'unique' p37856 (dp37857 S'editable' p37858 I00 sS'value' p37859 I00 ssS'properties' p37860 (dp37861 S'default_value' p37862 (dp37863 S'editable' p37864 I00 sS'value' p37865 NssS'summary_default' p37866 (dp37867 S'editable' p37868 I00 sS'value' p37869 S'none' p37870 sssS'description' p37871 (dp37872 S'editable' p37873 I01 sS'value' p37874 g47 sssS'assets' p37875 (dp37876 S'mandatory' p37877 (dp37878 S'editable' p37879 I00 sS'value' p37880 I00 ssS'name' p37881 (dp37882 S'editable' p37883 I01 sS'value' p37884 S'Assets' p37885 ssS'data_type' p37886 (dp37887 S'editable' p37888 I00 sS'value' p37889 S'multi_entity' p37890 ssS'entity_type' p37891 (dp37892 S'editable' p37893 I00 sS'value' p37894 S'Sequence' p37895 ssS'editable' p37896 (dp37897 S'editable' p37898 I00 sS'value' p37899 I01 ssS'unique' p37900 (dp37901 S'editable' p37902 I00 sS'value' p37903 I00 ssS'properties' p37904 (dp37905 S'default_value' p37906 (dp37907 S'editable' p37908 I00 sS'value' p37909 NssS'summary_default' p37910 (dp37911 S'editable' p37912 I01 sS'value' p37913 S'none' p37914 ssS'valid_types' p37915 (dp37916 S'editable' p37917 I01 sS'value' p37918 (lp37919 S'Asset' p37920 asssS'description' p37921 (dp37922 S'editable' p37923 I01 sS'value' p37924 g47 sssS'sg_scene' p37925 (dp37926 S'mandatory' p37927 (dp37928 S'editable' p37929 I00 sS'value' p37930 I00 ssS'name' p37931 (dp37932 S'editable' p37933 I01 sS'value' p37934 S'Scene' p37935 ssS'data_type' p37936 (dp37937 S'editable' p37938 I00 sS'value' p37939 S'entity' p37940 ssS'entity_type' p37941 (dp37942 S'editable' p37943 I00 sS'value' p37944 S'Sequence' p37945 ssS'editable' p37946 (dp37947 S'editable' p37948 I00 sS'value' p37949 I01 ssS'unique' p37950 (dp37951 S'editable' p37952 I00 sS'value' p37953 I00 ssS'properties' p37954 (dp37955 S'default_value' p37956 (dp37957 S'editable' p37958 I00 sS'value' p37959 NssS'summary_default' p37960 (dp37961 S'editable' p37962 I01 sS'value' p37963 S'none' p37964 ssS'valid_types' p37965 (dp37966 S'editable' p37967 I01 sS'value' p37968 (lp37969 S'Scene' p37970 asssS'description' p37971 (dp37972 S'editable' p37973 I01 sS'value' p37974 g47 sssS'notes' p37975 (dp37976 S'mandatory' p37977 (dp37978 S'editable' p37979 I00 sS'value' p37980 I00 ssS'name' p37981 (dp37982 S'editable' p37983 I01 sS'value' p37984 S'Notes' p37985 ssS'data_type' p37986 (dp37987 S'editable' p37988 I00 sS'value' p37989 S'multi_entity' p37990 ssS'entity_type' p37991 (dp37992 S'editable' p37993 I00 sS'value' p37994 S'Sequence' p37995 ssS'editable' p37996 (dp37997 S'editable' p37998 I00 sS'value' p37999 I01 ssS'unique' p38000 (dp38001 S'editable' p38002 I00 sS'value' p38003 I00 ssS'properties' p38004 (dp38005 S'default_value' p38006 (dp38007 S'editable' p38008 I00 sS'value' p38009 NssS'summary_default' p38010 (dp38011 S'editable' p38012 I01 sS'value' p38013 S'none' p38014 ssS'valid_types' p38015 (dp38016 S'editable' p38017 I01 sS'value' p38018 (lp38019 S'Note' p38020 asssS'description' p38021 (dp38022 S'editable' p38023 I01 sS'value' p38024 g47 sssS'project' p38025 (dp38026 S'mandatory' p38027 (dp38028 S'editable' p38029 I00 sS'value' p38030 I00 ssS'name' p38031 (dp38032 S'editable' p38033 I01 sS'value' p38034 S'Project' p38035 ssS'data_type' p38036 (dp38037 S'editable' p38038 I00 sS'value' p38039 S'entity' p38040 ssS'entity_type' p38041 (dp38042 S'editable' p38043 I00 sS'value' p38044 S'Sequence' p38045 ssS'editable' p38046 (dp38047 S'editable' p38048 I00 sS'value' p38049 I01 ssS'unique' p38050 (dp38051 S'editable' p38052 I00 sS'value' p38053 I00 ssS'properties' p38054 (dp38055 S'default_value' p38056 (dp38057 S'editable' p38058 I00 sS'value' p38059 NssS'summary_default' p38060 (dp38061 S'editable' p38062 I01 sS'value' p38063 S'none' p38064 ssS'valid_types' p38065 (dp38066 S'editable' p38067 I01 sS'value' p38068 (lp38069 S'Project' p38070 asssS'description' p38071 (dp38072 S'editable' p38073 I01 sS'value' p38074 g47 sssS'filmstrip_image' p38075 (dp38076 S'mandatory' p38077 (dp38078 S'editable' p38079 I00 sS'value' p38080 I00 ssS'name' p38081 (dp38082 S'editable' p38083 I01 sS'value' p38084 S'Filmstrip Thumbnail' p38085 ssS'data_type' p38086 (dp38087 S'editable' p38088 I00 sS'value' p38089 S'image' p38090 ssS'entity_type' p38091 (dp38092 S'editable' p38093 I00 sS'value' p38094 S'Sequence' p38095 ssS'editable' p38096 (dp38097 S'editable' p38098 I00 sS'value' p38099 I01 ssS'unique' p38100 (dp38101 S'editable' p38102 I00 sS'value' p38103 I00 ssS'properties' p38104 (dp38105 S'default_value' p38106 (dp38107 S'editable' p38108 I00 sS'value' p38109 NssS'summary_default' p38110 (dp38111 S'editable' p38112 I01 sS'value' p38113 S'none' p38114 sssS'description' p38115 (dp38116 S'editable' p38117 I01 sS'value' p38118 g47 sssS'sg_assigned_to' p38119 (dp38120 S'mandatory' p38121 (dp38122 S'editable' p38123 I00 sS'value' p38124 I00 ssS'name' p38125 (dp38126 S'editable' p38127 I01 sS'value' p38128 S'Assigned To' p38129 ssS'data_type' p38130 (dp38131 S'editable' p38132 I00 sS'value' p38133 S'entity' p38134 ssS'entity_type' p38135 (dp38136 S'editable' p38137 I00 sS'value' p38138 S'Sequence' p38139 ssS'editable' p38140 (dp38141 S'editable' p38142 I00 sS'value' p38143 I01 ssS'unique' p38144 (dp38145 S'editable' p38146 I00 sS'value' p38147 I00 ssS'properties' p38148 (dp38149 S'default_value' p38150 (dp38151 S'editable' p38152 I00 sS'value' p38153 NssS'summary_default' p38154 (dp38155 S'editable' p38156 I01 sS'value' p38157 S'none' p38158 ssS'valid_types' p38159 (dp38160 S'editable' p38161 I01 sS'value' p38162 (lp38163 S'HumanUser' p38164 asssS'description' p38165 (dp38166 S'editable' p38167 I01 sS'value' p38168 g47 sssS'shots' p38169 (dp38170 S'mandatory' p38171 (dp38172 S'editable' p38173 I00 sS'value' p38174 I00 ssS'name' p38175 (dp38176 S'editable' p38177 I01 sS'value' p38178 S'Shots' p38179 ssS'data_type' p38180 (dp38181 S'editable' p38182 I00 sS'value' p38183 S'multi_entity' p38184 ssS'entity_type' p38185 (dp38186 S'editable' p38187 I00 sS'value' p38188 S'Sequence' p38189 ssS'editable' p38190 (dp38191 S'editable' p38192 I00 sS'value' p38193 I01 ssS'unique' p38194 (dp38195 S'editable' p38196 I00 sS'value' p38197 I00 ssS'properties' p38198 (dp38199 S'default_value' p38200 (dp38201 S'editable' p38202 I00 sS'value' p38203 NssS'summary_default' p38204 (dp38205 S'editable' p38206 I01 sS'value' p38207 S'none' p38208 ssS'valid_types' p38209 (dp38210 S'editable' p38211 I01 sS'value' p38212 (lp38213 S'Shot' p38214 asssS'description' p38215 (dp38216 S'editable' p38217 I01 sS'value' p38218 g47 sssS'tag_list' p38219 (dp38220 S'mandatory' p38221 (dp38222 S'editable' p38223 I00 sS'value' p38224 I00 ssS'name' p38225 (dp38226 S'editable' p38227 I01 sS'value' p38228 S'Tags' p38229 ssS'data_type' p38230 (dp38231 S'editable' p38232 I00 sS'value' p38233 S'tag_list' p38234 ssS'entity_type' p38235 (dp38236 S'editable' p38237 I00 sS'value' p38238 S'Sequence' p38239 ssS'editable' p38240 (dp38241 S'editable' p38242 I00 sS'value' p38243 I01 ssS'unique' p38244 (dp38245 S'editable' p38246 I00 sS'value' p38247 I00 ssS'properties' p38248 (dp38249 S'default_value' p38250 (dp38251 S'editable' p38252 I00 sS'value' p38253 NssS'summary_default' p38254 (dp38255 S'editable' p38256 I01 sS'value' p38257 S'none' p38258 ssS'valid_types' p38259 (dp38260 S'editable' p38261 I01 sS'value' p38262 (lp38263 S'Tag' p38264 asssS'description' p38265 (dp38266 S'editable' p38267 I01 sS'value' p38268 g47 sssS'created_at' p38269 (dp38270 S'mandatory' p38271 (dp38272 S'editable' p38273 I00 sS'value' p38274 I00 ssS'name' p38275 (dp38276 S'editable' p38277 I01 sS'value' p38278 S'Date Created' p38279 ssS'data_type' p38280 (dp38281 S'editable' p38282 I00 sS'value' p38283 S'date_time' p38284 ssS'entity_type' p38285 (dp38286 S'editable' p38287 I00 sS'value' p38288 S'Sequence' p38289 ssS'editable' p38290 (dp38291 S'editable' p38292 I00 sS'value' p38293 I00 ssS'unique' p38294 (dp38295 S'editable' p38296 I00 sS'value' p38297 I00 ssS'properties' p38298 (dp38299 S'default_value' p38300 (dp38301 S'editable' p38302 I00 sS'value' p38303 NssS'summary_default' p38304 (dp38305 S'editable' p38306 I01 sS'value' p38307 S'none' p38308 sssS'description' p38309 (dp38310 S'editable' p38311 I01 sS'value' p38312 g47 ssssS'BannerUserConnection' p38313 (dp38314 S'cached_display_name' p38315 (dp38316 S'mandatory' p38317 (dp38318 S'editable' p38319 I00 sS'value' p38320 I00 ssS'name' p38321 (dp38322 S'editable' p38323 I01 sS'value' p38324 S'Cached Display Name' p38325 ssS'data_type' p38326 (dp38327 S'editable' p38328 I00 sS'value' p38329 S'text' p38330 ssS'entity_type' p38331 (dp38332 S'editable' p38333 I00 sS'value' p38334 S'BannerUserConnection' p38335 ssS'editable' p38336 (dp38337 S'editable' p38338 I00 sS'value' p38339 I01 ssS'unique' p38340 (dp38341 S'editable' p38342 I00 sS'value' p38343 I00 ssS'properties' p38344 (dp38345 S'default_value' p38346 (dp38347 S'editable' p38348 I00 sS'value' p38349 NssS'summary_default' p38350 (dp38351 S'editable' p38352 I00 sS'value' p38353 S'none' p38354 sssS'description' p38355 (dp38356 S'editable' p38357 I01 sS'value' p38358 g47 sssS'banner' p38359 (dp38360 S'mandatory' p38361 (dp38362 S'editable' p38363 I00 sS'value' p38364 I00 ssS'name' p38365 (dp38366 S'editable' p38367 I01 sS'value' p38368 S'Banner' p38369 ssS'data_type' p38370 (dp38371 S'editable' p38372 I00 sS'value' p38373 S'entity' p38374 ssS'entity_type' p38375 (dp38376 S'editable' p38377 I00 sS'value' p38378 S'BannerUserConnection' p38379 ssS'editable' p38380 (dp38381 S'editable' p38382 I00 sS'value' p38383 I01 ssS'unique' p38384 (dp38385 S'editable' p38386 I00 sS'value' p38387 I00 ssS'properties' p38388 (dp38389 S'default_value' p38390 (dp38391 S'editable' p38392 I00 sS'value' p38393 NssS'summary_default' p38394 (dp38395 S'editable' p38396 I00 sS'value' p38397 S'none' p38398 ssS'valid_types' p38399 (dp38400 S'editable' p38401 I00 sS'value' p38402 (lp38403 S'Banner' p38404 asssS'description' p38405 (dp38406 S'editable' p38407 I01 sS'value' p38408 g47 sssS'id' p38409 (dp38410 S'mandatory' p38411 (dp38412 S'editable' p38413 I00 sS'value' p38414 I00 ssS'name' p38415 (dp38416 S'editable' p38417 I01 sS'value' p38418 S'Id' p38419 ssS'data_type' p38420 (dp38421 S'editable' p38422 I00 sS'value' p38423 S'number' p38424 ssS'entity_type' p38425 (dp38426 S'editable' p38427 I00 sS'value' p38428 S'BannerUserConnection' p38429 ssS'editable' p38430 (dp38431 S'editable' p38432 I00 sS'value' p38433 I00 ssS'unique' p38434 (dp38435 S'editable' p38436 I00 sS'value' p38437 I00 ssS'properties' p38438 (dp38439 S'default_value' p38440 (dp38441 S'editable' p38442 I00 sS'value' p38443 NssS'summary_default' p38444 (dp38445 S'editable' p38446 I00 sS'value' p38447 S'none' p38448 sssS'description' p38449 (dp38450 S'editable' p38451 I01 sS'value' p38452 g47 sssS'user' p38453 (dp38454 S'mandatory' p38455 (dp38456 S'editable' p38457 I00 sS'value' p38458 I00 ssS'name' p38459 (dp38460 S'editable' p38461 I01 sS'value' p38462 S'User' p38463 ssS'data_type' p38464 (dp38465 S'editable' p38466 I00 sS'value' p38467 S'entity' p38468 ssS'entity_type' p38469 (dp38470 S'editable' p38471 I00 sS'value' p38472 S'BannerUserConnection' p38473 ssS'editable' p38474 (dp38475 S'editable' p38476 I00 sS'value' p38477 I01 ssS'unique' p38478 (dp38479 S'editable' p38480 I00 sS'value' p38481 I00 ssS'properties' p38482 (dp38483 S'default_value' p38484 (dp38485 S'editable' p38486 I00 sS'value' p38487 NssS'summary_default' p38488 (dp38489 S'editable' p38490 I00 sS'value' p38491 S'none' p38492 ssS'valid_types' p38493 (dp38494 S'editable' p38495 I00 sS'value' p38496 (lp38497 S'HumanUser' p38498 asssS'description' p38499 (dp38500 S'editable' p38501 I01 sS'value' p38502 g47 ssssS'AssetAssetConnection' p38503 (dp38504 S'cached_display_name' p38505 (dp38506 S'mandatory' p38507 (dp38508 S'editable' p38509 I00 sS'value' p38510 I00 ssS'name' p38511 (dp38512 S'editable' p38513 I01 sS'value' p38514 S'Cached Display Name' p38515 ssS'data_type' p38516 (dp38517 S'editable' p38518 I00 sS'value' p38519 S'text' p38520 ssS'entity_type' p38521 (dp38522 S'editable' p38523 I00 sS'value' p38524 S'AssetAssetConnection' p38525 ssS'editable' p38526 (dp38527 S'editable' p38528 I00 sS'value' p38529 I01 ssS'unique' p38530 (dp38531 S'editable' p38532 I00 sS'value' p38533 I00 ssS'properties' p38534 (dp38535 S'default_value' p38536 (dp38537 S'editable' p38538 I00 sS'value' p38539 NssS'summary_default' p38540 (dp38541 S'editable' p38542 I00 sS'value' p38543 S'none' p38544 sssS'description' p38545 (dp38546 S'editable' p38547 I01 sS'value' p38548 g47 sssS'asset' p38549 (dp38550 S'mandatory' p38551 (dp38552 S'editable' p38553 I00 sS'value' p38554 I00 ssS'name' p38555 (dp38556 S'editable' p38557 I01 sS'value' p38558 S'Asset' p38559 ssS'data_type' p38560 (dp38561 S'editable' p38562 I00 sS'value' p38563 S'entity' p38564 ssS'entity_type' p38565 (dp38566 S'editable' p38567 I00 sS'value' p38568 S'AssetAssetConnection' p38569 ssS'editable' p38570 (dp38571 S'editable' p38572 I00 sS'value' p38573 I00 ssS'unique' p38574 (dp38575 S'editable' p38576 I00 sS'value' p38577 I00 ssS'properties' p38578 (dp38579 S'default_value' p38580 (dp38581 S'editable' p38582 I00 sS'value' p38583 NssS'summary_default' p38584 (dp38585 S'editable' p38586 I00 sS'value' p38587 S'none' p38588 ssS'valid_types' p38589 (dp38590 S'editable' p38591 I00 sS'value' p38592 (lp38593 S'Asset' p38594 asssS'description' p38595 (dp38596 S'editable' p38597 I01 sS'value' p38598 g47 sssS'parent' p38599 (dp38600 S'mandatory' p38601 (dp38602 S'editable' p38603 I00 sS'value' p38604 I00 ssS'name' p38605 (dp38606 S'editable' p38607 I01 sS'value' p38608 S'Asset' p38609 ssS'data_type' p38610 (dp38611 S'editable' p38612 I00 sS'value' p38613 S'entity' p38614 ssS'entity_type' p38615 (dp38616 S'editable' p38617 I00 sS'value' p38618 S'AssetAssetConnection' p38619 ssS'editable' p38620 (dp38621 S'editable' p38622 I00 sS'value' p38623 I00 ssS'unique' p38624 (dp38625 S'editable' p38626 I00 sS'value' p38627 I00 ssS'properties' p38628 (dp38629 S'default_value' p38630 (dp38631 S'editable' p38632 I00 sS'value' p38633 NssS'summary_default' p38634 (dp38635 S'editable' p38636 I00 sS'value' p38637 S'none' p38638 ssS'valid_types' p38639 (dp38640 S'editable' p38641 I00 sS'value' p38642 (lp38643 S'Asset' p38644 asssS'description' p38645 (dp38646 S'editable' p38647 I01 sS'value' p38648 g47 sssS'id' p38649 (dp38650 S'mandatory' p38651 (dp38652 S'editable' p38653 I00 sS'value' p38654 I01 ssS'name' p38655 (dp38656 S'editable' p38657 I01 sS'value' p38658 S'Id' p38659 ssS'data_type' p38660 (dp38661 S'editable' p38662 I00 sS'value' p38663 S'number' p38664 ssS'entity_type' p38665 (dp38666 S'editable' p38667 I00 sS'value' p38668 S'AssetAssetConnection' p38669 ssS'editable' p38670 (dp38671 S'editable' p38672 I00 sS'value' p38673 I00 ssS'unique' p38674 (dp38675 S'editable' p38676 I00 sS'value' p38677 I00 ssS'properties' p38678 (dp38679 S'default_value' p38680 (dp38681 S'editable' p38682 I00 sS'value' p38683 NssS'summary_default' p38684 (dp38685 S'editable' p38686 I00 sS'value' p38687 S'none' p38688 sssS'description' p38689 (dp38690 S'editable' p38691 I01 sS'value' p38692 g47 ssssS'Scene' p38693 (dp38694 S'open_notes_count' p38695 (dp38696 S'mandatory' p38697 (dp38698 S'editable' p38699 I00 sS'value' p38700 I00 ssS'name' p38701 (dp38702 S'editable' p38703 I01 sS'value' p38704 S'Open Notes Count' p38705 ssS'data_type' p38706 (dp38707 S'editable' p38708 I00 sS'value' p38709 S'text' p38710 ssS'entity_type' p38711 (dp38712 S'editable' p38713 I00 sS'value' p38714 S'Scene' p38715 ssS'editable' p38716 (dp38717 S'editable' p38718 I00 sS'value' p38719 I00 ssS'unique' p38720 (dp38721 S'editable' p38722 I00 sS'value' p38723 I00 ssS'properties' p38724 (dp38725 S'default_value' p38726 (dp38727 S'editable' p38728 I00 sS'value' p38729 NssS'summary_default' p38730 (dp38731 S'editable' p38732 I01 sS'value' p38733 S'none' p38734 sssS'description' p38735 (dp38736 S'editable' p38737 I01 sS'value' p38738 g47 sssS'code' p38739 (dp38740 S'mandatory' p38741 (dp38742 S'editable' p38743 I00 sS'value' p38744 I01 ssS'name' p38745 (dp38746 S'editable' p38747 I01 sS'value' p38748 S'Scene Code' p38749 ssS'data_type' p38750 (dp38751 S'editable' p38752 I00 sS'value' p38753 S'text' p38754 ssS'entity_type' p38755 (dp38756 S'editable' p38757 I00 sS'value' p38758 S'Scene' p38759 ssS'editable' p38760 (dp38761 S'editable' p38762 I00 sS'value' p38763 I01 ssS'unique' p38764 (dp38765 S'editable' p38766 I00 sS'value' p38767 I00 ssS'properties' p38768 (dp38769 S'default_value' p38770 (dp38771 S'editable' p38772 I00 sS'value' p38773 NssS'summary_default' p38774 (dp38775 S'editable' p38776 I01 sS'value' p38777 S'none' p38778 sssS'description' p38779 (dp38780 S'editable' p38781 I01 sS'value' p38782 g47 sssS'image' p38783 (dp38784 S'mandatory' p38785 (dp38786 S'editable' p38787 I00 sS'value' p38788 I00 ssS'name' p38789 (dp38790 S'editable' p38791 I01 sS'value' p38792 S'Thumbnail' p38793 ssS'data_type' p38794 (dp38795 S'editable' p38796 I00 sS'value' p38797 S'image' p38798 ssS'entity_type' p38799 (dp38800 S'editable' p38801 I00 sS'value' p38802 S'Scene' p38803 ssS'editable' p38804 (dp38805 S'editable' p38806 I00 sS'value' p38807 I01 ssS'unique' p38808 (dp38809 S'editable' p38810 I00 sS'value' p38811 I00 ssS'properties' p38812 (dp38813 S'default_value' p38814 (dp38815 S'editable' p38816 I00 sS'value' p38817 NssS'summary_default' p38818 (dp38819 S'editable' p38820 I01 sS'value' p38821 S'none' p38822 sssS'description' p38823 (dp38824 S'editable' p38825 I01 sS'value' p38826 g47 sssS'updated_at' p38827 (dp38828 S'mandatory' p38829 (dp38830 S'editable' p38831 I00 sS'value' p38832 I00 ssS'name' p38833 (dp38834 S'editable' p38835 I01 sS'value' p38836 S'Date Updated' p38837 ssS'data_type' p38838 (dp38839 S'editable' p38840 I00 sS'value' p38841 S'date_time' p38842 ssS'entity_type' p38843 (dp38844 S'editable' p38845 I00 sS'value' p38846 S'Scene' p38847 ssS'editable' p38848 (dp38849 S'editable' p38850 I00 sS'value' p38851 I00 ssS'unique' p38852 (dp38853 S'editable' p38854 I00 sS'value' p38855 I00 ssS'properties' p38856 (dp38857 S'default_value' p38858 (dp38859 S'editable' p38860 I00 sS'value' p38861 NssS'summary_default' p38862 (dp38863 S'editable' p38864 I01 sS'value' p38865 S'none' p38866 sssS'description' p38867 (dp38868 S'editable' p38869 I01 sS'value' p38870 g47 sssS'tasks' p38871 (dp38872 S'mandatory' p38873 (dp38874 S'editable' p38875 I00 sS'value' p38876 I00 ssS'name' p38877 (dp38878 S'editable' p38879 I01 sS'value' p38880 S'Tasks' p38881 ssS'data_type' p38882 (dp38883 S'editable' p38884 I00 sS'value' p38885 S'multi_entity' p38886 ssS'entity_type' p38887 (dp38888 S'editable' p38889 I00 sS'value' p38890 S'Scene' p38891 ssS'editable' p38892 (dp38893 S'editable' p38894 I00 sS'value' p38895 I01 ssS'unique' p38896 (dp38897 S'editable' p38898 I00 sS'value' p38899 I00 ssS'properties' p38900 (dp38901 S'default_value' p38902 (dp38903 S'editable' p38904 I00 sS'value' p38905 NssS'summary_default' p38906 (dp38907 S'editable' p38908 I01 sS'value' p38909 S'none' p38910 ssS'valid_types' p38911 (dp38912 S'editable' p38913 I01 sS'value' p38914 (lp38915 S'Task' p38916 asssS'description' p38917 (dp38918 S'editable' p38919 I01 sS'value' p38920 g47 sssS'cached_display_name' p38921 (dp38922 S'mandatory' p38923 (dp38924 S'editable' p38925 I00 sS'value' p38926 I00 ssS'name' p38927 (dp38928 S'editable' p38929 I01 sS'value' p38930 S'Cached Display Name' p38931 ssS'data_type' p38932 (dp38933 S'editable' p38934 I00 sS'value' p38935 S'text' p38936 ssS'entity_type' p38937 (dp38938 S'editable' p38939 I00 sS'value' p38940 S'Scene' p38941 ssS'editable' p38942 (dp38943 S'editable' p38944 I00 sS'value' p38945 I01 ssS'unique' p38946 (dp38947 S'editable' p38948 I00 sS'value' p38949 I00 ssS'properties' p38950 (dp38951 S'default_value' p38952 (dp38953 S'editable' p38954 I00 sS'value' p38955 NssS'summary_default' p38956 (dp38957 S'editable' p38958 I00 sS'value' p38959 S'none' p38960 sssS'description' p38961 (dp38962 S'editable' p38963 I01 sS'value' p38964 g47 sssS'id' p38965 (dp38966 S'mandatory' p38967 (dp38968 S'editable' p38969 I00 sS'value' p38970 I00 ssS'name' p38971 (dp38972 S'editable' p38973 I01 sS'value' p38974 S'Id' p38975 ssS'data_type' p38976 (dp38977 S'editable' p38978 I00 sS'value' p38979 S'number' p38980 ssS'entity_type' p38981 (dp38982 S'editable' p38983 I00 sS'value' p38984 S'Scene' p38985 ssS'editable' p38986 (dp38987 S'editable' p38988 I00 sS'value' p38989 I00 ssS'unique' p38990 (dp38991 S'editable' p38992 I00 sS'value' p38993 I00 ssS'properties' p38994 (dp38995 S'default_value' p38996 (dp38997 S'editable' p38998 I00 sS'value' p38999 NssS'summary_default' p39000 (dp39001 S'editable' p39002 I01 sS'value' p39003 S'none' p39004 sssS'description' p39005 (dp39006 S'editable' p39007 I01 sS'value' p39008 g47 sssS'updated_by' p39009 (dp39010 S'mandatory' p39011 (dp39012 S'editable' p39013 I00 sS'value' p39014 I00 ssS'name' p39015 (dp39016 S'editable' p39017 I01 sS'value' p39018 S'Updated by' p39019 ssS'data_type' p39020 (dp39021 S'editable' p39022 I00 sS'value' p39023 S'entity' p39024 ssS'entity_type' p39025 (dp39026 S'editable' p39027 I00 sS'value' p39028 S'Scene' p39029 ssS'editable' p39030 (dp39031 S'editable' p39032 I00 sS'value' p39033 I00 ssS'unique' p39034 (dp39035 S'editable' p39036 I00 sS'value' p39037 I00 ssS'properties' p39038 (dp39039 S'default_value' p39040 (dp39041 S'editable' p39042 I00 sS'value' p39043 NssS'summary_default' p39044 (dp39045 S'editable' p39046 I01 sS'value' p39047 S'none' p39048 ssS'valid_types' p39049 (dp39050 S'editable' p39051 I01 sS'value' p39052 (lp39053 S'HumanUser' p39054 aS'ApiUser' p39055 asssS'description' p39056 (dp39057 S'editable' p39058 I01 sS'value' p39059 g47 sssS'open_notes' p39060 (dp39061 S'mandatory' p39062 (dp39063 S'editable' p39064 I00 sS'value' p39065 I00 ssS'name' p39066 (dp39067 S'editable' p39068 I01 sS'value' p39069 S'Open Notes' p39070 ssS'data_type' p39071 (dp39072 S'editable' p39073 I00 sS'value' p39074 S'multi_entity' p39075 ssS'entity_type' p39076 (dp39077 S'editable' p39078 I00 sS'value' p39079 S'Scene' p39080 ssS'editable' p39081 (dp39082 S'editable' p39083 I00 sS'value' p39084 I00 ssS'unique' p39085 (dp39086 S'editable' p39087 I00 sS'value' p39088 I00 ssS'properties' p39089 (dp39090 S'default_value' p39091 (dp39092 S'editable' p39093 I00 sS'value' p39094 NssS'summary_default' p39095 (dp39096 S'editable' p39097 I01 sS'value' p39098 S'none' p39099 ssS'valid_types' p39100 (dp39101 S'editable' p39102 I01 sS'value' p39103 (lp39104 S'Note' p39105 asssS'description' p39106 (dp39107 S'editable' p39108 I01 sS'value' p39109 g47 sssS'task_template' p39110 (dp39111 S'mandatory' p39112 (dp39113 S'editable' p39114 I00 sS'value' p39115 I00 ssS'name' p39116 (dp39117 S'editable' p39118 I01 sS'value' p39119 S'Task Template' p39120 ssS'data_type' p39121 (dp39122 S'editable' p39123 I00 sS'value' p39124 S'entity' p39125 ssS'entity_type' p39126 (dp39127 S'editable' p39128 I00 sS'value' p39129 S'Scene' p39130 ssS'editable' p39131 (dp39132 S'editable' p39133 I00 sS'value' p39134 I01 ssS'unique' p39135 (dp39136 S'editable' p39137 I00 sS'value' p39138 I00 ssS'properties' p39139 (dp39140 S'default_value' p39141 (dp39142 S'editable' p39143 I00 sS'value' p39144 NssS'summary_default' p39145 (dp39146 S'editable' p39147 I01 sS'value' p39148 S'none' p39149 ssS'valid_types' p39150 (dp39151 S'editable' p39152 I01 sS'value' p39153 (lp39154 S'TaskTemplate' p39155 asssS'description' p39156 (dp39157 S'editable' p39158 I01 sS'value' p39159 g47 sssS'created_by' p39160 (dp39161 S'mandatory' p39162 (dp39163 S'editable' p39164 I00 sS'value' p39165 I00 ssS'name' p39166 (dp39167 S'editable' p39168 I01 sS'value' p39169 S'Created by' p39170 ssS'data_type' p39171 (dp39172 S'editable' p39173 I00 sS'value' p39174 S'entity' p39175 ssS'entity_type' p39176 (dp39177 S'editable' p39178 I00 sS'value' p39179 S'Scene' p39180 ssS'editable' p39181 (dp39182 S'editable' p39183 I00 sS'value' p39184 I00 ssS'unique' p39185 (dp39186 S'editable' p39187 I00 sS'value' p39188 I00 ssS'properties' p39189 (dp39190 S'default_value' p39191 (dp39192 S'editable' p39193 I00 sS'value' p39194 NssS'summary_default' p39195 (dp39196 S'editable' p39197 I01 sS'value' p39198 S'none' p39199 ssS'valid_types' p39200 (dp39201 S'editable' p39202 I01 sS'value' p39203 (lp39204 S'HumanUser' p39205 aS'ApiUser' p39206 asssS'description' p39207 (dp39208 S'editable' p39209 I01 sS'value' p39210 g47 sssS'sg_status_list' p39211 (dp39212 S'mandatory' p39213 (dp39214 S'editable' p39215 I00 sS'value' p39216 I00 ssS'name' p39217 (dp39218 S'editable' p39219 I01 sS'value' p39220 S'Status' p39221 ssS'data_type' p39222 (dp39223 S'editable' p39224 I00 sS'value' p39225 S'status_list' p39226 ssS'entity_type' p39227 (dp39228 S'editable' p39229 I00 sS'value' p39230 S'Scene' p39231 ssS'editable' p39232 (dp39233 S'editable' p39234 I00 sS'value' p39235 I01 ssS'unique' p39236 (dp39237 S'editable' p39238 I00 sS'value' p39239 I00 ssS'properties' p39240 (dp39241 S'default_value' p39242 (dp39243 S'editable' p39244 I01 sS'value' p39245 S'act' p39246 ssS'valid_values' p39247 (dp39248 S'editable' p39249 I01 sS'value' p39250 (lp39251 S'act' p39252 aS'cbb' p39253 aS'cmpt' p39254 aS'omt' p39255 aS'hld' p39256 assS'summary_default' p39257 (dp39258 S'editable' p39259 I01 sS'value' p39260 S'status_list' p39261 sssS'description' p39262 (dp39263 S'editable' p39264 I01 sS'value' p39265 g47 sssS'description' p39266 (dp39267 S'mandatory' p39268 (dp39269 S'editable' p39270 I00 sS'value' p39271 I00 ssS'name' p39272 (dp39273 S'editable' p39274 I01 sS'value' p39275 S'Description' p39276 ssS'data_type' p39277 (dp39278 S'editable' p39279 I00 sS'value' p39280 S'text' p39281 ssS'entity_type' p39282 (dp39283 S'editable' p39284 I00 sS'value' p39285 S'Scene' p39286 ssS'editable' p39287 (dp39288 S'editable' p39289 I00 sS'value' p39290 I01 ssS'unique' p39291 (dp39292 S'editable' p39293 I00 sS'value' p39294 I00 ssS'properties' p39295 (dp39296 S'default_value' p39297 (dp39298 S'editable' p39299 I00 sS'value' p39300 NssS'summary_default' p39301 (dp39302 S'editable' p39303 I01 sS'value' p39304 S'none' p39305 sssS'description' p39306 (dp39307 S'editable' p39308 I01 sS'value' p39309 g47 sssS'addressings_cc' p39310 (dp39311 S'mandatory' p39312 (dp39313 S'editable' p39314 I00 sS'value' p39315 I00 ssS'name' p39316 (dp39317 S'editable' p39318 I01 sS'value' p39319 S'Cc' p39320 ssS'data_type' p39321 (dp39322 S'editable' p39323 I00 sS'value' p39324 S'multi_entity' p39325 ssS'entity_type' p39326 (dp39327 S'editable' p39328 I00 sS'value' p39329 S'Scene' p39330 ssS'editable' p39331 (dp39332 S'editable' p39333 I00 sS'value' p39334 I01 ssS'unique' p39335 (dp39336 S'editable' p39337 I00 sS'value' p39338 I00 ssS'properties' p39339 (dp39340 S'default_value' p39341 (dp39342 S'editable' p39343 I00 sS'value' p39344 NssS'summary_default' p39345 (dp39346 S'editable' p39347 I01 sS'value' p39348 S'none' p39349 ssS'valid_types' p39350 (dp39351 S'editable' p39352 I01 sS'value' p39353 (lp39354 S'Group' p39355 aS'HumanUser' p39356 asssS'description' p39357 (dp39358 S'editable' p39359 I01 sS'value' p39360 g47 sssS'sg_scene_type' p39361 (dp39362 S'mandatory' p39363 (dp39364 S'editable' p39365 I00 sS'value' p39366 I00 ssS'name' p39367 (dp39368 S'editable' p39369 I01 sS'value' p39370 S'Type' p39371 ssS'data_type' p39372 (dp39373 S'editable' p39374 I00 sS'value' p39375 S'list' p39376 ssS'entity_type' p39377 (dp39378 S'editable' p39379 I00 sS'value' p39380 S'Scene' p39381 ssS'editable' p39382 (dp39383 S'editable' p39384 I00 sS'value' p39385 I01 ssS'unique' p39386 (dp39387 S'editable' p39388 I00 sS'value' p39389 I00 ssS'properties' p39390 (dp39391 S'default_value' p39392 (dp39393 S'editable' p39394 I00 sS'value' p39395 NssS'valid_values' p39396 (dp39397 S'editable' p39398 I01 sS'value' p39399 (lp39400 ssS'summary_default' p39401 (dp39402 S'editable' p39403 I01 sS'value' p39404 S'none' p39405 sssS'description' p39406 (dp39407 S'editable' p39408 I01 sS'value' p39409 g47 sssS'shoot_days' p39410 (dp39411 S'mandatory' p39412 (dp39413 S'editable' p39414 I00 sS'value' p39415 I00 ssS'name' p39416 (dp39417 S'editable' p39418 I01 sS'value' p39419 S'Shoot Days' p39420 ssS'data_type' p39421 (dp39422 S'editable' p39423 I00 sS'value' p39424 S'multi_entity' p39425 ssS'entity_type' p39426 (dp39427 S'editable' p39428 I00 sS'value' p39429 S'Scene' p39430 ssS'editable' p39431 (dp39432 S'editable' p39433 I00 sS'value' p39434 I01 ssS'unique' p39435 (dp39436 S'editable' p39437 I00 sS'value' p39438 I00 ssS'properties' p39439 (dp39440 S'default_value' p39441 (dp39442 S'editable' p39443 I00 sS'value' p39444 NssS'summary_default' p39445 (dp39446 S'editable' p39447 I01 sS'value' p39448 S'none' p39449 ssS'valid_types' p39450 (dp39451 S'editable' p39452 I01 sS'value' p39453 (lp39454 S'ShootDay' p39455 asssS'description' p39456 (dp39457 S'editable' p39458 I01 sS'value' p39459 g47 sssS'step_0' p39460 (dp39461 S'mandatory' p39462 (dp39463 S'editable' p39464 I00 sS'value' p39465 I00 ssS'name' p39466 (dp39467 S'editable' p39468 I01 sS'value' p39469 S'ALL TASKS' p39470 ssS'data_type' p39471 (dp39472 S'editable' p39473 I00 sS'value' p39474 S'pivot_column' p39475 ssS'entity_type' p39476 (dp39477 S'editable' p39478 I00 sS'value' p39479 S'Scene' p39480 ssS'editable' p39481 (dp39482 S'editable' p39483 I00 sS'value' p39484 I00 ssS'unique' p39485 (dp39486 S'editable' p39487 I00 sS'value' p39488 I00 ssS'properties' p39489 (dp39490 S'default_value' p39491 (dp39492 S'editable' p39493 I00 sS'value' p39494 NssS'summary_default' p39495 (dp39496 S'editable' p39497 I00 sS'value' p39498 S'none' p39499 sssS'description' p39500 (dp39501 S'editable' p39502 I01 sS'value' p39503 g47 sssS'assets' p39504 (dp39505 S'mandatory' p39506 (dp39507 S'editable' p39508 I00 sS'value' p39509 I00 ssS'name' p39510 (dp39511 S'editable' p39512 I01 sS'value' p39513 S'Assets' p39514 ssS'data_type' p39515 (dp39516 S'editable' p39517 I00 sS'value' p39518 S'multi_entity' p39519 ssS'entity_type' p39520 (dp39521 S'editable' p39522 I00 sS'value' p39523 S'Scene' p39524 ssS'editable' p39525 (dp39526 S'editable' p39527 I00 sS'value' p39528 I01 ssS'unique' p39529 (dp39530 S'editable' p39531 I00 sS'value' p39532 I00 ssS'properties' p39533 (dp39534 S'default_value' p39535 (dp39536 S'editable' p39537 I00 sS'value' p39538 NssS'summary_default' p39539 (dp39540 S'editable' p39541 I01 sS'value' p39542 S'none' p39543 ssS'valid_types' p39544 (dp39545 S'editable' p39546 I01 sS'value' p39547 (lp39548 S'Asset' p39549 asssS'description' p39550 (dp39551 S'editable' p39552 I01 sS'value' p39553 g47 sssS'created_at' p39554 (dp39555 S'mandatory' p39556 (dp39557 S'editable' p39558 I00 sS'value' p39559 I00 ssS'name' p39560 (dp39561 S'editable' p39562 I01 sS'value' p39563 S'Date Created' p39564 ssS'data_type' p39565 (dp39566 S'editable' p39567 I00 sS'value' p39568 S'date_time' p39569 ssS'entity_type' p39570 (dp39571 S'editable' p39572 I00 sS'value' p39573 S'Scene' p39574 ssS'editable' p39575 (dp39576 S'editable' p39577 I00 sS'value' p39578 I00 ssS'unique' p39579 (dp39580 S'editable' p39581 I00 sS'value' p39582 I00 ssS'properties' p39583 (dp39584 S'default_value' p39585 (dp39586 S'editable' p39587 I00 sS'value' p39588 NssS'summary_default' p39589 (dp39590 S'editable' p39591 I01 sS'value' p39592 S'none' p39593 sssS'description' p39594 (dp39595 S'editable' p39596 I01 sS'value' p39597 g47 sssS'project' p39598 (dp39599 S'mandatory' p39600 (dp39601 S'editable' p39602 I00 sS'value' p39603 I00 ssS'name' p39604 (dp39605 S'editable' p39606 I01 sS'value' p39607 S'Project' p39608 ssS'data_type' p39609 (dp39610 S'editable' p39611 I00 sS'value' p39612 S'entity' p39613 ssS'entity_type' p39614 (dp39615 S'editable' p39616 I00 sS'value' p39617 S'Scene' p39618 ssS'editable' p39619 (dp39620 S'editable' p39621 I00 sS'value' p39622 I01 ssS'unique' p39623 (dp39624 S'editable' p39625 I00 sS'value' p39626 I00 ssS'properties' p39627 (dp39628 S'default_value' p39629 (dp39630 S'editable' p39631 I00 sS'value' p39632 NssS'summary_default' p39633 (dp39634 S'editable' p39635 I01 sS'value' p39636 S'none' p39637 ssS'valid_types' p39638 (dp39639 S'editable' p39640 I01 sS'value' p39641 (lp39642 S'Project' p39643 asssS'description' p39644 (dp39645 S'editable' p39646 I01 sS'value' p39647 g47 sssS'filmstrip_image' p39648 (dp39649 S'mandatory' p39650 (dp39651 S'editable' p39652 I00 sS'value' p39653 I00 ssS'name' p39654 (dp39655 S'editable' p39656 I01 sS'value' p39657 S'Filmstrip Thumbnail' p39658 ssS'data_type' p39659 (dp39660 S'editable' p39661 I00 sS'value' p39662 S'image' p39663 ssS'entity_type' p39664 (dp39665 S'editable' p39666 I00 sS'value' p39667 S'Scene' p39668 ssS'editable' p39669 (dp39670 S'editable' p39671 I00 sS'value' p39672 I01 ssS'unique' p39673 (dp39674 S'editable' p39675 I00 sS'value' p39676 I00 ssS'properties' p39677 (dp39678 S'default_value' p39679 (dp39680 S'editable' p39681 I00 sS'value' p39682 NssS'summary_default' p39683 (dp39684 S'editable' p39685 I01 sS'value' p39686 S'none' p39687 sssS'description' p39688 (dp39689 S'editable' p39690 I01 sS'value' p39691 g47 sssS'shots' p39692 (dp39693 S'mandatory' p39694 (dp39695 S'editable' p39696 I00 sS'value' p39697 I00 ssS'name' p39698 (dp39699 S'editable' p39700 I01 sS'value' p39701 S'Shots' p39702 ssS'data_type' p39703 (dp39704 S'editable' p39705 I00 sS'value' p39706 S'multi_entity' p39707 ssS'entity_type' p39708 (dp39709 S'editable' p39710 I00 sS'value' p39711 S'Scene' p39712 ssS'editable' p39713 (dp39714 S'editable' p39715 I00 sS'value' p39716 I01 ssS'unique' p39717 (dp39718 S'editable' p39719 I00 sS'value' p39720 I00 ssS'properties' p39721 (dp39722 S'default_value' p39723 (dp39724 S'editable' p39725 I00 sS'value' p39726 NssS'summary_default' p39727 (dp39728 S'editable' p39729 I01 sS'value' p39730 S'none' p39731 ssS'valid_types' p39732 (dp39733 S'editable' p39734 I01 sS'value' p39735 (lp39736 S'Shot' p39737 asssS'description' p39738 (dp39739 S'editable' p39740 I01 sS'value' p39741 g47 sssS'tag_list' p39742 (dp39743 S'mandatory' p39744 (dp39745 S'editable' p39746 I00 sS'value' p39747 I00 ssS'name' p39748 (dp39749 S'editable' p39750 I01 sS'value' p39751 S'Tags' p39752 ssS'data_type' p39753 (dp39754 S'editable' p39755 I00 sS'value' p39756 S'tag_list' p39757 ssS'entity_type' p39758 (dp39759 S'editable' p39760 I00 sS'value' p39761 S'Scene' p39762 ssS'editable' p39763 (dp39764 S'editable' p39765 I00 sS'value' p39766 I01 ssS'unique' p39767 (dp39768 S'editable' p39769 I00 sS'value' p39770 I00 ssS'properties' p39771 (dp39772 S'default_value' p39773 (dp39774 S'editable' p39775 I00 sS'value' p39776 NssS'summary_default' p39777 (dp39778 S'editable' p39779 I01 sS'value' p39780 S'none' p39781 ssS'valid_types' p39782 (dp39783 S'editable' p39784 I01 sS'value' p39785 (lp39786 S'Tag' p39787 asssS'description' p39788 (dp39789 S'editable' p39790 I01 sS'value' p39791 g47 sssS'notes' p39792 (dp39793 S'mandatory' p39794 (dp39795 S'editable' p39796 I00 sS'value' p39797 I00 ssS'name' p39798 (dp39799 S'editable' p39800 I01 sS'value' p39801 S'Notes' p39802 ssS'data_type' p39803 (dp39804 S'editable' p39805 I00 sS'value' p39806 S'multi_entity' p39807 ssS'entity_type' p39808 (dp39809 S'editable' p39810 I00 sS'value' p39811 S'Scene' p39812 ssS'editable' p39813 (dp39814 S'editable' p39815 I00 sS'value' p39816 I01 ssS'unique' p39817 (dp39818 S'editable' p39819 I00 sS'value' p39820 I00 ssS'properties' p39821 (dp39822 S'default_value' p39823 (dp39824 S'editable' p39825 I00 sS'value' p39826 NssS'summary_default' p39827 (dp39828 S'editable' p39829 I01 sS'value' p39830 S'none' p39831 ssS'valid_types' p39832 (dp39833 S'editable' p39834 I01 sS'value' p39835 (lp39836 S'Note' p39837 asssS'description' p39838 (dp39839 S'editable' p39840 I01 sS'value' p39841 g47 ssssS'Project' p39842 (dp39843 S'step_14' p39844 (dp39845 S'mandatory' p39846 (dp39847 S'editable' p39848 I00 sS'value' p39849 I00 ssS'name' p39850 (dp39851 S'editable' p39852 I01 sS'value' p39853 S'Editorial' p39854 ssS'data_type' p39855 (dp39856 S'editable' p39857 I00 sS'value' p39858 S'pivot_column' p39859 ssS'entity_type' p39860 (dp39861 S'editable' p39862 I00 sS'value' p39863 S'Project' p39864 ssS'editable' p39865 (dp39866 S'editable' p39867 I00 sS'value' p39868 I00 ssS'unique' p39869 (dp39870 S'editable' p39871 I00 sS'value' p39872 I00 ssS'properties' p39873 (dp39874 S'default_value' p39875 (dp39876 S'editable' p39877 I00 sS'value' p39878 NssS'summary_default' p39879 (dp39880 S'editable' p39881 I00 sS'value' p39882 S'none' p39883 sssS'description' p39884 (dp39885 S'editable' p39886 I01 sS'value' p39887 g47 sssS'tasks' p39888 (dp39889 S'mandatory' p39890 (dp39891 S'editable' p39892 I00 sS'value' p39893 I00 ssS'name' p39894 (dp39895 S'editable' p39896 I01 sS'value' p39897 S'Tasks' p39898 ssS'data_type' p39899 (dp39900 S'editable' p39901 I00 sS'value' p39902 S'multi_entity' p39903 ssS'entity_type' p39904 (dp39905 S'editable' p39906 I00 sS'value' p39907 S'Project' p39908 ssS'editable' p39909 (dp39910 S'editable' p39911 I00 sS'value' p39912 I01 ssS'unique' p39913 (dp39914 S'editable' p39915 I00 sS'value' p39916 I00 ssS'properties' p39917 (dp39918 S'default_value' p39919 (dp39920 S'editable' p39921 I00 sS'value' p39922 NssS'summary_default' p39923 (dp39924 S'editable' p39925 I01 sS'value' p39926 S'none' p39927 ssS'valid_types' p39928 (dp39929 S'editable' p39930 I01 sS'value' p39931 (lp39932 S'Task' p39933 asssS'description' p39934 (dp39935 S'editable' p39936 I01 sS'value' p39937 g47 sssS'color' p39938 (dp39939 S'mandatory' p39940 (dp39941 S'editable' p39942 I00 sS'value' p39943 I00 ssS'name' p39944 (dp39945 S'editable' p39946 I01 sS'value' p39947 S'Color' p39948 ssS'data_type' p39949 (dp39950 S'editable' p39951 I00 sS'value' p39952 S'color' p39953 ssS'entity_type' p39954 (dp39955 S'editable' p39956 I00 sS'value' p39957 S'Project' p39958 ssS'editable' p39959 (dp39960 S'editable' p39961 I00 sS'value' p39962 I01 ssS'unique' p39963 (dp39964 S'editable' p39965 I00 sS'value' p39966 I00 ssS'properties' p39967 (dp39968 S'default_value' p39969 (dp39970 S'editable' p39971 I00 sS'value' p39972 NssS'summary_default' p39973 (dp39974 S'editable' p39975 I01 sS'value' p39976 S'none' p39977 sssS'description' p39978 (dp39979 S'editable' p39980 I01 sS'value' p39981 g47 sssS'image' p39982 (dp39983 S'mandatory' p39984 (dp39985 S'editable' p39986 I00 sS'value' p39987 I00 ssS'name' p39988 (dp39989 S'editable' p39990 I01 sS'value' p39991 S'Thumbnail' p39992 ssS'data_type' p39993 (dp39994 S'editable' p39995 I00 sS'value' p39996 S'image' p39997 ssS'entity_type' p39998 (dp39999 S'editable' p40000 I00 sS'value' p40001 S'Project' p40002 ssS'editable' p40003 (dp40004 S'editable' p40005 I00 sS'value' p40006 I01 ssS'unique' p40007 (dp40008 S'editable' p40009 I00 sS'value' p40010 I00 ssS'properties' p40011 (dp40012 S'default_value' p40013 (dp40014 S'editable' p40015 I00 sS'value' p40016 NssS'summary_default' p40017 (dp40018 S'editable' p40019 I01 sS'value' p40020 S'none' p40021 sssS'description' p40022 (dp40023 S'editable' p40024 I01 sS'value' p40025 g47 sssS'updated_at' p40026 (dp40027 S'mandatory' p40028 (dp40029 S'editable' p40030 I00 sS'value' p40031 I00 ssS'name' p40032 (dp40033 S'editable' p40034 I01 sS'value' p40035 S'Date Updated' p40036 ssS'data_type' p40037 (dp40038 S'editable' p40039 I00 sS'value' p40040 S'date_time' p40041 ssS'entity_type' p40042 (dp40043 S'editable' p40044 I00 sS'value' p40045 S'Project' p40046 ssS'editable' p40047 (dp40048 S'editable' p40049 I00 sS'value' p40050 I00 ssS'unique' p40051 (dp40052 S'editable' p40053 I00 sS'value' p40054 I00 ssS'properties' p40055 (dp40056 S'default_value' p40057 (dp40058 S'editable' p40059 I00 sS'value' p40060 NssS'summary_default' p40061 (dp40062 S'editable' p40063 I01 sS'value' p40064 S'none' p40065 sssS'description' p40066 (dp40067 S'editable' p40068 I01 sS'value' p40069 g47 sssS'sg_projectnumber' p40070 (dp40071 S'mandatory' p40072 (dp40073 S'editable' p40074 I00 sS'value' p40075 I00 ssS'name' p40076 (dp40077 S'editable' p40078 I01 sS'value' p40079 S'projectnumber' p40080 ssS'data_type' p40081 (dp40082 S'editable' p40083 I00 sS'value' p40084 S'text' p40085 ssS'entity_type' p40086 (dp40087 S'editable' p40088 I00 sS'value' p40089 S'Project' p40090 ssS'editable' p40091 (dp40092 S'editable' p40093 I00 sS'value' p40094 I01 ssS'unique' p40095 (dp40096 S'editable' p40097 I00 sS'value' p40098 I00 ssS'properties' p40099 (dp40100 S'default_value' p40101 (dp40102 S'editable' p40103 I00 sS'value' p40104 NssS'summary_default' p40105 (dp40106 S'editable' p40107 I01 sS'value' p40108 S'none' p40109 sssS'description' p40110 (dp40111 S'editable' p40112 I01 sS'value' p40113 g47 sssS'duration' p40114 (dp40115 S'mandatory' p40116 (dp40117 S'editable' p40118 I00 sS'value' p40119 I00 ssS'name' p40120 (dp40121 S'editable' p40122 I01 sS'value' p40123 S'Duration' p40124 ssS'data_type' p40125 (dp40126 S'editable' p40127 I00 sS'value' p40128 S'number' p40129 ssS'entity_type' p40130 (dp40131 S'editable' p40132 I00 sS'value' p40133 S'Project' p40134 ssS'editable' p40135 (dp40136 S'editable' p40137 I00 sS'value' p40138 I00 ssS'unique' p40139 (dp40140 S'editable' p40141 I00 sS'value' p40142 I00 ssS'properties' p40143 (dp40144 S'default_value' p40145 (dp40146 S'editable' p40147 I00 sS'value' p40148 NssS'summary_default' p40149 (dp40150 S'editable' p40151 I01 sS'value' p40152 S'none' p40153 sssS'description' p40154 (dp40155 S'editable' p40156 I01 sS'value' p40157 g47 sssS'tank_name' p40158 (dp40159 S'mandatory' p40160 (dp40161 S'editable' p40162 I00 sS'value' p40163 I00 ssS'name' p40164 (dp40165 S'editable' p40166 I01 sS'value' p40167 S'Tank Name' p40168 ssS'data_type' p40169 (dp40170 S'editable' p40171 I00 sS'value' p40172 S'text' p40173 ssS'entity_type' p40174 (dp40175 S'editable' p40176 I00 sS'value' p40177 S'Project' p40178 ssS'editable' p40179 (dp40180 S'editable' p40181 I00 sS'value' p40182 I01 ssS'unique' p40183 (dp40184 S'editable' p40185 I00 sS'value' p40186 I00 ssS'properties' p40187 (dp40188 S'default_value' p40189 (dp40190 S'editable' p40191 I00 sS'value' p40192 NssS'summary_default' p40193 (dp40194 S'editable' p40195 I01 sS'value' p40196 S'none' p40197 sssS'description' p40198 (dp40199 S'editable' p40200 I01 sS'value' p40201 g47 sssS'billboard' p40202 (dp40203 S'mandatory' p40204 (dp40205 S'editable' p40206 I00 sS'value' p40207 I00 ssS'name' p40208 (dp40209 S'editable' p40210 I01 sS'value' p40211 S'Billboard' p40212 ssS'data_type' p40213 (dp40214 S'editable' p40215 I00 sS'value' p40216 S'url' p40217 ssS'entity_type' p40218 (dp40219 S'editable' p40220 I00 sS'value' p40221 S'Project' p40222 ssS'editable' p40223 (dp40224 S'editable' p40225 I00 sS'value' p40226 I01 ssS'unique' p40227 (dp40228 S'editable' p40229 I00 sS'value' p40230 I00 ssS'properties' p40231 (dp40232 S'default_value' p40233 (dp40234 S'editable' p40235 I00 sS'value' p40236 NssS'open_in_new_window' p40237 (dp40238 S'editable' p40239 I00 sS'value' p40240 I01 ssS'summary_default' p40241 (dp40242 S'editable' p40243 I00 sS'value' p40244 S'none' p40245 sssS'description' p40246 (dp40247 S'editable' p40248 I01 sS'value' p40249 g47 sssS'cached_display_name' p40250 (dp40251 S'mandatory' p40252 (dp40253 S'editable' p40254 I00 sS'value' p40255 I00 ssS'name' p40256 (dp40257 S'editable' p40258 I01 sS'value' p40259 S'Cached Display Name' p40260 ssS'data_type' p40261 (dp40262 S'editable' p40263 I00 sS'value' p40264 S'text' p40265 ssS'entity_type' p40266 (dp40267 S'editable' p40268 I00 sS'value' p40269 S'Project' p40270 ssS'editable' p40271 (dp40272 S'editable' p40273 I00 sS'value' p40274 I01 ssS'unique' p40275 (dp40276 S'editable' p40277 I00 sS'value' p40278 I00 ssS'properties' p40279 (dp40280 S'default_value' p40281 (dp40282 S'editable' p40283 I00 sS'value' p40284 NssS'summary_default' p40285 (dp40286 S'editable' p40287 I00 sS'value' p40288 S'none' p40289 sssS'description' p40290 (dp40291 S'editable' p40292 I01 sS'value' p40293 g47 sssS'id' p40294 (dp40295 S'mandatory' p40296 (dp40297 S'editable' p40298 I00 sS'value' p40299 I00 ssS'name' p40300 (dp40301 S'editable' p40302 I01 sS'value' p40303 S'Id' p40304 ssS'data_type' p40305 (dp40306 S'editable' p40307 I00 sS'value' p40308 S'number' p40309 ssS'entity_type' p40310 (dp40311 S'editable' p40312 I00 sS'value' p40313 S'Project' p40314 ssS'editable' p40315 (dp40316 S'editable' p40317 I00 sS'value' p40318 I00 ssS'unique' p40319 (dp40320 S'editable' p40321 I00 sS'value' p40322 I00 ssS'properties' p40323 (dp40324 S'default_value' p40325 (dp40326 S'editable' p40327 I00 sS'value' p40328 NssS'summary_default' p40329 (dp40330 S'editable' p40331 I01 sS'value' p40332 S'none' p40333 sssS'description' p40334 (dp40335 S'editable' p40336 I01 sS'value' p40337 g47 sssS'updated_by' p40338 (dp40339 S'mandatory' p40340 (dp40341 S'editable' p40342 I00 sS'value' p40343 I00 ssS'name' p40344 (dp40345 S'editable' p40346 I01 sS'value' p40347 S'Updated by' p40348 ssS'data_type' p40349 (dp40350 S'editable' p40351 I00 sS'value' p40352 S'entity' p40353 ssS'entity_type' p40354 (dp40355 S'editable' p40356 I00 sS'value' p40357 S'Project' p40358 ssS'editable' p40359 (dp40360 S'editable' p40361 I00 sS'value' p40362 I00 ssS'unique' p40363 (dp40364 S'editable' p40365 I00 sS'value' p40366 I00 ssS'properties' p40367 (dp40368 S'default_value' p40369 (dp40370 S'editable' p40371 I00 sS'value' p40372 NssS'summary_default' p40373 (dp40374 S'editable' p40375 I01 sS'value' p40376 S'none' p40377 ssS'valid_types' p40378 (dp40379 S'editable' p40380 I01 sS'value' p40381 (lp40382 S'HumanUser' p40383 aS'ApiUser' p40384 asssS'description' p40385 (dp40386 S'editable' p40387 I01 sS'value' p40388 g47 sssS'phases' p40389 (dp40390 S'mandatory' p40391 (dp40392 S'editable' p40393 I00 sS'value' p40394 I00 ssS'name' p40395 (dp40396 S'editable' p40397 I01 sS'value' p40398 S'Phases' p40399 ssS'data_type' p40400 (dp40401 S'editable' p40402 I00 sS'value' p40403 S'multi_entity' p40404 ssS'entity_type' p40405 (dp40406 S'editable' p40407 I00 sS'value' p40408 S'Project' p40409 ssS'editable' p40410 (dp40411 S'editable' p40412 I00 sS'value' p40413 I01 ssS'unique' p40414 (dp40415 S'editable' p40416 I00 sS'value' p40417 I00 ssS'properties' p40418 (dp40419 S'default_value' p40420 (dp40421 S'editable' p40422 I00 sS'value' p40423 NssS'summary_default' p40424 (dp40425 S'editable' p40426 I00 sS'value' p40427 S'none' p40428 ssS'valid_types' p40429 (dp40430 S'editable' p40431 I00 sS'value' p40432 (lp40433 S'Phase' p40434 asssS'description' p40435 (dp40436 S'editable' p40437 I01 sS'value' p40438 g47 sssS'task_template' p40439 (dp40440 S'mandatory' p40441 (dp40442 S'editable' p40443 I00 sS'value' p40444 I00 ssS'name' p40445 (dp40446 S'editable' p40447 I01 sS'value' p40448 S'Task Template' p40449 ssS'data_type' p40450 (dp40451 S'editable' p40452 I00 sS'value' p40453 S'entity' p40454 ssS'entity_type' p40455 (dp40456 S'editable' p40457 I00 sS'value' p40458 S'Project' p40459 ssS'editable' p40460 (dp40461 S'editable' p40462 I00 sS'value' p40463 I01 ssS'unique' p40464 (dp40465 S'editable' p40466 I00 sS'value' p40467 I00 ssS'properties' p40468 (dp40469 S'default_value' p40470 (dp40471 S'editable' p40472 I00 sS'value' p40473 NssS'summary_default' p40474 (dp40475 S'editable' p40476 I01 sS'value' p40477 S'none' p40478 ssS'valid_types' p40479 (dp40480 S'editable' p40481 I01 sS'value' p40482 (lp40483 S'TaskTemplate' p40484 asssS'description' p40485 (dp40486 S'editable' p40487 I01 sS'value' p40488 g47 sssS'created_by' p40489 (dp40490 S'mandatory' p40491 (dp40492 S'editable' p40493 I00 sS'value' p40494 I00 ssS'name' p40495 (dp40496 S'editable' p40497 I01 sS'value' p40498 S'Created by' p40499 ssS'data_type' p40500 (dp40501 S'editable' p40502 I00 sS'value' p40503 S'entity' p40504 ssS'entity_type' p40505 (dp40506 S'editable' p40507 I00 sS'value' p40508 S'Project' p40509 ssS'editable' p40510 (dp40511 S'editable' p40512 I00 sS'value' p40513 I00 ssS'unique' p40514 (dp40515 S'editable' p40516 I00 sS'value' p40517 I00 ssS'properties' p40518 (dp40519 S'default_value' p40520 (dp40521 S'editable' p40522 I00 sS'value' p40523 NssS'summary_default' p40524 (dp40525 S'editable' p40526 I01 sS'value' p40527 S'none' p40528 ssS'valid_types' p40529 (dp40530 S'editable' p40531 I01 sS'value' p40532 (lp40533 S'HumanUser' p40534 aS'ApiUser' p40535 asssS'description' p40536 (dp40537 S'editable' p40538 I01 sS'value' p40539 g47 sssS'sg_status' p40540 (dp40541 S'mandatory' p40542 (dp40543 S'editable' p40544 I00 sS'value' p40545 I00 ssS'name' p40546 (dp40547 S'editable' p40548 I01 sS'value' p40549 S'Status' p40550 ssS'data_type' p40551 (dp40552 S'editable' p40553 I00 sS'value' p40554 S'list' p40555 ssS'entity_type' p40556 (dp40557 S'editable' p40558 I00 sS'value' p40559 S'Project' p40560 ssS'editable' p40561 (dp40562 S'editable' p40563 I00 sS'value' p40564 I01 ssS'unique' p40565 (dp40566 S'editable' p40567 I00 sS'value' p40568 I00 ssS'properties' p40569 (dp40570 S'default_value' p40571 (dp40572 S'editable' p40573 I00 sS'value' p40574 NssS'valid_values' p40575 (dp40576 S'editable' p40577 I01 sS'value' p40578 (lp40579 S'Bidding' p40580 aS'Active' p40581 aS'Lost' p40582 aS'Hold' p40583 assS'summary_default' p40584 (dp40585 S'editable' p40586 I01 sS'value' p40587 S'none' p40588 sssS'description' p40589 (dp40590 S'editable' p40591 I01 sS'value' p40592 g47 sssS'current_user_favorite' p40593 (dp40594 S'mandatory' p40595 (dp40596 S'editable' p40597 I00 sS'value' p40598 I00 ssS'name' p40599 (dp40600 S'editable' p40601 I01 sS'value' p40602 S'Favorite' p40603 ssS'data_type' p40604 (dp40605 S'editable' p40606 I00 sS'value' p40607 S'checkbox' p40608 ssS'entity_type' p40609 (dp40610 S'editable' p40611 I00 sS'value' p40612 S'Project' p40613 ssS'editable' p40614 (dp40615 S'editable' p40616 I00 sS'value' p40617 I01 ssS'unique' p40618 (dp40619 S'editable' p40620 I00 sS'value' p40621 I00 ssS'properties' p40622 (dp40623 S'default_value' p40624 (dp40625 S'editable' p40626 I00 sS'value' p40627 NssS'summary_default' p40628 (dp40629 S'editable' p40630 I01 sS'value' p40631 S'none' p40632 sssS'description' p40633 (dp40634 S'editable' p40635 I01 sS'value' p40636 g47 sssS'last_accessed_by_current_user' p40637 (dp40638 S'mandatory' p40639 (dp40640 S'editable' p40641 I00 sS'value' p40642 I00 ssS'name' p40643 (dp40644 S'editable' p40645 I01 sS'value' p40646 S'Last Accessed' p40647 ssS'data_type' p40648 (dp40649 S'editable' p40650 I00 sS'value' p40651 S'date_time' p40652 ssS'entity_type' p40653 (dp40654 S'editable' p40655 I00 sS'value' p40656 S'Project' p40657 ssS'editable' p40658 (dp40659 S'editable' p40660 I00 sS'value' p40661 I01 ssS'unique' p40662 (dp40663 S'editable' p40664 I00 sS'value' p40665 I00 ssS'properties' p40666 (dp40667 S'default_value' p40668 (dp40669 S'editable' p40670 I00 sS'value' p40671 NssS'summary_default' p40672 (dp40673 S'editable' p40674 I01 sS'value' p40675 S'none' p40676 sssS'description' p40677 (dp40678 S'editable' p40679 I01 sS'value' p40680 g47 sssS'start_date' p40681 (dp40682 S'mandatory' p40683 (dp40684 S'editable' p40685 I00 sS'value' p40686 I00 ssS'name' p40687 (dp40688 S'editable' p40689 I01 sS'value' p40690 S'Start Date' p40691 ssS'data_type' p40692 (dp40693 S'editable' p40694 I00 sS'value' p40695 S'date' p40696 ssS'entity_type' p40697 (dp40698 S'editable' p40699 I00 sS'value' p40700 S'Project' p40701 ssS'editable' p40702 (dp40703 S'editable' p40704 I00 sS'value' p40705 I00 ssS'unique' p40706 (dp40707 S'editable' p40708 I00 sS'value' p40709 I00 ssS'properties' p40710 (dp40711 S'default_value' p40712 (dp40713 S'editable' p40714 I00 sS'value' p40715 NssS'summary_default' p40716 (dp40717 S'editable' p40718 I01 sS'value' p40719 S'none' p40720 sssS'description' p40721 (dp40722 S'editable' p40723 I01 sS'value' p40724 g47 sssS'sg_description' p40725 (dp40726 S'mandatory' p40727 (dp40728 S'editable' p40729 I00 sS'value' p40730 I00 ssS'name' p40731 (dp40732 S'editable' p40733 I01 sS'value' p40734 S'Description' p40735 ssS'data_type' p40736 (dp40737 S'editable' p40738 I00 sS'value' p40739 S'text' p40740 ssS'entity_type' p40741 (dp40742 S'editable' p40743 I00 sS'value' p40744 S'Project' p40745 ssS'editable' p40746 (dp40747 S'editable' p40748 I00 sS'value' p40749 I01 ssS'unique' p40750 (dp40751 S'editable' p40752 I00 sS'value' p40753 I00 ssS'properties' p40754 (dp40755 S'default_value' p40756 (dp40757 S'editable' p40758 I00 sS'value' p40759 NssS'summary_default' p40760 (dp40761 S'editable' p40762 I01 sS'value' p40763 S'none' p40764 sssS'description' p40765 (dp40766 S'editable' p40767 I01 sS'value' p40768 g47 sssS'users' p40769 (dp40770 S'mandatory' p40771 (dp40772 S'editable' p40773 I00 sS'value' p40774 I00 ssS'name' p40775 (dp40776 S'editable' p40777 I01 sS'value' p40778 S'Users' p40779 ssS'data_type' p40780 (dp40781 S'editable' p40782 I00 sS'value' p40783 S'multi_entity' p40784 ssS'entity_type' p40785 (dp40786 S'editable' p40787 I00 sS'value' p40788 S'Project' p40789 ssS'editable' p40790 (dp40791 S'editable' p40792 I00 sS'value' p40793 I01 ssS'unique' p40794 (dp40795 S'editable' p40796 I00 sS'value' p40797 I00 ssS'properties' p40798 (dp40799 S'default_value' p40800 (dp40801 S'editable' p40802 I00 sS'value' p40803 NssS'summary_default' p40804 (dp40805 S'editable' p40806 I01 sS'value' p40807 S'none' p40808 ssS'valid_types' p40809 (dp40810 S'editable' p40811 I01 sS'value' p40812 (lp40813 S'HumanUser' p40814 asssS'description' p40815 (dp40816 S'editable' p40817 I01 sS'value' p40818 g47 sssS'end_date' p40819 (dp40820 S'mandatory' p40821 (dp40822 S'editable' p40823 I00 sS'value' p40824 I00 ssS'name' p40825 (dp40826 S'editable' p40827 I01 sS'value' p40828 S'End Date' p40829 ssS'data_type' p40830 (dp40831 S'editable' p40832 I00 sS'value' p40833 S'date' p40834 ssS'entity_type' p40835 (dp40836 S'editable' p40837 I00 sS'value' p40838 S'Project' p40839 ssS'editable' p40840 (dp40841 S'editable' p40842 I00 sS'value' p40843 I00 ssS'unique' p40844 (dp40845 S'editable' p40846 I00 sS'value' p40847 I00 ssS'properties' p40848 (dp40849 S'default_value' p40850 (dp40851 S'editable' p40852 I00 sS'value' p40853 NssS'summary_default' p40854 (dp40855 S'editable' p40856 I01 sS'value' p40857 S'none' p40858 sssS'description' p40859 (dp40860 S'editable' p40861 I01 sS'value' p40862 g47 sssS'archived' p40863 (dp40864 S'mandatory' p40865 (dp40866 S'editable' p40867 I00 sS'value' p40868 I00 ssS'name' p40869 (dp40870 S'editable' p40871 I01 sS'value' p40872 S'Archived' p40873 ssS'data_type' p40874 (dp40875 S'editable' p40876 I00 sS'value' p40877 S'checkbox' p40878 ssS'entity_type' p40879 (dp40880 S'editable' p40881 I00 sS'value' p40882 S'Project' p40883 ssS'editable' p40884 (dp40885 S'editable' p40886 I00 sS'value' p40887 I01 ssS'unique' p40888 (dp40889 S'editable' p40890 I00 sS'value' p40891 I00 ssS'properties' p40892 (dp40893 S'default_value' p40894 (dp40895 S'editable' p40896 I00 sS'value' p40897 I00 ssS'summary_default' p40898 (dp40899 S'editable' p40900 I00 sS'value' p40901 S'none' p40902 sssS'description' p40903 (dp40904 S'editable' p40905 I01 sS'value' p40906 g47 sssS'step_0' p40907 (dp40908 S'mandatory' p40909 (dp40910 S'editable' p40911 I00 sS'value' p40912 I00 ssS'name' p40913 (dp40914 S'editable' p40915 I01 sS'value' p40916 S'ALL TASKS' p40917 ssS'data_type' p40918 (dp40919 S'editable' p40920 I00 sS'value' p40921 S'pivot_column' p40922 ssS'entity_type' p40923 (dp40924 S'editable' p40925 I00 sS'value' p40926 S'Project' p40927 ssS'editable' p40928 (dp40929 S'editable' p40930 I00 sS'value' p40931 I00 ssS'unique' p40932 (dp40933 S'editable' p40934 I00 sS'value' p40935 I00 ssS'properties' p40936 (dp40937 S'default_value' p40938 (dp40939 S'editable' p40940 I00 sS'value' p40941 NssS'summary_default' p40942 (dp40943 S'editable' p40944 I00 sS'value' p40945 S'none' p40946 sssS'description' p40947 (dp40948 S'editable' p40949 I01 sS'value' p40950 g47 sssS'name' p40951 (dp40952 S'mandatory' p40953 (dp40954 S'editable' p40955 I00 sS'value' p40956 I01 ssS'name' p40957 (dp40958 S'editable' p40959 I01 sS'value' p40960 S'Project Name' p40961 ssS'data_type' p40962 (dp40963 S'editable' p40964 I00 sS'value' p40965 S'text' p40966 ssS'entity_type' p40967 (dp40968 S'editable' p40969 I00 sS'value' p40970 S'Project' p40971 ssS'editable' p40972 (dp40973 S'editable' p40974 I00 sS'value' p40975 I01 ssS'unique' p40976 (dp40977 S'editable' p40978 I00 sS'value' p40979 I01 ssS'properties' p40980 (dp40981 S'default_value' p40982 (dp40983 S'editable' p40984 I00 sS'value' p40985 NssS'summary_default' p40986 (dp40987 S'editable' p40988 I01 sS'value' p40989 S'none' p40990 sssS'description' p40991 (dp40992 S'editable' p40993 I01 sS'value' p40994 g47 sssS'created_at' p40995 (dp40996 S'mandatory' p40997 (dp40998 S'editable' p40999 I00 sS'value' p41000 I00 ssS'name' p41001 (dp41002 S'editable' p41003 I01 sS'value' p41004 S'Date Created' p41005 ssS'data_type' p41006 (dp41007 S'editable' p41008 I00 sS'value' p41009 S'date_time' p41010 ssS'entity_type' p41011 (dp41012 S'editable' p41013 I00 sS'value' p41014 S'Project' p41015 ssS'editable' p41016 (dp41017 S'editable' p41018 I00 sS'value' p41019 I00 ssS'unique' p41020 (dp41021 S'editable' p41022 I00 sS'value' p41023 I00 ssS'properties' p41024 (dp41025 S'default_value' p41026 (dp41027 S'editable' p41028 I00 sS'value' p41029 NssS'summary_default' p41030 (dp41031 S'editable' p41032 I01 sS'value' p41033 S'none' p41034 sssS'description' p41035 (dp41036 S'editable' p41037 I01 sS'value' p41038 g47 sssS'filmstrip_image' p41039 (dp41040 S'mandatory' p41041 (dp41042 S'editable' p41043 I00 sS'value' p41044 I00 ssS'name' p41045 (dp41046 S'editable' p41047 I01 sS'value' p41048 S'Filmstrip Thumbnail' p41049 ssS'data_type' p41050 (dp41051 S'editable' p41052 I00 sS'value' p41053 S'image' p41054 ssS'entity_type' p41055 (dp41056 S'editable' p41057 I00 sS'value' p41058 S'Project' p41059 ssS'editable' p41060 (dp41061 S'editable' p41062 I00 sS'value' p41063 I01 ssS'unique' p41064 (dp41065 S'editable' p41066 I00 sS'value' p41067 I00 ssS'properties' p41068 (dp41069 S'default_value' p41070 (dp41071 S'editable' p41072 I00 sS'value' p41073 NssS'summary_default' p41074 (dp41075 S'editable' p41076 I01 sS'value' p41077 S'none' p41078 sssS'description' p41079 (dp41080 S'editable' p41081 I01 sS'value' p41082 g47 sssS'layout_project' p41083 (dp41084 S'mandatory' p41085 (dp41086 S'editable' p41087 I00 sS'value' p41088 I00 ssS'name' p41089 (dp41090 S'editable' p41091 I01 sS'value' p41092 S'Layout Template' p41093 ssS'data_type' p41094 (dp41095 S'editable' p41096 I00 sS'value' p41097 S'entity' p41098 ssS'entity_type' p41099 (dp41100 S'editable' p41101 I00 sS'value' p41102 S'Project' p41103 ssS'editable' p41104 (dp41105 S'editable' p41106 I00 sS'value' p41107 I00 ssS'unique' p41108 (dp41109 S'editable' p41110 I00 sS'value' p41111 I00 ssS'properties' p41112 (dp41113 S'default_value' p41114 (dp41115 S'editable' p41116 I00 sS'value' p41117 NssS'summary_default' p41118 (dp41119 S'editable' p41120 I00 sS'value' p41121 S'none' p41122 ssS'valid_types' p41123 (dp41124 S'editable' p41125 I00 sS'value' p41126 (lp41127 S'Project' p41128 asssS'description' p41129 (dp41130 S'editable' p41131 I01 sS'value' p41132 g47 sssS'sg_type' p41133 (dp41134 S'mandatory' p41135 (dp41136 S'editable' p41137 I00 sS'value' p41138 I00 ssS'name' p41139 (dp41140 S'editable' p41141 I01 sS'value' p41142 S'Type' p41143 ssS'data_type' p41144 (dp41145 S'editable' p41146 I00 sS'value' p41147 S'list' p41148 ssS'entity_type' p41149 (dp41150 S'editable' p41151 I00 sS'value' p41152 S'Project' p41153 ssS'editable' p41154 (dp41155 S'editable' p41156 I00 sS'value' p41157 I01 ssS'unique' p41158 (dp41159 S'editable' p41160 I00 sS'value' p41161 I00 ssS'properties' p41162 (dp41163 S'default_value' p41164 (dp41165 S'editable' p41166 I00 sS'value' p41167 NssS'valid_values' p41168 (dp41169 S'editable' p41170 I01 sS'value' p41171 (lp41172 S'Short Film' p41173 aS'Feature Film' p41174 aS'Commercial' p41175 aS'Effects' p41176 aS'Game Cinematic' p41177 aS'Other' p41178 aS'(this list can be customized)' p41179 assS'summary_default' p41180 (dp41181 S'editable' p41182 I01 sS'value' p41183 S'none' p41184 sssS'description' p41185 (dp41186 S'editable' p41187 I01 sS'value' p41188 g47 sssS'tag_list' p41189 (dp41190 S'mandatory' p41191 (dp41192 S'editable' p41193 I00 sS'value' p41194 I00 ssS'name' p41195 (dp41196 S'editable' p41197 I01 sS'value' p41198 S'Tags' p41199 ssS'data_type' p41200 (dp41201 S'editable' p41202 I00 sS'value' p41203 S'tag_list' p41204 ssS'entity_type' p41205 (dp41206 S'editable' p41207 I00 sS'value' p41208 S'Project' p41209 ssS'editable' p41210 (dp41211 S'editable' p41212 I00 sS'value' p41213 I01 ssS'unique' p41214 (dp41215 S'editable' p41216 I00 sS'value' p41217 I00 ssS'properties' p41218 (dp41219 S'default_value' p41220 (dp41221 S'editable' p41222 I00 sS'value' p41223 NssS'summary_default' p41224 (dp41225 S'editable' p41226 I01 sS'value' p41227 S'none' p41228 ssS'valid_types' p41229 (dp41230 S'editable' p41231 I01 sS'value' p41232 (lp41233 S'Tag' p41234 asssS'description' p41235 (dp41236 S'editable' p41237 I01 sS'value' p41238 g47 ssssS'Version' p41239 (dp41240 S'sg_version_type' p41241 (dp41242 S'mandatory' p41243 (dp41244 S'editable' p41245 I00 sS'value' p41246 I00 ssS'name' p41247 (dp41248 S'editable' p41249 I01 sS'value' p41250 S'Type' p41251 ssS'data_type' p41252 (dp41253 S'editable' p41254 I00 sS'value' p41255 S'list' p41256 ssS'entity_type' p41257 (dp41258 S'editable' p41259 I00 sS'value' p41260 S'Version' p41261 ssS'editable' p41262 (dp41263 S'editable' p41264 I00 sS'value' p41265 I01 ssS'unique' p41266 (dp41267 S'editable' p41268 I00 sS'value' p41269 I00 ssS'properties' p41270 (dp41271 S'default_value' p41272 (dp41273 S'editable' p41274 I00 sS'value' p41275 NssS'valid_values' p41276 (dp41277 S'editable' p41278 I01 sS'value' p41279 (lp41280 ssS'summary_default' p41281 (dp41282 S'editable' p41283 I01 sS'value' p41284 S'none' p41285 sssS'description' p41286 (dp41287 S'editable' p41288 I01 sS'value' p41289 g47 sssS'open_notes_count' p41290 (dp41291 S'mandatory' p41292 (dp41293 S'editable' p41294 I00 sS'value' p41295 I00 ssS'name' p41296 (dp41297 S'editable' p41298 I01 sS'value' p41299 S'Open Notes Count' p41300 ssS'data_type' p41301 (dp41302 S'editable' p41303 I00 sS'value' p41304 S'text' p41305 ssS'entity_type' p41306 (dp41307 S'editable' p41308 I00 sS'value' p41309 S'Version' p41310 ssS'editable' p41311 (dp41312 S'editable' p41313 I00 sS'value' p41314 I00 ssS'unique' p41315 (dp41316 S'editable' p41317 I00 sS'value' p41318 I00 ssS'properties' p41319 (dp41320 S'default_value' p41321 (dp41322 S'editable' p41323 I00 sS'value' p41324 NssS'summary_default' p41325 (dp41326 S'editable' p41327 I01 sS'value' p41328 S'none' p41329 sssS'description' p41330 (dp41331 S'editable' p41332 I01 sS'value' p41333 g47 sssS'code' p41334 (dp41335 S'mandatory' p41336 (dp41337 S'editable' p41338 I00 sS'value' p41339 I01 ssS'name' p41340 (dp41341 S'editable' p41342 I01 sS'value' p41343 S'Version Name' p41344 ssS'data_type' p41345 (dp41346 S'editable' p41347 I00 sS'value' p41348 S'text' p41349 ssS'entity_type' p41350 (dp41351 S'editable' p41352 I00 sS'value' p41353 S'Version' p41354 ssS'editable' p41355 (dp41356 S'editable' p41357 I00 sS'value' p41358 I01 ssS'unique' p41359 (dp41360 S'editable' p41361 I00 sS'value' p41362 I00 ssS'properties' p41363 (dp41364 S'default_value' p41365 (dp41366 S'editable' p41367 I00 sS'value' p41368 NssS'summary_default' p41369 (dp41370 S'editable' p41371 I01 sS'value' p41372 S'none' p41373 sssS'description' p41374 (dp41375 S'editable' p41376 I01 sS'value' p41377 g47 sssS'playlists' p41378 (dp41379 S'mandatory' p41380 (dp41381 S'editable' p41382 I00 sS'value' p41383 I00 ssS'name' p41384 (dp41385 S'editable' p41386 I01 sS'value' p41387 S'Playlists' p41388 ssS'data_type' p41389 (dp41390 S'editable' p41391 I00 sS'value' p41392 S'multi_entity' p41393 ssS'entity_type' p41394 (dp41395 S'editable' p41396 I00 sS'value' p41397 S'Version' p41398 ssS'editable' p41399 (dp41400 S'editable' p41401 I00 sS'value' p41402 I01 ssS'unique' p41403 (dp41404 S'editable' p41405 I00 sS'value' p41406 I00 ssS'properties' p41407 (dp41408 S'default_value' p41409 (dp41410 S'editable' p41411 I00 sS'value' p41412 NssS'summary_default' p41413 (dp41414 S'editable' p41415 I01 sS'value' p41416 S'none' p41417 ssS'valid_types' p41418 (dp41419 S'editable' p41420 I01 sS'value' p41421 (lp41422 S'Playlist' p41423 asssS'description' p41424 (dp41425 S'editable' p41426 I01 sS'value' p41427 g47 sssS'sg_task' p41428 (dp41429 S'mandatory' p41430 (dp41431 S'editable' p41432 I00 sS'value' p41433 I00 ssS'name' p41434 (dp41435 S'editable' p41436 I01 sS'value' p41437 S'Task' p41438 ssS'data_type' p41439 (dp41440 S'editable' p41441 I00 sS'value' p41442 S'entity' p41443 ssS'entity_type' p41444 (dp41445 S'editable' p41446 I00 sS'value' p41447 S'Version' p41448 ssS'editable' p41449 (dp41450 S'editable' p41451 I00 sS'value' p41452 I01 ssS'unique' p41453 (dp41454 S'editable' p41455 I00 sS'value' p41456 I00 ssS'properties' p41457 (dp41458 S'default_value' p41459 (dp41460 S'editable' p41461 I00 sS'value' p41462 NssS'summary_default' p41463 (dp41464 S'editable' p41465 I01 sS'value' p41466 S'none' p41467 ssS'valid_types' p41468 (dp41469 S'editable' p41470 I01 sS'value' p41471 (lp41472 S'Task' p41473 asssS'description' p41474 (dp41475 S'editable' p41476 I01 sS'value' p41477 g47 sssS'image' p41478 (dp41479 S'mandatory' p41480 (dp41481 S'editable' p41482 I00 sS'value' p41483 I00 ssS'name' p41484 (dp41485 S'editable' p41486 I01 sS'value' p41487 S'Thumbnail' p41488 ssS'data_type' p41489 (dp41490 S'editable' p41491 I00 sS'value' p41492 S'image' p41493 ssS'entity_type' p41494 (dp41495 S'editable' p41496 I00 sS'value' p41497 S'Version' p41498 ssS'editable' p41499 (dp41500 S'editable' p41501 I00 sS'value' p41502 I01 ssS'unique' p41503 (dp41504 S'editable' p41505 I00 sS'value' p41506 I00 ssS'properties' p41507 (dp41508 S'default_value' p41509 (dp41510 S'editable' p41511 I00 sS'value' p41512 NssS'summary_default' p41513 (dp41514 S'editable' p41515 I01 sS'value' p41516 S'none' p41517 sssS'description' p41518 (dp41519 S'editable' p41520 I01 sS'value' p41521 g47 sssS'updated_at' p41522 (dp41523 S'mandatory' p41524 (dp41525 S'editable' p41526 I00 sS'value' p41527 I00 ssS'name' p41528 (dp41529 S'editable' p41530 I01 sS'value' p41531 S'Date Updated' p41532 ssS'data_type' p41533 (dp41534 S'editable' p41535 I00 sS'value' p41536 S'date_time' p41537 ssS'entity_type' p41538 (dp41539 S'editable' p41540 I00 sS'value' p41541 S'Version' p41542 ssS'editable' p41543 (dp41544 S'editable' p41545 I00 sS'value' p41546 I00 ssS'unique' p41547 (dp41548 S'editable' p41549 I00 sS'value' p41550 I00 ssS'properties' p41551 (dp41552 S'default_value' p41553 (dp41554 S'editable' p41555 I00 sS'value' p41556 NssS'summary_default' p41557 (dp41558 S'editable' p41559 I01 sS'value' p41560 S'none' p41561 sssS'description' p41562 (dp41563 S'editable' p41564 I01 sS'value' p41565 g47 sssS'sg_uploaded_movie_frame_rate' p41566 (dp41567 S'mandatory' p41568 (dp41569 S'editable' p41570 I00 sS'value' p41571 I00 ssS'name' p41572 (dp41573 S'editable' p41574 I01 sS'value' p41575 S'Uploaded Movie Frame Rate' p41576 ssS'data_type' p41577 (dp41578 S'editable' p41579 I00 sS'value' p41580 S'float' p41581 ssS'entity_type' p41582 (dp41583 S'editable' p41584 I00 sS'value' p41585 S'Version' p41586 ssS'editable' p41587 (dp41588 S'editable' p41589 I00 sS'value' p41590 I01 ssS'unique' p41591 (dp41592 S'editable' p41593 I00 sS'value' p41594 I00 ssS'properties' p41595 (dp41596 S'default_value' p41597 (dp41598 S'editable' p41599 I00 sS'value' p41600 NssS'summary_default' p41601 (dp41602 S'editable' p41603 I00 sS'value' p41604 S'none' p41605 sssS'description' p41606 (dp41607 S'editable' p41608 I01 sS'value' p41609 g47 sssS'sg_path_to_frames' p41610 (dp41611 S'mandatory' p41612 (dp41613 S'editable' p41614 I00 sS'value' p41615 I00 ssS'name' p41616 (dp41617 S'editable' p41618 I01 sS'value' p41619 S'Path to Frames' p41620 ssS'data_type' p41621 (dp41622 S'editable' p41623 I00 sS'value' p41624 S'text' p41625 ssS'entity_type' p41626 (dp41627 S'editable' p41628 I00 sS'value' p41629 S'Version' p41630 ssS'editable' p41631 (dp41632 S'editable' p41633 I00 sS'value' p41634 I01 ssS'unique' p41635 (dp41636 S'editable' p41637 I00 sS'value' p41638 I00 ssS'properties' p41639 (dp41640 S'default_value' p41641 (dp41642 S'editable' p41643 I00 sS'value' p41644 NssS'summary_default' p41645 (dp41646 S'editable' p41647 I01 sS'value' p41648 S'none' p41649 sssS'description' p41650 (dp41651 S'editable' p41652 I01 sS'value' p41653 S'Location of the high res frames on your local filesystem. Used for playback of high resolution frames.' p41654 sssS'tasks' p41655 (dp41656 S'mandatory' p41657 (dp41658 S'editable' p41659 I00 sS'value' p41660 I00 ssS'name' p41661 (dp41662 S'editable' p41663 I01 sS'value' p41664 S'Tasks' p41665 ssS'data_type' p41666 (dp41667 S'editable' p41668 I00 sS'value' p41669 S'multi_entity' p41670 ssS'entity_type' p41671 (dp41672 S'editable' p41673 I00 sS'value' p41674 S'Version' p41675 ssS'editable' p41676 (dp41677 S'editable' p41678 I00 sS'value' p41679 I01 ssS'unique' p41680 (dp41681 S'editable' p41682 I00 sS'value' p41683 I00 ssS'properties' p41684 (dp41685 S'default_value' p41686 (dp41687 S'editable' p41688 I00 sS'value' p41689 NssS'summary_default' p41690 (dp41691 S'editable' p41692 I01 sS'value' p41693 S'none' p41694 ssS'valid_types' p41695 (dp41696 S'editable' p41697 I01 sS'value' p41698 (lp41699 S'Task' p41700 asssS'description' p41701 (dp41702 S'editable' p41703 I01 sS'value' p41704 g47 sssS'sg_department' p41705 (dp41706 S'mandatory' p41707 (dp41708 S'editable' p41709 I00 sS'value' p41710 I00 ssS'name' p41711 (dp41712 S'editable' p41713 I01 sS'value' p41714 S'Department' p41715 ssS'data_type' p41716 (dp41717 S'editable' p41718 I00 sS'value' p41719 S'text' p41720 ssS'entity_type' p41721 (dp41722 S'editable' p41723 I00 sS'value' p41724 S'Version' p41725 ssS'editable' p41726 (dp41727 S'editable' p41728 I00 sS'value' p41729 I01 ssS'unique' p41730 (dp41731 S'editable' p41732 I00 sS'value' p41733 I00 ssS'properties' p41734 (dp41735 S'default_value' p41736 (dp41737 S'editable' p41738 I00 sS'value' p41739 NssS'summary_default' p41740 (dp41741 S'editable' p41742 I01 sS'value' p41743 S'none' p41744 sssS'description' p41745 (dp41746 S'editable' p41747 I01 sS'value' p41748 S'The department the Version was submitted from. This is used to find the latest Version from the same department.' p41749 sssS'cached_display_name' p41750 (dp41751 S'mandatory' p41752 (dp41753 S'editable' p41754 I00 sS'value' p41755 I00 ssS'name' p41756 (dp41757 S'editable' p41758 I01 sS'value' p41759 S'Cached Display Name' p41760 ssS'data_type' p41761 (dp41762 S'editable' p41763 I00 sS'value' p41764 S'text' p41765 ssS'entity_type' p41766 (dp41767 S'editable' p41768 I00 sS'value' p41769 S'Version' p41770 ssS'editable' p41771 (dp41772 S'editable' p41773 I00 sS'value' p41774 I01 ssS'unique' p41775 (dp41776 S'editable' p41777 I00 sS'value' p41778 I00 ssS'properties' p41779 (dp41780 S'default_value' p41781 (dp41782 S'editable' p41783 I00 sS'value' p41784 NssS'summary_default' p41785 (dp41786 S'editable' p41787 I00 sS'value' p41788 S'none' p41789 sssS'description' p41790 (dp41791 S'editable' p41792 I01 sS'value' p41793 g47 sssS'frame_range' p41794 (dp41795 S'mandatory' p41796 (dp41797 S'editable' p41798 I00 sS'value' p41799 I00 ssS'name' p41800 (dp41801 S'editable' p41802 I01 sS'value' p41803 S'Frame Range' p41804 ssS'data_type' p41805 (dp41806 S'editable' p41807 I00 sS'value' p41808 S'text' p41809 ssS'entity_type' p41810 (dp41811 S'editable' p41812 I00 sS'value' p41813 S'Version' p41814 ssS'editable' p41815 (dp41816 S'editable' p41817 I00 sS'value' p41818 I01 ssS'unique' p41819 (dp41820 S'editable' p41821 I00 sS'value' p41822 I00 ssS'properties' p41823 (dp41824 S'default_value' p41825 (dp41826 S'editable' p41827 I00 sS'value' p41828 NssS'summary_default' p41829 (dp41830 S'editable' p41831 I01 sS'value' p41832 S'none' p41833 sssS'description' p41834 (dp41835 S'editable' p41836 I01 sS'value' p41837 g47 sssS'updated_by' p41838 (dp41839 S'mandatory' p41840 (dp41841 S'editable' p41842 I00 sS'value' p41843 I00 ssS'name' p41844 (dp41845 S'editable' p41846 I01 sS'value' p41847 S'Updated by' p41848 ssS'data_type' p41849 (dp41850 S'editable' p41851 I00 sS'value' p41852 S'entity' p41853 ssS'entity_type' p41854 (dp41855 S'editable' p41856 I00 sS'value' p41857 S'Version' p41858 ssS'editable' p41859 (dp41860 S'editable' p41861 I00 sS'value' p41862 I00 ssS'unique' p41863 (dp41864 S'editable' p41865 I00 sS'value' p41866 I00 ssS'properties' p41867 (dp41868 S'default_value' p41869 (dp41870 S'editable' p41871 I00 sS'value' p41872 NssS'summary_default' p41873 (dp41874 S'editable' p41875 I01 sS'value' p41876 S'none' p41877 ssS'valid_types' p41878 (dp41879 S'editable' p41880 I01 sS'value' p41881 (lp41882 S'HumanUser' p41883 aS'ApiUser' p41884 asssS'description' p41885 (dp41886 S'editable' p41887 I01 sS'value' p41888 g47 sssS'sg_path_to_movie' p41889 (dp41890 S'mandatory' p41891 (dp41892 S'editable' p41893 I00 sS'value' p41894 I00 ssS'name' p41895 (dp41896 S'editable' p41897 I01 sS'value' p41898 S'Path to Movie' p41899 ssS'data_type' p41900 (dp41901 S'editable' p41902 I00 sS'value' p41903 S'text' p41904 ssS'entity_type' p41905 (dp41906 S'editable' p41907 I00 sS'value' p41908 S'Version' p41909 ssS'editable' p41910 (dp41911 S'editable' p41912 I00 sS'value' p41913 I01 ssS'unique' p41914 (dp41915 S'editable' p41916 I00 sS'value' p41917 I00 ssS'properties' p41918 (dp41919 S'default_value' p41920 (dp41921 S'editable' p41922 I00 sS'value' p41923 NssS'summary_default' p41924 (dp41925 S'editable' p41926 I01 sS'value' p41927 S'none' p41928 sssS'description' p41929 (dp41930 S'editable' p41931 I01 sS'value' p41932 S'Location of the movie on your local filesystem (not uploaded). Used for playback of lower resolution movie media stored locally.' p41933 sssS'sg_uploaded_movie_webm' p41934 (dp41935 S'mandatory' p41936 (dp41937 S'editable' p41938 I00 sS'value' p41939 I00 ssS'name' p41940 (dp41941 S'editable' p41942 I01 sS'value' p41943 S'Uploaded Movie WebM' p41944 ssS'data_type' p41945 (dp41946 S'editable' p41947 I00 sS'value' p41948 S'url' p41949 ssS'entity_type' p41950 (dp41951 S'editable' p41952 I00 sS'value' p41953 S'Version' p41954 ssS'editable' p41955 (dp41956 S'editable' p41957 I00 sS'value' p41958 I01 ssS'unique' p41959 (dp41960 S'editable' p41961 I00 sS'value' p41962 I00 ssS'properties' p41963 (dp41964 S'default_value' p41965 (dp41966 S'editable' p41967 I00 sS'value' p41968 NssS'open_in_new_window' p41969 (dp41970 S'editable' p41971 I00 sS'value' p41972 I01 ssS'summary_default' p41973 (dp41974 S'editable' p41975 I00 sS'value' p41976 S'none' p41977 sssS'description' p41978 (dp41979 S'editable' p41980 I01 sS'value' p41981 g47 sssS'open_notes' p41982 (dp41983 S'mandatory' p41984 (dp41985 S'editable' p41986 I00 sS'value' p41987 I00 ssS'name' p41988 (dp41989 S'editable' p41990 I01 sS'value' p41991 S'Open Notes' p41992 ssS'data_type' p41993 (dp41994 S'editable' p41995 I00 sS'value' p41996 S'multi_entity' p41997 ssS'entity_type' p41998 (dp41999 S'editable' p42000 I00 sS'value' p42001 S'Version' p42002 ssS'editable' p42003 (dp42004 S'editable' p42005 I00 sS'value' p42006 I00 ssS'unique' p42007 (dp42008 S'editable' p42009 I00 sS'value' p42010 I00 ssS'properties' p42011 (dp42012 S'default_value' p42013 (dp42014 S'editable' p42015 I00 sS'value' p42016 NssS'summary_default' p42017 (dp42018 S'editable' p42019 I01 sS'value' p42020 S'none' p42021 ssS'valid_types' p42022 (dp42023 S'editable' p42024 I01 sS'value' p42025 (lp42026 S'Note' p42027 asssS'description' p42028 (dp42029 S'editable' p42030 I01 sS'value' p42031 g47 sssS'tank_published_file' p42032 (dp42033 S'mandatory' p42034 (dp42035 S'editable' p42036 I00 sS'value' p42037 I00 ssS'name' p42038 (dp42039 S'editable' p42040 I01 sS'value' p42041 S'Tank Published File' p42042 ssS'data_type' p42043 (dp42044 S'editable' p42045 I00 sS'value' p42046 S'entity' p42047 ssS'entity_type' p42048 (dp42049 S'editable' p42050 I00 sS'value' p42051 S'Version' p42052 ssS'editable' p42053 (dp42054 S'editable' p42055 I00 sS'value' p42056 I01 ssS'unique' p42057 (dp42058 S'editable' p42059 I00 sS'value' p42060 I00 ssS'properties' p42061 (dp42062 S'default_value' p42063 (dp42064 S'editable' p42065 I00 sS'value' p42066 NssS'summary_default' p42067 (dp42068 S'editable' p42069 I01 sS'value' p42070 S'none' p42071 ssS'valid_types' p42072 (dp42073 S'editable' p42074 I01 sS'value' p42075 (lp42076 S'TankPublishedFile' p42077 asssS'description' p42078 (dp42079 S'editable' p42080 I01 sS'value' p42081 g47 sssS'task_template' p42082 (dp42083 S'mandatory' p42084 (dp42085 S'editable' p42086 I00 sS'value' p42087 I00 ssS'name' p42088 (dp42089 S'editable' p42090 I01 sS'value' p42091 S'Task Template' p42092 ssS'data_type' p42093 (dp42094 S'editable' p42095 I00 sS'value' p42096 S'entity' p42097 ssS'entity_type' p42098 (dp42099 S'editable' p42100 I00 sS'value' p42101 S'Version' p42102 ssS'editable' p42103 (dp42104 S'editable' p42105 I00 sS'value' p42106 I01 ssS'unique' p42107 (dp42108 S'editable' p42109 I00 sS'value' p42110 I00 ssS'properties' p42111 (dp42112 S'default_value' p42113 (dp42114 S'editable' p42115 I00 sS'value' p42116 NssS'summary_default' p42117 (dp42118 S'editable' p42119 I01 sS'value' p42120 S'none' p42121 ssS'valid_types' p42122 (dp42123 S'editable' p42124 I01 sS'value' p42125 (lp42126 S'TaskTemplate' p42127 asssS'description' p42128 (dp42129 S'editable' p42130 I01 sS'value' p42131 g47 sssS'created_by' p42132 (dp42133 S'mandatory' p42134 (dp42135 S'editable' p42136 I00 sS'value' p42137 I00 ssS'name' p42138 (dp42139 S'editable' p42140 I01 sS'value' p42141 S'Created by' p42142 ssS'data_type' p42143 (dp42144 S'editable' p42145 I00 sS'value' p42146 S'entity' p42147 ssS'entity_type' p42148 (dp42149 S'editable' p42150 I00 sS'value' p42151 S'Version' p42152 ssS'editable' p42153 (dp42154 S'editable' p42155 I00 sS'value' p42156 I00 ssS'unique' p42157 (dp42158 S'editable' p42159 I00 sS'value' p42160 I00 ssS'properties' p42161 (dp42162 S'default_value' p42163 (dp42164 S'editable' p42165 I00 sS'value' p42166 NssS'summary_default' p42167 (dp42168 S'editable' p42169 I01 sS'value' p42170 S'none' p42171 ssS'valid_types' p42172 (dp42173 S'editable' p42174 I01 sS'value' p42175 (lp42176 S'HumanUser' p42177 aS'ApiUser' p42178 asssS'description' p42179 (dp42180 S'editable' p42181 I01 sS'value' p42182 g47 sssS'id' p42183 (dp42184 S'mandatory' p42185 (dp42186 S'editable' p42187 I00 sS'value' p42188 I00 ssS'name' p42189 (dp42190 S'editable' p42191 I01 sS'value' p42192 S'Id' p42193 ssS'data_type' p42194 (dp42195 S'editable' p42196 I00 sS'value' p42197 S'number' p42198 ssS'entity_type' p42199 (dp42200 S'editable' p42201 I00 sS'value' p42202 S'Version' p42203 ssS'editable' p42204 (dp42205 S'editable' p42206 I00 sS'value' p42207 I00 ssS'unique' p42208 (dp42209 S'editable' p42210 I00 sS'value' p42211 I00 ssS'properties' p42212 (dp42213 S'default_value' p42214 (dp42215 S'editable' p42216 I00 sS'value' p42217 NssS'summary_default' p42218 (dp42219 S'editable' p42220 I01 sS'value' p42221 S'none' p42222 sssS'description' p42223 (dp42224 S'editable' p42225 I01 sS'value' p42226 g47 sssS'sg_status_list' p42227 (dp42228 S'mandatory' p42229 (dp42230 S'editable' p42231 I00 sS'value' p42232 I00 ssS'name' p42233 (dp42234 S'editable' p42235 I01 sS'value' p42236 S'Status' p42237 ssS'data_type' p42238 (dp42239 S'editable' p42240 I00 sS'value' p42241 S'status_list' p42242 ssS'entity_type' p42243 (dp42244 S'editable' p42245 I00 sS'value' p42246 S'Version' p42247 ssS'editable' p42248 (dp42249 S'editable' p42250 I00 sS'value' p42251 I01 ssS'unique' p42252 (dp42253 S'editable' p42254 I00 sS'value' p42255 I00 ssS'properties' p42256 (dp42257 S'default_value' p42258 (dp42259 S'editable' p42260 I01 sS'value' p42261 S'rev' p42262 ssS'valid_values' p42263 (dp42264 S'editable' p42265 I01 sS'value' p42266 (lp42267 S'na' p42268 aS'rev' p42269 aS'vwd' p42270 assS'summary_default' p42271 (dp42272 S'editable' p42273 I01 sS'value' p42274 S'status_list' p42275 sssS'description' p42276 (dp42277 S'editable' p42278 I01 sS'value' p42279 g47 sssS'created_at' p42280 (dp42281 S'mandatory' p42282 (dp42283 S'editable' p42284 I00 sS'value' p42285 I00 ssS'name' p42286 (dp42287 S'editable' p42288 I01 sS'value' p42289 S'Date Created' p42290 ssS'data_type' p42291 (dp42292 S'editable' p42293 I00 sS'value' p42294 S'date_time' p42295 ssS'entity_type' p42296 (dp42297 S'editable' p42298 I00 sS'value' p42299 S'Version' p42300 ssS'editable' p42301 (dp42302 S'editable' p42303 I00 sS'value' p42304 I00 ssS'unique' p42305 (dp42306 S'editable' p42307 I00 sS'value' p42308 I00 ssS'properties' p42309 (dp42310 S'default_value' p42311 (dp42312 S'editable' p42313 I00 sS'value' p42314 NssS'summary_default' p42315 (dp42316 S'editable' p42317 I01 sS'value' p42318 S'none' p42319 sssS'description' p42320 (dp42321 S'editable' p42322 I01 sS'value' p42323 g47 sssS'sg_frames_aspect_ratio' p42324 (dp42325 S'mandatory' p42326 (dp42327 S'editable' p42328 I00 sS'value' p42329 I00 ssS'name' p42330 (dp42331 S'editable' p42332 I01 sS'value' p42333 S'Frames Aspect Ratio' p42334 ssS'data_type' p42335 (dp42336 S'editable' p42337 I00 sS'value' p42338 S'float' p42339 ssS'entity_type' p42340 (dp42341 S'editable' p42342 I00 sS'value' p42343 S'Version' p42344 ssS'editable' p42345 (dp42346 S'editable' p42347 I00 sS'value' p42348 I01 ssS'unique' p42349 (dp42350 S'editable' p42351 I00 sS'value' p42352 I00 ssS'properties' p42353 (dp42354 S'default_value' p42355 (dp42356 S'editable' p42357 I00 sS'value' p42358 NssS'summary_default' p42359 (dp42360 S'editable' p42361 I01 sS'value' p42362 S'none' p42363 sssS'description' p42364 (dp42365 S'editable' p42366 I01 sS'value' p42367 S'Aspect ratio of the high res frames. Used to format the image correctly for viewing.' p42368 sssS'sg_first_frame' p42369 (dp42370 S'mandatory' p42371 (dp42372 S'editable' p42373 I00 sS'value' p42374 I00 ssS'name' p42375 (dp42376 S'editable' p42377 I01 sS'value' p42378 S'First Frame' p42379 ssS'data_type' p42380 (dp42381 S'editable' p42382 I00 sS'value' p42383 S'number' p42384 ssS'entity_type' p42385 (dp42386 S'editable' p42387 I00 sS'value' p42388 S'Version' p42389 ssS'editable' p42390 (dp42391 S'editable' p42392 I00 sS'value' p42393 I01 ssS'unique' p42394 (dp42395 S'editable' p42396 I00 sS'value' p42397 I00 ssS'properties' p42398 (dp42399 S'default_value' p42400 (dp42401 S'editable' p42402 I00 sS'value' p42403 NssS'summary_default' p42404 (dp42405 S'editable' p42406 I01 sS'value' p42407 S'none' p42408 sssS'description' p42409 (dp42410 S'editable' p42411 I01 sS'value' p42412 S'The first frame number contained in the Version. Used in playback of the movie or frames to calculate the first frame available in the Version.' p42413 sssS'sg_frames_have_slate' p42414 (dp42415 S'mandatory' p42416 (dp42417 S'editable' p42418 I00 sS'value' p42419 I00 ssS'name' p42420 (dp42421 S'editable' p42422 I01 sS'value' p42423 S'Frames Have Slate' p42424 ssS'data_type' p42425 (dp42426 S'editable' p42427 I00 sS'value' p42428 S'checkbox' p42429 ssS'entity_type' p42430 (dp42431 S'editable' p42432 I00 sS'value' p42433 S'Version' p42434 ssS'editable' p42435 (dp42436 S'editable' p42437 I00 sS'value' p42438 I01 ssS'unique' p42439 (dp42440 S'editable' p42441 I00 sS'value' p42442 I00 ssS'properties' p42443 (dp42444 S'default_value' p42445 (dp42446 S'editable' p42447 I00 sS'value' p42448 I00 ssS'summary_default' p42449 (dp42450 S'editable' p42451 I01 sS'value' p42452 S'none' p42453 sssS'description' p42454 (dp42455 S'editable' p42456 I01 sS'value' p42457 S'Indicates whether the frames have a slate or not. This is used to include or omit the slate from playback.' p42458 sssS'sg_uploaded_movie_mp4' p42459 (dp42460 S'mandatory' p42461 (dp42462 S'editable' p42463 I00 sS'value' p42464 I00 ssS'name' p42465 (dp42466 S'editable' p42467 I01 sS'value' p42468 S'Uploaded Movie MP4' p42469 ssS'data_type' p42470 (dp42471 S'editable' p42472 I00 sS'value' p42473 S'url' p42474 ssS'entity_type' p42475 (dp42476 S'editable' p42477 I00 sS'value' p42478 S'Version' p42479 ssS'editable' p42480 (dp42481 S'editable' p42482 I00 sS'value' p42483 I01 ssS'unique' p42484 (dp42485 S'editable' p42486 I00 sS'value' p42487 I00 ssS'properties' p42488 (dp42489 S'default_value' p42490 (dp42491 S'editable' p42492 I00 sS'value' p42493 NssS'open_in_new_window' p42494 (dp42495 S'editable' p42496 I00 sS'value' p42497 I01 ssS'summary_default' p42498 (dp42499 S'editable' p42500 I00 sS'value' p42501 S'none' p42502 sssS'description' p42503 (dp42504 S'editable' p42505 I01 sS'value' p42506 g47 sssS'description' p42507 (dp42508 S'mandatory' p42509 (dp42510 S'editable' p42511 I00 sS'value' p42512 I00 ssS'name' p42513 (dp42514 S'editable' p42515 I01 sS'value' p42516 S'Description' p42517 ssS'data_type' p42518 (dp42519 S'editable' p42520 I00 sS'value' p42521 S'text' p42522 ssS'entity_type' p42523 (dp42524 S'editable' p42525 I00 sS'value' p42526 S'Version' p42527 ssS'editable' p42528 (dp42529 S'editable' p42530 I00 sS'value' p42531 I01 ssS'unique' p42532 (dp42533 S'editable' p42534 I00 sS'value' p42535 I00 ssS'properties' p42536 (dp42537 S'default_value' p42538 (dp42539 S'editable' p42540 I00 sS'value' p42541 NssS'summary_default' p42542 (dp42543 S'editable' p42544 I01 sS'value' p42545 S'none' p42546 sssS'description' p42547 (dp42548 S'editable' p42549 I01 sS'value' p42550 g47 sssS'media_center_import_time' p42551 (dp42552 S'mandatory' p42553 (dp42554 S'editable' p42555 I00 sS'value' p42556 I00 ssS'name' p42557 (dp42558 S'editable' p42559 I01 sS'value' p42560 S'Media Center Import Time' p42561 ssS'data_type' p42562 (dp42563 S'editable' p42564 I00 sS'value' p42565 S'date_time' p42566 ssS'entity_type' p42567 (dp42568 S'editable' p42569 I00 sS'value' p42570 S'Version' p42571 ssS'editable' p42572 (dp42573 S'editable' p42574 I00 sS'value' p42575 I01 ssS'unique' p42576 (dp42577 S'editable' p42578 I00 sS'value' p42579 I00 ssS'properties' p42580 (dp42581 S'default_value' p42582 (dp42583 S'editable' p42584 I00 sS'value' p42585 NssS'summary_default' p42586 (dp42587 S'editable' p42588 I00 sS'value' p42589 S'none' p42590 sssS'description' p42591 (dp42592 S'editable' p42593 I01 sS'value' p42594 g47 sssS'viewed_by_current_user_at' p42595 (dp42596 S'mandatory' p42597 (dp42598 S'editable' p42599 I00 sS'value' p42600 I00 ssS'name' p42601 (dp42602 S'editable' p42603 I01 sS'value' p42604 S'Date Viewed' p42605 ssS'data_type' p42606 (dp42607 S'editable' p42608 I00 sS'value' p42609 S'date_time' p42610 ssS'entity_type' p42611 (dp42612 S'editable' p42613 I00 sS'value' p42614 S'Version' p42615 ssS'editable' p42616 (dp42617 S'editable' p42618 I00 sS'value' p42619 I00 ssS'unique' p42620 (dp42621 S'editable' p42622 I00 sS'value' p42623 I00 ssS'properties' p42624 (dp42625 S'default_value' p42626 (dp42627 S'editable' p42628 I00 sS'value' p42629 NssS'summary_default' p42630 (dp42631 S'editable' p42632 I00 sS'value' p42633 S'none' p42634 sssS'description' p42635 (dp42636 S'editable' p42637 I01 sS'value' p42638 g47 sssS'sg_movie_has_slate' p42639 (dp42640 S'mandatory' p42641 (dp42642 S'editable' p42643 I00 sS'value' p42644 I00 ssS'name' p42645 (dp42646 S'editable' p42647 I01 sS'value' p42648 S'Movie Has Slate' p42649 ssS'data_type' p42650 (dp42651 S'editable' p42652 I00 sS'value' p42653 S'checkbox' p42654 ssS'entity_type' p42655 (dp42656 S'editable' p42657 I00 sS'value' p42658 S'Version' p42659 ssS'editable' p42660 (dp42661 S'editable' p42662 I00 sS'value' p42663 I01 ssS'unique' p42664 (dp42665 S'editable' p42666 I00 sS'value' p42667 I00 ssS'properties' p42668 (dp42669 S'default_value' p42670 (dp42671 S'editable' p42672 I00 sS'value' p42673 I00 ssS'summary_default' p42674 (dp42675 S'editable' p42676 I01 sS'value' p42677 S'none' p42678 sssS'description' p42679 (dp42680 S'editable' p42681 I01 sS'value' p42682 S'Indicates whether the movie file has a slate or not. This is used to include or omit the slate from playback.' p42683 sssS'sg_uploaded_movie' p42684 (dp42685 S'mandatory' p42686 (dp42687 S'editable' p42688 I00 sS'value' p42689 I00 ssS'name' p42690 (dp42691 S'editable' p42692 I01 sS'value' p42693 S'Uploaded Movie' p42694 ssS'data_type' p42695 (dp42696 S'editable' p42697 I00 sS'value' p42698 S'url' p42699 ssS'entity_type' p42700 (dp42701 S'editable' p42702 I00 sS'value' p42703 S'Version' p42704 ssS'editable' p42705 (dp42706 S'editable' p42707 I00 sS'value' p42708 I01 ssS'unique' p42709 (dp42710 S'editable' p42711 I00 sS'value' p42712 I00 ssS'properties' p42713 (dp42714 S'default_value' p42715 (dp42716 S'editable' p42717 I00 sS'value' p42718 NssS'open_in_new_window' p42719 (dp42720 S'editable' p42721 I01 sS'value' p42722 I01 ssS'summary_default' p42723 (dp42724 S'editable' p42725 I01 sS'value' p42726 S'none' p42727 sssS'description' p42728 (dp42729 S'editable' p42730 I01 sS'value' p42731 S'File field to contain the uploaded movie file. Used for playback of lower resolution movie media stored in Flow Production Tracking.' p42732 sssS'user' p42733 (dp42734 S'mandatory' p42735 (dp42736 S'editable' p42737 I00 sS'value' p42738 I00 ssS'name' p42739 (dp42740 S'editable' p42741 I01 sS'value' p42742 S'Artist' p42743 ssS'data_type' p42744 (dp42745 S'editable' p42746 I00 sS'value' p42747 S'entity' p42748 ssS'entity_type' p42749 (dp42750 S'editable' p42751 I00 sS'value' p42752 S'Version' p42753 ssS'editable' p42754 (dp42755 S'editable' p42756 I00 sS'value' p42757 I01 ssS'unique' p42758 (dp42759 S'editable' p42760 I00 sS'value' p42761 I00 ssS'properties' p42762 (dp42763 S'default_value' p42764 (dp42765 S'editable' p42766 I00 sS'value' p42767 NssS'summary_default' p42768 (dp42769 S'editable' p42770 I01 sS'value' p42771 S'none' p42772 ssS'valid_types' p42773 (dp42774 S'editable' p42775 I01 sS'value' p42776 (lp42777 S'HumanUser' p42778 aS'ApiUser' p42779 asssS'description' p42780 (dp42781 S'editable' p42782 I01 sS'value' p42783 g47 sssS'entity' p42784 (dp42785 S'mandatory' p42786 (dp42787 S'editable' p42788 I00 sS'value' p42789 I00 ssS'name' p42790 (dp42791 S'editable' p42792 I01 sS'value' p42793 S'Link' p42794 ssS'data_type' p42795 (dp42796 S'editable' p42797 I00 sS'value' p42798 S'entity' p42799 ssS'entity_type' p42800 (dp42801 S'editable' p42802 I00 sS'value' p42803 S'Version' p42804 ssS'editable' p42805 (dp42806 S'editable' p42807 I00 sS'value' p42808 I01 ssS'unique' p42809 (dp42810 S'editable' p42811 I00 sS'value' p42812 I00 ssS'properties' p42813 (dp42814 S'default_value' p42815 (dp42816 S'editable' p42817 I00 sS'value' p42818 NssS'summary_default' p42819 (dp42820 S'editable' p42821 I01 sS'value' p42822 S'none' p42823 ssS'valid_types' p42824 (dp42825 S'editable' p42826 I01 sS'value' p42827 (lp42828 S'Asset' p42829 aS'Shot' p42830 aS'Sequence' p42831 aS'Scene' p42832 aS'Project' p42833 asssS'description' p42834 (dp42835 S'editable' p42836 I01 sS'value' p42837 g47 sssS'published_files' p42838 (dp42839 S'mandatory' p42840 (dp42841 S'editable' p42842 I00 sS'value' p42843 I00 ssS'name' p42844 (dp42845 S'editable' p42846 I01 sS'value' p42847 S'Published Files' p42848 ssS'data_type' p42849 (dp42850 S'editable' p42851 I00 sS'value' p42852 S'multi_entity' p42853 ssS'entity_type' p42854 (dp42855 S'editable' p42856 I00 sS'value' p42857 S'Version' p42858 ssS'editable' p42859 (dp42860 S'editable' p42861 I00 sS'value' p42862 I01 ssS'unique' p42863 (dp42864 S'editable' p42865 I00 sS'value' p42866 I00 ssS'properties' p42867 (dp42868 S'default_value' p42869 (dp42870 S'editable' p42871 I00 sS'value' p42872 NssS'summary_default' p42873 (dp42874 S'editable' p42875 I01 sS'value' p42876 S'none' p42877 ssS'valid_types' p42878 (dp42879 S'editable' p42880 I01 sS'value' p42881 (lp42882 S'PublishedFile' p42883 asssS'description' p42884 (dp42885 S'editable' p42886 I01 sS'value' p42887 g47 sssS'step_0' p42888 (dp42889 S'mandatory' p42890 (dp42891 S'editable' p42892 I00 sS'value' p42893 I00 ssS'name' p42894 (dp42895 S'editable' p42896 I01 sS'value' p42897 S'ALL TASKS' p42898 ssS'data_type' p42899 (dp42900 S'editable' p42901 I00 sS'value' p42902 S'pivot_column' p42903 ssS'entity_type' p42904 (dp42905 S'editable' p42906 I00 sS'value' p42907 S'Version' p42908 ssS'editable' p42909 (dp42910 S'editable' p42911 I00 sS'value' p42912 I00 ssS'unique' p42913 (dp42914 S'editable' p42915 I00 sS'value' p42916 I00 ssS'properties' p42917 (dp42918 S'default_value' p42919 (dp42920 S'editable' p42921 I00 sS'value' p42922 NssS'summary_default' p42923 (dp42924 S'editable' p42925 I00 sS'value' p42926 S'none' p42927 sssS'description' p42928 (dp42929 S'editable' p42930 I01 sS'value' p42931 g47 sssS'sg_last_frame' p42932 (dp42933 S'mandatory' p42934 (dp42935 S'editable' p42936 I00 sS'value' p42937 I00 ssS'name' p42938 (dp42939 S'editable' p42940 I01 sS'value' p42941 S'Last Frame' p42942 ssS'data_type' p42943 (dp42944 S'editable' p42945 I00 sS'value' p42946 S'number' p42947 ssS'entity_type' p42948 (dp42949 S'editable' p42950 I00 sS'value' p42951 S'Version' p42952 ssS'editable' p42953 (dp42954 S'editable' p42955 I00 sS'value' p42956 I01 ssS'unique' p42957 (dp42958 S'editable' p42959 I00 sS'value' p42960 I00 ssS'properties' p42961 (dp42962 S'default_value' p42963 (dp42964 S'editable' p42965 I00 sS'value' p42966 NssS'summary_default' p42967 (dp42968 S'editable' p42969 I01 sS'value' p42970 S'none' p42971 sssS'description' p42972 (dp42973 S'editable' p42974 I01 sS'value' p42975 S'The last frame number contained in the Version. Used in playback of the movie or frames to calculate the last frame available in the Version.' p42976 sssS'viewed_by_current_user' p42977 (dp42978 S'mandatory' p42979 (dp42980 S'editable' p42981 I00 sS'value' p42982 I00 ssS'name' p42983 (dp42984 S'editable' p42985 I01 sS'value' p42986 S'Viewed/Unviewed' p42987 ssS'data_type' p42988 (dp42989 S'editable' p42990 I00 sS'value' p42991 S'list' p42992 ssS'entity_type' p42993 (dp42994 S'editable' p42995 I00 sS'value' p42996 S'Version' p42997 ssS'editable' p42998 (dp42999 S'editable' p43000 I00 sS'value' p43001 I01 ssS'unique' p43002 (dp43003 S'editable' p43004 I00 sS'value' p43005 I00 ssS'properties' p43006 (dp43007 S'default_value' p43008 (dp43009 S'editable' p43010 I00 sS'value' p43011 NssS'valid_values' p43012 (dp43013 S'editable' p43014 I00 sS'value' p43015 (lp43016 S'read' p43017 aS'unread' p43018 assS'summary_default' p43019 (dp43020 S'editable' p43021 I00 sS'value' p43022 S'none' p43023 sssS'description' p43024 (dp43025 S'editable' p43026 I01 sS'value' p43027 g47 sssS'sg_uploaded_movie_transcoding_status' p43028 (dp43029 S'mandatory' p43030 (dp43031 S'editable' p43032 I00 sS'value' p43033 I00 ssS'name' p43034 (dp43035 S'editable' p43036 I01 sS'value' p43037 S'Uploaded Movie Transcoding Status' p43038 ssS'data_type' p43039 (dp43040 S'editable' p43041 I00 sS'value' p43042 S'number' p43043 ssS'entity_type' p43044 (dp43045 S'editable' p43046 I00 sS'value' p43047 S'Version' p43048 ssS'editable' p43049 (dp43050 S'editable' p43051 I00 sS'value' p43052 I01 ssS'unique' p43053 (dp43054 S'editable' p43055 I00 sS'value' p43056 I00 ssS'properties' p43057 (dp43058 S'default_value' p43059 (dp43060 S'editable' p43061 I00 sS'value' p43062 NssS'summary_default' p43063 (dp43064 S'editable' p43065 I00 sS'value' p43066 S'none' p43067 sssS'description' p43068 (dp43069 S'editable' p43070 I01 sS'value' p43071 g47 sssS'sg_movie_aspect_ratio' p43072 (dp43073 S'mandatory' p43074 (dp43075 S'editable' p43076 I00 sS'value' p43077 I00 ssS'name' p43078 (dp43079 S'editable' p43080 I01 sS'value' p43081 S'Movie Aspect Ratio' p43082 ssS'data_type' p43083 (dp43084 S'editable' p43085 I00 sS'value' p43086 S'float' p43087 ssS'entity_type' p43088 (dp43089 S'editable' p43090 I00 sS'value' p43091 S'Version' p43092 ssS'editable' p43093 (dp43094 S'editable' p43095 I00 sS'value' p43096 I01 ssS'unique' p43097 (dp43098 S'editable' p43099 I00 sS'value' p43100 I00 ssS'properties' p43101 (dp43102 S'default_value' p43103 (dp43104 S'editable' p43105 I00 sS'value' p43106 NssS'summary_default' p43107 (dp43108 S'editable' p43109 I01 sS'value' p43110 S'none' p43111 sssS'description' p43112 (dp43113 S'editable' p43114 I01 sS'value' p43115 S'Aspect ratio of the the movie. Used to format the image correctly for viewing.' p43116 sssS'notes' p43117 (dp43118 S'mandatory' p43119 (dp43120 S'editable' p43121 I00 sS'value' p43122 I00 ssS'name' p43123 (dp43124 S'editable' p43125 I01 sS'value' p43126 S'Notes' p43127 ssS'data_type' p43128 (dp43129 S'editable' p43130 I00 sS'value' p43131 S'multi_entity' p43132 ssS'entity_type' p43133 (dp43134 S'editable' p43135 I00 sS'value' p43136 S'Version' p43137 ssS'editable' p43138 (dp43139 S'editable' p43140 I00 sS'value' p43141 I01 ssS'unique' p43142 (dp43143 S'editable' p43144 I00 sS'value' p43145 I00 ssS'properties' p43146 (dp43147 S'default_value' p43148 (dp43149 S'editable' p43150 I00 sS'value' p43151 NssS'summary_default' p43152 (dp43153 S'editable' p43154 I01 sS'value' p43155 S'none' p43156 ssS'valid_types' p43157 (dp43158 S'editable' p43159 I01 sS'value' p43160 (lp43161 S'Note' p43162 asssS'description' p43163 (dp43164 S'editable' p43165 I01 sS'value' p43166 g47 sssS'project' p43167 (dp43168 S'mandatory' p43169 (dp43170 S'editable' p43171 I00 sS'value' p43172 I00 ssS'name' p43173 (dp43174 S'editable' p43175 I01 sS'value' p43176 S'Project' p43177 ssS'data_type' p43178 (dp43179 S'editable' p43180 I00 sS'value' p43181 S'entity' p43182 ssS'entity_type' p43183 (dp43184 S'editable' p43185 I00 sS'value' p43186 S'Version' p43187 ssS'editable' p43188 (dp43189 S'editable' p43190 I00 sS'value' p43191 I01 ssS'unique' p43192 (dp43193 S'editable' p43194 I00 sS'value' p43195 I00 ssS'properties' p43196 (dp43197 S'default_value' p43198 (dp43199 S'editable' p43200 I00 sS'value' p43201 NssS'summary_default' p43202 (dp43203 S'editable' p43204 I01 sS'value' p43205 S'none' p43206 ssS'valid_types' p43207 (dp43208 S'editable' p43209 I01 sS'value' p43210 (lp43211 S'Project' p43212 asssS'description' p43213 (dp43214 S'editable' p43215 I01 sS'value' p43216 g47 sssS'filmstrip_image' p43217 (dp43218 S'mandatory' p43219 (dp43220 S'editable' p43221 I00 sS'value' p43222 I00 ssS'name' p43223 (dp43224 S'editable' p43225 I01 sS'value' p43226 S'Filmstrip Thumbnail' p43227 ssS'data_type' p43228 (dp43229 S'editable' p43230 I00 sS'value' p43231 S'image' p43232 ssS'entity_type' p43233 (dp43234 S'editable' p43235 I00 sS'value' p43236 S'Version' p43237 ssS'editable' p43238 (dp43239 S'editable' p43240 I00 sS'value' p43241 I01 ssS'unique' p43242 (dp43243 S'editable' p43244 I00 sS'value' p43245 I00 ssS'properties' p43246 (dp43247 S'default_value' p43248 (dp43249 S'editable' p43250 I00 sS'value' p43251 NssS'summary_default' p43252 (dp43253 S'editable' p43254 I01 sS'value' p43255 S'none' p43256 sssS'description' p43257 (dp43258 S'editable' p43259 I01 sS'value' p43260 g47 sssS'tag_list' p43261 (dp43262 S'mandatory' p43263 (dp43264 S'editable' p43265 I00 sS'value' p43266 I00 ssS'name' p43267 (dp43268 S'editable' p43269 I01 sS'value' p43270 S'Tags' p43271 ssS'data_type' p43272 (dp43273 S'editable' p43274 I00 sS'value' p43275 S'tag_list' p43276 ssS'entity_type' p43277 (dp43278 S'editable' p43279 I00 sS'value' p43280 S'Version' p43281 ssS'editable' p43282 (dp43283 S'editable' p43284 I00 sS'value' p43285 I01 ssS'unique' p43286 (dp43287 S'editable' p43288 I00 sS'value' p43289 I00 ssS'properties' p43290 (dp43291 S'default_value' p43292 (dp43293 S'editable' p43294 I00 sS'value' p43295 NssS'summary_default' p43296 (dp43297 S'editable' p43298 I01 sS'value' p43299 S'none' p43300 ssS'valid_types' p43301 (dp43302 S'editable' p43303 I01 sS'value' p43304 (lp43305 S'Tag' p43306 asssS'description' p43307 (dp43308 S'editable' p43309 I01 sS'value' p43310 g47 sssS'frame_count' p43311 (dp43312 S'mandatory' p43313 (dp43314 S'editable' p43315 I00 sS'value' p43316 I00 ssS'name' p43317 (dp43318 S'editable' p43319 I01 sS'value' p43320 S'Frame Count' p43321 ssS'data_type' p43322 (dp43323 S'editable' p43324 I00 sS'value' p43325 S'number' p43326 ssS'entity_type' p43327 (dp43328 S'editable' p43329 I00 sS'value' p43330 S'Version' p43331 ssS'editable' p43332 (dp43333 S'editable' p43334 I00 sS'value' p43335 I01 ssS'unique' p43336 (dp43337 S'editable' p43338 I00 sS'value' p43339 I00 ssS'properties' p43340 (dp43341 S'default_value' p43342 (dp43343 S'editable' p43344 I00 sS'value' p43345 NssS'summary_default' p43346 (dp43347 S'editable' p43348 I01 sS'value' p43349 S'none' p43350 sssS'description' p43351 (dp43352 S'editable' p43353 I01 sS'value' p43354 g47 sssS'flagged' p43355 (dp43356 S'mandatory' p43357 (dp43358 S'editable' p43359 I00 sS'value' p43360 I00 ssS'name' p43361 (dp43362 S'editable' p43363 I01 sS'value' p43364 S'Flagged' p43365 ssS'data_type' p43366 (dp43367 S'editable' p43368 I00 sS'value' p43369 S'checkbox' p43370 ssS'entity_type' p43371 (dp43372 S'editable' p43373 I00 sS'value' p43374 S'Version' p43375 ssS'editable' p43376 (dp43377 S'editable' p43378 I00 sS'value' p43379 I01 ssS'unique' p43380 (dp43381 S'editable' p43382 I00 sS'value' p43383 I00 ssS'properties' p43384 (dp43385 S'default_value' p43386 (dp43387 S'editable' p43388 I00 sS'value' p43389 I00 ssS'summary_default' p43390 (dp43391 S'editable' p43392 I00 sS'value' p43393 S'none' p43394 sssS'description' p43395 (dp43396 S'editable' p43397 I01 sS'value' p43398 g47 ssssS'ElementShotConnection' p43399 (dp43400 S'cached_display_name' p43401 (dp43402 S'mandatory' p43403 (dp43404 S'editable' p43405 I00 sS'value' p43406 I00 ssS'name' p43407 (dp43408 S'editable' p43409 I01 sS'value' p43410 S'Cached Display Name' p43411 ssS'data_type' p43412 (dp43413 S'editable' p43414 I00 sS'value' p43415 S'text' p43416 ssS'entity_type' p43417 (dp43418 S'editable' p43419 I00 sS'value' p43420 S'ElementShotConnection' p43421 ssS'editable' p43422 (dp43423 S'editable' p43424 I00 sS'value' p43425 I01 ssS'unique' p43426 (dp43427 S'editable' p43428 I00 sS'value' p43429 I00 ssS'properties' p43430 (dp43431 S'default_value' p43432 (dp43433 S'editable' p43434 I00 sS'value' p43435 NssS'summary_default' p43436 (dp43437 S'editable' p43438 I00 sS'value' p43439 S'none' p43440 sssS'description' p43441 (dp43442 S'editable' p43443 I01 sS'value' p43444 g47 sssS'shot' p43445 (dp43446 S'mandatory' p43447 (dp43448 S'editable' p43449 I00 sS'value' p43450 I00 ssS'name' p43451 (dp43452 S'editable' p43453 I01 sS'value' p43454 S'Shot' p43455 ssS'data_type' p43456 (dp43457 S'editable' p43458 I00 sS'value' p43459 S'entity' p43460 ssS'entity_type' p43461 (dp43462 S'editable' p43463 I00 sS'value' p43464 S'ElementShotConnection' p43465 ssS'editable' p43466 (dp43467 S'editable' p43468 I00 sS'value' p43469 I00 ssS'unique' p43470 (dp43471 S'editable' p43472 I00 sS'value' p43473 I00 ssS'properties' p43474 (dp43475 S'default_value' p43476 (dp43477 S'editable' p43478 I00 sS'value' p43479 NssS'summary_default' p43480 (dp43481 S'editable' p43482 I00 sS'value' p43483 S'none' p43484 ssS'valid_types' p43485 (dp43486 S'editable' p43487 I00 sS'value' p43488 (lp43489 S'Shot' p43490 asssS'description' p43491 (dp43492 S'editable' p43493 I01 sS'value' p43494 g47 sssS'id' p43495 (dp43496 S'mandatory' p43497 (dp43498 S'editable' p43499 I00 sS'value' p43500 I01 ssS'name' p43501 (dp43502 S'editable' p43503 I01 sS'value' p43504 S'Id' p43505 ssS'data_type' p43506 (dp43507 S'editable' p43508 I00 sS'value' p43509 S'number' p43510 ssS'entity_type' p43511 (dp43512 S'editable' p43513 I00 sS'value' p43514 S'ElementShotConnection' p43515 ssS'editable' p43516 (dp43517 S'editable' p43518 I00 sS'value' p43519 I00 ssS'unique' p43520 (dp43521 S'editable' p43522 I00 sS'value' p43523 I00 ssS'properties' p43524 (dp43525 S'default_value' p43526 (dp43527 S'editable' p43528 I00 sS'value' p43529 NssS'summary_default' p43530 (dp43531 S'editable' p43532 I00 sS'value' p43533 S'none' p43534 sssS'description' p43535 (dp43536 S'editable' p43537 I01 sS'value' p43538 g47 sssS'element' p43539 (dp43540 S'mandatory' p43541 (dp43542 S'editable' p43543 I00 sS'value' p43544 I00 ssS'name' p43545 (dp43546 S'editable' p43547 I01 sS'value' p43548 S'Element' p43549 ssS'data_type' p43550 (dp43551 S'editable' p43552 I00 sS'value' p43553 S'entity' p43554 ssS'entity_type' p43555 (dp43556 S'editable' p43557 I00 sS'value' p43558 S'ElementShotConnection' p43559 ssS'editable' p43560 (dp43561 S'editable' p43562 I00 sS'value' p43563 I00 ssS'unique' p43564 (dp43565 S'editable' p43566 I00 sS'value' p43567 I00 ssS'properties' p43568 (dp43569 S'default_value' p43570 (dp43571 S'editable' p43572 I00 sS'value' p43573 NssS'summary_default' p43574 (dp43575 S'editable' p43576 I00 sS'value' p43577 S'none' p43578 ssS'valid_types' p43579 (dp43580 S'editable' p43581 I00 sS'value' p43582 (lp43583 S'Element' p43584 asssS'description' p43585 (dp43586 S'editable' p43587 I01 sS'value' p43588 g47 ssssS'HumanUser' p43589 (dp43590 S'file_access' p43591 (dp43592 S'mandatory' p43593 (dp43594 S'editable' p43595 I00 sS'value' p43596 I00 ssS'name' p43597 (dp43598 S'editable' p43599 I01 sS'value' p43600 S'File Access' p43601 ssS'data_type' p43602 (dp43603 S'editable' p43604 I00 sS'value' p43605 S'checkbox' p43606 ssS'entity_type' p43607 (dp43608 S'editable' p43609 I00 sS'value' p43610 S'HumanUser' p43611 ssS'editable' p43612 (dp43613 S'editable' p43614 I00 sS'value' p43615 I01 ssS'unique' p43616 (dp43617 S'editable' p43618 I00 sS'value' p43619 I00 ssS'properties' p43620 (dp43621 S'default_value' p43622 (dp43623 S'editable' p43624 I00 sS'value' p43625 I01 ssS'summary_default' p43626 (dp43627 S'editable' p43628 I01 sS'value' p43629 S'none' p43630 sssS'description' p43631 (dp43632 S'editable' p43633 I01 sS'value' p43634 g47 sssS'email_all_deliveries' p43635 (dp43636 S'mandatory' p43637 (dp43638 S'editable' p43639 I00 sS'value' p43640 I00 ssS'name' p43641 (dp43642 S'editable' p43643 I01 sS'value' p43644 S'Subscribe to All Delivery Emails' p43645 ssS'data_type' p43646 (dp43647 S'editable' p43648 I00 sS'value' p43649 S'checkbox' p43650 ssS'entity_type' p43651 (dp43652 S'editable' p43653 I00 sS'value' p43654 S'HumanUser' p43655 ssS'editable' p43656 (dp43657 S'editable' p43658 I00 sS'value' p43659 I01 ssS'unique' p43660 (dp43661 S'editable' p43662 I00 sS'value' p43663 I00 ssS'properties' p43664 (dp43665 S'default_value' p43666 (dp43667 S'editable' p43668 I00 sS'value' p43669 I00 ssS'summary_default' p43670 (dp43671 S'editable' p43672 I01 sS'value' p43673 S'none' p43674 sssS'description' p43675 (dp43676 S'editable' p43677 I01 sS'value' p43678 g47 sssS'email_notes' p43679 (dp43680 S'mandatory' p43681 (dp43682 S'editable' p43683 I00 sS'value' p43684 I00 ssS'name' p43685 (dp43686 S'editable' p43687 I01 sS'value' p43688 S'Subscribe to My Notes Emails' p43689 ssS'data_type' p43690 (dp43691 S'editable' p43692 I00 sS'value' p43693 S'checkbox' p43694 ssS'entity_type' p43695 (dp43696 S'editable' p43697 I00 sS'value' p43698 S'HumanUser' p43699 ssS'editable' p43700 (dp43701 S'editable' p43702 I00 sS'value' p43703 I01 ssS'unique' p43704 (dp43705 S'editable' p43706 I00 sS'value' p43707 I00 ssS'properties' p43708 (dp43709 S'default_value' p43710 (dp43711 S'editable' p43712 I00 sS'value' p43713 I00 ssS'summary_default' p43714 (dp43715 S'editable' p43716 I01 sS'value' p43717 S'none' p43718 sssS'description' p43719 (dp43720 S'editable' p43721 I01 sS'value' p43722 g47 sssS'image' p43723 (dp43724 S'mandatory' p43725 (dp43726 S'editable' p43727 I00 sS'value' p43728 I00 ssS'name' p43729 (dp43730 S'editable' p43731 I01 sS'value' p43732 S'Thumbnail' p43733 ssS'data_type' p43734 (dp43735 S'editable' p43736 I00 sS'value' p43737 S'image' p43738 ssS'entity_type' p43739 (dp43740 S'editable' p43741 I00 sS'value' p43742 S'HumanUser' p43743 ssS'editable' p43744 (dp43745 S'editable' p43746 I00 sS'value' p43747 I01 ssS'unique' p43748 (dp43749 S'editable' p43750 I00 sS'value' p43751 I00 ssS'properties' p43752 (dp43753 S'default_value' p43754 (dp43755 S'editable' p43756 I00 sS'value' p43757 NssS'summary_default' p43758 (dp43759 S'editable' p43760 I01 sS'value' p43761 S'none' p43762 sssS'description' p43763 (dp43764 S'editable' p43765 I01 sS'value' p43766 g47 sssS'updated_at' p43767 (dp43768 S'mandatory' p43769 (dp43770 S'editable' p43771 I00 sS'value' p43772 I00 ssS'name' p43773 (dp43774 S'editable' p43775 I01 sS'value' p43776 S'Date Updated' p43777 ssS'data_type' p43778 (dp43779 S'editable' p43780 I00 sS'value' p43781 S'date_time' p43782 ssS'entity_type' p43783 (dp43784 S'editable' p43785 I00 sS'value' p43786 S'HumanUser' p43787 ssS'editable' p43788 (dp43789 S'editable' p43790 I00 sS'value' p43791 I00 ssS'unique' p43792 (dp43793 S'editable' p43794 I00 sS'value' p43795 I00 ssS'properties' p43796 (dp43797 S'default_value' p43798 (dp43799 S'editable' p43800 I00 sS'value' p43801 NssS'summary_default' p43802 (dp43803 S'editable' p43804 I01 sS'value' p43805 S'none' p43806 sssS'description' p43807 (dp43808 S'editable' p43809 I01 sS'value' p43810 g47 sssS'password_change_next_login' p43811 (dp43812 S'mandatory' p43813 (dp43814 S'editable' p43815 I00 sS'value' p43816 I00 ssS'name' p43817 (dp43818 S'editable' p43819 I01 sS'value' p43820 S'Require a change of password at the next sign in' p43821 ssS'data_type' p43822 (dp43823 S'editable' p43824 I00 sS'value' p43825 S'checkbox' p43826 ssS'entity_type' p43827 (dp43828 S'editable' p43829 I00 sS'value' p43830 S'HumanUser' p43831 ssS'editable' p43832 (dp43833 S'editable' p43834 I00 sS'value' p43835 I01 ssS'unique' p43836 (dp43837 S'editable' p43838 I00 sS'value' p43839 I00 ssS'properties' p43840 (dp43841 S'default_value' p43842 (dp43843 S'editable' p43844 I00 sS'value' p43845 I00 ssS'summary_default' p43846 (dp43847 S'editable' p43848 I00 sS'value' p43849 S'none' p43850 sssS'description' p43851 (dp43852 S'editable' p43853 I01 sS'value' p43854 g47 sssS'email_inbox_general' p43855 (dp43856 S'mandatory' p43857 (dp43858 S'editable' p43859 I00 sS'value' p43860 I00 ssS'name' p43861 (dp43862 S'editable' p43863 I01 sS'value' p43864 S'Subscribe to My Inbox Update Emails' p43865 ssS'data_type' p43866 (dp43867 S'editable' p43868 I00 sS'value' p43869 S'checkbox' p43870 ssS'entity_type' p43871 (dp43872 S'editable' p43873 I00 sS'value' p43874 S'HumanUser' p43875 ssS'editable' p43876 (dp43877 S'editable' p43878 I00 sS'value' p43879 I01 ssS'unique' p43880 (dp43881 S'editable' p43882 I00 sS'value' p43883 I00 ssS'properties' p43884 (dp43885 S'default_value' p43886 (dp43887 S'editable' p43888 I00 sS'value' p43889 NssS'summary_default' p43890 (dp43891 S'editable' p43892 I01 sS'value' p43893 S'none' p43894 sssS'description' p43895 (dp43896 S'editable' p43897 I01 sS'value' p43898 g47 sssS'bookings' p43899 (dp43900 S'mandatory' p43901 (dp43902 S'editable' p43903 I00 sS'value' p43904 I00 ssS'name' p43905 (dp43906 S'editable' p43907 I01 sS'value' p43908 S'Bookings' p43909 ssS'data_type' p43910 (dp43911 S'editable' p43912 I00 sS'value' p43913 S'multi_entity' p43914 ssS'entity_type' p43915 (dp43916 S'editable' p43917 I00 sS'value' p43918 S'HumanUser' p43919 ssS'editable' p43920 (dp43921 S'editable' p43922 I00 sS'value' p43923 I00 ssS'unique' p43924 (dp43925 S'editable' p43926 I00 sS'value' p43927 I00 ssS'properties' p43928 (dp43929 S'default_value' p43930 (dp43931 S'editable' p43932 I00 sS'value' p43933 NssS'summary_default' p43934 (dp43935 S'editable' p43936 I00 sS'value' p43937 S'none' p43938 ssS'valid_types' p43939 (dp43940 S'editable' p43941 I00 sS'value' p43942 (lp43943 S'Booking' p43944 asssS'description' p43945 (dp43946 S'editable' p43947 I01 sS'value' p43948 g47 sssS'banners' p43949 (dp43950 S'mandatory' p43951 (dp43952 S'editable' p43953 I00 sS'value' p43954 I00 ssS'name' p43955 (dp43956 S'editable' p43957 I01 sS'value' p43958 S'Banners' p43959 ssS'data_type' p43960 (dp43961 S'editable' p43962 I00 sS'value' p43963 S'multi_entity' p43964 ssS'entity_type' p43965 (dp43966 S'editable' p43967 I00 sS'value' p43968 S'HumanUser' p43969 ssS'editable' p43970 (dp43971 S'editable' p43972 I00 sS'value' p43973 I01 ssS'unique' p43974 (dp43975 S'editable' p43976 I00 sS'value' p43977 I00 ssS'properties' p43978 (dp43979 S'default_value' p43980 (dp43981 S'editable' p43982 I00 sS'value' p43983 NssS'summary_default' p43984 (dp43985 S'editable' p43986 I00 sS'value' p43987 S'none' p43988 ssS'valid_types' p43989 (dp43990 S'editable' p43991 I00 sS'value' p43992 (lp43993 S'Banners' p43994 asssS'description' p43995 (dp43996 S'editable' p43997 I01 sS'value' p43998 g47 sssS'locked_until' p43999 (dp44000 S'mandatory' p44001 (dp44002 S'editable' p44003 I00 sS'value' p44004 I00 ssS'name' p44005 (dp44006 S'editable' p44007 I01 sS'value' p44008 S'Locked Until' p44009 ssS'data_type' p44010 (dp44011 S'editable' p44012 I00 sS'value' p44013 S'date_time' p44014 ssS'entity_type' p44015 (dp44016 S'editable' p44017 I00 sS'value' p44018 S'HumanUser' p44019 ssS'editable' p44020 (dp44021 S'editable' p44022 I00 sS'value' p44023 I01 ssS'unique' p44024 (dp44025 S'editable' p44026 I00 sS'value' p44027 I00 ssS'properties' p44028 (dp44029 S'default_value' p44030 (dp44031 S'editable' p44032 I00 sS'value' p44033 NssS'summary_default' p44034 (dp44035 S'editable' p44036 I00 sS'value' p44037 S'none' p44038 sssS'description' p44039 (dp44040 S'editable' p44041 I01 sS'value' p44042 g47 sssS'password_proxy' p44043 (dp44044 S'mandatory' p44045 (dp44046 S'editable' p44047 I00 sS'value' p44048 I00 ssS'name' p44049 (dp44050 S'editable' p44051 I01 sS'value' p44052 S'Password' p44053 ssS'data_type' p44054 (dp44055 S'editable' p44056 I00 sS'value' p44057 S'password' p44058 ssS'entity_type' p44059 (dp44060 S'editable' p44061 I00 sS'value' p44062 S'HumanUser' p44063 ssS'editable' p44064 (dp44065 S'editable' p44066 I00 sS'value' p44067 I00 ssS'unique' p44068 (dp44069 S'editable' p44070 I00 sS'value' p44071 I00 ssS'properties' p44072 (dp44073 S'default_value' p44074 (dp44075 S'editable' p44076 I00 sS'value' p44077 NssS'summary_default' p44078 (dp44079 S'editable' p44080 I01 sS'value' p44081 S'none' p44082 sssS'description' p44083 (dp44084 S'editable' p44085 I01 sS'value' p44086 g47 sssS'cached_display_name' p44087 (dp44088 S'mandatory' p44089 (dp44090 S'editable' p44091 I00 sS'value' p44092 I00 ssS'name' p44093 (dp44094 S'editable' p44095 I01 sS'value' p44096 S'Cached Display Name' p44097 ssS'data_type' p44098 (dp44099 S'editable' p44100 I00 sS'value' p44101 S'text' p44102 ssS'entity_type' p44103 (dp44104 S'editable' p44105 I00 sS'value' p44106 S'HumanUser' p44107 ssS'editable' p44108 (dp44109 S'editable' p44110 I00 sS'value' p44111 I01 ssS'unique' p44112 (dp44113 S'editable' p44114 I00 sS'value' p44115 I00 ssS'properties' p44116 (dp44117 S'default_value' p44118 (dp44119 S'editable' p44120 I00 sS'value' p44121 NssS'summary_default' p44122 (dp44123 S'editable' p44124 I00 sS'value' p44125 S'none' p44126 sssS'description' p44127 (dp44128 S'editable' p44129 I01 sS'value' p44130 g47 sssS'id' p44131 (dp44132 S'mandatory' p44133 (dp44134 S'editable' p44135 I00 sS'value' p44136 I00 ssS'name' p44137 (dp44138 S'editable' p44139 I01 sS'value' p44140 S'Id' p44141 ssS'data_type' p44142 (dp44143 S'editable' p44144 I00 sS'value' p44145 S'number' p44146 ssS'entity_type' p44147 (dp44148 S'editable' p44149 I00 sS'value' p44150 S'HumanUser' p44151 ssS'editable' p44152 (dp44153 S'editable' p44154 I00 sS'value' p44155 I00 ssS'unique' p44156 (dp44157 S'editable' p44158 I00 sS'value' p44159 I00 ssS'properties' p44160 (dp44161 S'default_value' p44162 (dp44163 S'editable' p44164 I00 sS'value' p44165 NssS'summary_default' p44166 (dp44167 S'editable' p44168 I01 sS'value' p44169 S'none' p44170 sssS'description' p44171 (dp44172 S'editable' p44173 I01 sS'value' p44174 g47 sssS'email_version_link_cc' p44175 (dp44176 S'mandatory' p44177 (dp44178 S'editable' p44179 I00 sS'value' p44180 I00 ssS'name' p44181 (dp44182 S'editable' p44183 I01 sS'value' p44184 S"Subscribe to Version Emails for CC'd Link" p44185 ssS'data_type' p44186 (dp44187 S'editable' p44188 I00 sS'value' p44189 S'checkbox' p44190 ssS'entity_type' p44191 (dp44192 S'editable' p44193 I00 sS'value' p44194 S'HumanUser' p44195 ssS'editable' p44196 (dp44197 S'editable' p44198 I00 sS'value' p44199 I01 ssS'unique' p44200 (dp44201 S'editable' p44202 I00 sS'value' p44203 I00 ssS'properties' p44204 (dp44205 S'default_value' p44206 (dp44207 S'editable' p44208 I00 sS'value' p44209 I00 ssS'summary_default' p44210 (dp44211 S'editable' p44212 I01 sS'value' p44213 S'none' p44214 sssS'description' p44215 (dp44216 S'editable' p44217 I01 sS'value' p44218 g47 sssS'home_page' p44219 (dp44220 S'mandatory' p44221 (dp44222 S'editable' p44223 I00 sS'value' p44224 I00 ssS'name' p44225 (dp44226 S'editable' p44227 I01 sS'value' p44228 S'Home Page' p44229 ssS'data_type' p44230 (dp44231 S'editable' p44232 I00 sS'value' p44233 S'list' p44234 ssS'entity_type' p44235 (dp44236 S'editable' p44237 I00 sS'value' p44238 S'HumanUser' p44239 ssS'editable' p44240 (dp44241 S'editable' p44242 I00 sS'value' p44243 I01 ssS'unique' p44244 (dp44245 S'editable' p44246 I00 sS'value' p44247 I00 ssS'properties' p44248 (dp44249 S'default_value' p44250 (dp44251 S'editable' p44252 I00 sS'value' p44253 NssS'valid_values' p44254 (dp44255 S'editable' p44256 I00 sS'value' p44257 (lp44258 S'home' p44259 aS'inbox' p44260 aS'my_tasks' p44261 aS'new_user_welcome' p44262 assS'summary_default' p44263 (dp44264 S'editable' p44265 I00 sS'value' p44266 S'none' p44267 sssS'description' p44268 (dp44269 S'editable' p44270 I01 sS'value' p44271 g47 sssS'email_versions' p44272 (dp44273 S'mandatory' p44274 (dp44275 S'editable' p44276 I00 sS'value' p44277 I00 ssS'name' p44278 (dp44279 S'editable' p44280 I01 sS'value' p44281 S'Subscribe to My Version Emails' p44282 ssS'data_type' p44283 (dp44284 S'editable' p44285 I00 sS'value' p44286 S'checkbox' p44287 ssS'entity_type' p44288 (dp44289 S'editable' p44290 I00 sS'value' p44291 S'HumanUser' p44292 ssS'editable' p44293 (dp44294 S'editable' p44295 I00 sS'value' p44296 I01 ssS'unique' p44297 (dp44298 S'editable' p44299 I00 sS'value' p44300 I00 ssS'properties' p44301 (dp44302 S'default_value' p44303 (dp44304 S'editable' p44305 I00 sS'value' p44306 I00 ssS'summary_default' p44307 (dp44308 S'editable' p44309 I01 sS'value' p44310 S'none' p44311 sssS'description' p44312 (dp44313 S'editable' p44314 I01 sS'value' p44315 g47 sssS'created_by' p44316 (dp44317 S'mandatory' p44318 (dp44319 S'editable' p44320 I00 sS'value' p44321 I00 ssS'name' p44322 (dp44323 S'editable' p44324 I01 sS'value' p44325 S'Created by' p44326 ssS'data_type' p44327 (dp44328 S'editable' p44329 I00 sS'value' p44330 S'entity' p44331 ssS'entity_type' p44332 (dp44333 S'editable' p44334 I00 sS'value' p44335 S'HumanUser' p44336 ssS'editable' p44337 (dp44338 S'editable' p44339 I00 sS'value' p44340 I00 ssS'unique' p44341 (dp44342 S'editable' p44343 I00 sS'value' p44344 I00 ssS'properties' p44345 (dp44346 S'default_value' p44347 (dp44348 S'editable' p44349 I00 sS'value' p44350 NssS'summary_default' p44351 (dp44352 S'editable' p44353 I01 sS'value' p44354 S'none' p44355 ssS'valid_types' p44356 (dp44357 S'editable' p44358 I01 sS'value' p44359 (lp44360 S'HumanUser' p44361 aS'ApiUser' p44362 asssS'description' p44363 (dp44364 S'editable' p44365 I01 sS'value' p44366 g47 sssS'sg_status_list' p44367 (dp44368 S'mandatory' p44369 (dp44370 S'editable' p44371 I00 sS'value' p44372 I00 ssS'name' p44373 (dp44374 S'editable' p44375 I01 sS'value' p44376 S'Status' p44377 ssS'data_type' p44378 (dp44379 S'editable' p44380 I00 sS'value' p44381 S'status_list' p44382 ssS'entity_type' p44383 (dp44384 S'editable' p44385 I00 sS'value' p44386 S'HumanUser' p44387 ssS'editable' p44388 (dp44389 S'editable' p44390 I00 sS'value' p44391 I01 ssS'unique' p44392 (dp44393 S'editable' p44394 I00 sS'value' p44395 I00 ssS'properties' p44396 (dp44397 S'default_value' p44398 (dp44399 S'editable' p44400 I01 sS'value' p44401 S'act' p44402 ssS'valid_values' p44403 (dp44404 S'editable' p44405 I01 sS'value' p44406 (lp44407 S'act' p44408 aS'dis' p44409 assS'summary_default' p44410 (dp44411 S'editable' p44412 I01 sS'value' p44413 S'none' p44414 sssS'description' p44415 (dp44416 S'editable' p44417 I01 sS'value' p44418 g47 sssS'department' p44419 (dp44420 S'mandatory' p44421 (dp44422 S'editable' p44423 I00 sS'value' p44424 I00 ssS'name' p44425 (dp44426 S'editable' p44427 I01 sS'value' p44428 S'Department' p44429 ssS'data_type' p44430 (dp44431 S'editable' p44432 I00 sS'value' p44433 S'entity' p44434 ssS'entity_type' p44435 (dp44436 S'editable' p44437 I00 sS'value' p44438 S'HumanUser' p44439 ssS'editable' p44440 (dp44441 S'editable' p44442 I00 sS'value' p44443 I01 ssS'unique' p44444 (dp44445 S'editable' p44446 I00 sS'value' p44447 I00 ssS'properties' p44448 (dp44449 S'default_value' p44450 (dp44451 S'editable' p44452 I00 sS'value' p44453 NssS'summary_default' p44454 (dp44455 S'editable' p44456 I01 sS'value' p44457 S'none' p44458 ssS'valid_types' p44459 (dp44460 S'editable' p44461 I01 sS'value' p44462 (lp44463 S'Department' p44464 asssS'description' p44465 (dp44466 S'editable' p44467 I01 sS'value' p44468 g47 sssS'email_tickets' p44469 (dp44470 S'mandatory' p44471 (dp44472 S'editable' p44473 I00 sS'value' p44474 I00 ssS'name' p44475 (dp44476 S'editable' p44477 I01 sS'value' p44478 S'Subscribe to My Tickets Emails' p44479 ssS'data_type' p44480 (dp44481 S'editable' p44482 I00 sS'value' p44483 S'checkbox' p44484 ssS'entity_type' p44485 (dp44486 S'editable' p44487 I00 sS'value' p44488 S'HumanUser' p44489 ssS'editable' p44490 (dp44491 S'editable' p44492 I00 sS'value' p44493 I01 ssS'unique' p44494 (dp44495 S'editable' p44496 I00 sS'value' p44497 I00 ssS'properties' p44498 (dp44499 S'default_value' p44500 (dp44501 S'editable' p44502 I00 sS'value' p44503 I00 ssS'summary_default' p44504 (dp44505 S'editable' p44506 I01 sS'value' p44507 S'none' p44508 sssS'description' p44509 (dp44510 S'editable' p44511 I01 sS'value' p44512 g47 sssS'email' p44513 (dp44514 S'mandatory' p44515 (dp44516 S'editable' p44517 I00 sS'value' p44518 I00 ssS'name' p44519 (dp44520 S'editable' p44521 I01 sS'value' p44522 S'Email' p44523 ssS'data_type' p44524 (dp44525 S'editable' p44526 I00 sS'value' p44527 S'text' p44528 ssS'entity_type' p44529 (dp44530 S'editable' p44531 I00 sS'value' p44532 S'HumanUser' p44533 ssS'editable' p44534 (dp44535 S'editable' p44536 I00 sS'value' p44537 I01 ssS'unique' p44538 (dp44539 S'editable' p44540 I00 sS'value' p44541 I00 ssS'properties' p44542 (dp44543 S'default_value' p44544 (dp44545 S'editable' p44546 I00 sS'value' p44547 g47 ssS'summary_default' p44548 (dp44549 S'editable' p44550 I01 sS'value' p44551 S'none' p44552 sssS'description' p44553 (dp44554 S'editable' p44555 I01 sS'value' p44556 g47 sssS'pipeline_configurations' p44557 (dp44558 S'mandatory' p44559 (dp44560 S'editable' p44561 I00 sS'value' p44562 I00 ssS'name' p44563 (dp44564 S'editable' p44565 I01 sS'value' p44566 S'Pipeline Configurations' p44567 ssS'data_type' p44568 (dp44569 S'editable' p44570 I00 sS'value' p44571 S'multi_entity' p44572 ssS'entity_type' p44573 (dp44574 S'editable' p44575 I00 sS'value' p44576 S'HumanUser' p44577 ssS'editable' p44578 (dp44579 S'editable' p44580 I00 sS'value' p44581 I01 ssS'unique' p44582 (dp44583 S'editable' p44584 I00 sS'value' p44585 I00 ssS'properties' p44586 (dp44587 S'default_value' p44588 (dp44589 S'editable' p44590 I00 sS'value' p44591 NssS'summary_default' p44592 (dp44593 S'editable' p44594 I00 sS'value' p44595 S'none' p44596 ssS'valid_types' p44597 (dp44598 S'editable' p44599 I00 sS'value' p44600 (lp44601 S'PipelineConfiguration' p44602 asssS'description' p44603 (dp44604 S'editable' p44605 I01 sS'value' p44606 g47 sssS'password_strength' p44607 (dp44608 S'mandatory' p44609 (dp44610 S'editable' p44611 I00 sS'value' p44612 I00 ssS'name' p44613 (dp44614 S'editable' p44615 I01 sS'value' p44616 S'Password Strength' p44617 ssS'data_type' p44618 (dp44619 S'editable' p44620 I00 sS'value' p44621 S'float' p44622 ssS'entity_type' p44623 (dp44624 S'editable' p44625 I00 sS'value' p44626 S'HumanUser' p44627 ssS'editable' p44628 (dp44629 S'editable' p44630 I00 sS'value' p44631 I01 ssS'unique' p44632 (dp44633 S'editable' p44634 I00 sS'value' p44635 I00 ssS'properties' p44636 (dp44637 S'default_value' p44638 (dp44639 S'editable' p44640 I00 sS'value' p44641 NssS'summary_default' p44642 (dp44643 S'editable' p44644 I00 sS'value' p44645 S'none' p44646 sssS'description' p44647 (dp44648 S'editable' p44649 I01 sS'value' p44650 g47 sssS'updated_by' p44651 (dp44652 S'mandatory' p44653 (dp44654 S'editable' p44655 I00 sS'value' p44656 I00 ssS'name' p44657 (dp44658 S'editable' p44659 I01 sS'value' p44660 S'Updated by' p44661 ssS'data_type' p44662 (dp44663 S'editable' p44664 I00 sS'value' p44665 S'entity' p44666 ssS'entity_type' p44667 (dp44668 S'editable' p44669 I00 sS'value' p44670 S'HumanUser' p44671 ssS'editable' p44672 (dp44673 S'editable' p44674 I00 sS'value' p44675 I00 ssS'unique' p44676 (dp44677 S'editable' p44678 I00 sS'value' p44679 I00 ssS'properties' p44680 (dp44681 S'default_value' p44682 (dp44683 S'editable' p44684 I00 sS'value' p44685 NssS'summary_default' p44686 (dp44687 S'editable' p44688 I01 sS'value' p44689 S'none' p44690 ssS'valid_types' p44691 (dp44692 S'editable' p44693 I01 sS'value' p44694 (lp44695 S'HumanUser' p44696 aS'ApiUser' p44697 asssS'description' p44698 (dp44699 S'editable' p44700 I01 sS'value' p44701 g47 sssS'firstname' p44702 (dp44703 S'mandatory' p44704 (dp44705 S'editable' p44706 I00 sS'value' p44707 I00 ssS'name' p44708 (dp44709 S'editable' p44710 I01 sS'value' p44711 S'First Name' p44712 ssS'data_type' p44713 (dp44714 S'editable' p44715 I00 sS'value' p44716 S'text' p44717 ssS'entity_type' p44718 (dp44719 S'editable' p44720 I00 sS'value' p44721 S'HumanUser' p44722 ssS'editable' p44723 (dp44724 S'editable' p44725 I00 sS'value' p44726 I01 ssS'unique' p44727 (dp44728 S'editable' p44729 I00 sS'value' p44730 I00 ssS'properties' p44731 (dp44732 S'default_value' p44733 (dp44734 S'editable' p44735 I00 sS'value' p44736 NssS'summary_default' p44737 (dp44738 S'editable' p44739 I01 sS'value' p44740 S'none' p44741 sssS'description' p44742 (dp44743 S'editable' p44744 I01 sS'value' p44745 g47 sssS'app_welcomes' p44746 (dp44747 S'mandatory' p44748 (dp44749 S'editable' p44750 I00 sS'value' p44751 I00 ssS'name' p44752 (dp44753 S'editable' p44754 I01 sS'value' p44755 S'App Welcomes' p44756 ssS'data_type' p44757 (dp44758 S'editable' p44759 I00 sS'value' p44760 S'multi_entity' p44761 ssS'entity_type' p44762 (dp44763 S'editable' p44764 I00 sS'value' p44765 S'HumanUser' p44766 ssS'editable' p44767 (dp44768 S'editable' p44769 I00 sS'value' p44770 I01 ssS'unique' p44771 (dp44772 S'editable' p44773 I00 sS'value' p44774 I00 ssS'properties' p44775 (dp44776 S'default_value' p44777 (dp44778 S'editable' p44779 I00 sS'value' p44780 NssS'summary_default' p44781 (dp44782 S'editable' p44783 I00 sS'value' p44784 S'none' p44785 ssS'valid_types' p44786 (dp44787 S'editable' p44788 I00 sS'value' p44789 (lp44790 S'AppWelcome' p44791 asssS'description' p44792 (dp44793 S'editable' p44794 I01 sS'value' p44795 g47 sssS'lastname' p44796 (dp44797 S'mandatory' p44798 (dp44799 S'editable' p44800 I00 sS'value' p44801 I00 ssS'name' p44802 (dp44803 S'editable' p44804 I01 sS'value' p44805 S'Last Name' p44806 ssS'data_type' p44807 (dp44808 S'editable' p44809 I00 sS'value' p44810 S'text' p44811 ssS'entity_type' p44812 (dp44813 S'editable' p44814 I00 sS'value' p44815 S'HumanUser' p44816 ssS'editable' p44817 (dp44818 S'editable' p44819 I00 sS'value' p44820 I01 ssS'unique' p44821 (dp44822 S'editable' p44823 I00 sS'value' p44824 I00 ssS'properties' p44825 (dp44826 S'default_value' p44827 (dp44828 S'editable' p44829 I00 sS'value' p44830 NssS'summary_default' p44831 (dp44832 S'editable' p44833 I01 sS'value' p44834 S'none' p44835 sssS'description' p44836 (dp44837 S'editable' p44838 I01 sS'value' p44839 g47 sssS'groups' p44840 (dp44841 S'mandatory' p44842 (dp44843 S'editable' p44844 I00 sS'value' p44845 I00 ssS'name' p44846 (dp44847 S'editable' p44848 I01 sS'value' p44849 S'Groups' p44850 ssS'data_type' p44851 (dp44852 S'editable' p44853 I00 sS'value' p44854 S'multi_entity' p44855 ssS'entity_type' p44856 (dp44857 S'editable' p44858 I00 sS'value' p44859 S'HumanUser' p44860 ssS'editable' p44861 (dp44862 S'editable' p44863 I00 sS'value' p44864 I01 ssS'unique' p44865 (dp44866 S'editable' p44867 I00 sS'value' p44868 I00 ssS'properties' p44869 (dp44870 S'default_value' p44871 (dp44872 S'editable' p44873 I00 sS'value' p44874 NssS'summary_default' p44875 (dp44876 S'editable' p44877 I01 sS'value' p44878 S'none' p44879 ssS'valid_types' p44880 (dp44881 S'editable' p44882 I01 sS'value' p44883 (lp44884 S'Group' p44885 asssS'description' p44886 (dp44887 S'editable' p44888 I01 sS'value' p44889 g47 sssS'email_all_versions' p44890 (dp44891 S'mandatory' p44892 (dp44893 S'editable' p44894 I00 sS'value' p44895 I00 ssS'name' p44896 (dp44897 S'editable' p44898 I01 sS'value' p44899 S'Subscribe to All Version Emails' p44900 ssS'data_type' p44901 (dp44902 S'editable' p44903 I00 sS'value' p44904 S'checkbox' p44905 ssS'entity_type' p44906 (dp44907 S'editable' p44908 I00 sS'value' p44909 S'HumanUser' p44910 ssS'editable' p44911 (dp44912 S'editable' p44913 I00 sS'value' p44914 I01 ssS'unique' p44915 (dp44916 S'editable' p44917 I00 sS'value' p44918 I00 ssS'properties' p44919 (dp44920 S'default_value' p44921 (dp44922 S'editable' p44923 I00 sS'value' p44924 I00 ssS'summary_default' p44925 (dp44926 S'editable' p44927 I01 sS'value' p44928 S'none' p44929 sssS'description' p44930 (dp44931 S'editable' p44932 I01 sS'value' p44933 g47 sssS'email_inbox_notes' p44934 (dp44935 S'mandatory' p44936 (dp44937 S'editable' p44938 I00 sS'value' p44939 I00 ssS'name' p44940 (dp44941 S'editable' p44942 I01 sS'value' p44943 S'Subscribe to My Inbox Note Emails' p44944 ssS'data_type' p44945 (dp44946 S'editable' p44947 I00 sS'value' p44948 S'checkbox' p44949 ssS'entity_type' p44950 (dp44951 S'editable' p44952 I00 sS'value' p44953 S'HumanUser' p44954 ssS'editable' p44955 (dp44956 S'editable' p44957 I00 sS'value' p44958 I01 ssS'unique' p44959 (dp44960 S'editable' p44961 I00 sS'value' p44962 I00 ssS'properties' p44963 (dp44964 S'default_value' p44965 (dp44966 S'editable' p44967 I00 sS'value' p44968 NssS'summary_default' p44969 (dp44970 S'editable' p44971 I01 sS'value' p44972 S'none' p44973 sssS'description' p44974 (dp44975 S'editable' p44976 I01 sS'value' p44977 g47 sssS'projects' p44978 (dp44979 S'mandatory' p44980 (dp44981 S'editable' p44982 I00 sS'value' p44983 I00 ssS'name' p44984 (dp44985 S'editable' p44986 I01 sS'value' p44987 S'Projects' p44988 ssS'data_type' p44989 (dp44990 S'editable' p44991 I00 sS'value' p44992 S'multi_entity' p44993 ssS'entity_type' p44994 (dp44995 S'editable' p44996 I00 sS'value' p44997 S'HumanUser' p44998 ssS'editable' p44999 (dp45000 S'editable' p45001 I00 sS'value' p45002 I01 ssS'unique' p45003 (dp45004 S'editable' p45005 I00 sS'value' p45006 I00 ssS'properties' p45007 (dp45008 S'default_value' p45009 (dp45010 S'editable' p45011 I00 sS'value' p45012 NssS'summary_default' p45013 (dp45014 S'editable' p45015 I01 sS'value' p45016 S'none' p45017 ssS'valid_types' p45018 (dp45019 S'editable' p45020 I01 sS'value' p45021 (lp45022 S'Project' p45023 asssS'description' p45024 (dp45025 S'editable' p45026 I01 sS'value' p45027 g47 sssS'enable_tank_integration' p45028 (dp45029 S'mandatory' p45030 (dp45031 S'editable' p45032 I00 sS'value' p45033 I00 ssS'name' p45034 (dp45035 S'editable' p45036 I01 sS'value' p45037 S'Enable Tank Integration' p45038 ssS'data_type' p45039 (dp45040 S'editable' p45041 I00 sS'value' p45042 S'checkbox' p45043 ssS'entity_type' p45044 (dp45045 S'editable' p45046 I00 sS'value' p45047 S'HumanUser' p45048 ssS'editable' p45049 (dp45050 S'editable' p45051 I00 sS'value' p45052 I01 ssS'unique' p45053 (dp45054 S'editable' p45055 I00 sS'value' p45056 I00 ssS'properties' p45057 (dp45058 S'default_value' p45059 (dp45060 S'editable' p45061 I00 sS'value' p45062 I01 ssS'summary_default' p45063 (dp45064 S'editable' p45065 I01 sS'value' p45066 S'none' p45067 sssS'description' p45068 (dp45069 S'editable' p45070 I01 sS'value' p45071 g47 sssS'email_deliveries' p45072 (dp45073 S'mandatory' p45074 (dp45075 S'editable' p45076 I00 sS'value' p45077 I00 ssS'name' p45078 (dp45079 S'editable' p45080 I01 sS'value' p45081 S'Subscribe to My Deliveries Emails' p45082 ssS'data_type' p45083 (dp45084 S'editable' p45085 I00 sS'value' p45086 S'checkbox' p45087 ssS'entity_type' p45088 (dp45089 S'editable' p45090 I00 sS'value' p45091 S'HumanUser' p45092 ssS'editable' p45093 (dp45094 S'editable' p45095 I00 sS'value' p45096 I01 ssS'unique' p45097 (dp45098 S'editable' p45099 I00 sS'value' p45100 I00 ssS'properties' p45101 (dp45102 S'default_value' p45103 (dp45104 S'editable' p45105 I00 sS'value' p45106 I00 ssS'summary_default' p45107 (dp45108 S'editable' p45109 I01 sS'value' p45110 S'none' p45111 sssS'description' p45112 (dp45113 S'editable' p45114 I01 sS'value' p45115 g47 sssS'name' p45116 (dp45117 S'mandatory' p45118 (dp45119 S'editable' p45120 I00 sS'value' p45121 I01 ssS'name' p45122 (dp45123 S'editable' p45124 I01 sS'value' p45125 S'Name' p45126 ssS'data_type' p45127 (dp45128 S'editable' p45129 I00 sS'value' p45130 S'text' p45131 ssS'entity_type' p45132 (dp45133 S'editable' p45134 I00 sS'value' p45135 S'HumanUser' p45136 ssS'editable' p45137 (dp45138 S'editable' p45139 I00 sS'value' p45140 I01 ssS'unique' p45141 (dp45142 S'editable' p45143 I00 sS'value' p45144 I00 ssS'properties' p45145 (dp45146 S'default_value' p45147 (dp45148 S'editable' p45149 I00 sS'value' p45150 NssS'summary_default' p45151 (dp45152 S'editable' p45153 I01 sS'value' p45154 S'none' p45155 sssS'description' p45156 (dp45157 S'editable' p45158 I01 sS'value' p45159 g47 sssS'tag_list' p45160 (dp45161 S'mandatory' p45162 (dp45163 S'editable' p45164 I00 sS'value' p45165 I00 ssS'name' p45166 (dp45167 S'editable' p45168 I01 sS'value' p45169 S'Tags' p45170 ssS'data_type' p45171 (dp45172 S'editable' p45173 I00 sS'value' p45174 S'tag_list' p45175 ssS'entity_type' p45176 (dp45177 S'editable' p45178 I00 sS'value' p45179 S'HumanUser' p45180 ssS'editable' p45181 (dp45182 S'editable' p45183 I00 sS'value' p45184 I01 ssS'unique' p45185 (dp45186 S'editable' p45187 I00 sS'value' p45188 I00 ssS'properties' p45189 (dp45190 S'default_value' p45191 (dp45192 S'editable' p45193 I00 sS'value' p45194 NssS'summary_default' p45195 (dp45196 S'editable' p45197 I01 sS'value' p45198 S'none' p45199 ssS'valid_types' p45200 (dp45201 S'editable' p45202 I01 sS'value' p45203 (lp45204 S'Tag' p45205 asssS'description' p45206 (dp45207 S'editable' p45208 I01 sS'value' p45209 g47 sssS'created_at' p45210 (dp45211 S'mandatory' p45212 (dp45213 S'editable' p45214 I00 sS'value' p45215 I00 ssS'name' p45216 (dp45217 S'editable' p45218 I01 sS'value' p45219 S'Date Created' p45220 ssS'data_type' p45221 (dp45222 S'editable' p45223 I00 sS'value' p45224 S'date_time' p45225 ssS'entity_type' p45226 (dp45227 S'editable' p45228 I00 sS'value' p45229 S'HumanUser' p45230 ssS'editable' p45231 (dp45232 S'editable' p45233 I00 sS'value' p45234 I00 ssS'unique' p45235 (dp45236 S'editable' p45237 I00 sS'value' p45238 I00 ssS'properties' p45239 (dp45240 S'default_value' p45241 (dp45242 S'editable' p45243 I00 sS'value' p45244 NssS'summary_default' p45245 (dp45246 S'editable' p45247 I01 sS'value' p45248 S'none' p45249 sssS'description' p45250 (dp45251 S'editable' p45252 I01 sS'value' p45253 g47 sssS'permission_rule_set' p45254 (dp45255 S'mandatory' p45256 (dp45257 S'editable' p45258 I00 sS'value' p45259 I00 ssS'name' p45260 (dp45261 S'editable' p45262 I01 sS'value' p45263 S'Permission Group' p45264 ssS'data_type' p45265 (dp45266 S'editable' p45267 I00 sS'value' p45268 S'entity' p45269 ssS'entity_type' p45270 (dp45271 S'editable' p45272 I00 sS'value' p45273 S'HumanUser' p45274 ssS'editable' p45275 (dp45276 S'editable' p45277 I00 sS'value' p45278 I00 ssS'unique' p45279 (dp45280 S'editable' p45281 I00 sS'value' p45282 I00 ssS'properties' p45283 (dp45284 S'default_value' p45285 (dp45286 S'editable' p45287 I00 sS'value' p45288 NssS'summary_default' p45289 (dp45290 S'editable' p45291 I01 sS'value' p45292 S'none' p45293 ssS'valid_types' p45294 (dp45295 S'editable' p45296 I01 sS'value' p45297 (lp45298 S'PermissionRuleSet' p45299 asssS'description' p45300 (dp45301 S'editable' p45302 I01 sS'value' p45303 g47 sssS'filmstrip_image' p45304 (dp45305 S'mandatory' p45306 (dp45307 S'editable' p45308 I00 sS'value' p45309 I00 ssS'name' p45310 (dp45311 S'editable' p45312 I01 sS'value' p45313 S'Filmstrip Thumbnail' p45314 ssS'data_type' p45315 (dp45316 S'editable' p45317 I00 sS'value' p45318 S'image' p45319 ssS'entity_type' p45320 (dp45321 S'editable' p45322 I00 sS'value' p45323 S'HumanUser' p45324 ssS'editable' p45325 (dp45326 S'editable' p45327 I00 sS'value' p45328 I01 ssS'unique' p45329 (dp45330 S'editable' p45331 I00 sS'value' p45332 I00 ssS'properties' p45333 (dp45334 S'default_value' p45335 (dp45336 S'editable' p45337 I00 sS'value' p45338 NssS'summary_default' p45339 (dp45340 S'editable' p45341 I01 sS'value' p45342 S'none' p45343 sssS'description' p45344 (dp45345 S'editable' p45346 I01 sS'value' p45347 g47 sssS'email_all_notes' p45348 (dp45349 S'mandatory' p45350 (dp45351 S'editable' p45352 I00 sS'value' p45353 I00 ssS'name' p45354 (dp45355 S'editable' p45356 I01 sS'value' p45357 S'Subscribe to All Note Emails' p45358 ssS'data_type' p45359 (dp45360 S'editable' p45361 I00 sS'value' p45362 S'checkbox' p45363 ssS'entity_type' p45364 (dp45365 S'editable' p45366 I00 sS'value' p45367 S'HumanUser' p45368 ssS'editable' p45369 (dp45370 S'editable' p45371 I00 sS'value' p45372 I01 ssS'unique' p45373 (dp45374 S'editable' p45375 I00 sS'value' p45376 I00 ssS'properties' p45377 (dp45378 S'default_value' p45379 (dp45380 S'editable' p45381 I00 sS'value' p45382 I00 ssS'summary_default' p45383 (dp45384 S'editable' p45385 I01 sS'value' p45386 S'none' p45387 sssS'description' p45388 (dp45389 S'editable' p45390 I01 sS'value' p45391 g47 sssS'email_tasks' p45392 (dp45393 S'mandatory' p45394 (dp45395 S'editable' p45396 I00 sS'value' p45397 I00 ssS'name' p45398 (dp45399 S'editable' p45400 I01 sS'value' p45401 S'Subscribe to My Task Emails' p45402 ssS'data_type' p45403 (dp45404 S'editable' p45405 I00 sS'value' p45406 S'checkbox' p45407 ssS'entity_type' p45408 (dp45409 S'editable' p45410 I00 sS'value' p45411 S'HumanUser' p45412 ssS'editable' p45413 (dp45414 S'editable' p45415 I00 sS'value' p45416 I01 ssS'unique' p45417 (dp45418 S'editable' p45419 I00 sS'value' p45420 I00 ssS'properties' p45421 (dp45422 S'default_value' p45423 (dp45424 S'editable' p45425 I00 sS'value' p45426 I00 ssS'summary_default' p45427 (dp45428 S'editable' p45429 I00 sS'value' p45430 S'none' p45431 sssS'description' p45432 (dp45433 S'editable' p45434 I01 sS'value' p45435 g47 sssS'login' p45436 (dp45437 S'mandatory' p45438 (dp45439 S'editable' p45440 I00 sS'value' p45441 I00 ssS'name' p45442 (dp45443 S'editable' p45444 I01 sS'value' p45445 S'Login' p45446 ssS'data_type' p45447 (dp45448 S'editable' p45449 I00 sS'value' p45450 S'text' p45451 ssS'entity_type' p45452 (dp45453 S'editable' p45454 I00 sS'value' p45455 S'HumanUser' p45456 ssS'editable' p45457 (dp45458 S'editable' p45459 I00 sS'value' p45460 I01 ssS'unique' p45461 (dp45462 S'editable' p45463 I00 sS'value' p45464 I01 ssS'properties' p45465 (dp45466 S'default_value' p45467 (dp45468 S'editable' p45469 I00 sS'value' p45470 g47 ssS'summary_default' p45471 (dp45472 S'editable' p45473 I01 sS'value' p45474 S'none' p45475 sssS'description' p45476 (dp45477 S'editable' p45478 I01 sS'value' p45479 g47 sssS'email_all_tickets' p45480 (dp45481 S'mandatory' p45482 (dp45483 S'editable' p45484 I00 sS'value' p45485 I00 ssS'name' p45486 (dp45487 S'editable' p45488 I01 sS'value' p45489 S'Subscribe to All Ticket Emails' p45490 ssS'data_type' p45491 (dp45492 S'editable' p45493 I00 sS'value' p45494 S'checkbox' p45495 ssS'entity_type' p45496 (dp45497 S'editable' p45498 I00 sS'value' p45499 S'HumanUser' p45500 ssS'editable' p45501 (dp45502 S'editable' p45503 I00 sS'value' p45504 I01 ssS'unique' p45505 (dp45506 S'editable' p45507 I00 sS'value' p45508 I00 ssS'properties' p45509 (dp45510 S'default_value' p45511 (dp45512 S'editable' p45513 I00 sS'value' p45514 I00 ssS'summary_default' p45515 (dp45516 S'editable' p45517 I01 sS'value' p45518 S'none' p45519 sssS'description' p45520 (dp45521 S'editable' p45522 I01 sS'value' p45523 g47 sssS'email_all_tasks' p45524 (dp45525 S'mandatory' p45526 (dp45527 S'editable' p45528 I00 sS'value' p45529 I00 ssS'name' p45530 (dp45531 S'editable' p45532 I01 sS'value' p45533 S'Subscribe to All Task Emails' p45534 ssS'data_type' p45535 (dp45536 S'editable' p45537 I00 sS'value' p45538 S'checkbox' p45539 ssS'entity_type' p45540 (dp45541 S'editable' p45542 I00 sS'value' p45543 S'HumanUser' p45544 ssS'editable' p45545 (dp45546 S'editable' p45547 I00 sS'value' p45548 I01 ssS'unique' p45549 (dp45550 S'editable' p45551 I00 sS'value' p45552 I00 ssS'properties' p45553 (dp45554 S'default_value' p45555 (dp45556 S'editable' p45557 I00 sS'value' p45558 I00 ssS'summary_default' p45559 (dp45560 S'editable' p45561 I00 sS'value' p45562 S'none' p45563 sssS'description' p45564 (dp45565 S'editable' p45566 I01 sS'value' p45567 g47 ssssS'PermissionRuleSet' p45568 (dp45569 S'code' p45570 (dp45571 S'mandatory' p45572 (dp45573 S'editable' p45574 I00 sS'value' p45575 I00 ssS'name' p45576 (dp45577 S'editable' p45578 I01 sS'value' p45579 S'Code' p45580 ssS'data_type' p45581 (dp45582 S'editable' p45583 I00 sS'value' p45584 S'text' p45585 ssS'entity_type' p45586 (dp45587 S'editable' p45588 I00 sS'value' p45589 S'PermissionRuleSet' p45590 ssS'editable' p45591 (dp45592 S'editable' p45593 I00 sS'value' p45594 I00 ssS'unique' p45595 (dp45596 S'editable' p45597 I00 sS'value' p45598 I00 ssS'properties' p45599 (dp45600 S'default_value' p45601 (dp45602 S'editable' p45603 I00 sS'value' p45604 NssS'summary_default' p45605 (dp45606 S'editable' p45607 I01 sS'value' p45608 S'none' p45609 sssS'description' p45610 (dp45611 S'editable' p45612 I01 sS'value' p45613 g47 sssS'display_name' p45614 (dp45615 S'mandatory' p45616 (dp45617 S'editable' p45618 I00 sS'value' p45619 I00 ssS'name' p45620 (dp45621 S'editable' p45622 I01 sS'value' p45623 S'Display Name' p45624 ssS'data_type' p45625 (dp45626 S'editable' p45627 I00 sS'value' p45628 S'text' p45629 ssS'entity_type' p45630 (dp45631 S'editable' p45632 I00 sS'value' p45633 S'PermissionRuleSet' p45634 ssS'editable' p45635 (dp45636 S'editable' p45637 I00 sS'value' p45638 I00 ssS'unique' p45639 (dp45640 S'editable' p45641 I00 sS'value' p45642 I00 ssS'properties' p45643 (dp45644 S'default_value' p45645 (dp45646 S'editable' p45647 I00 sS'value' p45648 NssS'summary_default' p45649 (dp45650 S'editable' p45651 I01 sS'value' p45652 S'none' p45653 sssS'description' p45654 (dp45655 S'editable' p45656 I01 sS'value' p45657 g47 sssS'entity_type' p45658 (dp45659 S'mandatory' p45660 (dp45661 S'editable' p45662 I00 sS'value' p45663 I00 ssS'name' p45664 (dp45665 S'editable' p45666 I01 sS'value' p45667 S'Entity Type' p45668 ssS'data_type' p45669 (dp45670 S'editable' p45671 I00 sS'value' p45672 S'entity_type' p45673 ssS'entity_type' p45674 (dp45675 S'editable' p45676 I00 sS'value' p45677 S'PermissionRuleSet' p45678 ssS'editable' p45679 (dp45680 S'editable' p45681 I00 sS'value' p45682 I00 ssS'unique' p45683 (dp45684 S'editable' p45685 I00 sS'value' p45686 I00 ssS'properties' p45687 (dp45688 S'default_value' p45689 (dp45690 S'editable' p45691 I00 sS'value' p45692 NssS'summary_default' p45693 (dp45694 S'editable' p45695 I01 sS'value' p45696 S'none' p45697 sssS'description' p45698 (dp45699 S'editable' p45700 I01 sS'value' p45701 g47 sssS'parent_set' p45702 (dp45703 S'mandatory' p45704 (dp45705 S'editable' p45706 I00 sS'value' p45707 I00 ssS'name' p45708 (dp45709 S'editable' p45710 I01 sS'value' p45711 S'Parent Permission Role' p45712 ssS'data_type' p45713 (dp45714 S'editable' p45715 I00 sS'value' p45716 S'entity' p45717 ssS'entity_type' p45718 (dp45719 S'editable' p45720 I00 sS'value' p45721 S'PermissionRuleSet' p45722 ssS'editable' p45723 (dp45724 S'editable' p45725 I00 sS'value' p45726 I00 ssS'unique' p45727 (dp45728 S'editable' p45729 I00 sS'value' p45730 I00 ssS'properties' p45731 (dp45732 S'default_value' p45733 (dp45734 S'editable' p45735 I00 sS'value' p45736 NssS'summary_default' p45737 (dp45738 S'editable' p45739 I01 sS'value' p45740 S'none' p45741 ssS'valid_types' p45742 (dp45743 S'editable' p45744 I01 sS'value' p45745 (lp45746 S'PermissionRuleSet' p45747 asssS'description' p45748 (dp45749 S'editable' p45750 I01 sS'value' p45751 g47 sssS'cached_display_name' p45752 (dp45753 S'mandatory' p45754 (dp45755 S'editable' p45756 I00 sS'value' p45757 I00 ssS'name' p45758 (dp45759 S'editable' p45760 I01 sS'value' p45761 S'Cached Display Name' p45762 ssS'data_type' p45763 (dp45764 S'editable' p45765 I00 sS'value' p45766 S'text' p45767 ssS'entity_type' p45768 (dp45769 S'editable' p45770 I00 sS'value' p45771 S'PermissionRuleSet' p45772 ssS'editable' p45773 (dp45774 S'editable' p45775 I00 sS'value' p45776 I00 ssS'unique' p45777 (dp45778 S'editable' p45779 I00 sS'value' p45780 I00 ssS'properties' p45781 (dp45782 S'default_value' p45783 (dp45784 S'editable' p45785 I00 sS'value' p45786 NssS'summary_default' p45787 (dp45788 S'editable' p45789 I00 sS'value' p45790 S'none' p45791 sssS'description' p45792 (dp45793 S'editable' p45794 I01 sS'value' p45795 g47 sssS'id' p45796 (dp45797 S'mandatory' p45798 (dp45799 S'editable' p45800 I00 sS'value' p45801 I00 ssS'name' p45802 (dp45803 S'editable' p45804 I01 sS'value' p45805 S'ID' p45806 ssS'data_type' p45807 (dp45808 S'editable' p45809 I00 sS'value' p45810 S'number' p45811 ssS'entity_type' p45812 (dp45813 S'editable' p45814 I00 sS'value' p45815 S'PermissionRuleSet' p45816 ssS'editable' p45817 (dp45818 S'editable' p45819 I00 sS'value' p45820 I00 ssS'unique' p45821 (dp45822 S'editable' p45823 I00 sS'value' p45824 I00 ssS'properties' p45825 (dp45826 S'default_value' p45827 (dp45828 S'editable' p45829 I00 sS'value' p45830 NssS'summary_default' p45831 (dp45832 S'editable' p45833 I00 sS'value' p45834 S'none' p45835 sssS'description' p45836 (dp45837 S'editable' p45838 I01 sS'value' p45839 g47 ssssS'EventLogEntry' p45840 (dp45841 S'attribute_name' p45842 (dp45843 S'mandatory' p45844 (dp45845 S'editable' p45846 I00 sS'value' p45847 I00 ssS'name' p45848 (dp45849 S'editable' p45850 I01 sS'value' p45851 S'Attribute Name' p45852 ssS'data_type' p45853 (dp45854 S'editable' p45855 I00 sS'value' p45856 S'text' p45857 ssS'entity_type' p45858 (dp45859 S'editable' p45860 I00 sS'value' p45861 S'EventLogEntry' p45862 ssS'editable' p45863 (dp45864 S'editable' p45865 I00 sS'value' p45866 I00 ssS'unique' p45867 (dp45868 S'editable' p45869 I00 sS'value' p45870 I00 ssS'properties' p45871 (dp45872 S'default_value' p45873 (dp45874 S'editable' p45875 I00 sS'value' p45876 NssS'summary_default' p45877 (dp45878 S'editable' p45879 I01 sS'value' p45880 S'none' p45881 sssS'description' p45882 (dp45883 S'editable' p45884 I01 sS'value' p45885 g47 sssS'description' p45886 (dp45887 S'mandatory' p45888 (dp45889 S'editable' p45890 I00 sS'value' p45891 I01 ssS'name' p45892 (dp45893 S'editable' p45894 I01 sS'value' p45895 S'Event Summary' p45896 ssS'data_type' p45897 (dp45898 S'editable' p45899 I00 sS'value' p45900 S'text' p45901 ssS'entity_type' p45902 (dp45903 S'editable' p45904 I00 sS'value' p45905 S'EventLogEntry' p45906 ssS'editable' p45907 (dp45908 S'editable' p45909 I00 sS'value' p45910 I00 ssS'unique' p45911 (dp45912 S'editable' p45913 I00 sS'value' p45914 I00 ssS'properties' p45915 (dp45916 S'default_value' p45917 (dp45918 S'editable' p45919 I00 sS'value' p45920 NssS'summary_default' p45921 (dp45922 S'editable' p45923 I01 sS'value' p45924 S'none' p45925 sssS'description' p45926 (dp45927 S'editable' p45928 I01 sS'value' p45929 g47 sssS'created_at' p45930 (dp45931 S'mandatory' p45932 (dp45933 S'editable' p45934 I00 sS'value' p45935 I00 ssS'name' p45936 (dp45937 S'editable' p45938 I01 sS'value' p45939 S'Date Created' p45940 ssS'data_type' p45941 (dp45942 S'editable' p45943 I00 sS'value' p45944 S'date_time' p45945 ssS'entity_type' p45946 (dp45947 S'editable' p45948 I00 sS'value' p45949 S'EventLogEntry' p45950 ssS'editable' p45951 (dp45952 S'editable' p45953 I00 sS'value' p45954 I00 ssS'unique' p45955 (dp45956 S'editable' p45957 I00 sS'value' p45958 I00 ssS'properties' p45959 (dp45960 S'default_value' p45961 (dp45962 S'editable' p45963 I00 sS'value' p45964 NssS'summary_default' p45965 (dp45966 S'editable' p45967 I01 sS'value' p45968 S'latest' p45969 sssS'description' p45970 (dp45971 S'editable' p45972 I01 sS'value' p45973 g47 sssS'entity' p45974 (dp45975 S'mandatory' p45976 (dp45977 S'editable' p45978 I00 sS'value' p45979 I00 ssS'name' p45980 (dp45981 S'editable' p45982 I01 sS'value' p45983 S'Link' p45984 ssS'data_type' p45985 (dp45986 S'editable' p45987 I00 sS'value' p45988 S'entity' p45989 ssS'entity_type' p45990 (dp45991 S'editable' p45992 I00 sS'value' p45993 S'EventLogEntry' p45994 ssS'editable' p45995 (dp45996 S'editable' p45997 I00 sS'value' p45998 I00 ssS'unique' p45999 (dp46000 S'editable' p46001 I00 sS'value' p46002 I00 ssS'properties' p46003 (dp46004 S'default_value' p46005 (dp46006 S'editable' p46007 I00 sS'value' p46008 NssS'summary_default' p46009 (dp46010 S'editable' p46011 I01 sS'value' p46012 S'none' p46013 ssS'valid_types' p46014 (dp46015 S'editable' p46016 I01 sS'value' p46017 (lp46018 S'ApiUser' p46019 aS'AppWelcome' p46020 aS'Asset' p46021 aS'AssetLibrary' p46022 aS'Attachment' p46023 aS'Banner' p46024 aS'Booking' p46025 aS'CustomEntity01' p46026 aS'CustomEntity02' p46027 aS'CustomEntity03' p46028 aS'CustomEntity04' p46029 aS'CustomEntity05' p46030 aS'CustomNonProjectEntity01' p46031 aS'CustomNonProjectEntity02' p46032 aS'CustomNonProjectEntity03' p46033 aS'Department' p46034 aS'Element' p46035 aS'Group' p46036 aS'HumanUser' p46037 aS'Icon' p46038 aS'LocalStorage' p46039 aS'Note' p46040 aS'Page' p46041 aS'PermissionRuleSet' p46042 aS'Phase' p46043 aS'PipelineConfiguration' p46044 aS'Playlist' p46045 aS'Project' p46046 aS'PublishedFile' p46047 aS'PublishedFileDependency' p46048 aS'PublishedFileType' p46049 aS'Scene' p46050 aS'Sequence' p46051 aS'Shot' p46052 aS'Status' p46053 aS'Step' p46054 aS'Tag' p46055 aS'TankDependency' p46056 aS'TankPublishedFile' p46057 aS'TankType' p46058 aS'Task' p46059 aS'TaskTemplate' p46060 aS'Version' p46061 asssS'description' p46062 (dp46063 S'editable' p46064 I01 sS'value' p46065 g47 sssS'project' p46066 (dp46067 S'mandatory' p46068 (dp46069 S'editable' p46070 I00 sS'value' p46071 I00 ssS'name' p46072 (dp46073 S'editable' p46074 I01 sS'value' p46075 S'Project' p46076 ssS'data_type' p46077 (dp46078 S'editable' p46079 I00 sS'value' p46080 S'entity' p46081 ssS'entity_type' p46082 (dp46083 S'editable' p46084 I00 sS'value' p46085 S'EventLogEntry' p46086 ssS'editable' p46087 (dp46088 S'editable' p46089 I00 sS'value' p46090 I00 ssS'unique' p46091 (dp46092 S'editable' p46093 I00 sS'value' p46094 I00 ssS'properties' p46095 (dp46096 S'default_value' p46097 (dp46098 S'editable' p46099 I00 sS'value' p46100 NssS'summary_default' p46101 (dp46102 S'editable' p46103 I01 sS'value' p46104 S'none' p46105 ssS'valid_types' p46106 (dp46107 S'editable' p46108 I01 sS'value' p46109 (lp46110 S'Project' p46111 asssS'description' p46112 (dp46113 S'editable' p46114 I01 sS'value' p46115 g47 sssS'filmstrip_image' p46116 (dp46117 S'mandatory' p46118 (dp46119 S'editable' p46120 I00 sS'value' p46121 I00 ssS'name' p46122 (dp46123 S'editable' p46124 I01 sS'value' p46125 S'Filmstrip Thumbnail' p46126 ssS'data_type' p46127 (dp46128 S'editable' p46129 I00 sS'value' p46130 S'image' p46131 ssS'entity_type' p46132 (dp46133 S'editable' p46134 I00 sS'value' p46135 S'EventLogEntry' p46136 ssS'editable' p46137 (dp46138 S'editable' p46139 I00 sS'value' p46140 I01 ssS'unique' p46141 (dp46142 S'editable' p46143 I00 sS'value' p46144 I00 ssS'properties' p46145 (dp46146 S'default_value' p46147 (dp46148 S'editable' p46149 I00 sS'value' p46150 NssS'summary_default' p46151 (dp46152 S'editable' p46153 I01 sS'value' p46154 S'none' p46155 sssS'description' p46156 (dp46157 S'editable' p46158 I01 sS'value' p46159 g47 sssS'meta' p46160 (dp46161 S'mandatory' p46162 (dp46163 S'editable' p46164 I00 sS'value' p46165 I00 ssS'name' p46166 (dp46167 S'editable' p46168 I01 sS'value' p46169 S'Meta Data' p46170 ssS'data_type' p46171 (dp46172 S'editable' p46173 I00 sS'value' p46174 S'serializable' p46175 ssS'entity_type' p46176 (dp46177 S'editable' p46178 I00 sS'value' p46179 S'EventLogEntry' p46180 ssS'editable' p46181 (dp46182 S'editable' p46183 I00 sS'value' p46184 I00 ssS'unique' p46185 (dp46186 S'editable' p46187 I00 sS'value' p46188 I00 ssS'properties' p46189 (dp46190 S'default_value' p46191 (dp46192 S'editable' p46193 I00 sS'value' p46194 NssS'summary_default' p46195 (dp46196 S'editable' p46197 I01 sS'value' p46198 S'none' p46199 sssS'description' p46200 (dp46201 S'editable' p46202 I01 sS'value' p46203 g47 sssS'user' p46204 (dp46205 S'mandatory' p46206 (dp46207 S'editable' p46208 I00 sS'value' p46209 I00 ssS'name' p46210 (dp46211 S'editable' p46212 I01 sS'value' p46213 S'Who' p46214 ssS'data_type' p46215 (dp46216 S'editable' p46217 I00 sS'value' p46218 S'entity' p46219 ssS'entity_type' p46220 (dp46221 S'editable' p46222 I00 sS'value' p46223 S'EventLogEntry' p46224 ssS'editable' p46225 (dp46226 S'editable' p46227 I00 sS'value' p46228 I00 ssS'unique' p46229 (dp46230 S'editable' p46231 I00 sS'value' p46232 I00 ssS'properties' p46233 (dp46234 S'default_value' p46235 (dp46236 S'editable' p46237 I00 sS'value' p46238 NssS'summary_default' p46239 (dp46240 S'editable' p46241 I01 sS'value' p46242 S'none' p46243 ssS'valid_types' p46244 (dp46245 S'editable' p46246 I01 sS'value' p46247 (lp46248 S'HumanUser' p46249 aS'ApiUser' p46250 asssS'description' p46251 (dp46252 S'editable' p46253 I01 sS'value' p46254 g47 sssS'session_uuid' p46255 (dp46256 S'mandatory' p46257 (dp46258 S'editable' p46259 I00 sS'value' p46260 I00 ssS'name' p46261 (dp46262 S'editable' p46263 I01 sS'value' p46264 S'Session UUID' p46265 ssS'data_type' p46266 (dp46267 S'editable' p46268 I00 sS'value' p46269 S'uuid' p46270 ssS'entity_type' p46271 (dp46272 S'editable' p46273 I00 sS'value' p46274 S'EventLogEntry' p46275 ssS'editable' p46276 (dp46277 S'editable' p46278 I00 sS'value' p46279 I00 ssS'unique' p46280 (dp46281 S'editable' p46282 I00 sS'value' p46283 I00 ssS'properties' p46284 (dp46285 S'default_value' p46286 (dp46287 S'editable' p46288 I00 sS'value' p46289 NssS'summary_default' p46290 (dp46291 S'editable' p46292 I00 sS'value' p46293 S'none' p46294 sssS'description' p46295 (dp46296 S'editable' p46297 I01 sS'value' p46298 g47 sssS'cached_display_name' p46299 (dp46300 S'mandatory' p46301 (dp46302 S'editable' p46303 I00 sS'value' p46304 I00 ssS'name' p46305 (dp46306 S'editable' p46307 I01 sS'value' p46308 S'Cached Display Name' p46309 ssS'data_type' p46310 (dp46311 S'editable' p46312 I00 sS'value' p46313 S'text' p46314 ssS'entity_type' p46315 (dp46316 S'editable' p46317 I00 sS'value' p46318 S'EventLogEntry' p46319 ssS'editable' p46320 (dp46321 S'editable' p46322 I00 sS'value' p46323 I01 ssS'unique' p46324 (dp46325 S'editable' p46326 I00 sS'value' p46327 I00 ssS'properties' p46328 (dp46329 S'default_value' p46330 (dp46331 S'editable' p46332 I00 sS'value' p46333 NssS'summary_default' p46334 (dp46335 S'editable' p46336 I00 sS'value' p46337 S'none' p46338 sssS'description' p46339 (dp46340 S'editable' p46341 I01 sS'value' p46342 g47 sssS'image' p46343 (dp46344 S'mandatory' p46345 (dp46346 S'editable' p46347 I00 sS'value' p46348 I00 ssS'name' p46349 (dp46350 S'editable' p46351 I01 sS'value' p46352 S'Thumbnail' p46353 ssS'data_type' p46354 (dp46355 S'editable' p46356 I00 sS'value' p46357 S'image' p46358 ssS'entity_type' p46359 (dp46360 S'editable' p46361 I00 sS'value' p46362 S'EventLogEntry' p46363 ssS'editable' p46364 (dp46365 S'editable' p46366 I00 sS'value' p46367 I01 ssS'unique' p46368 (dp46369 S'editable' p46370 I00 sS'value' p46371 I00 ssS'properties' p46372 (dp46373 S'default_value' p46374 (dp46375 S'editable' p46376 I00 sS'value' p46377 NssS'summary_default' p46378 (dp46379 S'editable' p46380 I01 sS'value' p46381 S'none' p46382 sssS'description' p46383 (dp46384 S'editable' p46385 I01 sS'value' p46386 g47 sssS'id' p46387 (dp46388 S'mandatory' p46389 (dp46390 S'editable' p46391 I00 sS'value' p46392 I00 ssS'name' p46393 (dp46394 S'editable' p46395 I01 sS'value' p46396 S'Id' p46397 ssS'data_type' p46398 (dp46399 S'editable' p46400 I00 sS'value' p46401 S'number' p46402 ssS'entity_type' p46403 (dp46404 S'editable' p46405 I00 sS'value' p46406 S'EventLogEntry' p46407 ssS'editable' p46408 (dp46409 S'editable' p46410 I00 sS'value' p46411 I00 ssS'unique' p46412 (dp46413 S'editable' p46414 I00 sS'value' p46415 I00 ssS'properties' p46416 (dp46417 S'default_value' p46418 (dp46419 S'editable' p46420 I00 sS'value' p46421 NssS'summary_default' p46422 (dp46423 S'editable' p46424 I01 sS'value' p46425 S'none' p46426 sssS'description' p46427 (dp46428 S'editable' p46429 I01 sS'value' p46430 g47 sssS'event_type' p46431 (dp46432 S'mandatory' p46433 (dp46434 S'editable' p46435 I00 sS'value' p46436 I00 ssS'name' p46437 (dp46438 S'editable' p46439 I01 sS'value' p46440 S'Event Type' p46441 ssS'data_type' p46442 (dp46443 S'editable' p46444 I00 sS'value' p46445 S'text' p46446 ssS'entity_type' p46447 (dp46448 S'editable' p46449 I00 sS'value' p46450 S'EventLogEntry' p46451 ssS'editable' p46452 (dp46453 S'editable' p46454 I00 sS'value' p46455 I00 ssS'unique' p46456 (dp46457 S'editable' p46458 I00 sS'value' p46459 I00 ssS'properties' p46460 (dp46461 S'default_value' p46462 (dp46463 S'editable' p46464 I00 sS'value' p46465 NssS'summary_default' p46466 (dp46467 S'editable' p46468 I01 sS'value' p46469 S'none' p46470 sssS'description' p46471 (dp46472 S'editable' p46473 I01 sS'value' p46474 g47 ssssS'TankDependency' p46475 (dp46476 S'id' p46477 (dp46478 S'mandatory' p46479 (dp46480 S'editable' p46481 I00 sS'value' p46482 I00 ssS'name' p46483 (dp46484 S'editable' p46485 I01 sS'value' p46486 S'Id' p46487 ssS'data_type' p46488 (dp46489 S'editable' p46490 I00 sS'value' p46491 S'number' p46492 ssS'entity_type' p46493 (dp46494 S'editable' p46495 I00 sS'value' p46496 S'TankDependency' p46497 ssS'editable' p46498 (dp46499 S'editable' p46500 I00 sS'value' p46501 I00 ssS'unique' p46502 (dp46503 S'editable' p46504 I00 sS'value' p46505 I00 ssS'properties' p46506 (dp46507 S'default_value' p46508 (dp46509 S'editable' p46510 I00 sS'value' p46511 NssS'summary_default' p46512 (dp46513 S'editable' p46514 I00 sS'value' p46515 S'none' p46516 sssS'description' p46517 (dp46518 S'editable' p46519 I01 sS'value' p46520 g47 sssS'cached_display_name' p46521 (dp46522 S'mandatory' p46523 (dp46524 S'editable' p46525 I00 sS'value' p46526 I00 ssS'name' p46527 (dp46528 S'editable' p46529 I01 sS'value' p46530 S'Cached Display Name' p46531 ssS'data_type' p46532 (dp46533 S'editable' p46534 I00 sS'value' p46535 S'text' p46536 ssS'entity_type' p46537 (dp46538 S'editable' p46539 I00 sS'value' p46540 S'TankDependency' p46541 ssS'editable' p46542 (dp46543 S'editable' p46544 I00 sS'value' p46545 I01 ssS'unique' p46546 (dp46547 S'editable' p46548 I00 sS'value' p46549 I00 ssS'properties' p46550 (dp46551 S'default_value' p46552 (dp46553 S'editable' p46554 I00 sS'value' p46555 NssS'summary_default' p46556 (dp46557 S'editable' p46558 I00 sS'value' p46559 S'none' p46560 sssS'description' p46561 (dp46562 S'editable' p46563 I01 sS'value' p46564 g47 sssS'dependent_tank_published_file' p46565 (dp46566 S'mandatory' p46567 (dp46568 S'editable' p46569 I00 sS'value' p46570 I00 ssS'name' p46571 (dp46572 S'editable' p46573 I01 sS'value' p46574 S'Dependent Tank Published File' p46575 ssS'data_type' p46576 (dp46577 S'editable' p46578 I00 sS'value' p46579 S'entity' p46580 ssS'entity_type' p46581 (dp46582 S'editable' p46583 I00 sS'value' p46584 S'TankDependency' p46585 ssS'editable' p46586 (dp46587 S'editable' p46588 I00 sS'value' p46589 I00 ssS'unique' p46590 (dp46591 S'editable' p46592 I00 sS'value' p46593 I00 ssS'properties' p46594 (dp46595 S'default_value' p46596 (dp46597 S'editable' p46598 I00 sS'value' p46599 NssS'summary_default' p46600 (dp46601 S'editable' p46602 I00 sS'value' p46603 S'none' p46604 ssS'valid_types' p46605 (dp46606 S'editable' p46607 I00 sS'value' p46608 (lp46609 S'TankPublishedFile' p46610 asssS'description' p46611 (dp46612 S'editable' p46613 I01 sS'value' p46614 g47 sssS'tank_published_file' p46615 (dp46616 S'mandatory' p46617 (dp46618 S'editable' p46619 I00 sS'value' p46620 I00 ssS'name' p46621 (dp46622 S'editable' p46623 I01 sS'value' p46624 S'Tank Published File' p46625 ssS'data_type' p46626 (dp46627 S'editable' p46628 I00 sS'value' p46629 S'entity' p46630 ssS'entity_type' p46631 (dp46632 S'editable' p46633 I00 sS'value' p46634 S'TankDependency' p46635 ssS'editable' p46636 (dp46637 S'editable' p46638 I00 sS'value' p46639 I00 ssS'unique' p46640 (dp46641 S'editable' p46642 I00 sS'value' p46643 I00 ssS'properties' p46644 (dp46645 S'default_value' p46646 (dp46647 S'editable' p46648 I00 sS'value' p46649 NssS'summary_default' p46650 (dp46651 S'editable' p46652 I00 sS'value' p46653 S'none' p46654 ssS'valid_types' p46655 (dp46656 S'editable' p46657 I00 sS'value' p46658 (lp46659 S'TankPublishedFile' p46660 asssS'description' p46661 (dp46662 S'editable' p46663 I01 sS'value' p46664 g47 ssssS'AssetShootDayConnection' p46665 (dp46666 S'cached_display_name' p46667 (dp46668 S'mandatory' p46669 (dp46670 S'editable' p46671 I00 sS'value' p46672 I00 ssS'name' p46673 (dp46674 S'editable' p46675 I01 sS'value' p46676 S'Cached Display Name' p46677 ssS'data_type' p46678 (dp46679 S'editable' p46680 I00 sS'value' p46681 S'text' p46682 ssS'entity_type' p46683 (dp46684 S'editable' p46685 I00 sS'value' p46686 S'AssetShootDayConnection' p46687 ssS'editable' p46688 (dp46689 S'editable' p46690 I00 sS'value' p46691 I01 ssS'unique' p46692 (dp46693 S'editable' p46694 I00 sS'value' p46695 I00 ssS'properties' p46696 (dp46697 S'default_value' p46698 (dp46699 S'editable' p46700 I00 sS'value' p46701 NssS'summary_default' p46702 (dp46703 S'editable' p46704 I00 sS'value' p46705 S'none' p46706 sssS'description' p46707 (dp46708 S'editable' p46709 I01 sS'value' p46710 g47 sssS'asset' p46711 (dp46712 S'mandatory' p46713 (dp46714 S'editable' p46715 I00 sS'value' p46716 I00 ssS'name' p46717 (dp46718 S'editable' p46719 I01 sS'value' p46720 S'Asset' p46721 ssS'data_type' p46722 (dp46723 S'editable' p46724 I00 sS'value' p46725 S'entity' p46726 ssS'entity_type' p46727 (dp46728 S'editable' p46729 I00 sS'value' p46730 S'AssetShootDayConnection' p46731 ssS'editable' p46732 (dp46733 S'editable' p46734 I00 sS'value' p46735 I00 ssS'unique' p46736 (dp46737 S'editable' p46738 I00 sS'value' p46739 I00 ssS'properties' p46740 (dp46741 S'default_value' p46742 (dp46743 S'editable' p46744 I00 sS'value' p46745 NssS'summary_default' p46746 (dp46747 S'editable' p46748 I00 sS'value' p46749 S'none' p46750 ssS'valid_types' p46751 (dp46752 S'editable' p46753 I00 sS'value' p46754 (lp46755 S'Asset' p46756 asssS'description' p46757 (dp46758 S'editable' p46759 I01 sS'value' p46760 g47 sssS'id' p46761 (dp46762 S'mandatory' p46763 (dp46764 S'editable' p46765 I00 sS'value' p46766 I01 ssS'name' p46767 (dp46768 S'editable' p46769 I01 sS'value' p46770 S'Id' p46771 ssS'data_type' p46772 (dp46773 S'editable' p46774 I00 sS'value' p46775 S'number' p46776 ssS'entity_type' p46777 (dp46778 S'editable' p46779 I00 sS'value' p46780 S'AssetShootDayConnection' p46781 ssS'editable' p46782 (dp46783 S'editable' p46784 I00 sS'value' p46785 I00 ssS'unique' p46786 (dp46787 S'editable' p46788 I00 sS'value' p46789 I00 ssS'properties' p46790 (dp46791 S'default_value' p46792 (dp46793 S'editable' p46794 I00 sS'value' p46795 NssS'summary_default' p46796 (dp46797 S'editable' p46798 I00 sS'value' p46799 S'none' p46800 sssS'description' p46801 (dp46802 S'editable' p46803 I01 sS'value' p46804 g47 sssS'shoot_day' p46805 (dp46806 S'mandatory' p46807 (dp46808 S'editable' p46809 I00 sS'value' p46810 I00 ssS'name' p46811 (dp46812 S'editable' p46813 I01 sS'value' p46814 S'Shoot Day' p46815 ssS'data_type' p46816 (dp46817 S'editable' p46818 I00 sS'value' p46819 S'entity' p46820 ssS'entity_type' p46821 (dp46822 S'editable' p46823 I00 sS'value' p46824 S'AssetShootDayConnection' p46825 ssS'editable' p46826 (dp46827 S'editable' p46828 I00 sS'value' p46829 I00 ssS'unique' p46830 (dp46831 S'editable' p46832 I00 sS'value' p46833 I00 ssS'properties' p46834 (dp46835 S'default_value' p46836 (dp46837 S'editable' p46838 I00 sS'value' p46839 NssS'summary_default' p46840 (dp46841 S'editable' p46842 I00 sS'value' p46843 S'none' p46844 ssS'valid_types' p46845 (dp46846 S'editable' p46847 I00 sS'value' p46848 (lp46849 S'ShootDay' p46850 asssS'description' p46851 (dp46852 S'editable' p46853 I01 sS'value' p46854 g47 ssssS'Asset' p46855 (dp46856 S'open_notes_count' p46857 (dp46858 S'mandatory' p46859 (dp46860 S'editable' p46861 I00 sS'value' p46862 I00 ssS'name' p46863 (dp46864 S'editable' p46865 I01 sS'value' p46866 S'Open Notes Count' p46867 ssS'data_type' p46868 (dp46869 S'editable' p46870 I00 sS'value' p46871 S'text' p46872 ssS'entity_type' p46873 (dp46874 S'editable' p46875 I00 sS'value' p46876 S'Asset' p46877 ssS'editable' p46878 (dp46879 S'editable' p46880 I00 sS'value' p46881 I00 ssS'unique' p46882 (dp46883 S'editable' p46884 I00 sS'value' p46885 I00 ssS'properties' p46886 (dp46887 S'default_value' p46888 (dp46889 S'editable' p46890 I00 sS'value' p46891 NssS'summary_default' p46892 (dp46893 S'editable' p46894 I01 sS'value' p46895 S'none' p46896 sssS'description' p46897 (dp46898 S'editable' p46899 I01 sS'value' p46900 g47 sssS'code' p46901 (dp46902 S'mandatory' p46903 (dp46904 S'editable' p46905 I00 sS'value' p46906 I01 ssS'name' p46907 (dp46908 S'editable' p46909 I01 sS'value' p46910 S'Asset Name' p46911 ssS'data_type' p46912 (dp46913 S'editable' p46914 I00 sS'value' p46915 S'text' p46916 ssS'entity_type' p46917 (dp46918 S'editable' p46919 I00 sS'value' p46920 S'Asset' p46921 ssS'editable' p46922 (dp46923 S'editable' p46924 I00 sS'value' p46925 I01 ssS'unique' p46926 (dp46927 S'editable' p46928 I00 sS'value' p46929 I00 ssS'properties' p46930 (dp46931 S'default_value' p46932 (dp46933 S'editable' p46934 I00 sS'value' p46935 NssS'summary_default' p46936 (dp46937 S'editable' p46938 I01 sS'value' p46939 S'none' p46940 sssS'description' p46941 (dp46942 S'editable' p46943 I01 sS'value' p46944 g47 sssS'step_11' p46945 (dp46946 S'mandatory' p46947 (dp46948 S'editable' p46949 I00 sS'value' p46950 I00 ssS'name' p46951 (dp46952 S'editable' p46953 I01 sS'value' p46954 S'Rig' p46955 ssS'data_type' p46956 (dp46957 S'editable' p46958 I00 sS'value' p46959 S'pivot_column' p46960 ssS'entity_type' p46961 (dp46962 S'editable' p46963 I00 sS'value' p46964 S'Asset' p46965 ssS'editable' p46966 (dp46967 S'editable' p46968 I00 sS'value' p46969 I00 ssS'unique' p46970 (dp46971 S'editable' p46972 I00 sS'value' p46973 I00 ssS'properties' p46974 (dp46975 S'default_value' p46976 (dp46977 S'editable' p46978 I00 sS'value' p46979 NssS'summary_default' p46980 (dp46981 S'editable' p46982 I00 sS'value' p46983 S'none' p46984 sssS'description' p46985 (dp46986 S'editable' p46987 I01 sS'value' p46988 g47 sssS'step_10' p46989 (dp46990 S'mandatory' p46991 (dp46992 S'editable' p46993 I00 sS'value' p46994 I00 ssS'name' p46995 (dp46996 S'editable' p46997 I01 sS'value' p46998 S'Model' p46999 ssS'data_type' p47000 (dp47001 S'editable' p47002 I00 sS'value' p47003 S'pivot_column' p47004 ssS'entity_type' p47005 (dp47006 S'editable' p47007 I00 sS'value' p47008 S'Asset' p47009 ssS'editable' p47010 (dp47011 S'editable' p47012 I00 sS'value' p47013 I00 ssS'unique' p47014 (dp47015 S'editable' p47016 I00 sS'value' p47017 I00 ssS'properties' p47018 (dp47019 S'default_value' p47020 (dp47021 S'editable' p47022 I00 sS'value' p47023 NssS'summary_default' p47024 (dp47025 S'editable' p47026 I00 sS'value' p47027 S'none' p47028 sssS'description' p47029 (dp47030 S'editable' p47031 I01 sS'value' p47032 g47 sssS'mocap_takes' p47033 (dp47034 S'mandatory' p47035 (dp47036 S'editable' p47037 I00 sS'value' p47038 I00 ssS'name' p47039 (dp47040 S'editable' p47041 I01 sS'value' p47042 S'Mocap Takes' p47043 ssS'data_type' p47044 (dp47045 S'editable' p47046 I00 sS'value' p47047 S'multi_entity' p47048 ssS'entity_type' p47049 (dp47050 S'editable' p47051 I00 sS'value' p47052 S'Asset' p47053 ssS'editable' p47054 (dp47055 S'editable' p47056 I00 sS'value' p47057 I01 ssS'unique' p47058 (dp47059 S'editable' p47060 I00 sS'value' p47061 I00 ssS'properties' p47062 (dp47063 S'default_value' p47064 (dp47065 S'editable' p47066 I00 sS'value' p47067 NssS'summary_default' p47068 (dp47069 S'editable' p47070 I01 sS'value' p47071 S'none' p47072 ssS'valid_types' p47073 (dp47074 S'editable' p47075 I01 sS'value' p47076 (lp47077 S'MocapTake' p47078 asssS'description' p47079 (dp47080 S'editable' p47081 I01 sS'value' p47082 g47 sssS'step_12' p47083 (dp47084 S'mandatory' p47085 (dp47086 S'editable' p47087 I00 sS'value' p47088 I00 ssS'name' p47089 (dp47090 S'editable' p47091 I01 sS'value' p47092 S'Surface' p47093 ssS'data_type' p47094 (dp47095 S'editable' p47096 I00 sS'value' p47097 S'pivot_column' p47098 ssS'entity_type' p47099 (dp47100 S'editable' p47101 I00 sS'value' p47102 S'Asset' p47103 ssS'editable' p47104 (dp47105 S'editable' p47106 I00 sS'value' p47107 I00 ssS'unique' p47108 (dp47109 S'editable' p47110 I00 sS'value' p47111 I00 ssS'properties' p47112 (dp47113 S'default_value' p47114 (dp47115 S'editable' p47116 I00 sS'value' p47117 NssS'summary_default' p47118 (dp47119 S'editable' p47120 I00 sS'value' p47121 S'none' p47122 sssS'description' p47123 (dp47124 S'editable' p47125 I01 sS'value' p47126 g47 sssS'image' p47127 (dp47128 S'mandatory' p47129 (dp47130 S'editable' p47131 I00 sS'value' p47132 I00 ssS'name' p47133 (dp47134 S'editable' p47135 I01 sS'value' p47136 S'Thumbnail' p47137 ssS'data_type' p47138 (dp47139 S'editable' p47140 I00 sS'value' p47141 S'image' p47142 ssS'entity_type' p47143 (dp47144 S'editable' p47145 I00 sS'value' p47146 S'Asset' p47147 ssS'editable' p47148 (dp47149 S'editable' p47150 I00 sS'value' p47151 I01 ssS'unique' p47152 (dp47153 S'editable' p47154 I00 sS'value' p47155 I00 ssS'properties' p47156 (dp47157 S'default_value' p47158 (dp47159 S'editable' p47160 I00 sS'value' p47161 NssS'summary_default' p47162 (dp47163 S'editable' p47164 I01 sS'value' p47165 S'none' p47166 sssS'description' p47167 (dp47168 S'editable' p47169 I01 sS'value' p47170 g47 sssS'updated_at' p47171 (dp47172 S'mandatory' p47173 (dp47174 S'editable' p47175 I00 sS'value' p47176 I00 ssS'name' p47177 (dp47178 S'editable' p47179 I01 sS'value' p47180 S'Date Updated' p47181 ssS'data_type' p47182 (dp47183 S'editable' p47184 I00 sS'value' p47185 S'date_time' p47186 ssS'entity_type' p47187 (dp47188 S'editable' p47189 I00 sS'value' p47190 S'Asset' p47191 ssS'editable' p47192 (dp47193 S'editable' p47194 I00 sS'value' p47195 I00 ssS'unique' p47196 (dp47197 S'editable' p47198 I00 sS'value' p47199 I00 ssS'properties' p47200 (dp47201 S'default_value' p47202 (dp47203 S'editable' p47204 I00 sS'value' p47205 NssS'summary_default' p47206 (dp47207 S'editable' p47208 I01 sS'value' p47209 S'none' p47210 sssS'description' p47211 (dp47212 S'editable' p47213 I01 sS'value' p47214 g47 sssS'tasks' p47215 (dp47216 S'mandatory' p47217 (dp47218 S'editable' p47219 I00 sS'value' p47220 I00 ssS'name' p47221 (dp47222 S'editable' p47223 I01 sS'value' p47224 S'Tasks' p47225 ssS'data_type' p47226 (dp47227 S'editable' p47228 I00 sS'value' p47229 S'multi_entity' p47230 ssS'entity_type' p47231 (dp47232 S'editable' p47233 I00 sS'value' p47234 S'Asset' p47235 ssS'editable' p47236 (dp47237 S'editable' p47238 I00 sS'value' p47239 I01 ssS'unique' p47240 (dp47241 S'editable' p47242 I00 sS'value' p47243 I00 ssS'properties' p47244 (dp47245 S'default_value' p47246 (dp47247 S'editable' p47248 I00 sS'value' p47249 NssS'summary_default' p47250 (dp47251 S'editable' p47252 I01 sS'value' p47253 S'none' p47254 ssS'valid_types' p47255 (dp47256 S'editable' p47257 I01 sS'value' p47258 (lp47259 S'Task' p47260 asssS'description' p47261 (dp47262 S'editable' p47263 I01 sS'value' p47264 g47 sssS'sequences' p47265 (dp47266 S'mandatory' p47267 (dp47268 S'editable' p47269 I00 sS'value' p47270 I00 ssS'name' p47271 (dp47272 S'editable' p47273 I01 sS'value' p47274 S'Sequences' p47275 ssS'data_type' p47276 (dp47277 S'editable' p47278 I00 sS'value' p47279 S'multi_entity' p47280 ssS'entity_type' p47281 (dp47282 S'editable' p47283 I00 sS'value' p47284 S'Asset' p47285 ssS'editable' p47286 (dp47287 S'editable' p47288 I00 sS'value' p47289 I01 ssS'unique' p47290 (dp47291 S'editable' p47292 I00 sS'value' p47293 I00 ssS'properties' p47294 (dp47295 S'default_value' p47296 (dp47297 S'editable' p47298 I00 sS'value' p47299 NssS'summary_default' p47300 (dp47301 S'editable' p47302 I01 sS'value' p47303 S'none' p47304 ssS'valid_types' p47305 (dp47306 S'editable' p47307 I01 sS'value' p47308 (lp47309 S'Sequence' p47310 asssS'description' p47311 (dp47312 S'editable' p47313 I01 sS'value' p47314 g47 sssS'cached_display_name' p47315 (dp47316 S'mandatory' p47317 (dp47318 S'editable' p47319 I00 sS'value' p47320 I00 ssS'name' p47321 (dp47322 S'editable' p47323 I01 sS'value' p47324 S'Cached Display Name' p47325 ssS'data_type' p47326 (dp47327 S'editable' p47328 I00 sS'value' p47329 S'text' p47330 ssS'entity_type' p47331 (dp47332 S'editable' p47333 I00 sS'value' p47334 S'Asset' p47335 ssS'editable' p47336 (dp47337 S'editable' p47338 I00 sS'value' p47339 I01 ssS'unique' p47340 (dp47341 S'editable' p47342 I00 sS'value' p47343 I00 ssS'properties' p47344 (dp47345 S'default_value' p47346 (dp47347 S'editable' p47348 I00 sS'value' p47349 NssS'summary_default' p47350 (dp47351 S'editable' p47352 I00 sS'value' p47353 S'none' p47354 sssS'description' p47355 (dp47356 S'editable' p47357 I01 sS'value' p47358 g47 sssS'id' p47359 (dp47360 S'mandatory' p47361 (dp47362 S'editable' p47363 I00 sS'value' p47364 I00 ssS'name' p47365 (dp47366 S'editable' p47367 I01 sS'value' p47368 S'Id' p47369 ssS'data_type' p47370 (dp47371 S'editable' p47372 I00 sS'value' p47373 S'number' p47374 ssS'entity_type' p47375 (dp47376 S'editable' p47377 I00 sS'value' p47378 S'Asset' p47379 ssS'editable' p47380 (dp47381 S'editable' p47382 I00 sS'value' p47383 I00 ssS'unique' p47384 (dp47385 S'editable' p47386 I00 sS'value' p47387 I00 ssS'properties' p47388 (dp47389 S'default_value' p47390 (dp47391 S'editable' p47392 I00 sS'value' p47393 NssS'summary_default' p47394 (dp47395 S'editable' p47396 I01 sS'value' p47397 S'none' p47398 sssS'description' p47399 (dp47400 S'editable' p47401 I01 sS'value' p47402 g47 sssS'updated_by' p47403 (dp47404 S'mandatory' p47405 (dp47406 S'editable' p47407 I00 sS'value' p47408 I00 ssS'name' p47409 (dp47410 S'editable' p47411 I01 sS'value' p47412 S'Updated by' p47413 ssS'data_type' p47414 (dp47415 S'editable' p47416 I00 sS'value' p47417 S'entity' p47418 ssS'entity_type' p47419 (dp47420 S'editable' p47421 I00 sS'value' p47422 S'Asset' p47423 ssS'editable' p47424 (dp47425 S'editable' p47426 I00 sS'value' p47427 I00 ssS'unique' p47428 (dp47429 S'editable' p47430 I00 sS'value' p47431 I00 ssS'properties' p47432 (dp47433 S'default_value' p47434 (dp47435 S'editable' p47436 I00 sS'value' p47437 NssS'summary_default' p47438 (dp47439 S'editable' p47440 I01 sS'value' p47441 S'none' p47442 ssS'valid_types' p47443 (dp47444 S'editable' p47445 I01 sS'value' p47446 (lp47447 S'HumanUser' p47448 aS'ApiUser' p47449 asssS'description' p47450 (dp47451 S'editable' p47452 I01 sS'value' p47453 g47 sssS'open_notes' p47454 (dp47455 S'mandatory' p47456 (dp47457 S'editable' p47458 I00 sS'value' p47459 I00 ssS'name' p47460 (dp47461 S'editable' p47462 I01 sS'value' p47463 S'Open Notes' p47464 ssS'data_type' p47465 (dp47466 S'editable' p47467 I00 sS'value' p47468 S'multi_entity' p47469 ssS'entity_type' p47470 (dp47471 S'editable' p47472 I00 sS'value' p47473 S'Asset' p47474 ssS'editable' p47475 (dp47476 S'editable' p47477 I00 sS'value' p47478 I00 ssS'unique' p47479 (dp47480 S'editable' p47481 I00 sS'value' p47482 I00 ssS'properties' p47483 (dp47484 S'default_value' p47485 (dp47486 S'editable' p47487 I00 sS'value' p47488 NssS'summary_default' p47489 (dp47490 S'editable' p47491 I01 sS'value' p47492 S'none' p47493 ssS'valid_types' p47494 (dp47495 S'editable' p47496 I01 sS'value' p47497 (lp47498 S'Note' p47499 asssS'description' p47500 (dp47501 S'editable' p47502 I01 sS'value' p47503 g47 sssS'task_template' p47504 (dp47505 S'mandatory' p47506 (dp47507 S'editable' p47508 I00 sS'value' p47509 I00 ssS'name' p47510 (dp47511 S'editable' p47512 I01 sS'value' p47513 S'Task Template' p47514 ssS'data_type' p47515 (dp47516 S'editable' p47517 I00 sS'value' p47518 S'entity' p47519 ssS'entity_type' p47520 (dp47521 S'editable' p47522 I00 sS'value' p47523 S'Asset' p47524 ssS'editable' p47525 (dp47526 S'editable' p47527 I00 sS'value' p47528 I01 ssS'unique' p47529 (dp47530 S'editable' p47531 I00 sS'value' p47532 I00 ssS'properties' p47533 (dp47534 S'default_value' p47535 (dp47536 S'editable' p47537 I00 sS'value' p47538 NssS'summary_default' p47539 (dp47540 S'editable' p47541 I01 sS'value' p47542 S'none' p47543 ssS'valid_types' p47544 (dp47545 S'editable' p47546 I01 sS'value' p47547 (lp47548 S'TaskTemplate' p47549 asssS'description' p47550 (dp47551 S'editable' p47552 I01 sS'value' p47553 g47 sssS'created_by' p47554 (dp47555 S'mandatory' p47556 (dp47557 S'editable' p47558 I00 sS'value' p47559 I00 ssS'name' p47560 (dp47561 S'editable' p47562 I01 sS'value' p47563 S'Created by' p47564 ssS'data_type' p47565 (dp47566 S'editable' p47567 I00 sS'value' p47568 S'entity' p47569 ssS'entity_type' p47570 (dp47571 S'editable' p47572 I00 sS'value' p47573 S'Asset' p47574 ssS'editable' p47575 (dp47576 S'editable' p47577 I00 sS'value' p47578 I00 ssS'unique' p47579 (dp47580 S'editable' p47581 I00 sS'value' p47582 I00 ssS'properties' p47583 (dp47584 S'default_value' p47585 (dp47586 S'editable' p47587 I00 sS'value' p47588 NssS'summary_default' p47589 (dp47590 S'editable' p47591 I01 sS'value' p47592 S'none' p47593 ssS'valid_types' p47594 (dp47595 S'editable' p47596 I01 sS'value' p47597 (lp47598 S'HumanUser' p47599 aS'ApiUser' p47600 asssS'description' p47601 (dp47602 S'editable' p47603 I01 sS'value' p47604 g47 sssS'parents' p47605 (dp47606 S'mandatory' p47607 (dp47608 S'editable' p47609 I00 sS'value' p47610 I00 ssS'name' p47611 (dp47612 S'editable' p47613 I01 sS'value' p47614 S'Parent Assets' p47615 ssS'data_type' p47616 (dp47617 S'editable' p47618 I00 sS'value' p47619 S'multi_entity' p47620 ssS'entity_type' p47621 (dp47622 S'editable' p47623 I00 sS'value' p47624 S'Asset' p47625 ssS'editable' p47626 (dp47627 S'editable' p47628 I00 sS'value' p47629 I01 ssS'unique' p47630 (dp47631 S'editable' p47632 I00 sS'value' p47633 I00 ssS'properties' p47634 (dp47635 S'default_value' p47636 (dp47637 S'editable' p47638 I00 sS'value' p47639 NssS'summary_default' p47640 (dp47641 S'editable' p47642 I01 sS'value' p47643 S'none' p47644 ssS'valid_types' p47645 (dp47646 S'editable' p47647 I01 sS'value' p47648 (lp47649 S'Asset' p47650 asssS'description' p47651 (dp47652 S'editable' p47653 I01 sS'value' p47654 g47 sssS'sg_status_list' p47655 (dp47656 S'mandatory' p47657 (dp47658 S'editable' p47659 I00 sS'value' p47660 I00 ssS'name' p47661 (dp47662 S'editable' p47663 I01 sS'value' p47664 S'Status' p47665 ssS'data_type' p47666 (dp47667 S'editable' p47668 I00 sS'value' p47669 S'status_list' p47670 ssS'entity_type' p47671 (dp47672 S'editable' p47673 I00 sS'value' p47674 S'Asset' p47675 ssS'editable' p47676 (dp47677 S'editable' p47678 I00 sS'value' p47679 I01 ssS'unique' p47680 (dp47681 S'editable' p47682 I00 sS'value' p47683 I00 ssS'properties' p47684 (dp47685 S'default_value' p47686 (dp47687 S'editable' p47688 I01 sS'value' p47689 S'wtg' p47690 ssS'valid_values' p47691 (dp47692 S'editable' p47693 I01 sS'value' p47694 (lp47695 S'fin' p47696 aS'ip' p47697 aS'omt' p47698 aS'hld' p47699 aS'rdy' p47700 aS'wtg' p47701 assS'summary_default' p47702 (dp47703 S'editable' p47704 I01 sS'value' p47705 S'status_list' p47706 sssS'description' p47707 (dp47708 S'editable' p47709 I01 sS'value' p47710 g47 sssS'elements' p47711 (dp47712 S'mandatory' p47713 (dp47714 S'editable' p47715 I00 sS'value' p47716 I00 ssS'name' p47717 (dp47718 S'editable' p47719 I01 sS'value' p47720 S'Elements' p47721 ssS'data_type' p47722 (dp47723 S'editable' p47724 I00 sS'value' p47725 S'multi_entity' p47726 ssS'entity_type' p47727 (dp47728 S'editable' p47729 I00 sS'value' p47730 S'Asset' p47731 ssS'editable' p47732 (dp47733 S'editable' p47734 I00 sS'value' p47735 I01 ssS'unique' p47736 (dp47737 S'editable' p47738 I00 sS'value' p47739 I00 ssS'properties' p47740 (dp47741 S'default_value' p47742 (dp47743 S'editable' p47744 I00 sS'value' p47745 NssS'summary_default' p47746 (dp47747 S'editable' p47748 I00 sS'value' p47749 S'none' p47750 ssS'valid_types' p47751 (dp47752 S'editable' p47753 I00 sS'value' p47754 (lp47755 S'Element' p47756 asssS'description' p47757 (dp47758 S'editable' p47759 I01 sS'value' p47760 g47 sssS'description' p47761 (dp47762 S'mandatory' p47763 (dp47764 S'editable' p47765 I00 sS'value' p47766 I00 ssS'name' p47767 (dp47768 S'editable' p47769 I01 sS'value' p47770 S'Description' p47771 ssS'data_type' p47772 (dp47773 S'editable' p47774 I00 sS'value' p47775 S'text' p47776 ssS'entity_type' p47777 (dp47778 S'editable' p47779 I00 sS'value' p47780 S'Asset' p47781 ssS'editable' p47782 (dp47783 S'editable' p47784 I00 sS'value' p47785 I01 ssS'unique' p47786 (dp47787 S'editable' p47788 I00 sS'value' p47789 I00 ssS'properties' p47790 (dp47791 S'default_value' p47792 (dp47793 S'editable' p47794 I00 sS'value' p47795 NssS'summary_default' p47796 (dp47797 S'editable' p47798 I01 sS'value' p47799 S'none' p47800 sssS'description' p47801 (dp47802 S'editable' p47803 I01 sS'value' p47804 g47 sssS'addressings_cc' p47805 (dp47806 S'mandatory' p47807 (dp47808 S'editable' p47809 I00 sS'value' p47810 I00 ssS'name' p47811 (dp47812 S'editable' p47813 I01 sS'value' p47814 S'Cc' p47815 ssS'data_type' p47816 (dp47817 S'editable' p47818 I00 sS'value' p47819 S'multi_entity' p47820 ssS'entity_type' p47821 (dp47822 S'editable' p47823 I00 sS'value' p47824 S'Asset' p47825 ssS'editable' p47826 (dp47827 S'editable' p47828 I00 sS'value' p47829 I01 ssS'unique' p47830 (dp47831 S'editable' p47832 I00 sS'value' p47833 I00 ssS'properties' p47834 (dp47835 S'default_value' p47836 (dp47837 S'editable' p47838 I00 sS'value' p47839 NssS'summary_default' p47840 (dp47841 S'editable' p47842 I01 sS'value' p47843 S'none' p47844 ssS'valid_types' p47845 (dp47846 S'editable' p47847 I01 sS'value' p47848 (lp47849 S'Group' p47850 aS'HumanUser' p47851 asssS'description' p47852 (dp47853 S'editable' p47854 I01 sS'value' p47855 g47 sssS'shoot_days' p47856 (dp47857 S'mandatory' p47858 (dp47859 S'editable' p47860 I00 sS'value' p47861 I00 ssS'name' p47862 (dp47863 S'editable' p47864 I01 sS'value' p47865 S'Shoot Days' p47866 ssS'data_type' p47867 (dp47868 S'editable' p47869 I00 sS'value' p47870 S'multi_entity' p47871 ssS'entity_type' p47872 (dp47873 S'editable' p47874 I00 sS'value' p47875 S'Asset' p47876 ssS'editable' p47877 (dp47878 S'editable' p47879 I00 sS'value' p47880 I01 ssS'unique' p47881 (dp47882 S'editable' p47883 I00 sS'value' p47884 I00 ssS'properties' p47885 (dp47886 S'default_value' p47887 (dp47888 S'editable' p47889 I00 sS'value' p47890 NssS'summary_default' p47891 (dp47892 S'editable' p47893 I01 sS'value' p47894 S'none' p47895 ssS'valid_types' p47896 (dp47897 S'editable' p47898 I01 sS'value' p47899 (lp47900 S'ShootDay' p47901 asssS'description' p47902 (dp47903 S'editable' p47904 I01 sS'value' p47905 g47 sssS'step_0' p47906 (dp47907 S'mandatory' p47908 (dp47909 S'editable' p47910 I00 sS'value' p47911 I00 ssS'name' p47912 (dp47913 S'editable' p47914 I01 sS'value' p47915 S'ALL TASKS' p47916 ssS'data_type' p47917 (dp47918 S'editable' p47919 I00 sS'value' p47920 S'pivot_column' p47921 ssS'entity_type' p47922 (dp47923 S'editable' p47924 I00 sS'value' p47925 S'Asset' p47926 ssS'editable' p47927 (dp47928 S'editable' p47929 I00 sS'value' p47930 I00 ssS'unique' p47931 (dp47932 S'editable' p47933 I00 sS'value' p47934 I00 ssS'properties' p47935 (dp47936 S'default_value' p47937 (dp47938 S'editable' p47939 I00 sS'value' p47940 NssS'summary_default' p47941 (dp47942 S'editable' p47943 I00 sS'value' p47944 S'none' p47945 sssS'description' p47946 (dp47947 S'editable' p47948 I01 sS'value' p47949 g47 sssS'tag_list' p47950 (dp47951 S'mandatory' p47952 (dp47953 S'editable' p47954 I00 sS'value' p47955 I00 ssS'name' p47956 (dp47957 S'editable' p47958 I01 sS'value' p47959 S'Tags' p47960 ssS'data_type' p47961 (dp47962 S'editable' p47963 I00 sS'value' p47964 S'tag_list' p47965 ssS'entity_type' p47966 (dp47967 S'editable' p47968 I00 sS'value' p47969 S'Asset' p47970 ssS'editable' p47971 (dp47972 S'editable' p47973 I00 sS'value' p47974 I01 ssS'unique' p47975 (dp47976 S'editable' p47977 I00 sS'value' p47978 I00 ssS'properties' p47979 (dp47980 S'default_value' p47981 (dp47982 S'editable' p47983 I00 sS'value' p47984 NssS'summary_default' p47985 (dp47986 S'editable' p47987 I01 sS'value' p47988 S'none' p47989 ssS'valid_types' p47990 (dp47991 S'editable' p47992 I01 sS'value' p47993 (lp47994 S'Tag' p47995 asssS'description' p47996 (dp47997 S'editable' p47998 I01 sS'value' p47999 g47 sssS'assets' p48000 (dp48001 S'mandatory' p48002 (dp48003 S'editable' p48004 I00 sS'value' p48005 I00 ssS'name' p48006 (dp48007 S'editable' p48008 I01 sS'value' p48009 S'Sub Assets' p48010 ssS'data_type' p48011 (dp48012 S'editable' p48013 I00 sS'value' p48014 S'multi_entity' p48015 ssS'entity_type' p48016 (dp48017 S'editable' p48018 I00 sS'value' p48019 S'Asset' p48020 ssS'editable' p48021 (dp48022 S'editable' p48023 I00 sS'value' p48024 I01 ssS'unique' p48025 (dp48026 S'editable' p48027 I00 sS'value' p48028 I00 ssS'properties' p48029 (dp48030 S'default_value' p48031 (dp48032 S'editable' p48033 I00 sS'value' p48034 NssS'summary_default' p48035 (dp48036 S'editable' p48037 I01 sS'value' p48038 S'none' p48039 ssS'valid_types' p48040 (dp48041 S'editable' p48042 I01 sS'value' p48043 (lp48044 S'Asset' p48045 asssS'description' p48046 (dp48047 S'editable' p48048 I01 sS'value' p48049 g47 sssS'step_9' p48050 (dp48051 S'mandatory' p48052 (dp48053 S'editable' p48054 I00 sS'value' p48055 I00 ssS'name' p48056 (dp48057 S'editable' p48058 I01 sS'value' p48059 S'Art' p48060 ssS'data_type' p48061 (dp48062 S'editable' p48063 I00 sS'value' p48064 S'pivot_column' p48065 ssS'entity_type' p48066 (dp48067 S'editable' p48068 I00 sS'value' p48069 S'Asset' p48070 ssS'editable' p48071 (dp48072 S'editable' p48073 I00 sS'value' p48074 I00 ssS'unique' p48075 (dp48076 S'editable' p48077 I00 sS'value' p48078 I00 ssS'properties' p48079 (dp48080 S'default_value' p48081 (dp48082 S'editable' p48083 I00 sS'value' p48084 NssS'summary_default' p48085 (dp48086 S'editable' p48087 I00 sS'value' p48088 S'none' p48089 sssS'description' p48090 (dp48091 S'editable' p48092 I01 sS'value' p48093 g47 sssS'notes' p48094 (dp48095 S'mandatory' p48096 (dp48097 S'editable' p48098 I00 sS'value' p48099 I00 ssS'name' p48100 (dp48101 S'editable' p48102 I01 sS'value' p48103 S'Notes' p48104 ssS'data_type' p48105 (dp48106 S'editable' p48107 I00 sS'value' p48108 S'multi_entity' p48109 ssS'entity_type' p48110 (dp48111 S'editable' p48112 I00 sS'value' p48113 S'Asset' p48114 ssS'editable' p48115 (dp48116 S'editable' p48117 I00 sS'value' p48118 I01 ssS'unique' p48119 (dp48120 S'editable' p48121 I00 sS'value' p48122 I00 ssS'properties' p48123 (dp48124 S'default_value' p48125 (dp48126 S'editable' p48127 I00 sS'value' p48128 NssS'summary_default' p48129 (dp48130 S'editable' p48131 I01 sS'value' p48132 S'none' p48133 ssS'valid_types' p48134 (dp48135 S'editable' p48136 I01 sS'value' p48137 (lp48138 S'Note' p48139 asssS'description' p48140 (dp48141 S'editable' p48142 I01 sS'value' p48143 g47 sssS'scenes' p48144 (dp48145 S'mandatory' p48146 (dp48147 S'editable' p48148 I00 sS'value' p48149 I00 ssS'name' p48150 (dp48151 S'editable' p48152 I01 sS'value' p48153 S'Scenes' p48154 ssS'data_type' p48155 (dp48156 S'editable' p48157 I00 sS'value' p48158 S'multi_entity' p48159 ssS'entity_type' p48160 (dp48161 S'editable' p48162 I00 sS'value' p48163 S'Asset' p48164 ssS'editable' p48165 (dp48166 S'editable' p48167 I00 sS'value' p48168 I01 ssS'unique' p48169 (dp48170 S'editable' p48171 I00 sS'value' p48172 I00 ssS'properties' p48173 (dp48174 S'default_value' p48175 (dp48176 S'editable' p48177 I00 sS'value' p48178 NssS'summary_default' p48179 (dp48180 S'editable' p48181 I01 sS'value' p48182 S'none' p48183 ssS'valid_types' p48184 (dp48185 S'editable' p48186 I01 sS'value' p48187 (lp48188 S'Scene' p48189 asssS'description' p48190 (dp48191 S'editable' p48192 I01 sS'value' p48193 g47 sssS'project' p48194 (dp48195 S'mandatory' p48196 (dp48197 S'editable' p48198 I00 sS'value' p48199 I00 ssS'name' p48200 (dp48201 S'editable' p48202 I01 sS'value' p48203 S'Project' p48204 ssS'data_type' p48205 (dp48206 S'editable' p48207 I00 sS'value' p48208 S'entity' p48209 ssS'entity_type' p48210 (dp48211 S'editable' p48212 I00 sS'value' p48213 S'Asset' p48214 ssS'editable' p48215 (dp48216 S'editable' p48217 I00 sS'value' p48218 I01 ssS'unique' p48219 (dp48220 S'editable' p48221 I00 sS'value' p48222 I00 ssS'properties' p48223 (dp48224 S'default_value' p48225 (dp48226 S'editable' p48227 I00 sS'value' p48228 NssS'summary_default' p48229 (dp48230 S'editable' p48231 I01 sS'value' p48232 S'none' p48233 ssS'valid_types' p48234 (dp48235 S'editable' p48236 I01 sS'value' p48237 (lp48238 S'Project' p48239 asssS'description' p48240 (dp48241 S'editable' p48242 I01 sS'value' p48243 g47 sssS'filmstrip_image' p48244 (dp48245 S'mandatory' p48246 (dp48247 S'editable' p48248 I00 sS'value' p48249 I00 ssS'name' p48250 (dp48251 S'editable' p48252 I01 sS'value' p48253 S'Filmstrip Thumbnail' p48254 ssS'data_type' p48255 (dp48256 S'editable' p48257 I00 sS'value' p48258 S'image' p48259 ssS'entity_type' p48260 (dp48261 S'editable' p48262 I00 sS'value' p48263 S'Asset' p48264 ssS'editable' p48265 (dp48266 S'editable' p48267 I00 sS'value' p48268 I01 ssS'unique' p48269 (dp48270 S'editable' p48271 I00 sS'value' p48272 I00 ssS'properties' p48273 (dp48274 S'default_value' p48275 (dp48276 S'editable' p48277 I00 sS'value' p48278 NssS'summary_default' p48279 (dp48280 S'editable' p48281 I01 sS'value' p48282 S'none' p48283 sssS'description' p48284 (dp48285 S'editable' p48286 I01 sS'value' p48287 g47 sssS'shots' p48288 (dp48289 S'mandatory' p48290 (dp48291 S'editable' p48292 I00 sS'value' p48293 I00 ssS'name' p48294 (dp48295 S'editable' p48296 I01 sS'value' p48297 S'Shots' p48298 ssS'data_type' p48299 (dp48300 S'editable' p48301 I00 sS'value' p48302 S'multi_entity' p48303 ssS'entity_type' p48304 (dp48305 S'editable' p48306 I00 sS'value' p48307 S'Asset' p48308 ssS'editable' p48309 (dp48310 S'editable' p48311 I00 sS'value' p48312 I01 ssS'unique' p48313 (dp48314 S'editable' p48315 I00 sS'value' p48316 I00 ssS'properties' p48317 (dp48318 S'default_value' p48319 (dp48320 S'editable' p48321 I00 sS'value' p48322 NssS'summary_default' p48323 (dp48324 S'editable' p48325 I01 sS'value' p48326 S'none' p48327 ssS'valid_types' p48328 (dp48329 S'editable' p48330 I01 sS'value' p48331 (lp48332 S'Shot' p48333 asssS'description' p48334 (dp48335 S'editable' p48336 I01 sS'value' p48337 g47 sssS'sg_asset_library' p48338 (dp48339 S'mandatory' p48340 (dp48341 S'editable' p48342 I00 sS'value' p48343 I00 ssS'name' p48344 (dp48345 S'editable' p48346 I01 sS'value' p48347 S'Asset Library' p48348 ssS'data_type' p48349 (dp48350 S'editable' p48351 I00 sS'value' p48352 S'entity' p48353 ssS'entity_type' p48354 (dp48355 S'editable' p48356 I00 sS'value' p48357 S'Asset' p48358 ssS'editable' p48359 (dp48360 S'editable' p48361 I00 sS'value' p48362 I01 ssS'unique' p48363 (dp48364 S'editable' p48365 I00 sS'value' p48366 I00 ssS'properties' p48367 (dp48368 S'default_value' p48369 (dp48370 S'editable' p48371 I00 sS'value' p48372 NssS'summary_default' p48373 (dp48374 S'editable' p48375 I01 sS'value' p48376 S'none' p48377 ssS'valid_types' p48378 (dp48379 S'editable' p48380 I01 sS'value' p48381 (lp48382 S'AssetLibrary' p48383 asssS'description' p48384 (dp48385 S'editable' p48386 I01 sS'value' p48387 g47 sssS'sg_asset_type' p48388 (dp48389 S'mandatory' p48390 (dp48391 S'editable' p48392 I00 sS'value' p48393 I00 ssS'name' p48394 (dp48395 S'editable' p48396 I01 sS'value' p48397 S'Type' p48398 ssS'data_type' p48399 (dp48400 S'editable' p48401 I00 sS'value' p48402 S'list' p48403 ssS'entity_type' p48404 (dp48405 S'editable' p48406 I00 sS'value' p48407 S'Asset' p48408 ssS'editable' p48409 (dp48410 S'editable' p48411 I00 sS'value' p48412 I01 ssS'unique' p48413 (dp48414 S'editable' p48415 I00 sS'value' p48416 I00 ssS'properties' p48417 (dp48418 S'default_value' p48419 (dp48420 S'editable' p48421 I00 sS'value' p48422 NssS'valid_values' p48423 (dp48424 S'editable' p48425 I01 sS'value' p48426 (lp48427 S'Character' p48428 aS'Vehicle' p48429 aS'Prop' p48430 aS'Environment' p48431 aS'Matte Painting' p48432 assS'summary_default' p48433 (dp48434 S'editable' p48435 I01 sS'value' p48436 S'none' p48437 sssS'description' p48438 (dp48439 S'editable' p48440 I01 sS'value' p48441 g47 sssS'sg_library' p48442 (dp48443 S'mandatory' p48444 (dp48445 S'editable' p48446 I00 sS'value' p48447 I00 ssS'name' p48448 (dp48449 S'editable' p48450 I01 sS'value' p48451 S'Library' p48452 ssS'data_type' p48453 (dp48454 S'editable' p48455 I00 sS'value' p48456 S'entity' p48457 ssS'entity_type' p48458 (dp48459 S'editable' p48460 I00 sS'value' p48461 S'Asset' p48462 ssS'editable' p48463 (dp48464 S'editable' p48465 I00 sS'value' p48466 I01 ssS'unique' p48467 (dp48468 S'editable' p48469 I00 sS'value' p48470 I00 ssS'properties' p48471 (dp48472 S'default_value' p48473 (dp48474 S'editable' p48475 I00 sS'value' p48476 NssS'summary_default' p48477 (dp48478 S'editable' p48479 I01 sS'value' p48480 S'none' p48481 ssS'valid_types' p48482 (dp48483 S'editable' p48484 I01 sS'value' p48485 (lp48486 S'AssetLibrary' p48487 asssS'description' p48488 (dp48489 S'editable' p48490 I01 sS'value' p48491 g47 sssS'created_at' p48492 (dp48493 S'mandatory' p48494 (dp48495 S'editable' p48496 I00 sS'value' p48497 I00 ssS'name' p48498 (dp48499 S'editable' p48500 I01 sS'value' p48501 S'Date Created' p48502 ssS'data_type' p48503 (dp48504 S'editable' p48505 I00 sS'value' p48506 S'date_time' p48507 ssS'entity_type' p48508 (dp48509 S'editable' p48510 I00 sS'value' p48511 S'Asset' p48512 ssS'editable' p48513 (dp48514 S'editable' p48515 I00 sS'value' p48516 I00 ssS'unique' p48517 (dp48518 S'editable' p48519 I00 sS'value' p48520 I00 ssS'properties' p48521 (dp48522 S'default_value' p48523 (dp48524 S'editable' p48525 I00 sS'value' p48526 NssS'summary_default' p48527 (dp48528 S'editable' p48529 I01 sS'value' p48530 S'none' p48531 sssS'description' p48532 (dp48533 S'editable' p48534 I01 sS'value' p48535 g47 ssss. ================================================ FILE: tests/mockgun/schema_entity.pickle ================================================ (dp0 S'Playlist' p1 (dp2 S'name' p3 (dp4 S'editable' p5 I00 sS'value' p6 S'Playlist' p7 sssS'AppWelcomeUserConnection' p8 (dp9 S'name' p10 (dp11 S'editable' p12 I00 sS'value' p13 S'App Welcome User Connection' p14 sssS'Group' p15 (dp16 S'name' p17 (dp18 S'editable' p19 I00 sS'value' p20 S'Group' p21 sssS'PhysicalAssetMocapTakeConnection' p22 (dp23 S'name' p24 (dp25 S'editable' p26 I00 sS'value' p27 S'Physical Asset Mocap Take Connection' p28 sssS'CustomEntity05' p29 (dp30 S'name' p31 (dp32 S'editable' p33 I00 sS'value' p34 S'Custom Entity05' p35 sssS'Note' p36 (dp37 S'name' p38 (dp39 S'editable' p40 I00 sS'value' p41 S'Note' p42 sssS'TaskDependency' p43 (dp44 S'name' p45 (dp46 S'editable' p47 I00 sS'value' p48 S'Task Dependency' p49 sssS'PageHit' p50 (dp51 S'name' p52 (dp53 S'editable' p54 I00 sS'value' p55 S'Page Hit' p56 sssS'ActionMenuItem' p57 (dp58 S'name' p59 (dp60 S'editable' p61 I00 sS'value' p62 S'Action Menu Item' p63 sssS'Attachment' p64 (dp65 S'name' p66 (dp67 S'editable' p68 I00 sS'value' p69 S'File' p70 sssS'AssetMocapTakeConnection' p71 (dp72 S'name' p73 (dp74 S'editable' p75 I00 sS'value' p76 S'Asset Mocap Take Connection' p77 sssS'Department' p78 (dp79 S'name' p80 (dp81 S'editable' p82 I00 sS'value' p83 S'Department' p84 sssS'AssetSceneConnection' p85 (dp86 S'name' p87 (dp88 S'editable' p89 I00 sS'value' p90 S'Asset Scene Connection' p91 sssS'CameraMocapTakeConnection' p92 (dp93 S'name' p94 (dp95 S'editable' p96 I00 sS'value' p97 S'Camera Mocap Take Connection' p98 sssS'Booking' p99 (dp100 S'name' p101 (dp102 S'editable' p103 I00 sS'value' p104 S'Booking' p105 sssS'CutVersionConnection' p106 (dp107 S'name' p108 (dp109 S'editable' p110 I00 sS'value' p111 S'Cut Version Connection' p112 sssS'TimeLog' p113 (dp114 S'name' p115 (dp116 S'editable' p117 I00 sS'value' p118 S'Time Log' p119 sssS'PlaylistVersionConnection' p120 (dp121 S'name' p122 (dp123 S'editable' p124 I00 sS'value' p125 S'Playlist Version Connection' p126 sssS'CustomNonProjectEntity02' p127 (dp128 S'name' p129 (dp130 S'editable' p131 I00 sS'value' p132 S'Custom Non Project Entity02' p133 sssS'AssetElementConnection' p134 (dp135 S'name' p136 (dp137 S'editable' p138 I00 sS'value' p139 S'Asset Element Connection' p140 sssS'ReleaseTicketConnection' p141 (dp142 S'name' p143 (dp144 S'editable' p145 I00 sS'value' p146 S'Release Ticket Connection' p147 sssS'RevisionRevisionConnection' p148 (dp149 S'name' p150 (dp151 S'editable' p152 I00 sS'value' p153 S'Revision Revision Connection' p154 sssS'ProjectUserConnection' p155 (dp156 S'name' p157 (dp158 S'editable' p159 I00 sS'value' p160 S'Project User Connection' p161 sssS'MocapTakeRangeShotConnection' p162 (dp163 S'name' p164 (dp165 S'editable' p166 I00 sS'value' p167 S'Mocap Take Range Shot Connection' p168 sssS'PublishedFileDependency' p169 (dp170 S'name' p171 (dp172 S'editable' p173 I00 sS'value' p174 S'Published File Dependency' p175 sssS'Step' p176 (dp177 S'name' p178 (dp179 S'editable' p180 I00 sS'value' p181 S'Step' p182 sssS'AssetLibrary' p183 (dp184 S'name' p185 (dp186 S'editable' p187 I00 sS'value' p188 S'Asset Library' p189 sssS'PerformerMocapTakeConnection' p190 (dp191 S'name' p192 (dp193 S'editable' p194 I00 sS'value' p195 S'Performer Mocap Take Connection' p196 sssS'Phase' p197 (dp198 S'name' p199 (dp200 S'editable' p201 I00 sS'value' p202 S'Phase' p203 sssS'PublishedFile' p204 (dp205 S'name' p206 (dp207 S'editable' p208 I00 sS'value' p209 S'Published File' p210 sssS'ShootDaySceneConnection' p211 (dp212 S'name' p213 (dp214 S'editable' p215 I00 sS'value' p216 S'Shoot Day Scene Connection' p217 sssS'AssetShotConnection' p218 (dp219 S'name' p220 (dp221 S'editable' p222 I00 sS'value' p223 S'Asset Shot Connection' p224 sssS'TicketTicketConnection' p225 (dp226 S'name' p227 (dp228 S'editable' p229 I00 sS'value' p230 S'Ticket Ticket Connection' p231 sssS'AssetBlendshapeConnection' p232 (dp233 S'name' p234 (dp235 S'editable' p236 I00 sS'value' p237 S'Asset Blendshape Connection' p238 sssS'PageSetting' p239 (dp240 S'name' p241 (dp242 S'editable' p243 I00 sS'value' p244 S'Page Setting' p245 sssS'Status' p246 (dp247 S'name' p248 (dp249 S'editable' p250 I00 sS'value' p251 S'Status' p252 sssS'Reply' p253 (dp254 S'name' p255 (dp256 S'editable' p257 I00 sS'value' p258 S'Reply' p259 sssS'Task' p260 (dp261 S'name' p262 (dp263 S'editable' p264 I00 sS'value' p265 S'Task' p266 sssS'CustomNonProjectEntity01' p267 (dp268 S'name' p269 (dp270 S'editable' p271 I00 sS'value' p272 S'Custom Non Project Entity01' p273 sssS'ApiUser' p274 (dp275 S'name' p276 (dp277 S'editable' p278 I00 sS'value' p279 S'Script' p280 sssS'CustomNonProjectEntity03' p281 (dp282 S'name' p283 (dp284 S'editable' p285 I00 sS'value' p286 S'Custom Non Project Entity03' p287 sssS'LaunchShotConnection' p288 (dp289 S'name' p290 (dp291 S'editable' p292 I00 sS'value' p293 S'Launch Shot Connection' p294 sssS'ShotShotConnection' p295 (dp296 S'name' p297 (dp298 S'editable' p299 I00 sS'value' p300 S'Shot Shot Connection' p301 sssS'PerformerRoutineConnection' p302 (dp303 S'name' p304 (dp305 S'editable' p306 I00 sS'value' p307 S'Performer Routine Connection' p308 sssS'PublishedFileType' p309 (dp310 S'name' p311 (dp312 S'editable' p313 I00 sS'value' p314 S'Published File Type' p315 sssS'Element' p316 (dp317 S'name' p318 (dp319 S'editable' p320 I00 sS'value' p321 S'Element' p322 sssS'TankType' p323 (dp324 S'name' p325 (dp326 S'editable' p327 I00 sS'value' p328 S'Tank Type' p329 sssS'Icon' p330 (dp331 S'name' p332 (dp333 S'editable' p334 I00 sS'value' p335 S'Icon' p336 sssS'LocalStorage' p337 (dp338 S'name' p339 (dp340 S'editable' p341 I00 sS'value' p342 S'Local Storage' p343 sssS'TaskTemplate' p344 (dp345 S'name' p346 (dp347 S'editable' p348 I00 sS'value' p349 S'Task Template' p350 sssS'RevisionTicketConnection' p351 (dp352 S'name' p353 (dp354 S'editable' p355 I00 sS'value' p356 S'Revision Ticket Connection' p357 sssS'PerformerShootDayConnection' p358 (dp359 S'name' p360 (dp361 S'editable' p362 I00 sS'value' p363 S'Performer Shoot Day Connection' p364 sssS'PipelineConfiguration' p365 (dp366 S'name' p367 (dp368 S'editable' p369 I00 sS'value' p370 S'Pipeline Configuration' p371 sssS'LaunchSceneConnection' p372 (dp373 S'name' p374 (dp375 S'editable' p376 I00 sS'value' p377 S'Launch Scene Connection' p378 sssS'GroupUserConnection' p379 (dp380 S'name' p381 (dp382 S'editable' p383 I00 sS'value' p384 S'Group User Connection' p385 sssS'AssetSequenceConnection' p386 (dp387 S'name' p388 (dp389 S'editable' p390 I00 sS'value' p391 S'Asset Sequence Connection' p392 sssS'Page' p393 (dp394 S'name' p395 (dp396 S'editable' p397 I00 sS'value' p398 S'Page' p399 sssS'CustomEntity02' p400 (dp401 S'name' p402 (dp403 S'editable' p404 I00 sS'value' p405 S'Custom Entity02' p406 sssS'CustomEntity03' p407 (dp408 S'name' p409 (dp410 S'editable' p411 I00 sS'value' p412 S'Custom Entity03' p413 sssS'FilesystemLocation' p414 (dp415 S'name' p416 (dp417 S'editable' p418 I00 sS'value' p419 S'Filesystem Location' p420 sssS'CustomEntity01' p421 (dp422 S'name' p423 (dp424 S'editable' p425 I00 sS'value' p426 S'Disk Location' p427 sssS'Shot' p428 (dp429 S'name' p430 (dp431 S'editable' p432 I00 sS'value' p433 S'Shot' p434 sssS'TankPublishedFile' p435 (dp436 S'name' p437 (dp438 S'editable' p439 I00 sS'value' p440 S'Tank Published File' p441 sssS'CustomEntity04' p442 (dp443 S'name' p444 (dp445 S'editable' p446 I00 sS'value' p447 S'Custom Entity04' p448 sssS'Sequence' p449 (dp450 S'name' p451 (dp452 S'editable' p453 I00 sS'value' p454 S'Sequence' p455 sssS'BannerUserConnection' p456 (dp457 S'name' p458 (dp459 S'editable' p460 I00 sS'value' p461 S'Banner User Connection' p462 sssS'AssetAssetConnection' p463 (dp464 S'name' p465 (dp466 S'editable' p467 I00 sS'value' p468 S'Asset Asset Connection' p469 sssS'Scene' p470 (dp471 S'name' p472 (dp473 S'editable' p474 I00 sS'value' p475 S'Scene' p476 sssS'Project' p477 (dp478 S'name' p479 (dp480 S'editable' p481 I00 sS'value' p482 S'Project' p483 sssS'Version' p484 (dp485 S'name' p486 (dp487 S'editable' p488 I00 sS'value' p489 S'Version' p490 sssS'ElementShotConnection' p491 (dp492 S'name' p493 (dp494 S'editable' p495 I00 sS'value' p496 S'Element Shot Connection' p497 sssS'HumanUser' p498 (dp499 S'name' p500 (dp501 S'editable' p502 I00 sS'value' p503 S'Person' p504 sssS'PermissionRuleSet' p505 (dp506 S'name' p507 (dp508 S'editable' p509 I00 sS'value' p510 S'Permission Rule Set' p511 sssS'EventLogEntry' p512 (dp513 S'name' p514 (dp515 S'editable' p516 I00 sS'value' p517 S'Event Log Entry' p518 sssS'TankDependency' p519 (dp520 S'name' p521 (dp522 S'editable' p523 I00 sS'value' p524 S'Tank Dependency' p525 sssS'AssetShootDayConnection' p526 (dp527 S'name' p528 (dp529 S'editable' p530 I00 sS'value' p531 S'Asset Shoot Day Connection' p532 sssS'Asset' p533 (dp534 S'name' p535 (dp536 S'editable' p537 I00 sS'value' p538 S'Asset' p539 sss. ================================================ FILE: tests/requirements.txt ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. pytest pytest-cov pytest-nunit ================================================ FILE: tests/run_appveyor.bat ================================================ :: Copyright (c) 2018 Shotgun Software Inc. :: :: CONFIDENTIAL AND PROPRIETARY :: :: This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit :: Source Code License included in this distribution package. See LICENSE. :: By accessing, using, copying or modifying this work you indicate your :: agreement to the Shotgun Pipeline Toolkit Source Code License. All rights :: not expressly granted therein are reserved by Shotgun Software Inc. :: :: This file is run by the appveyor builds. :: copy tests\example_config tests\config %PYTHON%\Scripts\pip install -r tests/ci_requirements.txt %PYTHON%\Scripts\pip install . -U cd tests %PYTHON%\Scripts\nosetests.exe -v --no-path-adjustment ================================================ FILE: tests/test_api.py ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. """Test calling the Shotgun API functions. Includes short run tests, like simple crud and single finds. See test_api_long for other tests. """ import datetime import glob import os import ssl import sys import time import types import unittest import unittest.mock import urllib.parse import urllib.request import urllib.error import uuid import warnings from shotgun_api3.lib.httplib2 import Http import shotgun_api3 from . import base class TestShotgunApi(base.LiveTestBase): def setUp(self): super().setUp() # give note unicode content self.sg.update("Note", self.note["id"], {"content": "La Pe\xf1a"}) def test_info(self): """Called info""" # TODO do more to check results self.sg.info() def test_server_dates(self): """Pass datetimes to the server""" # TODO check results t = {"project": self.project, "start_date": datetime.date.today()} self.sg.create("Task", t, ["content", "sg_status_list"]) def test_batch(self): """Batched create, update, delete""" requests = [ { "request_type": "create", "entity_type": "Shot", "data": {"code": "New Shot 5", "project": self.project}, }, { "request_type": "update", "entity_type": "Shot", "entity_id": self.shot["id"], "data": {"code": "Changed 1"}, }, ] new_shot, updated_shot = self.sg.batch(requests) self.assertEqual(self.shot["id"], updated_shot["id"]) self.assertTrue(new_shot.get("id")) new_shot_id = new_shot["id"] requests = [ {"request_type": "delete", "entity_type": "Shot", "entity_id": new_shot_id}, { "request_type": "update", "entity_type": "Shot", "entity_id": self.shot["id"], "data": {"code": self.shot["code"]}, }, ] result = self.sg.batch(requests)[0] self.assertEqual(True, result) def test_empty_batch(self): """Empty list sent to .batch()""" result = self.sg.batch([]) self.assertEqual([], result) def test_create_update_delete(self): """Called create, update, delete, revive""" data = { "project": self.project, "code": "JohnnyApple_Design01_FaceFinal", "description": "fixed rig per director final notes", "sg_status_list": "rev", "entity": self.asset, "user": self.human_user, } version = self.sg.create("Version", data, return_fields=["id"]) self.assertTrue(isinstance(version, dict)) self.assertTrue("id" in version) # TODO check results more thoroughly # TODO: test returned fields are requested fields data = data = {"description": "updated test"} version = self.sg.update("Version", version["id"], data) self.assertTrue(isinstance(version, dict)) self.assertTrue("id" in version) rv = self.sg.delete("Version", version["id"]) self.assertEqual(True, rv) rv = self.sg.delete("Version", version["id"]) self.assertEqual(False, rv) rv = self.sg.revive("Version", version["id"]) self.assertEqual(True, rv) rv = self.sg.revive("Version", version["id"]) self.assertEqual(False, rv) def test_last_accessed(self): page = self.sg.find("Page", [], fields=["last_accessed"], limit=1) self.assertEqual("Page", page[0]["type"]) self.assertEqual(datetime.datetime, type(page[0]["last_accessed"])) def test_get_session_token(self): """Got session UUID""" # TODO test results rv = self.sg.get_session_token() self.assertTrue(rv) def test_upload_download(self): """Upload and download an attachment tests""" # upload / download only works against a live server because it does # not use the standard http interface if "localhost" in self.server_url: print("upload / down tests skipped for localhost") return this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) size = os.stat(path).st_size attach_id = self.sg.upload( "Version", self.version["id"], path, "sg_uploaded_movie", tag_list="monkeys, everywhere, send, help", ) # test download with attachment_id attach_file = self.sg.download_attachment(attach_id) self.assertTrue(attach_file is not None) self.assertEqual(size, len(attach_file)) orig_file = open(path, "rb").read() self.assertEqual(orig_file, attach_file) # test download with attachment_id as keyword attach_file = self.sg.download_attachment(attachment_id=attach_id) self.assertTrue(attach_file is not None) self.assertEqual(size, len(attach_file)) orig_file = open(path, "rb").read() self.assertEqual(orig_file, attach_file) # test download with attachment_id (write to disk) file_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), "sg_logo_download.jpg" ) result = self.sg.download_attachment(attach_id, file_path=file_path) self.assertEqual(result, file_path) # On windows read may not read to end of file unless opened 'rb' fp = open(file_path, "rb") attach_file = fp.read() fp.close() self.assertEqual(size, len(attach_file)) self.assertEqual(orig_file, attach_file) # test download with attachment hash version = self.sg.find_one( "Version", [["id", "is", self.version["id"]]], ["sg_uploaded_movie"] ) # Look for the attachment we just uploaded, the attachments are not returned from latest # to earliest. attachment = [ v for k, v in version["sg_uploaded_movie"].items() if (k, v) == ("id", attach_id) ] self.assertEqual(len(attachment), 1) attachment = attachment[0] attach_file = self.sg.download_attachment(attachment) self.assertTrue(attach_file is not None) self.assertEqual(size, len(attach_file)) self.assertEqual(orig_file, attach_file) # test download with attachment hash (write to disk) result = self.sg.download_attachment(attachment, file_path=file_path) self.assertEqual(result, file_path) fp = open(file_path, "rb") attach_file = fp.read() fp.close() self.assertTrue(attach_file is not None) self.assertEqual(size, len(attach_file)) self.assertEqual(orig_file, attach_file) # test invalid requests INVALID_S3_URL = "https://sg-media-usor-01.s3.amazonaws.com/ada3de3ee3873875e1dd44f2eb0882c75ae36a4a/cd31346421dbeef781e0e480f259a3d36652d7f2/IMG_0465.MOV?AWSAccessKeyId=AKIAIQGOBSVN3FSQ5QFA&Expires=1371789959&Signature=SLbzv7DuVlZ8XAoOSQQAiGpF3u8%3D" # noqa self.assertRaises( shotgun_api3.ShotgunFileDownloadError, self.sg.download_attachment, {"url": INVALID_S3_URL}, ) INVALID_ATTACHMENT_ID = 99999999 self.assertRaises( shotgun_api3.ShotgunFileDownloadError, self.sg.download_attachment, INVALID_ATTACHMENT_ID, ) self.assertRaises( TypeError, self.sg.download_attachment, "/path/to/some/file.jpg" ) self.assertRaises( ValueError, self.sg.download_attachment, {"id": 123, "type": "Shot"} ) self.assertRaises(TypeError, self.sg.download_attachment) # test upload of non-ascii, unicode path u_path = os.path.abspath( os.path.expanduser(glob.glob(os.path.join(this_dir, "Noëlご.jpg"))[0]) ) # If this is a problem, it'll raise with a UnicodeEncodeError. We # don't need to check the results of the upload itself -- we're # only checking that the non-ascii string encoding doesn't trip # us up the way it used to. self.sg.upload( "Version", self.version["id"], u_path, "sg_uploaded_movie", tag_list="monkeys, everywhere, send, help", ) # Also make sure that we can pass in a utf-8 encoded string path # with non-ascii characters and have it work properly. This is # primarily a concern on Windows, as it doesn't handle that # situation as well as OS X and Linux. self.sg.upload( "Version", self.version["id"], u_path.encode("utf-8"), "sg_uploaded_movie", tag_list="monkeys, everywhere, send, help", ) # cleanup os.remove(file_path) @unittest.mock.patch("shotgun_api3.Shotgun._send_form") def test_upload_to_sg(self, mock_send_form): """ Upload an attachment tests for _upload_to_sg() """ self.sg.server_info["s3_direct_uploads_enabled"] = False mock_send_form.return_value = "1\n:123\nasd" this_dir, _ = os.path.split(__file__) u_path = os.path.abspath( os.path.expanduser(glob.glob(os.path.join(this_dir, "Noëlご.jpg"))[0]) ) upload_id = self.sg.upload( "Version", self.version["id"], u_path, "attachments", tag_list="monkeys, everywhere, send, help", ) mock_send_form.assert_called_once() mock_send_form_args, _ = mock_send_form.call_args display_name_to_send = mock_send_form_args[1].get("display_name", "") self.assertTrue(isinstance(upload_id, int)) self.assertFalse( display_name_to_send.startswith("b'") and display_name_to_send.endswith("'") ) upload_id = self.sg.upload( "Version", self.version["id"], u_path, "filmstrip_image", tag_list="monkeys, everywhere, send, help", ) self.assertTrue(isinstance(upload_id, int)) mock_send_form_args, _ = mock_send_form.call_args display_name_to_send = mock_send_form_args[1].get("display_name", "") self.assertTrue(isinstance(upload_id, int)) self.assertFalse( display_name_to_send.startswith("b'") and display_name_to_send.endswith("'") ) mock_send_form.reset_mock() mock_send_form.return_value = "2\nIt can't be upload" self.assertRaises( shotgun_api3.ShotgunError, self.sg.upload, "Version", self.version["id"], u_path, "attachments", tag_list="monkeys, everywhere, send, help", ) mock_send_form.assert_called_once() self.sg.server_info["s3_direct_uploads_enabled"] = True def test_upload_thumbnail_in_create(self): """Upload a thumbnail via the create method""" this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # test thumbnail upload data = {"image": path, "code": "Test Version", "project": self.project} new_version = self.sg.create("Version", data, return_fields=["image"]) new_version = self.find_one_await_thumbnail( "Version", [["id", "is", new_version["id"]]], fields=["image", "project", "type", "id"], ) self.assertTrue(new_version is not None) self.assertTrue(isinstance(new_version, dict)) self.assertTrue(isinstance(new_version.get("id"), int)) self.assertEqual(new_version.get("type"), "Version") self.assertEqual(new_version.get("project"), self.project) self.assertTrue(new_version.get("image") is not None) h = Http(".cache") thumb_resp, content = h.request(new_version.get("image"), "GET") self.assertIn(thumb_resp["status"], ["200", "304"]) self.assertIn(thumb_resp["content-type"], ["image/jpeg", "image/png"]) self.sg.delete("Version", new_version["id"]) # test filmstrip image upload data = { "filmstrip_image": path, "code": "Test Version", "project": self.project, } new_version = self.sg.create("Version", data, return_fields=["filmstrip_image"]) self.assertTrue(new_version is not None) self.assertTrue(isinstance(new_version, dict)) self.assertTrue(isinstance(new_version.get("id"), int)) self.assertEqual(new_version.get("type"), "Version") self.assertEqual(new_version.get("project"), self.project) self.assertTrue(new_version.get("filmstrip_image") is not None) url = new_version.get("filmstrip_image") data = self.sg.download_attachment({"url": url}) self.assertTrue(isinstance(data, bytes)) self.sg.delete("Version", new_version["id"]) # end test_upload_thumbnail_in_create def test_upload_thumbnail_for_version(self): """simple upload thumbnail for version test.""" this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # upload thumbnail thumb_id = self.sg.upload_thumbnail("Version", self.version["id"], path) self.assertTrue(isinstance(thumb_id, int)) # check result on version version_with_thumbnail = self.sg.find_one( "Version", [["id", "is", self.version["id"]]] ) version_with_thumbnail = self.find_one_await_thumbnail( "Version", [["id", "is", self.version["id"]]] ) self.assertEqual(version_with_thumbnail.get("type"), "Version") self.assertEqual(version_with_thumbnail.get("id"), self.version["id"]) h = Http(".cache") thumb_resp, content = h.request(version_with_thumbnail.get("image"), "GET") self.assertIn(thumb_resp["status"], ["200", "304"]) self.assertIn(thumb_resp["content-type"], ["image/jpeg", "image/png"]) # clear thumbnail response_clear_thumbnail = self.sg.update( "Version", self.version["id"], {"image": None} ) expected_clear_thumbnail = { "id": self.version["id"], "image": None, "type": "Version", } self.assertEqual(expected_clear_thumbnail, response_clear_thumbnail) def test_upload_thumbnail_for_task(self): """simple upload thumbnail for task test.""" this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # upload thumbnail thumb_id = self.sg.upload_thumbnail("Task", self.task["id"], path) self.assertTrue(isinstance(thumb_id, int)) # check result on version task_with_thumbnail = self.sg.find_one("Task", [["id", "is", self.task["id"]]]) task_with_thumbnail = self.find_one_await_thumbnail( "Task", [["id", "is", self.task["id"]]] ) self.assertEqual(task_with_thumbnail.get("type"), "Task") self.assertEqual(task_with_thumbnail.get("id"), self.task["id"]) h = Http(".cache") thumb_resp, content = h.request(task_with_thumbnail.get("image"), "GET") self.assertIn(thumb_resp["status"], ["200", "304"]) self.assertIn(thumb_resp["content-type"], ["image/jpeg", "image/png"]) # clear thumbnail response_clear_thumbnail = self.sg.update( "Version", self.version["id"], {"image": None} ) expected_clear_thumbnail = { "id": self.version["id"], "image": None, "type": "Version", } self.assertEqual(expected_clear_thumbnail, response_clear_thumbnail) def test_upload_thumbnail_with_upload_function(self): """Upload thumbnail via upload function test""" path = os.path.abspath( os.path.expanduser(os.path.join(os.path.dirname(__file__), "sg_logo.jpg")) ) # upload thumbnail thumb_id = self.sg.upload("Task", self.task["id"], path, "image") self.assertTrue(isinstance(thumb_id, int)) # upload filmstrip thumbnail f_thumb_id = self.sg.upload("Task", self.task["id"], path, "filmstrip_image") self.assertTrue(isinstance(f_thumb_id, int)) def test_requires_direct_s3_upload(self): """Test _requires_direct_s3_upload""" upload_types = self.sg.server_info.get("s3_enabled_upload_types") direct_uploads_enabled = self.sg.server_info.get("s3_direct_uploads_enabled") self.sg.server_info["s3_enabled_upload_types"] = None self.sg.server_info["s3_direct_uploads_enabled"] = None # Test s3_enabled_upload_types and s3_direct_uploads_enabled not set self.assertFalse( self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie") ) self.sg.server_info["s3_enabled_upload_types"] = { "Version": ["sg_uploaded_movie"] } # Test direct_uploads_enabled not set self.assertFalse( self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie") ) self.sg.server_info["s3_direct_uploads_enabled"] = True # Test regular path self.assertTrue( self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie") ) self.assertFalse(self.sg._requires_direct_s3_upload("Version", "abc")) self.assertFalse(self.sg._requires_direct_s3_upload("Abc", "abc")) # Test star field wildcard and arrays of fields self.sg.server_info["s3_enabled_upload_types"] = { "Version": ["sg_uploaded_movie", "test", "other"], "Test": ["*"], "Asset": "*", } self.assertTrue( self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie") ) self.assertTrue(self.sg._requires_direct_s3_upload("Version", "test")) self.assertTrue(self.sg._requires_direct_s3_upload("Version", "other")) self.assertTrue(self.sg._requires_direct_s3_upload("Test", "abc")) self.assertTrue(self.sg._requires_direct_s3_upload("Asset", "test")) # Test default allowed upload type self.sg.server_info["s3_enabled_upload_types"] = None self.assertTrue( self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie") ) self.assertFalse(self.sg._requires_direct_s3_upload("Version", "test")) # Test star entity_type self.sg.server_info["s3_enabled_upload_types"] = { "*": ["sg_uploaded_movie", "test"] } self.assertTrue( self.sg._requires_direct_s3_upload("Something", "sg_uploaded_movie") ) self.assertTrue(self.sg._requires_direct_s3_upload("Version", "test")) self.assertFalse(self.sg._requires_direct_s3_upload("Version", "other")) # Test entity_type and field_name wildcard self.sg.server_info["s3_enabled_upload_types"] = {"*": "*"} self.assertTrue( self.sg._requires_direct_s3_upload("Something", "sg_uploaded_movie") ) self.assertTrue(self.sg._requires_direct_s3_upload("Version", "abc")) self.sg.server_info["s3_enabled_upload_types"] = upload_types self.sg.server_info["s3_direct_uploads_enabled"] = direct_uploads_enabled def test_linked_thumbnail_url(self): this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) thumb_id = self.sg.upload_thumbnail( "Project", self.version["project"]["id"], path ) response_version_with_project = self.find_one_await_thumbnail( "Version", [["id", "is", self.version["id"]]], fields=["id", "code", "project.Project.image"], thumbnail_field_name="project.Project.image", ) if self.sg.server_caps.version and self.sg.server_caps.version >= (3, 3, 0): self.assertEqual(response_version_with_project.get("type"), "Version") self.assertEqual( response_version_with_project.get("id"), self.version["id"] ) self.assertEqual( response_version_with_project.get("code"), self.config.version_code ) h = Http(".cache") thumb_resp, content = h.request( response_version_with_project.get("project.Project.image"), "GET" ) self.assertIn(thumb_resp["status"], ["200", "304"]) self.assertIn(thumb_resp["content-type"], ["image/jpeg", "image/png"]) else: expected_version_with_project = { "code": self.config.version_code, "type": "Version", "id": self.version["id"], "project.Project.image": thumb_id, } self.assertEqual( expected_version_with_project, response_version_with_project ) # For now skip tests that are erroneously failling on some sites to # allow CI to pass until the known issue causing this is resolved. @unittest.skip("Skipping test that erroneously fails on some sites.") def test_share_thumbnail(self): """share thumbnail between two entities""" def share_thumbnail_retry(*args, **kwargs): # Since share_thumbnail raises a ShotgunError if the thumbnail is still # pending, sleep and retry if this exception is raised, to allow time for # the thumbnail to finish processing. thumbnail_id = None attempts = 0 while attempts < base.THUMBNAIL_MAX_ATTEMPTS and thumbnail_id is None: try: thumbnail_id = self.sg.share_thumbnail(*args, **kwargs) attempts += 1 except shotgun_api3.ShotgunError: time.sleep(base.THUMBNAIL_RETRY_INTERVAL) return thumbnail_id this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # upload thumbnail to first entity and share it with the rest share_thumbnail_retry([self.version, self.shot], thumbnail_path=path) response_version_thumbnail = self.find_one_await_thumbnail( "Version", [["id", "is", self.version["id"]]], fields=["id", "code", "image"], ) response_shot_thumbnail = self.find_one_await_thumbnail( "Shot", [["id", "is", self.shot["id"]]], fields=["id", "code", "image"], ) shot_url = urllib.parse.urlparse(response_shot_thumbnail.get("image")) version_url = urllib.parse.urlparse(response_version_thumbnail.get("image")) shot_path = _get_path(shot_url) version_path = _get_path(version_url) self.assertEqual(shot_path, version_path) # share thumbnail from source entity with entities self.sg.upload_thumbnail("Version", self.version["id"], path) share_thumbnail_retry([self.asset, self.shot], source_entity=self.version) response_version_thumbnail = self.find_one_await_thumbnail( "Version", [["id", "is", self.version["id"]]], fields=["id", "code", "image"], ) response_shot_thumbnail = self.find_one_await_thumbnail( "Shot", [["id", "is", self.shot["id"]]], fields=["id", "code", "image"], ) response_asset_thumbnail = self.find_one_await_thumbnail( "Asset", [["id", "is", self.asset["id"]]], fields=["id", "code", "image"], ) shot_url = urllib.parse.urlparse(response_shot_thumbnail.get("image")) version_url = urllib.parse.urlparse(response_version_thumbnail.get("image")) asset_url = urllib.parse.urlparse(response_asset_thumbnail.get("image")) shot_path = _get_path(shot_url) version_path = _get_path(version_url) asset_path = _get_path(asset_url) self.assertEqual(version_path, shot_path) self.assertEqual(version_path, asset_path) # raise errors when missing required params or providing conflicting ones self.assertRaises( shotgun_api3.ShotgunError, self.sg.share_thumbnail, [self.shot, self.asset], path, self.version, ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.share_thumbnail, [self.shot, self.asset] ) @unittest.mock.patch("shotgun_api3.Shotgun._send_form") def test_share_thumbnail_not_ready(self, mock_send_form): """throw an exception if trying to share a transient thumbnail""" mock_send_form.return_value = ( "2" "\nsource_entity image is a transient thumbnail that cannot be shared. " "Try again later, when the final thumbnail is available\n" ) self.assertRaises( shotgun_api3.ShotgunThumbnailNotReady, self.sg.share_thumbnail, [self.version, self.shot], source_entity=self.asset, ) mock_send_form.assert_called_once() @unittest.mock.patch("shotgun_api3.Shotgun._send_form") def test_share_thumbnail_returns_error(self, mock_send_form): """throw an exception if server returns an error code""" mock_send_form.return_value = "1\nerror message.\n" self.assertRaises( shotgun_api3.ShotgunError, self.sg.share_thumbnail, [self.version, self.shot], source_entity=self.asset, ) mock_send_form.assert_called_once() def test_deprecated_functions(self): """Deprecated functions raise errors""" self.assertRaises(shotgun_api3.ShotgunError, self.sg.schema, "foo") self.assertRaises(shotgun_api3.ShotgunError, self.sg.entity_types) def test_simple_summary(self): """Test simple call to summarize""" summaries = [{"field": "id", "type": "count"}] grouping = [{"direction": "asc", "field": "id", "type": "exact"}] filters = [["project", "is", self.project]] result = self.sg.summarize( "Shot", filters=filters, summary_fields=summaries, grouping=grouping ) assert result["groups"] assert result["groups"][0]["group_name"] assert result["groups"][0]["group_value"] assert result["groups"][0]["summaries"] assert result["summaries"] def test_summary_include_archived_projects(self): """Test summarize with archived project""" if self.sg.server_caps.version > (5, 3, 13): # archive project self.sg.update("Project", self.project["id"], {"archived": True}) # Ticket #25082 ability to hide archived projects in summary summaries = [{"field": "id", "type": "count"}] grouping = [{"direction": "asc", "field": "id", "type": "exact"}] filters = [["project", "is", self.project]] result = self.sg.summarize( "Shot", filters=filters, summary_fields=summaries, grouping=grouping, include_archived_projects=False, ) self.assertEqual(result["summaries"]["id"], 0) self.sg.update("Project", self.project["id"], {"archived": False}) def test_summary_values(self): """Test summarize return data""" # create three unique shots shot_prefix = uuid.uuid4().hex shots = [] shot_data_1 = { "code": "%s Shot 1" % shot_prefix, "sg_status_list": "ip", "sg_cut_duration": 100, "project": self.project, } shot_data_2 = { "code": "%s Shot 2" % shot_prefix, "sg_status_list": "ip", "sg_cut_duration": 100, "project": self.project, } shot_data_3 = { "code": "%s Shot 3" % shot_prefix, "sg_status_list": "fin", "sg_cut_duration": 100, "project": self.project, } shot_data_4 = { "code": "%s Shot 4" % shot_prefix, "sg_status_list": "wtg", "sg_cut_duration": 0, "project": self.project, } shots.append(self.sg.create("Shot", shot_data_1)) shots.append(self.sg.create("Shot", shot_data_2)) shots.append(self.sg.create("Shot", shot_data_3)) shots.append(self.sg.create("Shot", shot_data_4)) summaries = [ {"field": "id", "type": "count"}, {"field": "sg_cut_duration", "type": "sum"}, ] grouping = [{"direction": "asc", "field": "sg_status_list", "type": "exact"}] filters = [ ["project", "is", self.project], ["code", "starts_with", shot_prefix], ] result = self.sg.summarize( "Shot", filters=filters, summary_fields=summaries, grouping=grouping ) count = {"id": 4, "sg_cut_duration": 300} groups = [ { "group_name": "fin", "group_value": "fin", "summaries": {"id": 1, "sg_cut_duration": 100}, }, { "group_name": "ip", "group_value": "ip", "summaries": {"id": 2, "sg_cut_duration": 200}, }, { "group_name": "wtg", "group_value": "wtg", "summaries": {"id": 1, "sg_cut_duration": 0}, }, ] # clean up batch_data = [] for s in shots: batch_data.append( {"request_type": "delete", "entity_type": "Shot", "entity_id": s["id"]} ) self.sg.batch(batch_data) self.assertEqual(result["summaries"], count) # Do not assume the order of the summarized results. self.assertEqual( sorted(result["groups"], key=lambda x: x["group_name"]), groups ) def test_json_dumps_default_ensure_ascii_disabled(self): """Make sure SG'payload is using ensure_ascii for json dumps""" sg = shotgun_api3.Shotgun(self.config.server_url, **self.auth_args) # Mock the _http_request method sg._orig_http_request = sg._http_request sg._http_request = unittest.mock.Mock(wraps=sg._orig_http_request) sg.find_one( "Note", [["content", "is", "Noëlご"]], # Force a non-ascii character ) sg._http_request.assert_called_once() self.assertIn( b"No\xc3\xabl\xe3\x81\x94", # utf-8 encoded version of Noëlご sg._http_request.call_args.args[2], # Get the body of the request ) def test_work_schedule(self): """test_work_schedule tests WorkDayRules api""" self.maxDiff = None start_date = "2012-01-01" start_date_obj = datetime.datetime(2012, 1, 1) end_date = "2012-01-07" end_date_obj = datetime.datetime(2012, 1, 7) project = self.project # We're going to be comparing this value with the value returned from the server, so extract only the type, id # and name user = { "type": self.human_user["type"], "id": self.human_user["id"], "name": self.human_user["name"], } work_schedule = self.sg.work_schedule_read(start_date, end_date, project, user) # Test that the work_schedule_read api method is called with the 'start_date' and 'end_date' arguments # in the 'YYYY-MM-DD' string format. self.assertRaises( shotgun_api3.ShotgunError, self.sg.work_schedule_read, start_date_obj, end_date_obj, project, user, ) resp = self.sg.work_schedule_update("2012-01-02", False, "Studio Holiday") expected = { "date": "2012-01-02", "description": "Studio Holiday", "project": None, "user": None, "working": False, } self.assertEqual(expected, resp) resp = self.sg.work_schedule_read(start_date, end_date, project, user) work_schedule["2012-01-02"] = { "reason": "STUDIO_EXCEPTION", "working": False, "description": "Studio Holiday", } self.assertEqual(work_schedule, resp) resp = self.sg.work_schedule_update( "2012-01-03", False, "Project Holiday", project ) expected = { "date": "2012-01-03", "description": "Project Holiday", "project": project, "user": None, "working": False, } self.assertEqual(expected, resp) resp = self.sg.work_schedule_read(start_date, end_date, project, user) work_schedule["2012-01-03"] = { "reason": "PROJECT_EXCEPTION", "working": False, "description": "Project Holiday", } self.assertEqual(work_schedule, resp) jan4 = datetime.datetime(2012, 1, 4) self.assertRaises( shotgun_api3.ShotgunError, self.sg.work_schedule_update, jan4, False, "Artist Holiday", user=user, ) resp = self.sg.work_schedule_update( "2012-01-04", False, "Artist Holiday", user=user ) expected = { "date": "2012-01-04", "description": "Artist Holiday", "project": None, "user": user, "working": False, } self.assertEqual(expected, resp) resp = self.sg.work_schedule_read(start_date, end_date, project, user) work_schedule["2012-01-04"] = { "reason": "USER_EXCEPTION", "working": False, "description": "Artist Holiday", } self.assertEqual(work_schedule, resp) # test_preferences_read fails when preferences don't match the expected # preferences. def test_preferences_read(self): # Only run the tests on a server with the feature. if not self.sg.server_caps.version or self.sg.server_caps.version < (7, 10, 0): return # This is a big diff if it fails, so show everything. self.maxDiff = None # all prefs resp = self.sg.preferences_read() expected = { "date_component_order": "month_day", "duration_units": "days", "format_currency_fields_decimal_options": "$1,000.99", "format_currency_fields_display_dollar_sign": False, "format_currency_fields_negative_options": "- $1,000", "format_date_fields": "08/04/22 OR 04/08/22 (depending on the Month order preference)", "format_float_fields": "9,999.99", "format_float_fields_rounding": "9.999999", "format_footage_fields": "10-05", "format_number_fields": "1,000", "format_time_hour_fields": "12 hour", "hours_per_day": 8.0, "support_local_storage": True, "enable_rv_integration": True, "enable_shotgun_review_for_rv": False, } # Simply make sure viewmaster settings are there. These change frequently and we # don't want to have the test break because Viewmaster changed or because we didn't # update the test. self.assertIn("view_master_settings", resp) resp.pop("view_master_settings") # Simply make sure creative review settings are there. These change frequently and we # don't want to have the test break because Creative Review changed or because we didn't # update the test. self.assertIn("creative_review_settings", resp) resp.pop("creative_review_settings") self.assertEqual(expected, resp) # all filtered resp = self.sg.preferences_read( ["date_component_order", "support_local_storage"] ) expected = {"date_component_order": "month_day", "support_local_storage": True} self.assertEqual(expected, resp) # all filtered with invalid pref resp = self.sg.preferences_read( ["date_component_order", "support_local_storage", "email_notifications"] ) expected = {"date_component_order": "month_day", "support_local_storage": True} self.assertEqual(expected, resp) class TestDataTypes(base.LiveTestBase): """Test fields representing the different data types mapped on the server side. Untested data types: password, percent, pivot_column, serializable, image, currency system_task_type, timecode, url, uuid, url_template """ def setUp(self): super().setUp() def test_set_checkbox(self): entity = "HumanUser" entity_id = self.human_user["id"] field_name = "email_notes" pos_values = [False, True] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_color(self): entity = "Task" entity_id = self.task["id"] field_name = "color" pos_values = ["pipeline_step", "222,0,0"] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_date(self): entity = "Task" entity_id = self.task["id"] field_name = "due_date" pos_values = ["2008-05-08", "2011-05-05"] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_date_time(self): if self.config.jenkins: self.skipTest("Jenkins. locked_until not updating.") entity = "HumanUser" entity_id = self.human_user["id"] field_name = "locked_until" local = shotgun_api3.shotgun.SG_TIMEZONE.local dt_1 = datetime.datetime(2008, 10, 13, 23, 10, tzinfo=local) dt_2 = datetime.datetime(2009, 10, 13, 23, 10, tzinfo=local) pos_values = [dt_1, dt_2] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_duration(self): entity = "Task" entity_id = self.task["id"] field_name = "duration" pos_values = [2100, 1300] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_entity(self): entity = "Task" entity_id = self.task["id"] field_name = "entity" pos_values = [self.asset, self.shot] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected["id"], actual["id"]) def test_set_float(self): entity = "Version" entity_id = self.version["id"] field_name = "sg_movie_aspect_ratio" pos_values = [2.0, 3.0] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_list(self): entity = "Note" entity_id = self.note["id"] field_name = "sg_note_type" pos_values = ["Internal", "Client"] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_multi_entity(self): sg = shotgun_api3.Shotgun(self.config.server_url, **self.auth_args) keys = ["project", "user", "code"] data = {"project": self.project, "user": self.human_user, "code": "Alpha"} version_1 = base._find_or_create_entity(sg, "Version", data, keys) data = {"project": self.project, "user": self.human_user, "code": "Beta"} version_2 = base._find_or_create_entity(sg, "Version", data, keys) entity = "Playlist" entity_id = self.playlist["id"] field_name = "versions" # Default set behaviour pos_values = [[version_1, version_2]] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(len(expected), len(actual)) self.assertEqual( sorted([x["id"] for x in expected]), sorted([x["id"] for x in actual]) ) # Multi-entity remove mode pos_values = [[version_1]] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values, multi_entity_update_mode="remove" ) self.assertEqual(1, len(actual)) self.assertEqual(len(expected), len(actual)) self.assertNotEqual(expected[0]["id"], actual[0]["id"]) self.assertEqual(version_2["id"], actual[0]["id"]) # Multi-entity add mode pos_values = [[version_1]] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values, multi_entity_update_mode="add" ) self.assertEqual(2, len(actual)) self.assertTrue(version_1["id"] in [x["id"] for x in actual]) # Multi-entity set mode pos_values = [[version_1, version_2]] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values, multi_entity_update_mode="set" ) self.assertEqual(len(expected), len(actual)) self.assertEqual( sorted([x["id"] for x in expected]), sorted([x["id"] for x in actual]) ) def test_set_number(self): entity = "Shot" entity_id = self.shot["id"] field_name = "head_in" pos_values = [2300, 1300] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_status_list(self): entity = "Task" entity_id = self.task["id"] field_name = "sg_status_list" pos_values = ["wtg", "fin"] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_tag_list(self): entity = "Task" entity_id = self.task["id"] field_name = "tag_list" pos_values = [["a", "b"], ["c"]] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_text(self): entity = "Note" entity_id = self.note["id"] field_name = "content" pos_values = ["this content", "that content"] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def test_set_text_html_entity(self): entity = "Note" entity_id = self.note["id"] field_name = "content" pos_values = ["<", "<"] expected, actual = self.assert_set_field( entity, entity_id, field_name, pos_values ) self.assertEqual(expected, actual) def assert_set_field( self, entity, entity_id, field_name, pos_values, multi_entity_update_mode=None ): query_result = self.sg.find_one(entity, [["id", "is", entity_id]], [field_name]) initial_value = query_result[field_name] new_value = (initial_value == pos_values[0] and pos_values[1]) or pos_values[0] if multi_entity_update_mode: self.sg.update( entity, entity_id, {field_name: new_value}, multi_entity_update_modes={field_name: multi_entity_update_mode}, ) else: self.sg.update(entity, entity_id, {field_name: new_value}) new_values = self.sg.find_one(entity, [["id", "is", entity_id]], [field_name]) return new_value, new_values[field_name] class TestUtc(base.LiveTestBase): """Test utc options""" def setUp(self): super().setUp() utc = shotgun_api3.shotgun.SG_TIMEZONE.utc self.datetime_utc = datetime.datetime(2008, 10, 13, 23, 10, tzinfo=utc) local = shotgun_api3.shotgun.SG_TIMEZONE.local self.datetime_local = datetime.datetime(2008, 10, 13, 23, 10, tzinfo=local) self.datetime_none = datetime.datetime(2008, 10, 13, 23, 10) def test_convert_to_utc(self): if self.config.jenkins: self.skipTest("Jenkins. locked_until not updating.") sg_utc = shotgun_api3.Shotgun( self.config.server_url, http_proxy=self.config.http_proxy, convert_datetimes_to_utc=True, **self.auth_args, ) self._assert_expected(sg_utc, self.datetime_none, self.datetime_local) self._assert_expected(sg_utc, self.datetime_local, self.datetime_local) def test_no_convert_to_utc(self): if self.config.jenkins: self.skipTest("Jenkins. locked_until not updating.") sg_no_utc = shotgun_api3.Shotgun( self.config.server_url, http_proxy=self.config.http_proxy, convert_datetimes_to_utc=False, **self.auth_args, ) self._assert_expected(sg_no_utc, self.datetime_none, self.datetime_none) self._assert_expected(sg_no_utc, self.datetime_utc, self.datetime_none) def _assert_expected(self, sg, date_time, expected): entity_name = "HumanUser" entity_id = self.human_user["id"] field_name = "locked_until" sg.update(entity_name, entity_id, {field_name: date_time}) result = sg.find_one(entity_name, [["id", "is", entity_id]], [field_name]) self.assertEqual(result[field_name], expected) class TestFind(base.LiveTestBase): def setUp(self): super().setUp() # We will need the created_at field for the shot fields = list(self.shot.keys())[:] fields.append("created_at") self.shot = self.sg.find_one("Shot", [["id", "is", self.shot["id"]]], fields) # We will need the uuid field for our LocalStorage fields = list(self.local_storage.keys())[:] fields.append("uuid") self.local_storage = self.sg.find_one( "LocalStorage", [["id", "is", self.local_storage["id"]]], fields ) def test_find(self): """Called find, find_one for known entities""" filters = [] filters.append(["project", "is", self.project]) filters.append(["id", "is", self.version["id"]]) fields = ["id"] versions = self.sg.find("Version", filters, fields=fields) self.assertTrue(isinstance(versions, list)) version = versions[0] self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) version = self.sg.find_one("Version", filters, fields=fields) self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) def _id_in_result(self, entity_type, filters, expected_id): """ Checks that a given id matches that of entities returned for particular filters. """ results = self.sg.find(entity_type, filters) return any(result["id"] == expected_id for result in results) # TODO test all applicable data types for 'in' # 'currency' => [BigDecimal, Float, NilClass], # 'image' => [Hash, NilClass], # 'percent' => [Bignum, Fixnum, NilClass], # 'serializable' => [Hash, Array, NilClass], # 'system_task_type' => [String, NilClass], # 'timecode' => [Bignum, Fixnum, NilClass], # 'footage' => [Bignum, Fixnum, NilClass, String, Float, BigDecimal], # 'url' => [Hash, NilClass], # 'uuid' => [String], def test_in_relation_comma_id(self): """ Test that 'in' relation using commas (old format) works with ids. """ filters = [["id", "in", self.project["id"], 99999]] result = self._id_in_result("Project", filters, self.project["id"]) self.assertTrue(result) def test_in_relation_list_id(self): """ Test that 'in' relation using list (new format) works with ids. """ filters = [["id", "in", [self.project["id"], 99999]]] result = self._id_in_result("Project", filters, self.project["id"]) self.assertTrue(result) def test_not_in_relation_id(self): """ Test that 'not_in' relation using commas (old format) works with ids. """ filters = [["id", "not_in", self.project["id"], 99999]] result = self._id_in_result("Project", filters, self.project["id"]) self.assertFalse(result) def test_in_relation_comma_text(self): """ Test that 'in' relation using commas (old format) works with text fields. """ filters = [["name", "in", self.project["name"], "fake project name"]] result = self._id_in_result("Project", filters, self.project["id"]) self.assertTrue(result) def test_in_relation_list_text(self): """ Test that 'in' relation using list (new format) works with text fields. """ filters = [["name", "in", [self.project["name"], "fake project name"]]] result = self._id_in_result("Project", filters, self.project["id"]) self.assertTrue(result) def test_not_in_relation_text(self): """ Test that 'not_in' relation using commas (old format) works with ids. """ filters = [["name", "not_in", [self.project["name"], "fake project name"]]] result = self._id_in_result("Project", filters, self.project["id"]) self.assertFalse(result) def test_in_relation_comma_color(self): """ Test that 'in' relation using commas (old format) works with color fields. """ filters = [ ["color", "in", self.task["color"], "Green"], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_in_relation_list_color(self): """ Test that 'in' relation using list (new format) works with color fields. """ filters = [ ["color", "in", [self.task["color"], "Green"]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_not_in_relation_color(self): """ Test that 'not_in' relation using commas (old format) works with color fields. """ filters = [ ["color", "not_in", [self.task["color"], "Green"]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertFalse(result) def test_in_relation_comma_date(self): """ Test that 'in' relation using commas (old format) works with date fields. """ filters = [ ["due_date", "in", self.task["due_date"], "2012-11-25"], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_in_relation_list_date(self): """ Test that 'in' relation using list (new format) works with date fields. """ filters = [ ["due_date", "in", [self.task["due_date"], "2012-11-25"]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_not_in_relation_date(self): """ Test that 'not_in' relation using commas (old format) works with date fields. """ filters = [ ["due_date", "not_in", [self.task["due_date"], "2012-11-25"]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertFalse(result) # TODO add datetime test for in and not_in def test_in_relation_comma_duration(self): """ Test that 'in' relation using commas (old format) works with duration fields. """ # we need to get the duration value new_task_keys = list(self.task.keys())[:] new_task_keys.append("duration") self.task = self.sg.find_one( "Task", [["id", "is", self.task["id"]]], new_task_keys ) filters = [ ["duration", "in", self.task["duration"]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_in_relation_list_duration(self): """ Test that 'in' relation using list (new format) works with duration fields. """ # we need to get the duration value new_task_keys = list(self.task.keys())[:] new_task_keys.append("duration") self.task = self.sg.find_one( "Task", [["id", "is", self.task["id"]]], new_task_keys ) filters = [ [ "duration", "in", [ self.task["duration"], ], ], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_not_in_relation_duration(self): """ Test that 'not_in' relation using commas (old format) works with duration fields. """ # we need to get the duration value new_task_keys = list(self.task.keys())[:] new_task_keys.append("duration") self.task = self.sg.find_one( "Task", [["id", "is", self.task["id"]]], new_task_keys ) filters = [ [ "duration", "not_in", [ self.task["duration"], ], ], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertFalse(result) def test_in_relation_comma_entity(self): """ Test that 'in' relation using commas (old format) works with entity fields. """ filters = [ ["entity", "in", self.task["entity"], self.asset], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_in_relation_list_entity(self): """ Test that 'in' relation using list (new format) works with entity fields. """ filters = [ ["entity", "in", [self.task["entity"], self.asset]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_not_in_relation_entity(self): """ Test that 'not_in' relation using commas (old format) works with entity fields. """ filters = [ ["entity", "not_in", [self.task["entity"], self.asset]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertFalse(result) def test_in_relation_comma_entity_type(self): """ Test that 'in' relation using commas (old format) works with entity_type fields. """ filters = [["entity_type", "in", self.step["entity_type"], "something else"]] result = self._id_in_result("Step", filters, self.step["id"]) self.assertTrue(result) def test_in_relation_list_entity_type(self): """ Test that 'in' relation using list (new format) works with entity_type fields. """ filters = [["entity_type", "in", [self.step["entity_type"], "something else"]]] result = self._id_in_result("Step", filters, self.step["id"]) self.assertTrue(result) def test_not_in_relation_entity_type(self): """ Test that 'not_in' relation using commas (old format) works with entity_type fields. """ filters = [ ["entity_type", "not_in", [self.step["entity_type"], "something else"]] ] result = self._id_in_result("Step", filters, self.step["id"]) self.assertFalse(result) def test_in_relation_comma_float(self): """ Test that 'in' relation using commas (old format) works with float fields. """ filters = [ [ "sg_frames_aspect_ratio", "in", self.version["sg_frames_aspect_ratio"], 44.0, ], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertTrue(result) def test_in_relation_list_float(self): """ Test that 'in' relation using list (new format) works with float fields. """ filters = [ [ "sg_frames_aspect_ratio", "in", [self.version["sg_frames_aspect_ratio"], 30.0], ], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertTrue(result) def test_not_in_relation_float(self): """ Test that 'not_in' relation using commas (old format) works with float fields. """ filters = [ [ "sg_frames_aspect_ratio", "not_in", [self.version["sg_frames_aspect_ratio"], 4.4], ], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertFalse(result) def test_in_relation_comma_list(self): """ Test that 'in' relation using commas (old format) works with list fields. """ filters = [ ["frame_count", "in", self.version["frame_count"], 33], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertTrue(result) def test_in_relation_list_list(self): """ Test that 'in' relation using list (new format) works with list fields. """ filters = [ ["frame_count", "in", [self.version["frame_count"], 33]], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertTrue(result) def test_not_in_relation_list(self): """ Test that 'not_in' relation using commas (old format) works with list fields. """ filters = [ ["frame_count", "not_in", [self.version["frame_count"], 33]], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertFalse(result) def test_in_relation_comma_multi_entity(self): """ Test that 'in' relation using commas (old format) works with multi_entity fields. """ filters = [ [ "task_assignees", "in", self.human_user, ], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_in_relation_list_multi_entity(self): """ Test that 'in' relation using list (new format) works with multi_entity fields. """ filters = [ [ "task_assignees", "in", [ self.human_user, ], ], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_not_in_relation_multi_entity(self): """ Test that 'not_in' relation using commas (old format) works with multi_entity fields. """ filters = [ [ "task_assignees", "not_in", [ self.human_user, ], ], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertFalse(result) def test_in_relation_comma_number(self): """ Test that 'in' relation using commas (old format) works with number fields. """ filters = [ ["frame_count", "in", self.version["frame_count"], 1], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertTrue(result) def test_in_relation_list_number(self): """ Test that 'in' relation using list (new format) works with number fields. """ filters = [ ["frame_count", "in", [self.version["frame_count"], 1]], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertTrue(result) def test_not_in_relation_number(self): """ Test that 'not_in' relation using commas (old format) works with number fields. """ filters = [ ["frame_count", "not_in", [self.version["frame_count"], 1]], ["project", "is", self.project], ] result = self._id_in_result("Version", filters, self.version["id"]) self.assertFalse(result) def test_in_relation_comma_status_list(self): """ Test that 'in' relation using commas (old format) works with status_list fields. """ filters = [ ["sg_status_list", "in", self.task["sg_status_list"], "fin"], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_in_relation_list_status_list(self): """ Test that 'in' relation using list (new format) works with status_list fields. """ filters = [ ["sg_status_list", "in", [self.task["sg_status_list"], "fin"]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertTrue(result) def test_not_in_relation_status_list(self): """ Test that 'not_in' relation using commas (old format) works with status_list fields. """ filters = [ ["sg_status_list", "not_in", [self.task["sg_status_list"], "fin"]], ["project", "is", self.project], ] result = self._id_in_result("Task", filters, self.task["id"]) self.assertFalse(result) def test_in_relation_comma_uuid(self): """ Test that 'in' relation using commas (old format) works with uuid fields. """ filters = [ [ "uuid", "in", self.local_storage["uuid"], ] ] result = self._id_in_result("LocalStorage", filters, self.local_storage["id"]) self.assertTrue(result) def test_in_relation_list_uuid(self): """ Test that 'in' relation using list (new format) works with uuid fields. """ filters = [ [ "uuid", "in", [ self.local_storage["uuid"], ], ] ] result = self._id_in_result("LocalStorage", filters, self.local_storage["id"]) self.assertTrue(result) def test_not_in_relation_uuid(self): """ Test that 'not_in' relation using commas (old format) works with uuid fields. """ filters = [ [ "uuid", "not_in", [ self.local_storage["uuid"], ], ] ] result = self._id_in_result("LocalStorage", filters, self.local_storage["id"]) self.assertFalse(result) def test_find_in(self): """Test use of 'in' relation with find.""" # id # old comma seperated format filters = [["id", "in", self.project["id"], 99999]] projects = self.sg.find("Project", filters) # can't use 'any' in py 2.4 match = False for project in projects: if project["id"] == self.project["id"]: match = True self.assertTrue(match) # new list format filters = [["id", "in", [self.project["id"], 99999]]] projects = self.sg.find("Project", filters) # can't use 'any' in py 2.4 match = False for project in projects: if project["id"] == self.project["id"]: match = True self.assertTrue(match) # text field filters = [["name", "in", [self.project["name"], "fake project name"]]] projects = self.sg.find("Project", filters) project = projects[0] self.assertEqual(self.project["id"], project["id"]) def test_unsupported_filters(self): self.assertRaises( shotgun_api3.Fault, self.sg.find_one, "Shot", [["image", "is_not", [{"type": "Thumbnail", "id": 9}]]], ) self.assertRaises( shotgun_api3.Fault, self.sg.find_one, "HumanUser", [["password_proxy", "is_not", [None]]], ) self.assertRaises( shotgun_api3.Fault, self.sg.find_one, "EventLogEntry", [["meta", "is_not", [None]]], ) self.assertRaises( shotgun_api3.Fault, self.sg.find_one, "Revision", [["meta", "attachment", [None]]], ) def test_zero_is_not_none(self): """Test the zero and None are differentiated using "is_not" filter. Ticket #25127 """ # Create a number field if it doesn't already exist num_field = "sg_api_tests_number_field" if num_field not in list(self.sg.schema_field_read("Asset").keys()): self.sg.schema_field_create( "Asset", "number", num_field.replace("sg_", "").replace("_", " ") ) # Set to None self.sg.update("Asset", self.asset["id"], {num_field: None}) # Should be filtered out result = self.sg.find( "Asset", [["id", "is", self.asset["id"]], [num_field, "is_not", None]], [num_field], ) self.assertEqual([], result) # Set it to zero self.sg.update("Asset", self.asset["id"], {num_field: 0}) # Should not be filtered out result = self.sg.find_one( "Asset", [["id", "is", self.asset["id"]], [num_field, "is_not", None]], [num_field], ) self.assertFalse(result is None) # Set it to some other number self.sg.update("Asset", self.asset["id"], {num_field: 1}) # Should not be filtered out result = self.sg.find_one( "Asset", [["id", "is", self.asset["id"]], [num_field, "is_not", None]], [num_field], ) self.assertFalse(result is None) def test_include_archived_projects(self): if self.sg.server_caps.version > (5, 3, 13): # Ticket #25082 result = self.sg.find_one("Shot", [["id", "is", self.shot["id"]]]) self.assertEqual(self.shot["id"], result["id"]) # archive project self.sg.update("Project", self.project["id"], {"archived": True}) # setting defaults to True, so we should get result result = self.sg.find_one("Shot", [["id", "is", self.shot["id"]]]) self.assertEqual(self.shot["id"], result["id"]) result = self.sg.find_one( "Shot", [["id", "is", self.shot["id"]]], include_archived_projects=False ) self.assertEqual(None, result) # unarchive project self.sg.update("Project", self.project["id"], {"archived": False}) class TestExportPage(base.LiveTestBase): def setUp(self): super(TestExportPage, self).setUp("HumanUser") def test_export_page_unavailable(self): """ Test export_page raises when report does not exist. """ if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): return page_entity = self.sg.create("Page", {"entity_type": "Shot"}) error_messages = [ "This functionality is currently not available", f"Export for Page id={page_entity['id']} not available", ] with self.assertRaises(Exception) as cm: self.sg.export_page(page_entity["id"], "csv") msg = str(cm.exception) self.assertIn(msg, error_messages) with self.assertRaises(Exception) as cm: self.sg.export_page(page_entity["id"], "csv", layout_name="My Layout") msg = str(cm.exception) self.assertIn(msg, error_messages) def test_export_page_format_missing(self): """ Test export_page raises for invalid format. """ if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): return with self.assertRaises(Exception) as cm: self.sg.export_page(11, None) self.assertIn("'format' missing", str(cm.exception)) with self.assertRaises(Exception) as cm: self.sg.export_page(11, None, layout_name="My Layout") self.assertIn("'format' missing", str(cm.exception)) def test_export_page_missing_page_id(self): """ Test export_page raises for missing page id. """ if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): return with self.assertRaises(Exception) as cm: self.sg.export_page(None, "csv") self.assertIn("'page_id' missing", str(cm.exception)) with self.assertRaises(Exception) as cm: self.sg.export_page(None, "csv", layout_name="My Layout") self.assertIn("'page_id' missing", str(cm.exception)) @unittest.mock.patch("shotgun_api3.shotgun.Http.request") def test_export_page_without_layout_name(self, mock_request): """ Test export_page works when layout_name is not provided. """ if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): return # Mock the underlying Http.request to return CSV content with appropriate headers csv_body = "ID,Name,Status\n1,Shot 001,ip\n2,Shot 002,rev\n" response = unittest.mock.MagicMock(name="response mock") response.status = 200 response.reason = "OK" response.items.return_value = [("content-type", "text/csv; charset=utf-8")] mock_request.return_value = (response, csv_body) result = self.sg.export_page(11, "csv") self.assertIsInstance(result, str) self.assertTrue(result.startswith("ID,Name,Status")) class TestFollow(base.LiveTestBase): def test_follow_unfollow(self): """Test follow method""" if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): return with self.gen_entity( "HumanUser", projects=[self.project], ) as human_user, self.gen_entity( "Shot", project=self.project, ) as shot: result = self.sg.follow(human_user, shot) assert result["followed"] result = self.sg.unfollow(human_user, shot) assert result["unfollowed"] def test_followers(self): """Test followers method""" if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): return with self.gen_entity( "HumanUser", projects=[self.project], ) as human_user, self.gen_entity( "Shot", project=self.project, ) as shot: result = self.sg.follow(human_user, shot) assert result["followed"] result = self.sg.followers(shot) self.assertEqual(1, len(result)) self.assertEqual(human_user["id"], result[0]["id"]) def test_following(self): """Test following method""" if not self.sg.server_caps.version or self.sg.server_caps.version < (7, 0, 12): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return with self.gen_entity( "HumanUser", projects=[self.project], ) as human_user, self.gen_entity( "Shot", project=self.project, ) as shot, self.gen_entity( "Task", project=self.project, ) as task: result = self.sg.follow(human_user, shot) assert result["followed"] result = self.sg.following(human_user) self.assertEqual(1, len(result)) result = self.sg.follow(human_user, task) assert result["followed"] result = self.sg.following(human_user) self.assertEqual(2, len(result)) result = self.sg.following(human_user, entity_type="Task") self.assertEqual(1, len(result)) result = self.sg.following(human_user, entity_type="Shot") self.assertEqual(1, len(result)) shot_project_id = self.sg.find_one( "Shot", [["id", "is", shot["id"]]], ["project.Project.id"] )["project.Project.id"] task_project_id = self.sg.find_one( "Task", [["id", "is", task["id"]]], ["project.Project.id"] )["project.Project.id"] project_count = 2 if shot_project_id == task_project_id else 1 result = self.sg.following( human_user, project={"type": "Project", "id": shot_project_id} ) self.assertEqual(project_count, len(result)) result = self.sg.following( human_user, project={"type": "Project", "id": task_project_id} ) self.assertEqual(project_count, len(result)) result = self.sg.following( human_user, project={"type": "Project", "id": shot_project_id}, entity_type="Shot", ) self.assertEqual(1, len(result)) result = self.sg.following( human_user, project={"type": "Project", "id": task_project_id}, entity_type="Task", ) self.assertEqual(1, len(result)) class TestErrors(base.TestBase): def setUp(self): auth_mode = "HumanUser" if self.config.jenkins else "ApiUser" super().setUp(auth_mode) def test_bad_auth(self): """test_bad_auth invalid script name or api key raises fault""" server_url = self.config.server_url script_name = "not_real_script_name" api_key = self.config.api_key login = self.config.human_login password = self.config.human_password auth_token = "111111" # Test various combinations of illegal arguments self.assertRaises(ValueError, shotgun_api3.Shotgun, server_url) self.assertRaises(ValueError, shotgun_api3.Shotgun, server_url, None, api_key) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, script_name, None ) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, script_name, api_key, login=login, password=password, ) self.assertRaises(ValueError, shotgun_api3.Shotgun, server_url, login=login) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, password=password ) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, script_name, login=login, password=password, ) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, login=login, auth_token=auth_token, ) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, password=password, auth_token=auth_token, ) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, script_name, login=login, password=password, auth_token=auth_token, ) self.assertRaises( ValueError, shotgun_api3.Shotgun, server_url, api_key=api_key, login=login, password=password, auth_token=auth_token, ) # Test failed authentications sg = shotgun_api3.Shotgun(server_url, script_name, api_key) self.assertRaises(shotgun_api3.AuthenticationFault, sg.find_one, "Shot", []) script_name = self.config.script_name api_key = "notrealapikey" sg = shotgun_api3.Shotgun(server_url, script_name, api_key) self.assertRaises(shotgun_api3.AuthenticationFault, sg.find_one, "Shot", []) sg = shotgun_api3.Shotgun( server_url, login=login, password="not a real password" ) self.assertRaises(shotgun_api3.AuthenticationFault, sg.find_one, "Shot", []) # This may trigger an account lockdown. Make sure it is not locked anymore. user = self.sg.find_one("HumanUser", [["login", "is", login]]) self.sg.update("HumanUser", user["id"], {"locked_until": None}) @unittest.mock.patch("shotgun_api3.shotgun.Http.request") def test_status_not_200(self, mock_request): response = unittest.mock.MagicMock(name="response mock", spec=dict) response.status = 300 response.reason = "reason" mock_request.return_value = (response, {}) self.assertRaises(shotgun_api3.ProtocolError, self.sg.find_one, "Shot", []) @unittest.mock.patch("shotgun_api3.shotgun.Http.request") def test_make_call_retry(self, mock_request): response = unittest.mock.MagicMock(name="response mock", spec=dict) response.status = 200 response.reason = "reason" mock_request.return_value = (response, {}) bak_rpc_attempt_interval = self.sg.config.rpc_attempt_interval self.sg.config.rpc_attempt_interval = 0 try: # First: make the request raise a consistent exception mock_request.side_effect = Exception("not working") with self.assertLogs( "shotgun_api3", level="DEBUG" ) as cm1, self.assertRaises(Exception) as cm2: self.sg.info() self.assertEqual(cm2.exception.args[0], "not working") log_content = "\n".join(cm1.output) self.assertIn( "Request failed. Reason: not working", log_content, ) # Last: raise a SSLEOFError exception - SG-34910 def my_side_effect2(*args, **kwargs): try: if my_side_effect2.counter < 1: raise ssl.SSLEOFError( "EOF occurred in violation of protocol (_ssl.c:2426)" ) return unittest.mock.DEFAULT finally: my_side_effect2.counter += 1 my_side_effect2.counter = 0 mock_request.side_effect = my_side_effect2 with self.assertLogs("shotgun_api3", level="DEBUG") as cm: self.assertIsInstance( self.sg.info(), dict, ) log_content = "\n".join(cm.output) self.assertIn("SSLEOFError", log_content) self.assertIn( "Request failed, attempt 1 of 3. Retrying", log_content, ) self.assertNotIn( "Request failed, attempt 2 of 3. Retrying", log_content, ) finally: self.sg.config.rpc_attempt_interval = bak_rpc_attempt_interval @unittest.mock.patch.object(urllib.request.OpenerDirector, "open") def test_sanitized_auth_params(self, mock_open): # Simulate the server blowing up and giving us a 500 error mock_open.side_effect = urllib.error.HTTPError("url", 500, "message", {}, None) this_dir, _ = os.path.split(__file__) thumbnail_path = os.path.abspath(os.path.join(this_dir, "sg_logo.jpg")) try: # Try to upload a bogus file self.sg.upload("Note", 1234, thumbnail_path) except shotgun_api3.ShotgunError as e: self.assertFalse(str(self.api_key) in str(e)) return # You should never get here... Otherwise some mocking failed and the # except above wasn't properly run self.assertTrue(False) def test_upload_empty_file(self): """ Test uploading an empty file raises an error. """ this_dir, _ = os.path.split(__file__) path = os.path.abspath(os.path.expanduser(os.path.join(this_dir, "empty.txt"))) self.assertRaises( shotgun_api3.ShotgunError, self.sg.upload, "Version", 123, path ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.upload_thumbnail, "Version", 123, path ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, "Version", 123, path, ) def test_upload_missing_file(self): """ Test uploading an missing file raises an error. """ path = "/path/to/nowhere/foo.txt" self.assertRaises( shotgun_api3.ShotgunError, self.sg.upload, "Version", 123, path ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.upload_thumbnail, "Version", 123, path ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, "Version", 123, path, ) # def test_malformed_response(self): # # TODO ResponseError # pass class TestScriptUserSudoAuth(base.LiveTestBase): def setUp(self): super().setUp() self.sg.update( "HumanUser", self.human_user["id"], {"projects": [self.project]}, ) def test_user_is_creator(self): """ Test 'sudo_as_login' option: on create, ensure appropriate user is set in created-by """ if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 3, 12): return x = shotgun_api3.Shotgun( self.config.server_url, http_proxy=self.config.http_proxy, sudo_as_login=self.config.human_login, **self.auth_args, ) data = { "project": self.project, "code": "JohnnyApple_Design01_FaceFinal", "description": "fixed rig per director final notes", "sg_status_list": "na", "entity": self.asset, "user": self.human_user, } version = x.create("Version", data, return_fields=["id", "created_by"]) self.assertTrue(isinstance(version, dict)) self.assertTrue("id" in version) self.assertTrue("created_by" in version) self.assertEqual(self.config.human_name, version["created_by"]["name"]) class TestHumanUserSudoAuth(base.TestBase): def setUp(self): super().setUp("HumanUser") def test_human_user_sudo_auth_fails(self): """ Test 'sudo_as_login' option for HumanUser. Request fails on server because user has no permission to Sudo. """ if self.config.jenkins: self.skipTest("Jenkins. locked_until not updating.") if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 3, 12): return x = shotgun_api3.Shotgun( self.config.server_url, login=self.config.human_login, password=self.config.human_password, http_proxy=self.config.http_proxy, sudo_as_login="blah", ) self.assertRaises(shotgun_api3.Fault, x.find_one, "Shot", []) expected = "The user does not have permission to 'sudo':" try: x.find_one("Shot", []) except shotgun_api3.Fault as e: # py24 exceptions don't have message attr if hasattr(e, "message"): self.assertTrue(e.message.startswith(expected)) else: self.assertTrue(e.args[0].startswith(expected)) class TestHumanUserAuth(base.HumanUserAuthLiveTestBase): """ Testing the username/password authentication method """ def test_humanuser_find(self): """Called find, find_one for known entities as human user""" filters = [] filters.append(["project", "is", self.project]) filters.append(["id", "is", self.version["id"]]) fields = ["id"] versions = self.sg.find("Version", filters, fields=fields) self.assertTrue(isinstance(versions, list)) version = versions[0] self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) version = self.sg.find_one("Version", filters, fields=fields) self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) def test_humanuser_upload_thumbnail_for_version(self): """simple upload thumbnail for version test as human user.""" this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # upload thumbnail thumb_id = self.sg.upload_thumbnail("Version", self.version["id"], path) self.assertTrue(isinstance(thumb_id, int)) # check result on version version_with_thumbnail = self.find_one_await_thumbnail( "Version", [["id", "is", self.version["id"]]], ) self.assertEqual(version_with_thumbnail.get("type"), "Version") self.assertEqual(version_with_thumbnail.get("id"), self.version["id"]) h = Http(".cache") thumb_resp, content = h.request(version_with_thumbnail.get("image"), "GET") self.assertIn(thumb_resp["status"], ["200", "304"]) self.assertIn(thumb_resp["content-type"], ["image/jpeg", "image/png"]) # clear thumbnail response_clear_thumbnail = self.sg.update( "Version", self.version["id"], {"image": None} ) expected_clear_thumbnail = { "id": self.version["id"], "image": None, "type": "Version", } self.assertEqual(expected_clear_thumbnail, response_clear_thumbnail) class TestSessionTokenAuth(base.SessionTokenAuthLiveTestBase): """ Testing the session token based authentication method """ def test_humanuser_find(self): """Called find, find_one for known entities as session token based user""" if self.sg.server_caps.version >= (5, 4, 1): filters = [] filters.append(["project", "is", self.project]) filters.append(["id", "is", self.version["id"]]) fields = ["id"] versions = self.sg.find("Version", filters, fields=fields) self.assertTrue(isinstance(versions, list)) version = versions[0] self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) version = self.sg.find_one("Version", filters, fields=fields) self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) def test_humanuser_upload_thumbnail_for_version(self): """simple upload thumbnail for version test as session based token user.""" if self.sg.server_caps.version >= (5, 4, 1): this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # upload thumbnail thumb_id = self.sg.upload_thumbnail("Version", self.version["id"], path) self.assertTrue(isinstance(thumb_id, int)) # check result on version version_with_thumbnail = self.find_one_await_thumbnail( "Version", [["id", "is", self.version["id"]]], ) self.assertEqual(version_with_thumbnail.get("type"), "Version") self.assertEqual(version_with_thumbnail.get("id"), self.version["id"]) h = Http(".cache") thumb_resp, content = h.request(version_with_thumbnail.get("image"), "GET") self.assertIn(thumb_resp["status"], ["200", "304"]) self.assertIn(thumb_resp["content-type"], ["image/jpeg", "image/png"]) # clear thumbnail response_clear_thumbnail = self.sg.update( "Version", self.version["id"], {"image": None} ) expected_clear_thumbnail = { "id": self.version["id"], "image": None, "type": "Version", } self.assertEqual(expected_clear_thumbnail, response_clear_thumbnail) class TestProjectLastAccessedByCurrentUser(base.LiveTestBase): # Ticket #24681 def test_logged_in_user(self): if self.sg.server_caps.version and self.sg.server_caps.version < (5, 3, 20): return sg = shotgun_api3.Shotgun( self.config.server_url, login=self.config.human_login, password=self.config.human_password, http_proxy=self.config.http_proxy, ) sg.update_project_last_accessed(self.project) initial = sg.find_one( "Project", [["id", "is", self.project["id"]]], ["last_accessed_by_current_user"], ) # Make sure time has elapsed so there is a difference between the two time stamps. time.sleep(2) sg.update_project_last_accessed(self.project) current = sg.find_one( "Project", [["id", "is", self.project["id"]]], ["last_accessed_by_current_user"], ) self.assertNotEqual(initial, current) # it's possible initial is None assert ( initial["last_accessed_by_current_user"] < current["last_accessed_by_current_user"] ) def test_pass_in_user(self): if self.sg.server_caps.version and self.sg.server_caps.version < (5, 3, 20): return sg = shotgun_api3.Shotgun( self.config.server_url, login=self.config.human_login, password=self.config.human_password, http_proxy=self.config.http_proxy, ) initial = sg.find_one( "Project", [["id", "is", self.project["id"]]], ["last_accessed_by_current_user"], ) time.sleep(1) # this instance of the api is not logged in as a user self.sg.update_project_last_accessed(self.project, user=self.human_user) current = sg.find_one( "Project", [["id", "is", self.project["id"]]], ["last_accessed_by_current_user"], ) self.assertNotEqual(initial, current) # it's possible initial is None if initial: assert ( initial["last_accessed_by_current_user"] < current["last_accessed_by_current_user"] ) def test_sudo_as_user(self): if self.sg.server_caps.version and self.sg.server_caps.version < (5, 3, 20): return sg = shotgun_api3.Shotgun( self.config.server_url, http_proxy=self.config.http_proxy, sudo_as_login=self.config.human_login, **self.auth_args, ) initial = sg.find_one( "Project", [["id", "is", self.project["id"]]], ["last_accessed_by_current_user"], ) time.sleep(1) sg.update_project_last_accessed(self.project) current = sg.find_one( "Project", [["id", "is", self.project["id"]]], ["last_accessed_by_current_user"], ) self.assertNotEqual(initial, current) # it's possible initial is None if initial: assert ( initial["last_accessed_by_current_user"] < current["last_accessed_by_current_user"] ) class TestActivityStream(base.LiveTestBase): """ Unit tests for the activity_stream_read() method """ def setUp(self): super().setUp() self._prefix = uuid.uuid4().hex self._shot = self.sg.create( "Shot", {"code": "%s activity stream test" % self._prefix, "project": self.project}, ) self._note = self.sg.create( "Note", {"content": "Test!", "project": self.project, "note_links": [self._shot]}, ) # check that if the created_by is a script user, we want to ensure # that event log generation is enabled for this user. If it has been # disabled, these tests will fail because the activity stream is # connected to events. In this case, print a warning to the user d = self.sg.find_one( "Shot", [["id", "is", self._shot["id"]]], ["created_by.ApiUser.generate_event_log_entries"], ) if d["created_by.ApiUser.generate_event_log_entries"] is False: # events are turned off! warn the user print( "WARNING! Looks like the script user that is running these " "tests has got the generate event log entries setting set to " "off. This will cause the activity stream tests to fail. " "Please enable event log generation for the script user." ) def tearDown(self): batch_data = [] batch_data.append( { "request_type": "delete", "entity_type": self._note["type"], "entity_id": self._note["id"], } ) batch_data.append( { "request_type": "delete", "entity_type": self._shot["type"], "entity_id": self._shot["id"], } ) self.sg.batch(batch_data) super().tearDown() def test_simple(self): """ Test activity stream """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return result = self.sg.activity_stream_read(self._shot["type"], self._shot["id"]) expected_keys = [ "earliest_update_id", "entity_id", "entity_type", "latest_update_id", "updates", ] self.assertEqual(set(expected_keys), set(result.keys())) self.assertEqual(len(result["updates"]), 2) self.assertEqual(result["entity_type"], "Shot") self.assertEqual(result["entity_id"], self._shot["id"]) def test_limit(self): """ Test limited activity stream """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return result = self.sg.activity_stream_read( self._shot["type"], self._shot["id"], limit=1 ) self.assertEqual(len(result["updates"]), 1) self.assertEqual(result["updates"][0]["update_type"], "create") self.assertEqual(result["updates"][0]["meta"]["entity_type"], "Note") def test_extra_fields(self): """ Test additional fields for activity stream """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return result = self.sg.activity_stream_read( self._shot["type"], self._shot["id"], entity_fields={"Shot": ["created_by.HumanUser.image"], "Note": ["content"]}, ) self.assertEqual(len(result["updates"]), 2) self.assertEqual( set(result["updates"][0]["primary_entity"].keys()), set(["content", "id", "name", "status", "type"]), ) self.assertEqual( set(result["updates"][1]["primary_entity"].keys()), set(["created_by.HumanUser.image", "id", "name", "status", "type"]), ) class TestNoteThreadRead(base.LiveTestBase): """ Unit tests for the note_thread_read method """ def setUp(self): super().setUp() # get path to our std attahcment this_dir, _ = os.path.split(__file__) self._thumbnail_path = os.path.abspath(os.path.join(this_dir, "sg_logo.jpg")) def _check_note(self, data, note_id, additional_fields): # check the expected fields expected_fields = set( ["content", "created_at", "created_by", "id", "type"] + additional_fields ) self.assertEqual(expected_fields, set(data.keys())) # check that the data matches the data we get from a find call note_data = self.sg.find_one( "Note", [["id", "is", note_id]], list(expected_fields) ) # remove images before comparison if ( "created_by.HumanUser.image" in note_data and "created_by.HumanUser.image" in data ): note_data.pop("created_by.HumanUser.image") data.pop("created_by.HumanUser.image") self.assertEqual(note_data, data) def _check_reply(self, data, reply_id, additional_fields): # check the expected fields expected_fields = set( ["content", "created_at", "user", "id", "type"] + additional_fields ) self.assertEqual(expected_fields, set(data.keys())) # check that the data matches the data we get from a find call reply_data = self.sg.find_one( "Reply", [["id", "is", reply_id]], list(expected_fields) ) # the reply stream adds an image to the user fields in order # to include thumbnails for users, so remove this before we compare # against the shotgun find data. The image is tested elsewhere. del data["user"]["image"] self.assertEqual(reply_data, data) def _check_attachment(self, data, attachment_id, additional_fields): # check the expected fields expected_fields = set( ["created_at", "created_by", "id", "type"] + additional_fields ) self.assertEqual(expected_fields, set(data.keys())) # check that the data matches the data we get from a find call attachment_data = self.sg.find_one( "Attachment", [["id", "is", attachment_id]], list(expected_fields) ) # remove images before comparison if "this_file" in attachment_data and "this_file" in data: attachment_data["this_file"].pop("url") data["this_file"].pop("url") self.assertEqual(attachment_data, data) # For now skip tests that are erroneously failling on some sites to # allow CI to pass until the known issue causing this is resolved. @unittest.skip("Skipping test that erroneously fails on some sites.") def test_simple(self): """ Test note reply thread API call """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return user_entity = "HumanUser" if self.config.jenkins else "ApiUser" # create note note = self.sg.create("Note", {"content": "Test!", "project": self.project}) # for this test, we check that the replies returned also # contain the thumbnail associated with the user doing the # reply. For this, make sure that there is a thumbnail # associated with the current user d = self.sg.find_one( "Note", [["id", "is", note["id"]]], ["created_by", f"created_by.{user_entity}.image"], ) current_thumbnail = d[f"created_by.{user_entity}.image"] if current_thumbnail is None: # upload thumbnail self.sg.upload_thumbnail( user_entity, d["created_by"]["id"], self._thumbnail_path ) d = self.sg.find_one( "Note", [["id", "is", note["id"]]], ["created_by", f"created_by.{user_entity}.image"], ) current_thumbnail = d[f"created_by.{user_entity}.image"] # get thread result = self.sg.note_thread_read(note["id"]) self.assertEqual(len(result), 1) self._check_note(result[0], note["id"], additional_fields=[]) # now add a reply reply = self.sg.create("Reply", {"content": "Reply Content", "entity": note}) # get thread result = self.sg.note_thread_read(note["id"]) self.assertEqual(len(result), 2) # now check that the reply thumbnail field matches # the uploaded thumbnail. strip off any s3 querystring # for the comparison reply_thumb = result[1]["user"]["image"] url_obj_a = urllib.parse.urlparse(current_thumbnail) url_obj_b = urllib.parse.urlparse(reply_thumb) self.assertEqual( "%s/%s" % (url_obj_a.netloc, url_obj_a.path), "%s/%s" % (url_obj_b.netloc, url_obj_b.path), ) # and check ther rest of the data self._check_note(result[0], note["id"], additional_fields=[]) self._check_reply(result[1], reply["id"], additional_fields=[]) # now upload an attachment attachment_id = self.sg.upload(note["type"], note["id"], self._thumbnail_path) # get thread result = self.sg.note_thread_read(note["id"]) self.assertEqual(len(result), 3) self._check_note(result[0], note["id"], additional_fields=[]) self._check_reply(result[1], reply["id"], additional_fields=[]) self._check_attachment(result[2], attachment_id, additional_fields=[]) # For now skip tests that are erroneously failling on some sites to # allow CI to pass until the known issue causing this is resolved. @unittest.skip("Skipping test that erroneously fails on some sites.") def test_complex(self): """ Test note reply thread API call with additional params """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return additional_fields = { "Note": [ "created_by.HumanUser.image", "addressings_to", "playlist", "user", ], "Reply": ["content"], "Attachment": ["this_file"], } # create note note = self.sg.create( "Note", { "content": "Test!", "project": self.project, "addressings_to": [self.human_user], }, ) # get thread result = self.sg.note_thread_read(note["id"], additional_fields) self.assertEqual(len(result), 1) self._check_note(result[0], note["id"], additional_fields["Note"]) # now add a reply reply = self.sg.create("Reply", {"content": "Reply Content", "entity": note}) # get thread result = self.sg.note_thread_read(note["id"], additional_fields) self.assertEqual(len(result), 2) self._check_note(result[0], note["id"], additional_fields["Note"]) self._check_reply(result[1], reply["id"], additional_fields["Reply"]) # now upload an attachment attachment_id = self.sg.upload(note["type"], note["id"], self._thumbnail_path) # get thread result = self.sg.note_thread_read(note["id"], additional_fields) self.assertEqual(len(result), 3) self._check_note(result[0], note["id"], additional_fields["Note"]) self._check_reply(result[1], reply["id"], additional_fields["Reply"]) self._check_attachment( result[2], attachment_id, additional_fields["Attachment"] ) class TestTextSearch(base.LiveTestBase): """ Unit tests for the text_search() method """ def setUp(self): super().setUp() # create 5 shots and 5 assets to search for self._prefix = uuid.uuid4().hex batch_data = [] for i in range(5): data = { "code": "%s Text Search %s" % (self._prefix, i), "project": self.project, } batch_data.append( {"request_type": "create", "entity_type": "Shot", "data": data} ) batch_data.append( {"request_type": "create", "entity_type": "Asset", "data": data} ) data = self.sg.batch(batch_data) self._shot_ids = [x["id"] for x in data if x["type"] == "Shot"] self._asset_ids = [x["id"] for x in data if x["type"] == "Asset"] def tearDown(self): # clean up batch_data = [] for shot_id in self._shot_ids: batch_data.append( {"request_type": "delete", "entity_type": "Shot", "entity_id": shot_id} ) for asset_id in self._asset_ids: batch_data.append( { "request_type": "delete", "entity_type": "Asset", "entity_id": asset_id, } ) self.sg.batch(batch_data) super().tearDown() def test_simple(self): """ Test basic global search """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return result = self.sg.text_search("%s Text Search" % self._prefix, {"Shot": []}) self.assertEqual(set(["matches", "terms"]), set(result.keys())) self.assertEqual(result["terms"], [self._prefix, "text", "search"]) matches = result["matches"] self.assertEqual(len(matches), 5) for match in matches: self.assertTrue(match["id"] in self._shot_ids) self.assertEqual(match["type"], "Shot") self.assertEqual(match["project_id"], self.project["id"]) self.assertEqual(match["image"], None) def test_limit(self): """ Test limited global search """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return result = self.sg.text_search( "%s Text Search" % self._prefix, {"Shot": []}, limit=3 ) matches = result["matches"] self.assertEqual(len(matches), 3) def test_entity_filter(self): """ Test basic multi-type global search """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return result = self.sg.text_search( "%s Text Search" % self._prefix, {"Shot": [], "Asset": []} ) matches = result["matches"] self.assertEqual(set(["matches", "terms"]), set(result.keys())) self.assertEqual(len(matches), 10) def test_complex_entity_filter(self): """ Test complex multi-type global search """ if not self.sg.server_caps.version or self.sg.server_caps.version < (6, 2, 0): return result = self.sg.text_search( "%s Text Search" % self._prefix, { "Shot": [["code", "ends_with", "3"]], "Asset": [ {"filter_operator": "any", "filters": [["code", "ends_with", "4"]]} ], }, ) matches = result["matches"] self.assertEqual(set(["matches", "terms"]), set(result.keys())) self.assertEqual(len(matches), 2) self.assertEqual(matches[0]["type"], "Shot") self.assertEqual(matches[0]["name"], "%s Text Search 3" % self._prefix) self.assertEqual(matches[1]["type"], "Asset") self.assertEqual(matches[1]["name"], "%s Text Search 4" % self._prefix) class TestReadAdditionalFilterPresets(base.LiveTestBase): """ Unit tests for the additional_filter_presets read parameter """ def test_simple_case(self): if self.sg_version < (7, 0, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return filters = [["project", "is", self.project], ["id", "is", self.version["id"]]] fields = ["id"] additional_filters = [ {"preset_name": "LATEST", "latest_by": "ENTITIES_CREATED_AT"} ] versions = self.sg.find( "Version", filters, fields=fields, additional_filter_presets=additional_filters, ) version = versions[0] self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) def test_find_one(self): if self.sg_version < (7, 0, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return filters = [["project", "is", self.project], ["id", "is", self.version["id"]]] fields = ["id"] additional_filters = [ {"preset_name": "LATEST", "latest_by": "ENTITIES_CREATED_AT"} ] version = self.sg.find_one( "Version", filters, fields=fields, additional_filter_presets=additional_filters, ) self.assertEqual("Version", version["type"]) self.assertEqual(self.version["id"], version["id"]) def test_filter_with_no_name(self): if self.sg_version < (7, 0, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return filters = [["project", "is", self.project], ["id", "is", self.version["id"]]] fields = ["id"] additional_filters = [{}] self.assertRaises( shotgun_api3.Fault, self.sg.find, "Version", filters, fields=fields, additional_filter_presets=additional_filters, ) def test_invalid_filter(self): if self.sg_version < (7, 0, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return filters = [["project", "is", self.project], ["id", "is", self.version["id"]]] fields = ["id"] additional_filters = [{"preset_name": "BAD_FILTER"}] self.assertRaises( shotgun_api3.Fault, self.sg.find, "Version", filters, fields=fields, additional_filter_presets=additional_filters, ) def test_filter_not_iterable(self): if self.sg_version < (7, 0, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return filters = [["project", "is", self.project], ["id", "is", self.version["id"]]] fields = ["id"] additional_filters = 3 self.assertRaises( shotgun_api3.Fault, self.sg.find, "Version", filters, fields=fields, additional_filter_presets=additional_filters, ) def test_filter_not_list_of_iterable(self): if self.sg_version < (7, 0, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return filters = [["project", "is", self.project], ["id", "is", self.version["id"]]] fields = ["id"] additional_filters = [3] self.assertRaises( shotgun_api3.Fault, self.sg.find, "Version", filters, fields=fields, additional_filter_presets=additional_filters, ) def test_multiple_latest_filters(self): if self.sg_version < (7, 0, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return filters = [["project", "is", self.project], ["id", "is", self.version["id"]]] fields = ["id"] additional_filters = ( {"preset_name": "LATEST", "latest_by": "ENTITY_CREATED_AT"}, { "preset_name": "LATEST", "latest_by": "PIPELINE_STEP_NUMBER_AND_ENTITIES_CREATED_AT", }, ) self.assertRaises( shotgun_api3.Fault, self.sg.find, "Version", filters, fields=fields, additional_filter_presets=additional_filters, ) def test_modify_visibility(self): """ Ensure the visibility of a field can be edited via the API. """ # If the version of Shotgun is too old, do not run this test. # TODO: Update this with the real version number once the feature is released. if self.sg_version < (8, 5, 0): warnings.warn( "Test bypassed because PTR server used does not support this feature.", FutureWarning, ) return field_display_name = "Project Visibility Test" field_name = "sg_{0}".format(field_display_name.lower().replace(" ", "_")) schema = self.sg.schema_field_read("Asset") # Ensure the custom field exists. if field_name not in schema: self.sg.schema_field_create("Asset", "text", "Project Visibility Test") # Grab any two projects that we can use for toggling the visible property with. projects = self.sg.find( "Project", [], order=[{"field_name": "id", "direction": "asc"}] ) project_1 = projects[0] project_2 = projects[1] # First, reset the field visibility in a known state, i.e. visible for both projects, # in case the last test run failed midway through. self.sg.schema_field_update("Asset", field_name, {"visible": True}, project_1) self.assertEqual( {"value": True, "editable": True}, self.sg.schema_field_read("Asset", field_name, project_1)[field_name][ "visible" ], ) self.sg.schema_field_update("Asset", field_name, {"visible": True}, project_2) self.assertEqual( {"value": True, "editable": True}, self.sg.schema_field_read("Asset", field_name, project_2)[field_name][ "visible" ], ) # Built-in fields should remain not editable. self.assertFalse( self.sg.schema_field_read("Asset", "code")["code"]["visible"]["editable"] ) # Custom fields should be editable self.assertEqual( {"value": True, "editable": True}, self.sg.schema_field_read("Asset", field_name)[field_name]["visible"], ) # Hide the field on project 1 self.sg.schema_field_update("Asset", field_name, {"visible": False}, project_1) # It should not be visible anymore. self.assertEqual( {"value": False, "editable": True}, self.sg.schema_field_read("Asset", field_name, project_1)[field_name][ "visible" ], ) # The field should be visible on the second project. self.assertEqual( {"value": True, "editable": True}, self.sg.schema_field_read("Asset", field_name, project_2)[field_name][ "visible" ], ) # Restore the visibility on the field. self.sg.schema_field_update("Asset", field_name, {"visible": True}, project_1) self.assertEqual( {"value": True, "editable": True}, self.sg.schema_field_read("Asset", field_name, project_1)[field_name][ "visible" ], ) class TestLibImports(base.LiveTestBase): """ Ensure that included modules are importable and that the correct version is present. """ def test_import_httplib(self): """ Ensure that httplib2 is importable and objects are available """ from shotgun_api3.lib import httplib2 # Ensure that Http object is available. This is a good indication that # the httplib2 module contents are importable. self.assertTrue(hasattr(httplib2, "Http")) self.assertTrue(isinstance(httplib2.Http, object)) # Ensure that socks submodule is present and importable using a from # import -- this is a good indication that external httplib2 imports # from shotgun_api3 will work as expected. from shotgun_api3.lib.httplib2 import socks self.assertTrue(isinstance(socks, types.ModuleType)) # Make sure that objects in socks are available as expected self.assertTrue(hasattr(socks, "HTTPError")) def _get_path(url): """Returns path component of a url without the sheme, host, query, anchor, or any other additional elements. For example, the url "https://foo.shotgunstudio.com/page/2128#Shot_1190_sr10101_034" returns "/page/2128" """ # url_parse returns native objects for older python versions (2.4) if isinstance(url, dict): return url.get("path") elif isinstance(url, tuple): # 3rd component is the path return url[2] else: return url.path if __name__ == "__main__": unittest.main() ================================================ FILE: tests/test_api_long.py ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. """Longer tests for calling the Shotgun API functions. Includes the schema functions and the automated searching for all entity types """ from . import base import random import shotgun_api3 class TestShotgunApiLong(base.LiveTestBase): def test_automated_find(self): """Called find for each entity type and read all fields""" # Whitelist certain data types for order_field, since no_sorting is not # currently exposed. These should be good bets to be sortable. sortable_types = ("number", "date") all_entities = list(self.sg.schema_entity_read().keys()) direction = "asc" filter_operator = "all" limit = 1 page = 1 for entity_type in all_entities: if entity_type in ( "Asset", "Task", "Shot", "Attachment", "Candidate", "MimProject", "MimEntity", "MimField", ): continue print("Finding entity type %s" % entity_type) fields = self.sg.schema_field_read(entity_type) if not fields: print("No fields for %s skipping" % entity_type) continue # trying to use some different code paths to the other find test # pivot_column fields aren't valid for sorting so ensure we're # not using one. order_field = None for field_name, field in fields.items(): # Restrict sorting to only types we know will always be sortable # Since no_sorting is not exposed to us, we'll have to rely on # this as a safeguard against trying to sort by a field with # allow_sorting=false. if field["data_type"]["value"] in sortable_types: order_field = field_name break # TODO for our test project, we haven't populated these entities.... order = None if order_field: order = [{"field_name": order_field, "direction": direction}] if "project" in fields: filters = [["project", "is", self.project]] else: filters = [] records = self.sg.find( entity_type, filters, fields=list(fields.keys()), order=order, filter_operator=filter_operator, limit=limit, page=page, ) self.assertTrue(isinstance(records, list)) if filter_operator == "all": filter_operator = "any" else: filter_operator = "all" if direction == "desc": direction = "asc" else: direction = "desc" limit = (limit % 5) + 1 page = (page % 3) + 1 def test_schema(self): """Called schema functions""" schema = self.sg.schema_entity_read() self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) schema = self.sg.schema_read() self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) schema = self.sg.schema_field_read("Version") self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) schema = self.sg.schema_field_read("Version", field_name="user") self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) self.assertTrue("user" in schema) # An explanation is in order here. the field code that is created in shotgun is based on the human display name # that is provided , so for example "Money Count" would generate the field code 'sg_monkey_count' . The field # that is created in this test is retired at the end of the test but when this test is run again against # the same database ( which happens on our Continuous Integration server ) trying to create a new field # called "Monkey Count" will now fail due to the new Delete Field Forever features we have added to shotgun # since there will a retired field called sg_monkey_count. The old behavior was to go ahead and create a new # "Monkey Count" field with a field code with an incremented number of the end like sg_monkey_count_1. The new # behavior is to raise an error in hopes the user will go into the UI and delete the old retired field forever. # make a the name of the field somewhat unique human_field_name = "Monkey " + str(random.getrandbits(24)) properties = {"description": "How many monkeys were needed"} new_field_name = self.sg.schema_field_create( "Version", "number", human_field_name, properties=properties ) properties = {"description": "How many monkeys turned up"} ret_val = self.sg.schema_field_update("Version", new_field_name, properties) self.assertTrue(ret_val) ret_val = self.sg.schema_field_delete("Version", new_field_name) self.assertTrue(ret_val) def test_schema_with_project(self): """Called schema functions with project""" project_entity = {"type": "Project", "id": 0} if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 4, 4): # server does not support this! self.assertRaises( shotgun_api3.ShotgunError, self.sg.schema_entity_read, project_entity ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.schema_read, project_entity ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.schema_field_read, "Version", None, project_entity, ) self.assertRaises( shotgun_api3.ShotgunError, self.sg.schema_field_read, "Version", "user", project_entity, ) else: schema = self.sg.schema_entity_read(project_entity) self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) self.assertTrue("Project" in schema) self.assertTrue("visible" in schema["Project"]) schema = self.sg.schema_read(project_entity) self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) self.assertTrue("Version" in schema) self.assertFalse("visible" in schema) schema = self.sg.schema_field_read("Version", project_entity=project_entity) self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) self.assertTrue("user" in schema) self.assertTrue("visible" in schema["user"]) schema = self.sg.schema_field_read("Version", "user", project_entity) self.assertTrue(schema, dict) self.assertTrue(len(schema) > 0) self.assertTrue("user" in schema) self.assertTrue("visible" in schema["user"]) if __name__ == "__main__": base.unittest.main() ================================================ FILE: tests/test_client.py ================================================ # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. """Tests against the client software that do not involve calling the CRUD functions. These tests always use a mock http connection so not not need a live server to run against.""" import configparser import base64 import datetime import json import os import platform import re import sys import time import unittest import unittest.mock import urllib.parse import urllib.error import shotgun_api3.lib.httplib2 as httplib2 import shotgun_api3 as api from shotgun_api3.shotgun import ServerCapabilities, SG_TIMEZONE from . import base def b64encode(val): if isinstance(val, str): val = val.encode("utf-8") return base64.encodebytes(val).decode("utf-8") class TestShotgunClient(base.MockTestBase): """Test case for shotgun api with server interactions mocked.""" def setUp(self): super().setUp() # get domain and uri scheme match = re.search("(https?://)(.*)", self.server_url) self.uri_prefix = match.group(1) self.domain = match.group(2) # always want the mock on self._setup_mock() def test_detect_client_caps(self): """Client and server capabilities detected""" client_caps = self.sg.client_caps self.sg.connect() self.assertEqual(1, self.sg._http_request.call_count) self.assertTrue(client_caps is not None) self.assertTrue(client_caps.platform in ("windows", "linux", "mac")) self.assertTrue(client_caps.local_path_field.startswith("local_path")) self.assertTrue(str(client_caps).startswith("ClientCapabilities")) self.assertTrue(client_caps.py_version.startswith(str(sys.version_info[0]))) self.assertTrue(client_caps.py_version.endswith(str(sys.version_info[1]))) self.assertTrue(client_caps.ssl_version is not None) # todo test for version string (eg. "1.2.3ng") or "unknown" def test_detect_server_caps(self): """test_detect_server_caps tests that ServerCapabilities object is made with appropriate settings for given server version.""" # has paging is tested else where. server_info = {"version": [9, 9, 9]} self._mock_http(server_info) # ensrue the server caps is re-read self.sg._server_caps = None self.assertTrue(self.sg.server_caps is not None) self.assertFalse(self.sg.server_caps.is_dev) self.assertEqual((9, 9, 9), self.sg.server_caps.version) self.assertTrue(self.server_url.endswith(self.sg.server_caps.host)) self.assertTrue(str(self.sg.server_caps).startswith("ServerCapabilities")) self.assertEqual(server_info, self.sg.server_info) self._mock_http({"version": [9, 9, 9, "Dev"]}) self.sg._server_caps = None self.assertTrue(self.sg.server_caps.is_dev) def test_server_version_json(self): """test_server_version_json tests expected versions for json support.""" sc = ServerCapabilities("foo", {"version": (2, 4, 0)}) sc.version = (2, 3, 99) self.assertRaises(api.ShotgunError, sc._ensure_json_supported) self.assertRaises( api.ShotgunError, ServerCapabilities, "foo", {"version": (2, 2, 0)} ) sc.version = (0, 0, 0) self.assertRaises(api.ShotgunError, sc._ensure_json_supported) sc.version = (2, 4, 0) sc._ensure_json_supported() sc.version = (2, 5, 0) sc._ensure_json_supported() def test_extra_auth_params(self): """test_extra_auth_params tests provided auth_params are included in request""" # ok for the mock server to just return an error, we want to look at # what's in the request self._mock_http({"message": "Go BANG", "exception": True}) def auth_args(): args = self.sg._http_request.call_args[0] body = args[2] body = json.loads(body) return body["params"][0] self.sg.config.extra_auth_params = None self.assertRaises(api.Fault, self.sg.delete, "FakeType", 1) self.assertTrue("product" not in auth_args()) self.sg.config.extra_auth_params = {"product": "rv"} self.assertRaises(api.Fault, self.sg.delete, "FakeType", 1) self.assertEqual("rv", auth_args()["product"]) def test_session_uuid(self): """test_session_uuid tests session UUID is included in request""" # ok for the mock server to just return an error, we want to look at # whats in the request self._mock_http({"message": "Go BANG", "exception": True}) def auth_args(): args = self.sg._http_request.call_args[0] body = args[2] body = json.loads(body) return body["params"][0] self.sg.set_session_uuid(None) self.assertRaises(api.Fault, self.sg.delete, "FakeType", 1) self.assertTrue("session_uuid" not in auth_args()) my_uuid = "5a1d49b0-0c69-11e0-a24c-003048d17544" self.sg.set_session_uuid(my_uuid) self.assertRaises(api.Fault, self.sg.delete, "FakeType", 1) self.assertEqual(my_uuid, auth_args()["session_uuid"]) def test_url(self): """Server url is parsed correctly""" login = self.human_user["login"] password = self.human_password self.assertRaises(ValueError, api.Shotgun, None, None, None, connect=False) self.assertRaises( ValueError, api.Shotgun, "file://foo.com", None, None, connect=False ) self.assertEqual("/api3/json", self.sg.config.api_path) # support auth details in the url of the form login_password = "%s:%s" % (login, password) # login:password@domain auth_url = "%s%s@%s" % (self.uri_prefix, login_password, self.domain) sg = api.Shotgun(auth_url, None, None, connect=False) expected = "Basic " + b64encode(urllib.parse.unquote(login_password)).strip() self.assertEqual(expected, sg.config.authorization) def test_b64encode(self): """Parse value using the proper encoder.""" login = "thelogin" password = "%thepassw0r#$" login_password = "%s:%s" % (login, password) expected = "dGhlbG9naW46JXRoZXBhc3N3MHIjJA==" result = b64encode(urllib.parse.unquote(login_password)).strip() self.assertEqual(expected, result) def test_read_config(self): """Validate that config values are properly coerced.""" this_dir = os.path.dirname(os.path.realpath(__file__)) config_path = os.path.join(this_dir, "test_config_file") config = configparser.ConfigParser() config.read(config_path) result = config.get("SERVER_INFO", "api_key") expected = "%abce" self.assertEqual(expected, result) def test_split_url(self): """Validate that url parts are properly extracted.""" sg = api.Shotgun("https://ci.shotgunstudio.com", "foo", "bar", connect=False) base_url = "https://ci.shotgunstudio.com" expected_server = "ci.shotgunstudio.com" expected_auth = None auth, server = sg._split_url(base_url) self.assertEqual(auth, expected_auth) self.assertEqual(server, expected_server) base_url = "https://ci.shotgunstudio.com:9500" expected_server = "ci.shotgunstudio.com:9500" expected_auth = None auth, server = sg._split_url(base_url) self.assertEqual(auth, expected_auth) self.assertEqual(server, expected_server) base_url = "https://x:y@ci.shotgunstudio.com:9500" expected_server = "ci.shotgunstudio.com:9500" expected_auth = "x:y" auth, server = sg._split_url(base_url) self.assertEqual(auth, expected_auth) self.assertEqual(server, expected_server) base_url = "https://12345XYZ@ci.shotgunstudio.com:9500" expected_server = "ci.shotgunstudio.com:9500" expected_auth = "12345XYZ" auth, server = sg._split_url(base_url) self.assertEqual(auth, expected_auth) self.assertEqual(server, expected_server) def test_authorization(self): """Authorization passed to server""" login = self.human_user["login"] password = self.human_password login_password = "%s:%s" % (login, password) # login:password@domain auth_url = "%s%s@%s" % (self.uri_prefix, login_password, self.domain) self.sg = api.Shotgun(auth_url, "foo", "bar", connect=False) self._setup_mock() self._mock_http({"version": [2, 4, 0, "Dev"]}) self.sg.info() args, _ = self.sg._http_request.call_args verb, path, body, headers = args expected = "Basic " + b64encode(urllib.parse.unquote(login_password)).strip() self.assertEqual(expected, headers.get("Authorization")) def test_localization_header_default(self): """Localization header not passed to server without explicitly setting PTR localization config to True""" self.sg.info() args, _ = self.sg._http_request.call_args _, _, _, headers = args expected_header_value = "auto" self.assertEqual(None, headers.get("locale")) def test_localization_header_when_localized(self): """Localization header passed to server when setting PTR localization config to True""" self.sg.config.localized = True self.sg.info() args, _ = self.sg._http_request.call_args _, _, _, headers = args expected_header_value = "auto" self.assertEqual("auto", headers.get("locale")) def test_user_agent(self): """User-Agent passed to server""" # test default user agent self.sg.info() client_caps = self.sg.client_caps config = self.sg.config args, _ = self.sg._http_request.call_args _, _, _, headers = args ssl_validate_lut = {True: "no-validate", False: "validate"} expected = "shotgun-json (%s); Python %s (%s); ssl %s" % ( api.__version__, client_caps.py_version, client_caps.platform.capitalize(), client_caps.ssl_version, ) self.assertEqual(expected, headers.get("user-agent")) # test adding to user agent self.sg.add_user_agent("test-agent") self.sg.info() args, _ = self.sg._http_request.call_args _, _, _, headers = args expected = "shotgun-json (%s); Python %s (%s); ssl %s; test-agent" % ( api.__version__, client_caps.py_version, client_caps.platform.capitalize(), client_caps.ssl_version, ) self.assertEqual(expected, headers.get("user-agent")) # test resetting user agent self.sg.reset_user_agent() self.sg.info() args, _ = self.sg._http_request.call_args _, _, _, headers = args expected = "shotgun-json (%s); Python %s (%s); ssl %s" % ( api.__version__, client_caps.py_version, client_caps.platform.capitalize(), client_caps.ssl_version, ) self.assertEqual(expected, headers.get("user-agent")) def test_connect_close(self): """Connection is closed and opened.""" # The mock created an existing mock connection, self.sg.connect() self.assertEqual(0, self.mock_conn.request.call_count) self.sg.close() self.assertEqual(None, self.sg._connection) def test_network_retry(self): """Network failure is retried, with a sleep call between retries.""" self.sg._http_request.side_effect = httplib2.HttpLib2Error with unittest.mock.patch("time.sleep") as mock_sleep: self.assertRaises(httplib2.HttpLib2Error, self.sg.info) self.assertTrue( self.sg._http_request.call_count == 1, "Call is repeated", ) def test_set_retry_interval(self): """Setting the retry interval through parameter and environment variable works.""" original_env_val = os.environ.pop("SHOTGUN_API_RETRY_INTERVAL", None) try: def run_interval_test(expected_interval, interval_property=None): self.sg = api.Shotgun( self.config.server_url, self.config.script_name, self.config.api_key, http_proxy=self.config.http_proxy, connect=self.connect, ) self._setup_mock() if interval_property: # if a value was provided for interval_property, set the # config's property to that value. self.sg.config.rpc_attempt_interval = interval_property self.sg._http_request.side_effect = httplib2.HttpLib2Error self.assertEqual(self.sg.config.rpc_attempt_interval, expected_interval) self.test_network_retry() # Try passing parameter and ensure the correct interval is used. run_interval_test(expected_interval=2500, interval_property=2500) # Try setting ENV VAR and ensure the correct interval is used. os.environ["SHOTGUN_API_RETRY_INTERVAL"] = "2000" run_interval_test(expected_interval=2000) # Try both parameter and environment variable, to ensure parameter wins. run_interval_test(expected_interval=4000, interval_property=4000) finally: # Restore environment variable. if original_env_val is not None: os.environ["SHOTGUN_API_RETRY_INTERVAL"] = original_env_val elif "SHOTGUN_API_RETRY_INTERVAL" in os.environ: os.environ.pop("SHOTGUN_API_RETRY_INTERVAL") def test_http_error(self): """HTTP error raised and not retried.""" self._mock_http("big old error string", status=(500, "Internal Server Error")) self.assertRaises(api.ProtocolError, self.sg.info) self.assertEqual(1, self.sg._http_request.call_count, "Call is not repeated") def test_rpc_error(self): """RPC error transformed into Python error""" self._mock_http({"message": "Go BANG", "exception": True}) self.assertRaises(api.Fault, self.sg.info) try: self.sg.info() except api.Fault as e: self.assertEqual("Go BANG", str(e)) def test_call_rpc(self): """Named rpc method is called and results handled""" d = {"no-results": "data without a results key"} self._mock_http(d) rv = self.sg._call_rpc("no-results", None) self._assert_http_method("no-results", None) expected = "rpc response without results key is returned as-is" self.assertEqual(d, rv, expected) d = {"results": {"singleton": "result"}} self._mock_http(d) rv = self.sg._call_rpc("singleton", None) self._assert_http_method("singleton", None) expected = "rpc response with singleton result" self.assertEqual(d["results"], rv, expected) d = {"results": ["foo", "bar"]} a = {"some": "args"} self._mock_http(d) rv = self.sg._call_rpc("list", a) self._assert_http_method("list", a) expected = "rpc response with list result" self.assertEqual(d["results"], rv, expected) d = {"results": ["foo", "bar"]} a = {"some": "args"} self._mock_http(d) rv = self.sg._call_rpc("list-first", a, first=True) self._assert_http_method("list-first", a) expected = "rpc response with list result, first item" self.assertEqual(d["results"][0], rv, expected) # Test payload encoding with non-ascii characters (using utf-8 literal) d = {"results": ["foo", "bar"]} a = { "utf_literal": "\xe2\x88\x9a", } self._mock_http(d) rv = self.sg._call_rpc("list", a) expected = "rpc response with list result" self.assertEqual(d["results"], rv, expected) # Test that we raise on a 5xx. This is ensuring the retries behavior # in place specific to 5xx responses still eventually ends up raising. # 502 d = {"results": ["foo", "bar"]} a = {"some": "args"} self._mock_http(d, status=(502, "bad gateway")) self.assertRaises(api.ProtocolError, self.sg._call_rpc, "list", a) self.assertEqual( self.sg.MAX_ATTEMPTS, self.sg._http_request.call_count, f"Call is repeated up to {self.sg.MAX_ATTEMPTS} times", ) # 504 d = {"results": ["foo", "bar"]} a = {"some": "args"} self._mock_http(d, status=(504, "gateway timeout")) self.assertRaises(api.ProtocolError, self.sg._call_rpc, "list", a) self.assertEqual( self.sg.MAX_ATTEMPTS, self.sg._http_request.call_count, f"Call is repeated up to {self.sg.MAX_ATTEMPTS} times", ) def test_upload_s3_503(self): """ Test 503 response is retried when uploading to S3. """ this_dir, _ = os.path.split(__file__) storage_url = "http://foo.com/" path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # Expected HTTPError exception error message expected = ( "The server is currently down or to busy to reply." "Please try again later." ) # Test the Internal function that is used to upload each # data part in the context of multi-part uploads to S3, we # simulate the HTTPError exception raised with 503 status errors with self.assertRaises(api.ShotgunError, msg=expected): self.sg._upload_file_to_storage(path, storage_url) # Test the max retries attempt self.assertTrue( self.sg.MAX_ATTEMPTS == self.sg._make_upload_request.call_count, f"Call is repeated up to {self.sg.MAX_ATTEMPTS} times", ) def test_upload_s3_500(self): """ Test 500 response is retried when uploading to S3. """ self._setup_mock(s3_status_code_error=500) this_dir, _ = os.path.split(__file__) storage_url = "http://foo.com/" path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # Expected HTTPError exception error message expected = ( "The server is currently down or to busy to reply." "Please try again later." ) # Test the Internal function that is used to upload each # data part in the context of multi-part uploads to S3, we # simulate the HTTPError exception raised with 503 status errors with self.assertRaises(api.ShotgunError, msg=expected): self.sg._upload_file_to_storage(path, storage_url) # Test the max retries attempt self.assertTrue( self.sg.MAX_ATTEMPTS == self.sg._make_upload_request.call_count, f"Call is repeated up to {self.sg.MAX_ATTEMPTS} times", ) def test_upload_s3_urlerror__get_attachment_upload_info(self): """ Test URLError response is retried when invoking _send_form """ mock_opener = unittest.mock.Mock() mock_opener.return_value.open.side_effect = urllib.error.URLError( "[WinError 10054] An existing connection was forcibly closed by the remote host" ) self.sg._build_opener = mock_opener this_dir, _ = os.path.split(__file__) path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) with self.assertRaises(api.ShotgunError) as cm: self.sg._get_attachment_upload_info(False, path, False) # Test the max retries attempt self.assertEqual( self.sg.MAX_ATTEMPTS, mock_opener.return_value.open.call_count, f"Call is repeated up to {self.sg.MAX_ATTEMPTS} times", ) # Test the exception message the_exception = cm.exception self.assertEqual(str(the_exception), "Max attempts limit reached.") def test_upload_s3_urlerror__upload_to_storage(self): """ Test URLError response is retried when uploading to S3. """ self.sg._make_upload_request = unittest.mock.Mock( spec=api.Shotgun._make_upload_request, side_effect=urllib.error.URLError( "[Errno 104] Connection reset by peer", ), ) this_dir, _ = os.path.split(__file__) storage_url = "http://foo.com/" path = os.path.abspath( os.path.expanduser(os.path.join(this_dir, "sg_logo.jpg")) ) # Test the Internal function that is used to upload each # data part in the context of multi-part uploads to S3, we # simulate the HTTPError exception raised with 503 status errors with self.assertRaises(api.ShotgunError) as cm: self.sg._upload_file_to_storage(path, storage_url) # Test the max retries attempt self.assertEqual( self.sg.MAX_ATTEMPTS, self.sg._make_upload_request.call_count, f"Call is repeated up to {self.sg.MAX_ATTEMPTS} times", ) # Test the exception message the_exception = cm.exception self.assertEqual(str(the_exception), "Max attempts limit reached.") def test_transform_data(self): """Outbound data is transformed""" timestamp = time.time() # microseconds will be last during transforms now = datetime.datetime.fromtimestamp(timestamp).replace( microsecond=0, tzinfo=SG_TIMEZONE.local ) utc_now = ( datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc) .replace(microsecond=0) .astimezone(None) .replace(tzinfo=None) ) local = {"date": now.strftime("%Y-%m-%d"), "datetime": now, "time": now.time()} # date will still be the local date, because they are not transformed utc = { "date": now.strftime("%Y-%m-%d"), "datetime": utc_now, "time": utc_now.time(), } def _datetime(s, f): return datetime.datetime(*time.strptime(s, f)[:6]) def assert_wire(wire, match): self.assertTrue(isinstance(wire["date"], str)) d = _datetime(wire["date"], "%Y-%m-%d").date() d = wire["date"] self.assertEqual(match["date"], d) self.assertTrue(isinstance(wire["datetime"], str)) d = _datetime(wire["datetime"], "%Y-%m-%dT%H:%M:%SZ") self.assertEqual(match["datetime"], d) self.assertTrue(isinstance(wire["time"], str)) d = _datetime(wire["time"], "%Y-%m-%dT%H:%M:%SZ") self.assertEqual(match["time"], d.time()) # leave as local # AMORTON: tests disabled for now, always have utc over the wire # self.sg.config.convert_datetimes_to_utc = False # wire = self.sg._transform_outbound(local) # print("local {}".format(local)) # print("wire {}".format(wire)) # assert_wire(wire, local) # wire = self.sg._transform_inbound(wire) # #times will become datetime over the wire # wire["time"] = wire["time"].time() # self.assertEqual(local, wire) self.sg.config.convert_datetimes_to_utc = True wire = self.sg._transform_outbound(local) assert_wire(wire, utc) wire = self.sg._transform_inbound(wire) # times will become datetime over the wire wire["time"] = wire["time"].time() self.assertEqual(local, wire) def test_encode_payload(self): """Request body is encoded as JSON""" d = {"this is ": "my data \u00e0"} j = self.sg._encode_payload(d) self.assertTrue(isinstance(j, bytes)) d = {"this is ": "my data"} j = self.sg._encode_payload(d) self.assertTrue(isinstance(j, bytes)) def test_decode_response_ascii(self): self._assert_decode_resonse(True, "my data \u00e0") def test_decode_response_unicode(self): self._assert_decode_resonse(False, "my data \u00e0") def _assert_decode_resonse(self, ensure_ascii, data): """HTTP Response is decoded as JSON or text""" headers = {"content-type": "application/json;charset=utf-8"} d = {"this is ": data} sg = api.Shotgun( self.config.server_url, self.config.script_name, self.config.api_key, http_proxy=self.config.http_proxy, connect=False, ) j = json.dumps(d, ensure_ascii=ensure_ascii) self.assertEqual(d, sg._decode_response(headers, j)) headers["content-type"] = "text/javascript" self.assertEqual(d, sg._decode_response(headers, j)) headers["content-type"] = "text/foo" self.assertEqual(j, sg._decode_response(headers, j)) def test_parse_records(self): """Parse records to replace thumbnail and local paths""" system = platform.system().lower() if system == "darwin": local_path_field = "local_path_mac" elif system in ["windows", "microsoft"]: local_path_field = "local_path_windows" elif system == "linux": local_path_field = "local_path_linux" orig = { "type": "FakeAsset", "id": 1234, "image": "blah", "foo": { "link_type": "local", local_path_field: "/foo/bar.jpg", }, } url = "http://foo/files/0000/0000/0012/232/shot_thumb.jpg" self.sg._build_thumb_url = unittest.mock.Mock(return_value=url) modified, txt = self.sg._parse_records([orig, "plain text"]) self.assertEqual("plain text", txt, "non dict value is left as is") self.sg._build_thumb_url.assert_called_once_with("FakeAsset", 1234) self.assertEqual(url, modified["image"], "image path changed to url path") self.assertEqual("/foo/bar.jpg", modified["foo"]["local_path"]) self.assertEqual("file:///foo/bar.jpg", modified["foo"]["url"]) def test_thumb_url(self): """Thumbnail endpoint used to get thumbnail url""" # the thumbnail service returns a two line # test response success code on line 1, data on line 2 resp = "1\n/files/0000/0000/0012/232/shot_thumb.jpg" self._mock_http(resp, headers={"content-type": "text/plain"}) self.sg.config.scheme = "http" self.sg.config.server = "foo.com" url = self.sg._build_thumb_url("FakeAsset", 1234) self.assertEqual("http://foo.com/files/0000/0000/0012/232/shot_thumb.jpg", url) self.assertTrue(self.sg._http_request.called, "http request made to get url") args, _ = self.sg._http_request.call_args verb, path, body, headers = args self.assertEqual( "/upload/get_thumbnail_url?entity_type=FakeAsset&entity_id=1234", path, "thumbnail url called with correct args", ) resp = "0\nSome Error" self._mock_http(resp, headers={"content-type": "text/plain"}) self.assertRaises(api.ShotgunError, self.sg._build_thumb_url, "FakeAsset", 456) resp = "99\nSome Error" self._mock_http(resp, headers={"content-type": "text/plain"}) self.assertRaises(RuntimeError, self.sg._build_thumb_url, "FakeAsset", 456) class TestShotgunClientInterface(base.MockTestBase): """Tests expected interface for shotgun module and client""" def test_client_interface(self): expected_attributes = ["base_url", "config", "client_caps", "server_caps"] for expected_attribute in expected_attributes: if not hasattr(self.sg, expected_attribute): assert False, "%s not found on %s" % (expected_attribute, self.sg) def test_module_interface(self): import shotgun_api3 expected_contents = [ "Shotgun", "ShotgunError", "Fault", "ProtocolError", "ResponseError", "Error", "sg_timezone", "__version__", ] for expected_content in expected_contents: if not hasattr(shotgun_api3, expected_content): assert False, "%s not found on module %s" % ( expected_content, shotgun_api3, ) if __name__ == "__main__": unittest.main() ================================================ FILE: tests/test_config_file ================================================ [SERVER_INFO] server_url : https://url script_name : xyz api_key : %%abce [TEST_DATA] project_name : hjkl ================================================ FILE: tests/test_mockgun.py ================================================ #! /opt/local/bin/python # ----------------------------------------------------------------------------- # Copyright (c) 2009-2017, Shotgun Software Inc # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # - Neither the name of the Shotgun Software Inc nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # ----------------------------------------------------------------------------- """ Unit tests for Mockgun. Does not require an Internet connection and can be run on their own by typing "python test_mockgun.py". """ import datetime import re import os import unittest from shotgun_api3.lib.mockgun import Shotgun as Mockgun from shotgun_api3 import ShotgunError mockgun_schema_folder = os.path.join(os.path.dirname(__file__), "mockgun") Mockgun.set_schema_paths( os.path.join(mockgun_schema_folder, "schema.pickle"), os.path.join(mockgun_schema_folder, "schema_entity.pickle"), ) class TestMockgunModuleInterface(unittest.TestCase): """ mockgun.py was turned into a module. Ensure we haven't broken the interface. """ def test_interface_intact(self): """ Ensure everything that was public before still is. """ from shotgun_api3.lib import mockgun # Try to access everything. If something is missing, it will raise an # error. mockgun.MockgunError mockgun.generate_schema mockgun.Shotgun class TestValidateFilterSyntax(unittest.TestCase): """ Tests filter syntax support. """ def setUp(self): """ Creates test data. """ super().setUp() self._mockgun = Mockgun( "https://test.shotgunstudio.com", login="user", password="1234" ) self._mockgun.create("Shot", {"code": "shot"}) def test_filter_array_or_dict(self): """ Ensure that arrays and dictionaries are supported for filters. """ # This should not throw. self._mockgun.find( "Shot", [ {"filter_operator": "any", "filters": [["code", "is", "shot"]]}, ["code", "is", "shot"], ], ) # We can't have not dict/list values for filters however. self.assertRaisesRegex( ShotgunError, "Filters can only be lists or dictionaries, not int.", lambda: self._mockgun.find("Shot", [1]), ) class TestEntityFieldComparison(unittest.TestCase): """ Checks if entity fields comparison work. """ def setUp(self): """ Creates test data. """ self._mockgun = Mockgun( "https://test.shotgunstudio.com", login="user", password="1234" ) self._project_link = self._mockgun.create( "Project", {"name": "project", "archived": False} ) # This entity will ensure that a populated link field will be comparable. self._mockgun.create( "PipelineConfiguration", { "code": "with_project", "project": self._project_link, }, ) # This entity will ensure that an unpopulated link field will be comparable. self._mockgun.create("PipelineConfiguration", {"code": "without_project"}) def test_searching_for_none_entity_field(self): """ Ensures that comparison with None work. """ items = self._mockgun.find("PipelineConfiguration", [["project", "is", None]]) self.assertEqual(len(items), 1) items = self._mockgun.find( "PipelineConfiguration", [["project", "is_not", None]] ) self.assertEqual(len(items), 1) def test_searching_for_initialized_entity_field(self): """ Ensures that comparison with an entity works. """ items = self._mockgun.find( "PipelineConfiguration", [["project", "is", self._project_link]] ) self.assertEqual(len(items), 1) items = self._mockgun.find( "PipelineConfiguration", [["project", "is_not", self._project_link]] ) self.assertEqual(len(items), 1) def test_find_entity_with_none_link(self): """ Make sure that we can search for sub entity fields on entities that have the field not set. """ # The pipeline configuration without_project doesn't have the project field set, so we're expecting # it to not be returned here. items = self._mockgun.find( "PipelineConfiguration", [["project.Project.archived", "is", False]] ) self.assertEqual(len(items), 1) self.assertEqual(items[0]["id"], self._project_link["id"]) class TestTextFieldOperators(unittest.TestCase): """ Checks if text field comparison work. """ def setUp(self): """ Creates test data. """ self._mockgun = Mockgun( "https://test.shotgunstudio.com", login="user", password="1234" ) self._user1 = self._mockgun.create("HumanUser", {"login": "user"}) self._user2 = self._mockgun.create("HumanUser", {"login": None}) def test_operator_is(self): """ Ensure is operator work. """ actual = self._mockgun.find("HumanUser", [["login", "is", "user"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_is_none(self): """ Ensure is operator work when used with None. """ actual = self._mockgun.find("HumanUser", [["login", "is", None]]) expected = [{"type": "HumanUser", "id": self._user2["id"]}] self.assertEqual(expected, actual) def test_operator_is_case_sensitivity(self): """ Ensure is operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "is", "USER"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_is_not(self): """ Ensure the is_not operator works. """ actual = self._mockgun.find("HumanUser", [["login", "is_not", "user"]]) expected = [{"type": "HumanUser", "id": self._user2["id"]}] self.assertEqual(expected, actual) def test_operator_is_not_none(self): """ Ensure the is_not operator works when used with None. """ actual = self._mockgun.find("HumanUser", [["login", "is_not", None]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_is_not_case_sensitivity(self): """ Ensure the is_not operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "is_not", "USER"]]) expected = [{"type": "HumanUser", "id": self._user2["id"]}] self.assertEqual(expected, actual) def test_operator_in(self): """ Ensure the in operator works. """ actual = self._mockgun.find("HumanUser", [["login", "in", ["user"]]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_in_none(self): """ Ensure the in operator works with a list containing None. """ actual = self._mockgun.find("HumanUser", [["login", "in", [None]]]) expected = [{"type": "HumanUser", "id": self._user2["id"]}] self.assertEqual(expected, actual) def test_operator_in_case_sensitivity(self): """ Ensure the in operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "in", ["USER"]]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_not_in(self): """ Ensure the not_in operator works. """ actual = self._mockgun.find("HumanUser", [["login", "not_in", ["foo"]]]) expected = [ {"type": "HumanUser", "id": self._user1["id"]}, {"type": "HumanUser", "id": self._user2["id"]}, ] self.assertEqual(expected, actual) def test_operator_not_in_none(self): """ Ensure the not_not operator works with a list containing None. """ actual = self._mockgun.find("HumanUser", [["login", "not_in", [None]]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_not_in_case_sensitivity(self): """ Ensure the not_in operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "not_in", ["USER"]]]) expected = [{"type": "HumanUser", "id": self._user2["id"]}] self.assertEqual(expected, actual) def test_operator_contains(self): """ Ensures the contains operator works. """ actual = self._mockgun.find("HumanUser", [["login", "contains", "se"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_contains_case_sensitivity(self): """ Ensure the contains operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "contains", "SE"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_not_contains(self): """ Ensure the not_contains operator works. """ actual = self._mockgun.find("HumanUser", [["login", "not_contains", "user"]]) expected = [{"type": "HumanUser", "id": self._user2["id"]}] self.assertEqual(expected, actual) def test_operator_not_contains_case_sensitivity(self): """ Ensure the not_contains operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "not_contains", "USER"]]) expected = [{"type": "HumanUser", "id": self._user2["id"]}] self.assertEqual(expected, actual) def test_operator_starts_with(self): """ Ensure the starts_with operator works. """ actual = self._mockgun.find("HumanUser", [["login", "starts_with", "us"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_starts_with_case_sensitivity(self): """ Ensure the starts_with operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "starts_with", "US"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_ends_with(self): """ Ensure the ends_with operator works. """ actual = self._mockgun.find("HumanUser", [["login", "ends_with", "er"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) def test_operator_ends_with_case_sensitivity(self): """ Ensure the starts_with operator is case insensitive. """ actual = self._mockgun.find("HumanUser", [["login", "ends_with", "ER"]]) expected = [{"type": "HumanUser", "id": self._user1["id"]}] self.assertEqual(expected, actual) class TestMultiEntityFieldComparison(unittest.TestCase): """ Ensures multi entity field comparison work. """ def setUp(self): """ Creates test data. """ self._mockgun = Mockgun( "https://test.shotgunstudio.com", login="user", password="1234" ) # Create two users to assign to the pipeline configurations. self._user1 = self._mockgun.create("HumanUser", {"login": "user1"}) self._user2 = self._mockgun.create("HumanUser", {"login": "user2"}) # Create pipeline configurations that are assigned none, one or two users. self._mockgun.create( "PipelineConfiguration", {"code": "with_user1", "users": [self._user1]} ) self._mockgun.create( "PipelineConfiguration", {"code": "with_user2", "users": [self._user2]} ) self._mockgun.create( "PipelineConfiguration", {"code": "with_both", "users": [self._user2, self._user1]}, ) self._mockgun.create( "PipelineConfiguration", {"code": "with_none", "users": []} ) def test_find_by_sub_entity_field(self): """ Ensures that queries on linked entity fields works. """ items = self._mockgun.find( "PipelineConfiguration", [["users.HumanUser.login", "is", "user1"]] ) self.assertEqual(len(items), 2) items = self._mockgun.find( "PipelineConfiguration", [["users.HumanUser.login", "is", "user2"]] ) self.assertEqual(len(items), 2) items = self._mockgun.find( "PipelineConfiguration", [["users.HumanUser.login", "contains", "ser"]] ) self.assertEqual(len(items), 3) # Lets get fancy a bit. items = self._mockgun.find( "PipelineConfiguration", [ { "filter_operator": "any", "filters": [ ["users.HumanUser.login", "is", "user1"], ["users.HumanUser.login", "is", "user2"], ], } ], ) self.assertEqual(len(items), 3) items = self._mockgun.find( "PipelineConfiguration", [ { "filter_operator": "all", "filters": [ ["users.HumanUser.login", "is", "user1"], ["users.HumanUser.login", "is", "user2"], ], } ], ) self.assertEqual(len(items), 1) def test_find_with_none(self): """ Ensures comparison with multi-entity fields and None works. """ items = self._mockgun.find( "PipelineConfiguration", [["users", "is", None]], ["users"] ) self.assertEqual(len(items), 1) self.assertEqual(items[0]["users"], []) items = self._mockgun.find( "PipelineConfiguration", [["users", "is_not", None]], ["users"] ) self.assertEqual(len(items), 3) for item in items: self.assertTrue(len(item["users"]) > 0) class TestMultiEntityFieldUpdate(unittest.TestCase): """ Ensures multi entity field update modes work. """ def setUp(self): """ Creates test data. """ self._mockgun = Mockgun( "https://test.shotgunstudio.com", login="user", password="1234" ) # Create two versions to assign to the shot. self._version1 = self._mockgun.create("Version", {"code": "version1"}) self._version2 = self._mockgun.create("Version", {"code": "version2"}) self._version3 = self._mockgun.create("Version", {"code": "version3"}) # remove 'code' field for later comparisons del self._version1["code"] del self._version2["code"] del self._version3["code"] # Create playlists self._add_playlist = self._mockgun.create( "Playlist", {"code": "playlist1", "versions": [self._version1, self._version2]}, ) self._remove_playlist = self._mockgun.create( "Playlist", { "code": "playlist1", "versions": [self._version1, self._version2, self._version3], }, ) self._set_playlist = self._mockgun.create( "Playlist", {"code": "playlist1", "versions": [self._version1, self._version2]}, ) def test_update_add(self): """ Ensures that "add" multi_entity_update_mode works. """ # Attempts to add _version2 # It already exists on the playlist and should not be duplicated self._mockgun.update( "Playlist", self._add_playlist["id"], {"versions": [self._version2, self._version3]}, multi_entity_update_modes={"versions": "add"}, ) playlist = self._mockgun.find_one( "Playlist", [["id", "is", self._add_playlist["id"]]], ["versions"] ) self.assertEqual( playlist["versions"], [self._version1, self._version2, self._version3] ) def test_update_remove(self): """ Ensures that "remove" multi_entity_update_mode works. """ self._mockgun.update( "Playlist", self._remove_playlist["id"], {"versions": [self._version2]}, multi_entity_update_modes={"versions": "remove"}, ) playlist = self._mockgun.find_one( "Playlist", [["id", "is", self._remove_playlist["id"]]], ["versions"] ) self.assertEqual(playlist["versions"], [self._version1, self._version3]) def test_update_set(self): """ Ensures that "set" multi_entity_update_mode works. """ self._mockgun.update( "Playlist", self._set_playlist["id"], {"versions": [self._version2, self._version3]}, multi_entity_update_modes={"versions": "set"}, ) playlist = self._mockgun.find_one( "Playlist", [["id", "is", self._set_playlist["id"]]], ["versions"] ) self.assertEqual(playlist["versions"], [self._version2, self._version3]) def test_batch_update(self): self._mockgun.batch( [ { "request_type": "update", "entity_type": "Playlist", "entity_id": self._set_playlist["id"], "data": {"versions": [self._version1, self._version2]}, "multi_entity_update_modes": {"versions": "set"}, } ] ) playlist = self._mockgun.find_one( "Playlist", [["id", "is", self._set_playlist["id"]]], ["versions"] ) self.assertEqual(playlist["versions"], [self._version1, self._version2]) class TestFilterOperator(unittest.TestCase): """ Unit tests for the filter_operator filter syntax. """ def setUp(self): """ Creates tests data. """ super().setUp() self._mockgun = Mockgun( "https://test.shotgunstudio.com", login="user", password="1234" ) self._prj1_link = self._mockgun.create("Project", {"name": "prj1"}) self._prj2_link = self._mockgun.create("Project", {"name": "prj2"}) self._shot1 = self._mockgun.create( "Shot", { "code": "shot1", "project": self._prj1_link, "description": "a", "sg_cut_order": 2, }, ) self._shot2 = self._mockgun.create( "Shot", {"code": "shot2", "project": self._prj1_link, "sg_cut_order": 1} ) self._shot3 = self._mockgun.create( "Shot", {"code": "shot3", "project": self._prj2_link, "description": "b"} ) self._user1 = self._mockgun.create( "HumanUser", {"login": "user1", "password_strength": 0.2} ) self._user2 = self._mockgun.create( "HumanUser", {"login": "user2", "created_at": datetime.datetime(2025, 1, 1)} ) def test_simple_filter_operators(self): """ Tests a simple use of the filter_operator. """ shots = self._mockgun.find( "Shot", [ { "filter_operator": "any", "filters": [["code", "is", "shot1"], ["code", "is", "shot2"]], } ], ) self.assertEqual(len(shots), 2) shots = self._mockgun.find( "Shot", [ { "filter_operator": "all", "filters": [["code", "is", "shot1"], ["code", "is", "shot2"]], } ], ) self.assertEqual(len(shots), 0) def test_ordered_filter_operator(self): """ Test use of the order feature of filter_operator on supported data types. """ find_args = ["Shot", [], ["code"]] # str field shots = self._mockgun.find( *find_args, order=[{"field_name": "description", "direction": "asc"}] ) self.assertEqual([s["code"] for s in shots], ["shot2", "shot1", "shot3"]) shots = self._mockgun.find( *find_args, order=[{"field_name": "description", "direction": "desc"}] ) self.assertEqual([s["code"] for s in shots], ["shot3", "shot1", "shot2"]) # int field shots = self._mockgun.find( *find_args, order=[{"field_name": "sg_cut_order", "direction": "asc"}] ) self.assertEqual([s["code"] for s in shots], ["shot3", "shot2", "shot1"]) # float field users = self._mockgun.find( "HumanUser", [], ["login"], order=[{"field_name": "password_strength", "direction": "asc"}], ) self.assertEqual([u["login"] for u in users], ["user2", "user1"]) # date_time field users = self._mockgun.find( "HumanUser", [], ["login"], order=[{"field_name": "created_at", "direction": "asc"}], ) self.assertEqual([u["login"] for u in users], ["user1", "user2"]) def test_nested_filter_operators(self): """ Tests a the use of the filter_operator nested inside the filter_operator. """ shots = self._mockgun.find( "Shot", [ { "filter_operator": "any", "filters": [ { "filter_operator": "all", "filters": [ ["code", "is", "shot1"], ["project", "is", self._prj1_link], ], }, { "filter_operator": "all", "filters": [ ["code", "is", "shot3"], ["project", "is", self._prj2_link], ], }, ], } ], ) self.assertEqual(len(shots), 2) def test_invalid_operator(self): self.assertRaisesRegex( ShotgunError, "Unknown filter_operator type: bad", lambda: self._mockgun.find( "Shot", [{"filter_operator": "bad", "filters": []}] ), ) self.assertRaisesRegex( ShotgunError, "Bad filter operator, requires keys 'filter_operator' and 'filters',", lambda: self._mockgun.find("Shot", [{}]), ) class TestConfig(unittest.TestCase): """ Tests the shotgun._Config class """ def test_set_server_params_with_regular_url(self): """ Make sure it works with a normal URL. """ mockgun = Mockgun("https://server.shotgunstudio.com/") self.assertEqual(mockgun.config.scheme, "https") self.assertEqual(mockgun.config.server, "server.shotgunstudio.com") self.assertEqual(mockgun.config.api_path, "/api3/json") def test_set_server_params_with_url_with_path(self): """ Make sure it works with a URL with a path """ mockgun = Mockgun("https://local/something/") self.assertEqual(mockgun.config.scheme, "https") self.assertEqual(mockgun.config.server, "local") self.assertEqual(mockgun.config.api_path, "/something/api3/json") if __name__ == "__main__": unittest.main() ================================================ FILE: tests/test_proxy.py ================================================ #! /opt/local/bin/python # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. import sys from . import base import shotgun_api3 as api class ServerConnectionTest(base.TestBase): """Tests for server connection""" def setUp(self): super().setUp() def test_connection(self): """Tests server connects and returns nothing""" result = self.sg.connect() self.assertEqual(result, None) def test_proxy_info(self): """check proxy value depending http_proxy setting in config""" self.sg.connect() if self.config.http_proxy: sys.stderr.write("[WITH PROXY] ") self.assertTrue( isinstance(self.sg._connection.proxy_info, api.lib.httplib2.ProxyInfo) ) else: sys.stderr.write("[NO PROXY] ") self.assertEqual(self.sg._connection.proxy_info, None) ================================================ FILE: tests/test_unit.py ================================================ #! /opt/local/bin/python # Copyright (c) 2019 Shotgun Software Inc. # # CONFIDENTIAL AND PROPRIETARY # # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit # Source Code License included in this distribution package. See LICENSE. # By accessing, using, copying or modifying this work you indicate your # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. import os import ssl import unittest from unittest import mock import urllib.request import urllib.error import shotgun_api3 as api from shotgun_api3.lib.httplib2 import Http class TestShotgunInit(unittest.TestCase): """Test case for Shotgun.__init__""" def setUp(self): self.server_path = "http://server_path" self.script_name = "script_name" self.api_key = "api_key" # Proxy Server Tests def test_http_proxy_server(self): proxy_server = "someserver.com" http_proxy = proxy_server sg = api.Shotgun( self.server_path, self.script_name, self.api_key, http_proxy=http_proxy, connect=False, ) self.assertEqual(sg.config.proxy_server, proxy_server) self.assertEqual(sg.config.proxy_port, 8080) proxy_server = "123.456.789.012" http_proxy = proxy_server sg = api.Shotgun( self.server_path, self.script_name, self.api_key, http_proxy=http_proxy, connect=False, ) self.assertEqual(sg.config.proxy_server, proxy_server) self.assertEqual(sg.config.proxy_port, 8080) def test_http_proxy_server_and_port(self): proxy_server = "someserver.com" proxy_port = 1234 http_proxy = "%s:%d" % (proxy_server, proxy_port) sg = api.Shotgun( self.server_path, self.script_name, self.api_key, http_proxy=http_proxy, connect=False, ) self.assertEqual(sg.config.proxy_server, proxy_server) self.assertEqual(sg.config.proxy_port, proxy_port) proxy_server = "123.456.789.012" proxy_port = 1234 http_proxy = "%s:%d" % (proxy_server, proxy_port) sg = api.Shotgun( self.server_path, self.script_name, self.api_key, http_proxy=http_proxy, connect=False, ) self.assertEqual(sg.config.proxy_server, proxy_server) self.assertEqual(sg.config.proxy_port, proxy_port) def test_http_proxy_server_and_port_with_authentication(self): proxy_server = "someserver.com" proxy_port = 1234 proxy_user = "user" proxy_pass = "password" http_proxy = "%s:%s@%s:%d" % (proxy_user, proxy_pass, proxy_server, proxy_port) sg = api.Shotgun( self.server_path, self.script_name, self.api_key, http_proxy=http_proxy, connect=False, ) self.assertEqual(sg.config.proxy_server, proxy_server) self.assertEqual(sg.config.proxy_port, proxy_port) self.assertEqual(sg.config.proxy_user, proxy_user) self.assertEqual(sg.config.proxy_pass, proxy_pass) proxy_server = "123.456.789.012" proxy_port = 1234 proxy_user = "user" proxy_pass = "password" http_proxy = "%s:%s@%s:%d" % (proxy_user, proxy_pass, proxy_server, proxy_port) sg = api.Shotgun( self.server_path, self.script_name, self.api_key, http_proxy=http_proxy, connect=False, ) self.assertEqual(sg.config.proxy_server, proxy_server) self.assertEqual(sg.config.proxy_port, proxy_port) self.assertEqual(sg.config.proxy_user, proxy_user) self.assertEqual(sg.config.proxy_pass, proxy_pass) def test_http_proxy_with_at_in_password(self): proxy_server = "someserver.com" proxy_port = 1234 proxy_user = "user" proxy_pass = "p@ssword" http_proxy = "%s:%s@%s:%d" % (proxy_user, proxy_pass, proxy_server, proxy_port) sg = api.Shotgun( self.server_path, self.script_name, self.api_key, http_proxy=http_proxy, connect=False, ) self.assertEqual(sg.config.proxy_server, proxy_server) self.assertEqual(sg.config.proxy_port, proxy_port) self.assertEqual(sg.config.proxy_user, proxy_user) self.assertEqual(sg.config.proxy_pass, proxy_pass) def test_malformatted_proxy_info(self): conn_info = { "base_url": self.server_path, "script_name": self.script_name, "api_key": self.api_key, "connect": False, } conn_info["http_proxy"] = "http://someserver.com" self.assertRaises(ValueError, api.Shotgun, **conn_info) conn_info["http_proxy"] = "user@someserver.com" self.assertRaises(ValueError, api.Shotgun, **conn_info) conn_info["http_proxy"] = "someserver.com:1234:5678" self.assertRaises(ValueError, api.Shotgun, **conn_info) class TestShotgunSummarize(unittest.TestCase): """Test case for _create_summary_request function and parameter validation as it exists in Shotgun.summarize. Does not require database connection or test data.""" def setUp(self): self.sg = api.Shotgun( "http://server_path", "script_name", "api_key", connect=False ) def test_filter_operator_none(self): expected_logical_operator = "and" filter_operator = None self._assert_filter_operator(expected_logical_operator, filter_operator) def _assert_filter_operator(self, expected_logical_operator, filter_operator): result = self.get_call_rpc_params(None, {"filter_operator": filter_operator}) actual_logical_operator = result["filters"]["logical_operator"] self.assertEqual(expected_logical_operator, actual_logical_operator) def test_filter_operator_all(self): expected_logical_operator = "and" filter_operator = "all" self._assert_filter_operator(expected_logical_operator, filter_operator) def test_filter_operator_or(self): expected_logical_operator = "or" filter_operator = "or" self._assert_filter_operator(expected_logical_operator, filter_operator) def test_filters(self): path = "path" relation = "relation" value = "value" expected_condition = {"path": path, "relation": relation, "values": [value]} args = ["", [[path, relation, value]], None] result = self.get_call_rpc_params(args, {}) actual_condition = result["filters"]["conditions"][0] self.assertEqual(expected_condition, actual_condition) @mock.patch("shotgun_api3.Shotgun._call_rpc") def get_call_rpc_params(self, args, kws, call_rpc): """Return params sent to _call_rpc from summarize.""" if not args: args = [None, [], None] self.sg.summarize(*args, **kws) return call_rpc.call_args[0][1] def test_grouping(self): result = self.get_call_rpc_params(None, {}) self.assertFalse("grouping" in result) grouping = ["something"] kws = {"grouping": grouping} result = self.get_call_rpc_params(None, kws) self.assertEqual(grouping, result["grouping"]) def test_grouping_type(self): """test_grouping_type tests that grouping parameter is a list or None""" self.assertRaises( ValueError, self.sg.summarize, "", [], [], grouping="Not a list" ) class TestShotgunBatch(unittest.TestCase): def setUp(self): self.sg = api.Shotgun( "http://server_path", "script_name", "api_key", connect=False ) def test_missing_required_key(self): req = {} # requires keys request_type and entity_type self.assertRaises(api.ShotgunError, self.sg.batch, [req]) req["entity_type"] = "Entity" self.assertRaises(api.ShotgunError, self.sg.batch, [req]) req["request_type"] = "not_real_type" self.assertRaises(api.ShotgunError, self.sg.batch, [req]) # create requires data key req["request_type"] = "create" self.assertRaises(api.ShotgunError, self.sg.batch, [req]) # update requires entity_id and data req["request_type"] = "update" req["data"] = {} self.assertRaises(api.ShotgunError, self.sg.batch, [req]) del req["data"] req["entity_id"] = 2334 self.assertRaises(api.ShotgunError, self.sg.batch, [req]) # delete requires entity_id req["request_type"] = "delete" del req["entity_id"] self.assertRaises(api.ShotgunError, self.sg.batch, [req]) class TestServerCapabilities(unittest.TestCase): def test_no_server_version(self): self.assertRaises(api.ShotgunError, api.shotgun.ServerCapabilities, "host", {}) def test_bad_version(self): """test_bad_meta tests passing bad meta data type""" self.assertRaises( api.ShotgunError, api.shotgun.ServerCapabilities, "host", {"version": (0, 0, 0)}, ) def test_dev_version(self): serverCapabilities = api.shotgun.ServerCapabilities( "host", {"version": (3, 4, 0, "Dev")} ) self.assertEqual(serverCapabilities.version, (3, 4, 0)) self.assertTrue(serverCapabilities.is_dev) serverCapabilities = api.shotgun.ServerCapabilities( "host", {"version": (2, 4, 0)} ) self.assertEqual(serverCapabilities.version, (2, 4, 0)) self.assertFalse(serverCapabilities.is_dev) class TestClientCapabilities(unittest.TestCase): def test_darwin(self): self.assert_platform("Darwin", "mac") def test_windows(self): self.assert_platform("win32", "windows") def test_linux(self): self.assert_platform("Linux", "linux") def assert_platform(self, sys_ret_val, expected): platform = api.shotgun.sys.platform try: api.shotgun.sys.platform = sys_ret_val expected_local_path_field = "local_path_%s" % expected client_caps = api.shotgun.ClientCapabilities() self.assertEqual(client_caps.platform, expected) self.assertEqual(client_caps.local_path_field, expected_local_path_field) finally: api.shotgun.sys.platform = platform def test_no_platform(self): platform = api.shotgun.sys.platform try: api.shotgun.sys.platform = "unsupported" client_caps = api.shotgun.ClientCapabilities() self.assertEqual(client_caps.platform, None) self.assertEqual(client_caps.local_path_field, None) finally: api.shotgun.sys.platform = platform @mock.patch("shotgun_api3.shotgun.sys") def test_py_version(self, mock_sys): major = 2 minor = 7 micro = 3 mock_sys.version_info = (major, minor, micro, "final", 0) expected_py_version = "%s.%s" % (major, minor) client_caps = api.shotgun.ClientCapabilities() self.assertEqual(client_caps.py_version, expected_py_version) class TestFilters(unittest.TestCase): maxDiff = None def test_empty(self): expected = {"logical_operator": "and", "conditions": []} result = api.shotgun._translate_filters([], None) self.assertEqual(result, expected) def test_simple(self): filters = [["code", "is", "test"], ["sg_status_list", "is", "ip"]] expected = { "logical_operator": "or", "conditions": [ {"path": "code", "relation": "is", "values": ["test"]}, {"path": "sg_status_list", "relation": "is", "values": ["ip"]}, ], } result = api.shotgun._translate_filters(filters, "any") self.assertEqual(result, expected) # Test both styles of passing arrays def test_arrays(self): expected = { "logical_operator": "and", "conditions": [ { "path": "code", "relation": "in", "values": ["test1", "test2", "test3"], } ], } filters = [["code", "in", "test1", "test2", "test3"]] result = api.shotgun._translate_filters(filters, "all") self.assertEqual(result, expected) filters = [["code", "in", ["test1", "test2", "test3"]]] result = api.shotgun._translate_filters(filters, "all") self.assertEqual(result, expected) def test_nested(self): filters = [ ["code", "in", "test"], { "filter_operator": "any", "filters": [ ["sg_status_list", "is", "ip"], ["sg_status_list", "is", "fin"], { "filter_operator": "all", "filters": [ ["sg_status_list", "is", "hld"], ["assets", "is", {"type": "Asset", "id": 9}], ], }, ], }, ] expected = { "logical_operator": "and", "conditions": [ {"path": "code", "relation": "in", "values": ["test"]}, { "logical_operator": "or", "conditions": [ {"path": "sg_status_list", "relation": "is", "values": ["ip"]}, {"path": "sg_status_list", "relation": "is", "values": ["fin"]}, { "logical_operator": "and", "conditions": [ { "path": "sg_status_list", "relation": "is", "values": ["hld"], }, { "path": "assets", "relation": "is", "values": [{"type": "Asset", "id": 9}], }, ], }, ], }, ], } result = api.shotgun._translate_filters(filters, "all") self.assertEqual(result, expected) def test_invalid(self): self.assertRaises(api.ShotgunError, api.shotgun._translate_filters, [], "bogus") self.assertRaises( api.ShotgunError, api.shotgun._translate_filters, ["bogus"], "all" ) filters = [{"filter_operator": "bogus", "filters": []}] self.assertRaises( api.ShotgunError, api.shotgun._translate_filters, filters, "all" ) filters = [{"filters": []}] self.assertRaises( api.ShotgunError, api.shotgun._translate_filters, filters, "all" ) filters = [{"filter_operator": "all", "filters": {"bogus": "bogus"}}] self.assertRaises( api.ShotgunError, api.shotgun._translate_filters, filters, "all" ) @mock.patch.dict(os.environ, {"SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION": "1"}) def test_related_object(self): filters = [ [ "project", "is", { "foo": "foo", "bar": "bar", "id": 999, "baz": "baz", "type": "Anything", }, ], ] expected = { "logical_operator": "and", "conditions": [ { "path": "project", "relation": "is", "values": [ { "foo": "foo", "bar": "bar", "baz": "baz", "id": 999, "type": "Anything", } ], } ], } api.Shotgun("http://server_path", "script_name", "api_key", connect=False) result = api.shotgun._translate_filters(filters, "all") self.assertEqual(result, expected) @mock.patch("shotgun_api3.shotgun.SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION", False) def test_related_object_entity_optimization_is(self): filters = [ [ "project", "is", { "foo": "foo", "bar": "bar", "id": 999, "baz": "baz", "type": "Anything", }, ], ] expected = { "logical_operator": "and", "conditions": [ { "path": "project", "relation": "is", "values": [ { "id": 999, "type": "Anything", } ], } ], } api.Shotgun("http://server_path", "script_name", "api_key", connect=False) result = api.shotgun._translate_filters(filters, "all") self.assertEqual(result, expected) # Now test a non-related object. The expected result should not be optimized. filters = [ [ "something", "is", {"foo": "foo", "bar": "bar"}, ], ] expected = { "logical_operator": "and", "conditions": [ { "path": "something", "relation": "is", "values": [{"bar": "bar", "foo": "foo"}], } ], } api.Shotgun("http://server_path", "script_name", "api_key", connect=False) result = api.shotgun._translate_filters(filters, "all") self.assertEqual(result, expected) @mock.patch("shotgun_api3.shotgun.SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION", False) def test_related_object_entity_optimization_in(self): filters = [ [ "project", "in", [ { "foo1": "foo1", "bar1": "bar1", "id": 999, "baz1": "baz1", "type": "Anything", }, { "foo2": "foo2", "bar2": "bar2", "id": 998, "baz2": "baz2", "type": "Anything", }, {"foo3": "foo3", "bar3": "bar3"}, ], ], ] expected = { "logical_operator": "and", "conditions": [ { "path": "project", "relation": "in", "values": [ { "id": 999, "type": "Anything", }, { "id": 998, "type": "Anything", }, { "foo3": "foo3", "bar3": "bar3", }, ], } ], } api.Shotgun("http://server_path", "script_name", "api_key", connect=False) result = api.shotgun._translate_filters(filters, "all") self.assertEqual(result, expected) def test_related_object_update_entity(self): entity_type = "Anything" entity_id = 999 multi_entity_update_modes = {"link": "set", "name": "set"} data = { "name": "test", "link": { "name": "test", "url": "http://test.com", }, } expected = { "id": 999, "type": "Anything", "fields": [ { "field_name": "name", "value": "test", "multi_entity_update_mode": "set", }, { "field_name": "link", "value": { "name": "test", "url": "http://test.com", }, "multi_entity_update_mode": "set", }, ], } sg = api.Shotgun("http://server_path", "script_name", "api_key", connect=False) result = sg._translate_update_params( entity_type, entity_id, data, multi_entity_update_modes ) self.assertEqual(result, expected) @mock.patch("shotgun_api3.shotgun.SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION", False) def test_related_object_update_optimization_entity(self): entity_type = "Anything" entity_id = 999 multi_entity_update_modes = {"project": "set", "link": "set", "name": "set"} data = { "name": "test", "link": { "name": "test", "url": "http://test.com", }, "project": { "foo1": "foo1", "bar1": "bar1", "id": 888, "baz1": "baz1", "type": "Project", }, } expected = { "id": 999, "type": "Anything", "fields": [ { "field_name": "name", "value": "test", "multi_entity_update_mode": "set", }, { "field_name": "link", "value": { "name": "test", "url": "http://test.com", }, "multi_entity_update_mode": "set", }, { "field_name": "project", "multi_entity_update_mode": "set", "value": { # Entity is optimized with type/id fields. "id": 888, "type": "Project", }, }, ], } sg = api.Shotgun("http://server_path", "script_name", "api_key", connect=False) result = sg._translate_update_params( entity_type, entity_id, data, multi_entity_update_modes ) self.assertEqual(result, expected) @mock.patch("shotgun_api3.shotgun.SHOTGUN_API_DISABLE_ENTITY_OPTIMIZATION", False) def test_related_object_update_optimization_entity_multi(self): entity_type = "Asset" entity_id = 6626 data = { "sg_status_list": "ip", "project": {"id": 70, "type": "Project", "name": "important name 70"}, "sg_vvv": [ {"id": 6440, "type": "Asset"}, {"id": 6441, "type": "Asset", "custom_name": "disposable name 6441"}, { # To be kept "id": 6442, "type": "Asset", "url": "http://test.com/asset/6442", # to be removed "custom_name": "disposable name 1", "custom_name2": "disposable name 2", "custom_name3": "disposable name 3", "custom_name4": "disposable name 4", }, { "sg_nested": { "level1": { "level2": {"id": 123, "type": "Entity", "foo": "bar"} } } }, ], "sg_class": { # To be kept "id": 1, "type": "CustomEntity53", "url": "http://test.com", "name": "important class name", "local_path": "/some/local/path", # to be removed "custom_name": "disposable name 1", "custom_name2": "disposable name 2", "custom_name3": "disposable name 3", "custom_name4": "disposable name 4", }, } expected = { "type": "Asset", "id": 6626, "fields": [ {"field_name": "sg_status_list", "value": "ip"}, { "field_name": "project", "value": { "type": "Project", "id": 70, "name": "important name 70", }, }, { "field_name": "sg_vvv", "value": [ {"id": 6440, "type": "Asset"}, {"id": 6441, "type": "Asset"}, { "id": 6442, "type": "Asset", "url": "http://test.com/asset/6442", }, { "sg_nested": { "level1": { "level2": { "id": 123, "type": "Entity", "foo": "bar", } } } }, ], }, { "field_name": "sg_class", "value": { "type": "CustomEntity53", "id": 1, "name": "important class name", "url": "http://test.com", "local_path": "/some/local/path", }, }, ], } sg = api.Shotgun("http://server_path", "script_name", "api_key", connect=False) result = sg._translate_update_params(entity_type, entity_id, data, None) self.assertEqual(result, expected) class TestCerts(unittest.TestCase): # A dummy bad url provided by Amazon bad_url = "https://untrusted-root.badssl.com/" # A list of Amazon cert URLS, taken from here: # https://aws.amazon.com/blogs/security/how-to-prepare-for-aws-move-to-its-own-certificate-authority/ test_urls = [ "https://good.sca1a.amazontrust.com", "https://good.sca2a.amazontrust.com", "https://good.sca3a.amazontrust.com", "https://good.sca4a.amazontrust.com", "https://good.sca0a.amazontrust.com", ] def setUp(self): self.sg = api.Shotgun( "http://server_path", "script_name", "api_key", connect=False ) # Get the location of the certs file self.certs = self.sg._get_certs_file(None) def _check_url_with_sg_api_httplib2(self, url, certs): """ Given a url and the certs file, it will do a simple request and return the result. """ http = Http(ca_certs=certs) return http.request(url) def _check_url_with_urllib(self, url): """ Given a url it will perform a simple request and return a result. """ # create a request using the opener generated by the PTR API. # The `_build_opener` method internally should use the correct certs. opener = self.sg._build_opener(urllib.request.HTTPHandler) request = urllib.request.Request(url) return opener.open(request) def test_found_correct_cert(self): """ Checks that the cert file the API is finding, (when a cert path isn't passed and the SHOTGUN_API_CACERTS isn't set), is the one bundled with this API """ # Get the path to the cert file we expect the Shotgun API to find cert_path = os.path.normpath( # Get the path relative to where we picked up the API and not relative # to file on disk. On CI we pip install the API to run the tests # so we have to pick the location from the installed copy. # Call dirname to remove from __init__.py os.path.join(os.path.dirname(api.__file__), "lib", "certifi", "cacert.pem") ) # Now ensure that the path the PTR API has found is correct. self.assertEqual(cert_path, self.certs) self.assertTrue(os.path.isfile(self.certs)) def test_httplib(self): """ Checks that we can access the amazon urls using our bundled certificate with httplib. """ # First check that we get an error when trying to connect to a known dummy bad URL self.assertRaises( (ssl.SSLError, ssl.CertificateError), self._check_url_with_sg_api_httplib2, self.bad_url, self.certs, ) # Now check that the good urls connect properly using the certs for url in self.test_urls: response, message = self._check_url_with_sg_api_httplib2(url, self.certs) self.assertEqual(response["status"], "200") def test_urlib(self): """ Checks that we can access the amazon urls using our bundled certificate with urllib. """ # First check that we get an error when trying to connect to a known dummy bad URL self.assertRaises( urllib.error.URLError, self._check_url_with_urllib, self.bad_url ) # Now check that the good urls connect properly using the certs for url in self.test_urls: response = self._check_url_with_urllib(url) assert response is not None if __name__ == "__main__": unittest.main() ================================================ FILE: update_httplib2.py ================================================ #!/usr/bin/env python3 """ Updates the httplib2 module. Run as "./upgrade_httplib2.py vX.Y.Z" to get a specific release from github. """ import pathlib import tempfile import shutil import subprocess import sys class Utilities: def download_archive(self, file_path, file_name): """Download the archive from github.""" print(f"Downloading {file_name}") subprocess.check_output( [ "curl", "-L", f"https://github.com/httplib2/httplib2/archive/{file_name}", "-o", file_path, ] ) def unzip_archive(self, file_path, file_name, temp_dir): """Unzip in a temp dir.""" print(f"Unzipping {file_name}") subprocess.check_output(["unzip", str(file_path), "-d", str(temp_dir)]) def remove_folder(self, path): """Remove a folder recursively.""" print(f"Removing the folder {path}") shutil.rmtree(path, ignore_errors=True) def git_remove(self, target): print(f"Removing {target} in git.") try: subprocess.check_output( [ "git", "rm", "-rf", ] + target ) except Exception as e: pass def copy_folder(self, source, target): """Copy a folder recursively.""" shutil.copytree(source, target) def sanitize_file(self, file_path): """Normalize file imports and remove unnecessary strings.""" with open(file_path, "r") as f: contents = f.read() contents = contents.replace("from httplib2.", "from .") contents = contents.replace("from httplib2", "from .") contents = contents.replace( "import pyparsing as pp", "from .. import pyparsing as pp" ) with open(file_path, "w") as f: f.write(contents) def main(temp_path, repo_root, version): # Paths and file names httplib2_dir = repo_root / "shotgun_api3" / "lib" / "httplib2" file_name = f"{version}.zip" file_path = temp_path / file_name utilities = Utilities() # Downloads the archive from github utilities.download_archive(file_path, file_name) # Unzip in a temp dir unzipped_folder = temp_path / "unzipped" unzipped_folder.mkdir() utilities.unzip_archive(file_path, file_name, unzipped_folder) # Removes the previous version of httplib2 utilities.git_remove([str(httplib2_dir)]) utilities.remove_folder(httplib2_dir) # Copies a new version into place. print("Copying new version of httplib2") root_folder = unzipped_folder / f"httplib2-{version[1:]}" utilities.copy_folder(str(root_folder / "python3" / "httplib2"), httplib2_dir) utilities.remove_folder(f"{httplib2_dir}/test") # Patches the httplib2 imports so they are relative instead of absolute. print("Patching imports") for python_file in httplib2_dir.rglob("*.py"): utilities.sanitize_file(python_file) # Adding files to the git repo. print("Adding to git") subprocess.check_output(["git", "add", str(httplib2_dir)]) # nosec B607 if __name__ == "__main__": try: temp_path = pathlib.Path(tempfile.mkdtemp()) main(temp_path, pathlib.Path(__file__).parent, sys.argv[1]) finally: shutil.rmtree(temp_path)