diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 0c162c5a9aed71..1ac9f82f88374d 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -546,6 +546,22 @@ jobs: scripts/run_in_python_env.sh out/venv 'src/python_testing/execute_python_tests.py --env-file /tmp/test_env.yaml --search-directory src/python_testing' scripts/run_in_python_env.sh out/venv 'scripts/tests/TestTimeSyncTrustedTimeSourceRunner.py --all-clusters out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app' + - name: Execute Jupyter Notebooks + run: | + scripts/run_in_build_env.sh './scripts/build_python.sh --jupyter-lab --install_virtual_env out/venv' + ./scripts/run_in_build_env.sh \ + "./scripts/build/build_examples.py \ + --target linux-x64-all-clusters-ipv6only-no-ble-no-wifi-clang-test \ + build \ + --copy-artifacts-to objdir-clone \ + " + scripts/run_in_python_env.sh out/venv \ + "jupyter execute docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb \ + docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb \ + docs/development_controllers/chip-repl/Matter_Access_Control.ipynb \ + docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb \ + " + - name: Uploading core files uses: actions/upload-artifact@v4 if: ${{ failure() && !env.ACT }} diff --git a/docs/development_controllers/chip-repl/Matter_Access_Control.ipynb b/docs/development_controllers/chip-repl/Matter_Access_Control.ipynb index 4d0d1853af206e..bc89e6d875a02c 100644 --- a/docs/development_controllers/chip-repl/Matter_Access_Control.ipynb +++ b/docs/development_controllers/chip-repl/Matter_Access_Control.ipynb @@ -4,6 +4,10 @@ "cell_type": "markdown", "id": "e8b2f5eb", "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, "tags": [] }, "source": [ @@ -39,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 1, "id": "59352193-6c8f-4bda-9a3c-d84317b63c30", "metadata": { "tags": [] @@ -47,16 +51,13 @@ "outputs": [ { "data": { - "text/html": [ - "
0\n",
-       "
\n" - ], "text/plain": [ - "\u001b[1;36m0\u001b[0m\n" + "0" ] }, + "execution_count": 1, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -85,64 +86,63 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 2, "id": "bad327b7-c78a-4c46-b224-077fe7539ee1", "metadata": {}, "outputs": [ - { - "data": { - "text/html": [ - "
──────────────────────────────────────── Matter REPL ────────────────────────────────────────\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[92m──────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ────────────────────────────────────────\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/html": [ "
\n",
-       "            \n",
-       "    \n",
-       "            Welcome to the Matter Python REPL!\n",
-       "    \n",
-       "            For help, please type matterhelp()\n",
-       "    \n",
-       "            To get more information on a particular object/class, you can pass\n",
-       "            that into matterhelp() as well.\n",
-       "    \n",
-       "            \n",
+       " Replacing  store path ./credentials/development/paa-root-certs with \n",
+       "/home/root/repos/connectedhomeip/credentials/development/paa-root-certs\n",
+       "Note that you are still running from \n",
+       "/home/root/repos/connectedhomeip/docs/development_controllers/chip-repl so other relative\n",
+       "paths may be off.\n",
+       "                    \n",
        "
\n" ], "text/plain": [ "\n", - " \n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", - "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m \u001b[0m\n" + "\u001b[1m Replacing \u001b[0m store path .\u001b[35m/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m with \n", + "\u001b[35m/home/root/repos/connectedhomeip/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m\n", + "Note that you are still running from \n", + "\u001b[35m/home/root/repos/connectedhomeip/docs/development_controllers/\u001b[0m\u001b[95mchip-repl\u001b[0m so other relative\n", + "paths may be off.\n", + " \n" ] }, "metadata": {}, "output_type": "display_data" }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1738153365.139353][2283552:2283552] CHIP:CTL: Setting attestation nonce to random value\n", + "[1738153365.139578][2283552:2283552] CHIP:CTL: Setting CSR nonce to random value\n", + "[1738153365.151683][2283552:2283552] CHIP:DL: NVS set: chip-factory/unique-id = \"107DC5BE4DC63F48\"\n", + "[1738153365.152834][2283552:2283552] CHIP:DL: NVS set: chip-factory/vendor-id = 65521 (0xFFF1)\n", + "[1738153365.154302][2283552:2283552] CHIP:DL: NVS set: chip-factory/product-id = 32769 (0x8001)\n", + "[1738153365.155697][2283552:2283552] CHIP:DL: NVS set: chip-counters/reboot-count = 1 (0x1)\n", + "[1738153365.157205][2283552:2283552] CHIP:DL: NVS set: chip-counters/total-operational-hours = 0 (0x0)\n", + "[1738153365.158744][2283552:2283552] CHIP:DL: NVS set: chip-counters/boot-reason = 0 (0x0)\n", + "[1738153365.160171][2283552:2283552] CHIP:DL: NVS set: chip-config/regulatory-location = 0 (0x0)\n", + "[1738153365.161859][2283552:2283552] CHIP:DL: NVS set: chip-config/location-capability = 2 (0x2)\n", + "[1738153365.162176][2283552:2283552] CHIP:DL: Got Ethernet interface: enp2s0\n", + "[1738153365.162304][2283552:2283552] CHIP:DL: Found the primary Ethernet interface:enp2s0\n", + "[1738153365.162434][2283552:2283552] CHIP:DL: Got WiFi interface: wlp3s0\n", + "[1738153365.162584][2283552:2283552] CHIP:DL: Found the primary WiFi interface:wlp3s0\n" + ] + }, { "data": { "text/html": [ - "
─────────────────────────────────────────────────────────────────────────────────────────────\n",
+       "
─────────────────────────────────────────────────── Matter REPL ───────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\u001b[92m─────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" + "\u001b[92m─────────────────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ───────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -152,12 +152,30 @@ "data": { "text/html": [ "
\n",
+       "            \n",
+       "\n",
+       "            Welcome to the Matter Python REPL!\n",
+       "\n",
+       "            For help, please type matterhelp()\n",
        "\n",
+       "            To get more information on a particular object/class, you can pass\n",
+       "            that into matterhelp() as well.\n",
+       "\n",
+       "            \n",
        "
\n" ], "text/plain": [ "\n", - "\n" + " \n", + "\n", + "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", + "\n", + "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", + "\n", + "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", + "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", + "\n", + "\u001b[1;34m \u001b[0m\n" ] }, "metadata": {}, @@ -166,48 +184,38 @@ { "data": { "text/html": [ - "
Restoring FabricAdmin from storage to manage FabricId 1, FabricIndex 1...\n",
+       "
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mRestoring FabricAdmin from storage to manage FabricId \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m, FabricIndex \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + "\u001b[92m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "New FabricAdmin: FabricId: 1(1)\n" + "2025-01-29 13:22:45 ThinkPad chip.storage[2283552] ERROR [Errno 2] No such file or directory: '/tmp/repl-storage.json'\n", + "2025-01-29 13:22:45 ThinkPad chip.storage[2283552] CRITICAL Could not load configuration from /tmp/repl-storage.json - resetting configuration...\n", + "2025-01-29 13:22:45 ThinkPad chip.storage[2283552] WARNING No valid SDK configuration present - clearing out configuration\n", + "2025-01-29 13:22:45 ThinkPad chip.storage[2283552] WARNING No valid REPL configuration present - clearing out configuration\n" ] }, - { - "data": { - "text/html": [ - "
\n",
-       "Fabric Admins have been loaded and are available at fabricAdmins\n",
-       "
\n" - ], - "text/plain": [ - "\n", - "\u001b[34mFabric Admins have been loaded and are available at \u001b[0m\u001b[31mfabricAdmins\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/html": [ "
\n",
        "\n",
+       "The following objects have been created:\n",
        "
\n" ], "text/plain": [ "\n", - "\n" + "\n", + "\u001b[34mThe following objects have been created:\u001b[0m\n" ] }, "metadata": {}, @@ -216,37 +224,36 @@ { "data": { "text/html": [ - "
Creating default device controller on fabric 1...\n",
+       "
        certificateAuthorityManager:    Manages a list of CertificateAuthority instances.\n",
+       "        caList:                         The list of CertificateAuthority instances.\n",
+       "        caList[n].adminList[m]:         A specific FabricAdmin object at index m for the nth CertificateAuthority \n",
+       "instance.\n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mCreating default device controller on fabric \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + " \u001b[31mcertificateAuthorityManager\u001b[0m\u001b[34m: \u001b[0m\u001b[34mManages a list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34mThe list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mn\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mm\u001b[0m\u001b[1;31m]\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34mA specific FabricAdmin object at index m for the nth CertificateAuthority \u001b[0m\n", + "\u001b[34minstance.\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Allocating new controller with FabricId: 1(1), NodeId: 1\n" - ] - }, { "data": { "text/html": [ "
\n",
        "\n",
-       "Default CHIP Device Controller has been initialized to manage fabricAdmins[0], and is \n",
-       "available as devCtrl\n",
+       "Default CHIP Device Controller (NodeId: 112233): has been initialized to manage caList[0].adminList[0] (FabricId = \n",
+       "1), and is available as devCtrl\n",
        "
\n" ], "text/plain": [ "\n", "\n", - "\u001b[34mDefault CHIP Device Controller has been initialized to manage \u001b[0m\u001b[1;31mfabricAdmins\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m, and is \u001b[0m\n", - "\u001b[1;34mavailable as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" + "\u001b[34mDefault CHIP Device Controller \u001b[0m\u001b[1;34m(\u001b[0m\u001b[34mNodeId: \u001b[0m\u001b[1;34m112233\u001b[0m\u001b[1;34m)\u001b[0m\u001b[34m: has been initialized to manage \u001b[0m\u001b[1;31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m \u001b[0m\u001b[1;34m(\u001b[0m\u001b[1;34mFabricId = \u001b[0m\n", + "\u001b[1;34m1\u001b[0m\u001b[1;34m)\u001b[0m\u001b[1;34m, and is available as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" ] }, "metadata": {}, @@ -254,10 +261,10 @@ } ], "source": [ - "import chip.native\n", - "import pkgutil\n", - "module = pkgutil.get_loader('chip.ChipReplStartup')\n", - "%run {module.path}" + "%reset -f\n", + "import importlib.util\n", + "spec = importlib.util.find_spec('chip.ChipReplStartup')\n", + "%run {spec.origin}" ] }, { @@ -280,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 3, "id": "52ccd8c6", "metadata": {}, "outputs": [], @@ -290,11 +297,14 @@ "os.system('pkill -f chip-all-clusters-app')\n", "time.sleep(1)\n", "\n", - "# The location of the all-clusters-app in the cloud playground is one level higher - adjust for this by testing for file presence.\n", - "if (os.path.isfile('../../../out/debug/chip-all-clusters-app')):\n", - " appPath = '../../../out/debug/chip-all-clusters-app'\n", + "CI_APP_PATH = '../../../out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-clang-test/chip-all-clusters-app'\n", + "LOCAL_APP_PATH = '../../../out/linux-x64-all-clusters/chip-all-clusters-app'\n", + "\n", + "# Check if the app built by GitHub Actions is present. Otherwise use the standard all-clusters-app \n", + "if (os.path.isfile(CI_APP_PATH)):\n", + " appPath = CI_APP_PATH\n", "else:\n", - " appPath = '../../../../out/debug/chip-all-clusters-app'\n", + " appPath = LOCAL_APP_PATH\n", "\n", "process = subprocess.Popen(appPath, stdout=subprocess.DEVNULL)\n", "time.sleep(1)" @@ -307,48 +317,40 @@ "source": [ "### Commission Target\n", "\n", - "Commission the target with a NodeId of 1." + "Commission the target with a NodeId of 2." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 4, "id": "5e964fe3", "metadata": { "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-01-29 16:01:43 johnsj-macbookpro1.roam.corp.google.com chip.SC[9915] ERROR The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Node address has been updated\n", - "Commissioning complete\n" - ] - }, { "data": { "text/html": [ - "
True\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
-       "\u001b[3;92mTrue\u001b[0m\n"
+       "\u001b[1;36m2\u001b[0m"
       ]
      },
+     "execution_count": 4,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "devCtrl.CommissionIP(b'127.0.0.1', 20202021, 2)"
+    "await devCtrl.CommissionOnNetwork(2, 20202021)"
    ]
   },
   {
@@ -366,172 +368,292 @@
    "id": "372ae9a4",
    "metadata": {},
    "source": [
-    "(For now) normally after commissioning there would be at least a single admin entry, but currently the ACL will be empty, so add that entry manually. This step will be removed later when it’s no longer necessary."
+    "During Commissioning, an ACL that assigns Administer rights to the commissioner(i.e. chip-repl) was automatically installed on the commissionee."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 5,
    "id": "058504b3",
-   "metadata": {},
+   "metadata": {
+    "scrolled": true
+   },
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.OperationalCredentials'>: OperationalCredentials(\n",
-       "│   │   │   NOCs=[\n",
-       "│   │   │   │   NOCStruct(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   noc=b'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x01$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x11\\x02$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\x19\\x1ef\\xaa\\x8d_A\\x19\\x9f\\xee\\xa1\\x1fn\\x82\\xb6}(\\xd6\\x00\\'\\xeb\\x80Y\\xf9\\xd7\\xa8\\xbe\\x98\\xce\\xba4v\\xa0\\xa0\\xa9\\xbaUO)?\\xbb\\xe0\\xa4\\x12r\\x0cb\\xe0\\xc8\\xa7r\\xe3\\xd5\\x8e\\x159\\xc6\\xaf\\xc8\\xbc\\xb4\\x8b\\xf9E7\\n5\\x01(\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x14\\x1f\\x87b\\xe9`2\\x03C{o`\\x9e\\x14\\xe3\\x8c\\x0b\\x83\\xcd\\x10Z0\\x05\\x14p\\xfc\\xf9\\nFI\\xba9\\xb6SH\\xcb\\xd0meg\\n\\t\\\\=\\x180\\x0b@\\xd3\\x03x<\\x0f\\xdc\\xceBl\\x01\\xfb[Kly+\\xd4\\xab\\xa08\\xd3f \\xa5\\xb9\\xb4aP\\xce|\\xee\"to\\x17\\xc1m\\xcfQ\\x10pq=7\\r\\xf6\\xe4\\x89+\\xcb\\x98\\xa9\\x176T\\x82\\x83\\x8d\\x04#\\xa2\\xd3\\xf2\\xb6\\x18',\n",
-       "│   │   │   │   │   icac=b'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x13\\x01$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04,\\x0c\\x82d\\xa8\\xd8-o\\x860Q\\xeb\\x8d\\x87\\xe6x\\x9e\\x0b\\xf8\\xc91\\xa9\\xc5\\x01nxB\\x17h\\xbc\\x98]\\xc9&\\x19\\x9f\\xde\\x97&\\x80M\\xca\\x8b\\xa1\\xa0g\\xfd\\xae}\\x12\\x8a\\x98\\x08\\x86k\\xc7=\\xc3\\xea\\x0e\\xb0\\xf0p\\x057\\n5\\x01)\\x01\\x18$\\x02`0\\x04\\x14p\\xfc\\xf9\\nFI\\xba9\\xb6SH\\xcb\\xd0meg\\n\\t\\\\=0\\x05\\x14~\\xf0\\n\\'\\'\\x89\\xc26\\xa8\\xdaz\\xbeCv\\xb2\\x7fn\\xca^\\xb5\\x180\\x0b@\\x11\\xa5\\xf9\\x80\\x1a\\x9c\\xe5\\xbf\\x1e\\xb3\\n\\x83\\x0eW6!\\x0f\\xb0,\\xa7\\xdb\\xb0\\xe3B\\xdc\\\\\\xec\\xbb\\x02\\xc2\\x04\\xd9\\x0c\\xa7\\xdfj\\x1a\\x15]\\x18\\x08\\xdfFz%)b\\xfa\\x9b\\xca\\x99\\xccY\\x01\\xa7}\\xf1|\\xe6\\xfe\\xf0*\\x10W\\x18'\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   fabricsList=[\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\xa2\\x88}\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98',\n",
-       "│   │   │   │   │   vendorId=31968,\n",
-       "│   │   │   │   │   fabricId=1,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label=''\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   supportedFabrics=16,\n",
-       "│   │   │   commissionedFabrics=1,\n",
-       "│   │   │   trustedRootCertificates=[\n",
-       "│   │   │   │   b'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x14\\x00$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xa2\\x88}\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x987\\n5\\x01)\\x01\\x18$\\x02`0\\x04\\x14~\\xf0\\n\\'\\'\\x89\\xc26\\xa8\\xdaz\\xbeCv\\xb2\\x7fn\\xca^\\xb50\\x05\\x14~\\xf0\\n\\'\\'\\x89\\xc26\\xa8\\xdaz\\xbeCv\\xb2\\x7fn\\xca^\\xb5\\x180\\x0b@3;\\xd5n\\xa0\\xb1O\\xecI:\\x9cM\\xf4u\\x12a\\x96\\x1d\\x13\\x19\\xa4D\\xb3v&_o.(\\xcbs\\xeb\\xc0\\xc4\\xb80\\xc2\\xecF4\\xfbV\\'\\xf7X\\xe2A\\xaa\\xa5l\\r5\\xba\\xbd\\xa4I&C\\xff\\xed\\xd8\\xa8_\\x06\\x18'\n",
-       "│   │   │   ],\n",
-       "│   │   │   currentFabricIndex=1,\n",
-       "│   │   │   attributeList=None,\n",
-       "│   │   │   featureMap=None,\n",
-       "│   │   │   clusterRevision=1\n",
-       "│   │   )\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mOperationalCredentials\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mNOCs\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNOCStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnoc\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x01$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x11\\x02$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\x19\\x1ef\\xaa\\x8d_A\\x19\\x9f\\xee\\xa1\\x1fn\\x82\\xb6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\xd6\\x00\\'\\xeb\\x80Y\\xf9\\xd7\\xa8\\xbe\\x98\\xce\\xba4v\\xa0\\xa0\\xa9\\xbaUO\u001b[0m\u001b[32m)\u001b[0m\u001b[32m?\\xbb\\xe0\\xa4\\x12r\\x0cb\\xe0\\xc8\\xa7r\\xe3\\xd5\\x8e\\x159\\xc6\\xaf\\xc8\\xbc\\xb4\\x8b\\xf9E7\\n5\\x01\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x14\\x1f\\x87b\\xe9`2\\x03C\u001b[0m\u001b[32m{\u001b[0m\u001b[32mo`\\x9e\\x14\\xe3\\x8c\\x0b\\x83\\xcd\\x10Z0\\x05\\x14p\\xfc\\xf9\\nFI\\xba9\\xb6SH\\xcb\\xd0meg\\n\\t\\\\=\\x180\\x0b@\\xd3\\x03x<\\x0f\\xdc\\xceBl\\x01\\xfb\u001b[0m\u001b[32m[\u001b[0m\u001b[32mKly+\\xd4\\xab\\xa08\\xd3f \\xa5\\xb9\\xb4aP\\xce|\\xee\"to\\x17\\xc1m\\xcfQ\\\u001b[0m\u001b[32mx10pq\u001b[0m\u001b[32m=\u001b[0m\u001b[32m7\u001b[0m\u001b[32m\\r\\xf6\\xe4\\x89+\\xcb\\x98\\xa9\\x176T\\x82\\x83\\x8d\\x04#\\xa2\\xd3\\xf2\\xb6\\x18'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33micac\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x13\\x01$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04,\\x0c\\x82d\\xa8\\xd8-o\\x860Q\\xeb\\x8d\\x87\\xe6x\\x9e\\x0b\\xf8\\xc91\\xa9\\xc5\\x01nxB\\x17h\\xbc\\x98\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xc9&\\x19\\x9f\\xde\\x97&\\x80M\\xca\\x8b\\xa1\\xa0g\\xfd\\xae\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\x12\\x8a\\x98\\x08\\x86k\\\u001b[0m\u001b[32mxc7\u001b[0m\u001b[32m=\\xc3\\xea\\x0e\\xb0\\xf0p\\x057\\n5\\x01\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x01\\x18$\\x02`0\\x04\\x14p\\xfc\\xf9\\nFI\\xba9\\xb6SH\\xcb\\xd0meg\\n\\t\\\\=0\\x05\\x14~\\xf0\\n\\'\\'\\x89\\xc26\\xa8\\xdaz\\xbeCv\\xb2\\x7fn\\xca^\\xb5\\x180\\x0b@\\x11\\xa5\\xf9\\x80\\x1a\\x9c\\xe5\\xbf\\x1e\\xb3\\n\\x83\\x0eW6!\\x0f\\xb0,\\xa7\\xdb\\xb0\\xe3B\\xdc\\\\\\xec\\xbb\\x02\\xc2\\x04\\xd9\\x0c\\xa7\\xdfj\\x1a\\x15\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\x18\\x08\\xdfFz%\u001b[0m\u001b[32m)\u001b[0m\u001b[32mb\\xfa\\x9b\\xca\\x99\\xccY\\x01\\xa7\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xf1|\\xe6\\xfe\\xf0*\\x10W\\x18'\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;35mOperationalCredentials\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3950260077\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mNOCs\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNOCStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnoc\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x02\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x15\\x01$\\x11\\x02\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xbe1\\xb2Q\\xd2\\xc2\\x1fn\\x9b\\xc1\\xe5\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\x188\\xca\\x08B\\x05MOu\\xd0\\xb4\\xbb\\x9d\\xeaS\\xa6\\xb0\\xb7\\xc8\\x90\\xd2\\x0b\\xc2I\\xa1\\x1e\\xee\\x92\\xa9P\\x02\\xc2\\xe8~p\\x07\\xb7\\x86&\\x01\\x15\\xcdl\\x838\\x8f\\x12s_\\xd6\\x8d77\\n5\\x01\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x14D\\x99T\\xc8\\\\Q\\xb4\\x10cD\\x9dC\u001b[0m\u001b[32m>\u001b[0m\u001b[32mn\"5\\xf5
\n" + ], + "text/plain": [] + }, "metadata": {}, "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m318338779\u001b[0m\u001b[39m,\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ │ \u001b[0m\u001b[1;36m112233\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "await devCtrl.ReadAttribute(2, [ (0, Clusters.OperationalCredentials)], True)" + "data = await devCtrl.ReadAttribute(2, [ (0, Clusters.AccessControl.Attributes.Acl) ] )\n", + "data" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "af2d1fd0", + "execution_count": 7, + "id": "ae25b644-abc6-4de6-b098-5fbde2409dc4", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
\n",
-       "[\n",
-       "AccessControlEntry(\n",
-       "│   │   fabricIndex=1,\n",
-       "│   │   privilege=<Privilege.kAdminister: 5>,\n",
-       "│   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   subjects=[\n",
-       "│   │   │   1\n",
-       "│   │   ],\n",
-       "│   │   targets=Null\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAccessControlEntryPrivilegeEnum.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m>,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m112233\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "acl = data[0][chip.clusters.Objects.AccessControl][chip.clusters.Objects.AccessControl.Attributes.Acl]\n",
+    "acl"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0fef25ad-0b5e-447d-ac36-8e24dee1fd35",
+   "metadata": {},
+   "source": [
+    "### Installing a CASE ACL"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "605f44c4-6abe-4a7b-87e4-9b1e677f9cfe",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
      "metadata": {},
      "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\n",
+       "\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAccessControlEntryPrivilegeEnum.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m>,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m112233\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[35mNull\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[35mNull\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
+       "\u001b[1m]\u001b[0m"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "acl = [ Clusters.AccessControl.Structs.AccessControlEntryStruct(\n",
+    "acl.append(Clusters.AccessControl.Structs.AccessControlEntryStruct(\n",
     "    fabricIndex = 1,\n",
-    "    privilege = Clusters.AccessControl.Enums.AccessControlEntryPrivilegeEnum.kAdminister,\n",
+    "    privilege = Clusters.AccessControl.Enums.AccessControlEntryPrivilegeEnum.kOperate,\n",
     "    authMode = Clusters.AccessControl.Enums.AccessControlEntryAuthModeEnum.kCase,\n",
-    "    subjects = [ 1 ] ) \n",
-    "]\n",
-    "\n",
+    "    targets = [ Clusters.AccessControl.Structs.AccessControlTargetStruct(\n",
+    "        endpoint = 1,\n",
+    "    ) ] ) )\n",
     "acl"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
-   "id": "bfb94ff7",
+   "execution_count": 9,
+   "id": "66cce24d-c1d4-434c-ab1a-d391b1b8e660",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "[\n",
-       "AttributeStatus(\n",
-       "│   │   Path=AttributePath(\n",
-       "│   │   │   EndpointId=0,\n",
-       "│   │   │   ClusterId=31,\n",
-       "│   │   │   AttributeId=0\n",
-       "│   │   ),\n",
-       "│   │   Status=<Status.Success: 0>\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
@@ -543,11 +665,12 @@
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 9,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -556,211 +679,188 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
-   "id": "5ab2bffe",
+   "execution_count": 10,
+   "id": "64f7f5e3-64d1-4b2b-a777-e07f5ef86681",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.AccessControl'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.AccessControl.Attributes.Acl'>: [\n",
-       "│   │   │   │   AccessControlEntry(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   privilege=<Privilege.kAdminister: 5>,\n",
-       "│   │   │   │   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   │   │   │   subjects=[\n",
-       "│   │   │   │   │   │   1\n",
-       "│   │   │   │   │   ],\n",
-       "│   │   │   │   │   targets=Null\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ]\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.Acl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m318338782\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m112233\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[35mNull\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[35mNull\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 10,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "data = await devCtrl.ReadAttribute(2, [ (0, Clusters.AccessControl.Attributes.Acl) ] )\n",
-    "data"
+    "await devCtrl.ReadAttribute(2, [ (0, Clusters.AccessControl.Attributes.Acl ) ] )"
    ]
   },
   {
-   "cell_type": "code",
-   "execution_count": 8,
-   "id": "ae25b644-abc6-4de6-b098-5fbde2409dc4",
+   "cell_type": "markdown",
+   "id": "92ae8e3a-7c2b-4e92-a673-a5bdb24d6f61",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "
\n",
-       "[\n",
-       "AccessControlEntry(\n",
-       "│   │   fabricIndex=1,\n",
-       "│   │   privilege=<Privilege.kAdminister: 5>,\n",
-       "│   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   subjects=[\n",
-       "│   │   │   1\n",
-       "│   │   ],\n",
-       "│   │   targets=Null\n",
-       ")\n",
-       "]\n",
-       "
\n" - ], - "text/plain": [ - "\n", - "\u001b[1m[\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[1;36m1\u001b[0m\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1m]\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m\n", - "\u001b[1m]\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ - "acl = data[0][chip.clusters.Objects.AccessControl][chip.clusters.Objects.AccessControl.Attributes.Acl]\n", - "acl" + "### Installing a Group ACL" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "605f44c4-6abe-4a7b-87e4-9b1e677f9cfe", + "execution_count": 11, + "id": "144996b2-c029-42f0-931d-536bc5d889f7", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
\n",
-       "[\n",
-       "AccessControlEntry(\n",
-       "│   │   fabricIndex=1,\n",
-       "│   │   privilege=<Privilege.kAdminister: 5>,\n",
-       "│   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   subjects=[\n",
-       "│   │   │   1\n",
-       "│   │   ],\n",
-       "│   │   targets=Null\n",
-       "),\n",
-       "AccessControlEntry(\n",
-       "│   │   fabricIndex=1,\n",
-       "│   │   privilege=<Privilege.kOperate: 3>,\n",
-       "│   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   subjects=Null,\n",
-       "│   │   targets=[\n",
-       "│   │   │   Target(\n",
-       "│   │   │   │   cluster=Null,\n",
-       "│   │   │   │   endpoint=1,\n",
-       "│   │   │   │   deviceType=Null\n",
-       "│   │   │   )\n",
-       "│   │   ]\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAccessControlEntryPrivilegeEnum.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m>,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m112233\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m123\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m456\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kOperate:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m3\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[35mNull\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;35mTarget\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[1;36m6\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[35mNull\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[35mNull\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[1;36m8\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 11,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "acl.append(Clusters.AccessControl.Structs.AccessControlEntryStruct(\n",
-    "    fabricIndex = 1,\n",
-    "    privilege = Clusters.AccessControl.Enums.AccessControlEntryPrivilegeEnum.kOperate,\n",
-    "    authMode = Clusters.AccessControl.Enums.AccessControlEntryAuthModeEnum.kCase,\n",
-    "    targets = [ Clusters.AccessControl.Structs.AccessControlTargetStruct(\n",
+    "acl.append( Clusters.AccessControl.Structs.AccessControlEntryStruct(\n",
+    "    privilege = Clusters.AccessControl.Enums.AccessControlEntryPrivilegeEnum.kManage,\n",
+    "    authMode = Clusters.AccessControl.Enums.AccessControlEntryAuthModeEnum.kGroup,\n",
+    "    subjects = [ 123, 456 ],\n",
+    "    targets = [\n",
+    "      Clusters.AccessControl.Structs.AccessControlTargetStruct(\n",
+    "        cluster = Clusters.OnOff.id,\n",
+    "      ),\n",
+    "      Clusters.AccessControl.Structs.AccessControlTargetStruct(\n",
     "        endpoint = 1,\n",
-    "    ) ] ) )\n",
+    "      ),\n",
+    "      Clusters.AccessControl.Structs.AccessControlTargetStruct(\n",
+    "        cluster = Clusters.LevelControl.id,\n",
+    "        endpoint = 2,\n",
+    "      ) ] ) )\n",
     "acl"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
-   "id": "66cce24d-c1d4-434c-ab1a-d391b1b8e660",
+   "execution_count": 12,
+   "id": "678d0076-64eb-4d5c-a778-18331f579d38",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "[\n",
-       "AttributeStatus(\n",
-       "│   │   Path=AttributePath(\n",
-       "│   │   │   EndpointId=0,\n",
-       "│   │   │   ClusterId=31,\n",
-       "│   │   │   AttributeId=0\n",
-       "│   │   ),\n",
-       "│   │   Status=<Status.Success: 0>\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
@@ -772,95 +872,100 @@
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 12,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "await devCtrl.WriteAttribute(2, [ (0, Clusters.AccessControl.Attributes.Acl( acl ) ) ] )"
+    "await devCtrl.WriteAttribute(2, [ (0, Clusters.AccessControl.Attributes.Acl( acl ) ) ] ) "
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
-   "id": "64f7f5e3-64d1-4b2b-a777-e07f5ef86681",
+   "execution_count": 13,
+   "id": "202a2f97-33f7-47b6-9e34-730a32a2d454",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.AccessControl'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.AccessControl.Attributes.Acl'>: [\n",
-       "│   │   │   │   AccessControlEntry(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   privilege=<Privilege.kAdminister: 5>,\n",
-       "│   │   │   │   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   │   │   │   subjects=[\n",
-       "│   │   │   │   │   │   1\n",
-       "│   │   │   │   │   ],\n",
-       "│   │   │   │   │   targets=Null\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   AccessControlEntry(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   privilege=<Privilege.kOperate: 3>,\n",
-       "│   │   │   │   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   │   │   │   subjects=Null,\n",
-       "│   │   │   │   │   targets=[\n",
-       "│   │   │   │   │   │   Target(\n",
-       "│   │   │   │   │   │   │   cluster=Null,\n",
-       "│   │   │   │   │   │   │   endpoint=1,\n",
-       "│   │   │   │   │   │   │   deviceType=Null\n",
-       "│   │   │   │   │   │   )\n",
-       "│   │   │   │   │   ]\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ]\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.Acl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m318338786\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m112233\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m123\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m456\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kOperate:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m3\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[35mNull\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mTarget\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[1;36m6\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[35mNull\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[35mNull\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mAccessControlTargetStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mcluster\u001b[0m=\u001b[1;36m8\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mendpoint\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[35mNull\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 13,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -870,9 +975,9 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "matter-env",
+   "display_name": "Python 3 (ipykernel)",
    "language": "python",
-   "name": "matter-env"
+   "name": "python3"
   },
   "language_info": {
    "codemirror_mode": {
@@ -884,7 +989,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.2+chromium.10"
+   "version": "3.10.12"
   }
  },
  "nbformat": 4,
diff --git a/docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb b/docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb
index bc021aec730fa9..17762732b20714 100644
--- a/docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb
+++ b/docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb
@@ -74,17 +74,187 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "id": "bad327b7-c78a-4c46-b224-077fe7539ee1",
    "metadata": {
     "tags": []
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       " Replacing  store path ./credentials/development/paa-root-certs with \n",
+       "/home/root/repos/connectedhomeip/credentials/development/paa-root-certs\n",
+       "Note that you are still running from \n",
+       "/home/root/repos/connectedhomeip/docs/development_controllers/chip-repl so other relative\n",
+       "paths may be off.\n",
+       "                    \n",
+       "
\n" + ], + "text/plain": [ + "\n", + "\u001b[1m Replacing \u001b[0m store path .\u001b[35m/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m with \n", + "\u001b[35m/home/root/repos/connectedhomeip/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m\n", + "Note that you are still running from \n", + "\u001b[35m/home/root/repos/connectedhomeip/docs/development_controllers/\u001b[0m\u001b[95mchip-repl\u001b[0m so other relative\n", + "paths may be off.\n", + " \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1738154311.062905][2316259:2316259] CHIP:CTL: Setting attestation nonce to random value\n", + "[1738154311.063127][2316259:2316259] CHIP:CTL: Setting CSR nonce to random value\n", + "[1738154311.081622][2316259:2316259] CHIP:DL: NVS set: chip-factory/unique-id = \"D70822CB195AF636\"\n", + "[1738154311.082937][2316259:2316259] CHIP:DL: NVS set: chip-factory/vendor-id = 65521 (0xFFF1)\n", + "[1738154311.084099][2316259:2316259] CHIP:DL: NVS set: chip-factory/product-id = 32769 (0x8001)\n", + "[1738154311.085092][2316259:2316259] CHIP:DL: NVS set: chip-counters/reboot-count = 1 (0x1)\n", + "[1738154311.086920][2316259:2316259] CHIP:DL: NVS set: chip-counters/total-operational-hours = 0 (0x0)\n", + "[1738154311.087817][2316259:2316259] CHIP:DL: NVS set: chip-counters/boot-reason = 0 (0x0)\n", + "[1738154311.088738][2316259:2316259] CHIP:DL: NVS set: chip-config/regulatory-location = 0 (0x0)\n", + "[1738154311.089714][2316259:2316259] CHIP:DL: NVS set: chip-config/location-capability = 2 (0x2)\n", + "[1738154311.089954][2316259:2316259] CHIP:DL: Got Ethernet interface: enp2s0\n", + "[1738154311.090062][2316259:2316259] CHIP:DL: Found the primary Ethernet interface:enp2s0\n", + "[1738154311.090187][2316259:2316259] CHIP:DL: Got WiFi interface: wlp3s0\n", + "[1738154311.090318][2316259:2316259] CHIP:DL: Found the primary WiFi interface:wlp3s0\n" + ] + }, + { + "data": { + "text/html": [ + "
─────────────────────────────────────────────────── Matter REPL ───────────────────────────────────────────────────\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[92m─────────────────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ───────────────────────────────────────────────────\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "            \n",
+       "\n",
+       "            Welcome to the Matter Python REPL!\n",
+       "\n",
+       "            For help, please type matterhelp()\n",
+       "\n",
+       "            To get more information on a particular object/class, you can pass\n",
+       "            that into matterhelp() as well.\n",
+       "\n",
+       "            \n",
+       "
\n" + ], + "text/plain": [ + "\n", + " \n", + "\n", + "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", + "\n", + "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", + "\n", + "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", + "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", + "\n", + "\u001b[1;34m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[92m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-01-29 13:38:31 ThinkPad chip.storage[2316259] ERROR [Errno 2] No such file or directory: '/tmp/repl-storage.json'\n", + "2025-01-29 13:38:31 ThinkPad chip.storage[2316259] CRITICAL Could not load configuration from /tmp/repl-storage.json - resetting configuration...\n", + "2025-01-29 13:38:31 ThinkPad chip.storage[2316259] WARNING No valid SDK configuration present - clearing out configuration\n", + "2025-01-29 13:38:31 ThinkPad chip.storage[2316259] WARNING No valid REPL configuration present - clearing out configuration\n" + ] + }, + { + "data": { + "text/html": [ + "
\n",
+       "\n",
+       "The following objects have been created:\n",
+       "
\n" + ], + "text/plain": [ + "\n", + "\n", + "\u001b[34mThe following objects have been created:\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
        certificateAuthorityManager:    Manages a list of CertificateAuthority instances.\n",
+       "        caList:                         The list of CertificateAuthority instances.\n",
+       "        caList[n].adminList[m]:         A specific FabricAdmin object at index m for the nth CertificateAuthority \n",
+       "instance.\n",
+       "
\n" + ], + "text/plain": [ + " \u001b[31mcertificateAuthorityManager\u001b[0m\u001b[34m: \u001b[0m\u001b[34mManages a list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34mThe list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mn\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mm\u001b[0m\u001b[1;31m]\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34mA specific FabricAdmin object at index m for the nth CertificateAuthority \u001b[0m\n", + "\u001b[34minstance.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "\n",
+       "Default CHIP Device Controller (NodeId: 112233): has been initialized to manage caList[0].adminList[0] (FabricId = \n",
+       "1), and is available as devCtrl\n",
+       "
\n" + ], + "text/plain": [ + "\n", + "\n", + "\u001b[34mDefault CHIP Device Controller \u001b[0m\u001b[1;34m(\u001b[0m\u001b[34mNodeId: \u001b[0m\u001b[1;34m112233\u001b[0m\u001b[1;34m)\u001b[0m\u001b[34m: has been initialized to manage \u001b[0m\u001b[1;31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m \u001b[0m\u001b[1;34m(\u001b[0m\u001b[1;34mFabricId = \u001b[0m\n", + "\u001b[1;34m1\u001b[0m\u001b[1;34m)\u001b[0m\u001b[1;34m, and is available as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "import chip.native\n", - "import pkgutil\n", - "module = pkgutil.get_loader('chip.ChipReplStartup')\n", - "%run {module.path}" + "%reset -f\n", + "import importlib.util\n", + "spec = importlib.util.find_spec('chip.ChipReplStartup')\n", + "%run {spec.origin}" ] }, { @@ -107,26 +277,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "043ade5d-6f01-4cbc-8d60-57d605946ada", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
\n",
-       "SimpleStruct(\n",
-       "a=20,\n",
-       "b=True,\n",
-       "c=<SimpleEnum.kValueA: 1>,\n",
-       "d=b'1234',\n",
-       "e=30,\n",
-       "f=0,\n",
-       "g=23.234,\n",
-       "h=0.0\n",
-       ")\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
@@ -137,12 +303,14 @@
        "\u001b[2;32m│   \u001b[0m\u001b[33me\u001b[0m=\u001b[1;36m30\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m23\u001b[0m\u001b[1;36m.234\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n",
-       "\u001b[1m)\u001b[0m\n"
+       "\u001b[2;32m│   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[33mi\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[1m)\u001b[0m"
       ]
      },
+     "execution_count": 3,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -167,30 +335,35 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 4,
    "id": "d52b1adc-7723-4be8-80c0-f7f262398d39",
-   "metadata": {},
+   "metadata": {
+    "scrolled": true
+   },
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "TestAddArguments(\n",
-       "arg1=0,\n",
-       "arg2=0\n",
-       ")\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1;35mTestAddArguments\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1;36m0\u001b[0m\n",
-       "\u001b[1m)\u001b[0m\n"
+       "\u001b[1m)\u001b[0m"
       ]
      },
+     "execution_count": 4,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -207,74 +380,76 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 5,
    "id": "c55de6c7-da4e-488e-bafb-32781ee088a8",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
╭──────── <class 'chip.clusters.Objects.UnitTesting.Commands.TestAddArguments'> ─────────╮\n",
-       " def TestCluster.Commands.TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0) -> None: \n",
-       "                                                                                        \n",
-       " TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0)                                   \n",
-       "                                                                                        \n",
-       "                  arg1 = 0                                                              \n",
-       "                  arg2 = 0                                                              \n",
-       "            cluster_id = 1295                                                           \n",
-       "            command_id = 4                                                              \n",
-       "            descriptor = ClusterObjectDescriptor(                                       \n",
-       "                             Fields=[                                                   \n",
-       "                                 ClusterObjectFieldDescriptor(                          \n",
-       "                                     Label='arg1',                                      \n",
-       "                                     Tag=0,                                             \n",
-       "                                     Type=<class 'chip.tlv.uint'>                       \n",
-       "                                 ),                                                     \n",
-       "                                 ClusterObjectFieldDescriptor(                          \n",
-       "                                     Label='arg2',                                      \n",
-       "                                     Tag=1,                                             \n",
-       "                                     Type=<class 'chip.tlv.uint'>                       \n",
-       "                                 )                                                      \n",
-       "                             ]                                                          \n",
-       "                         )                                                              \n",
-       "             is_client = True                                                           \n",
-       " must_use_timed_invoke = False                                                          \n",
-       "              FromDict = def FromDict(data: dict):                                      \n",
-       "               FromTLV = def FromTLV(data: bytes):                                      \n",
-       "                 ToTLV = def ToTLV(self):                                               \n",
-       "╰────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
╭───────────────────── <class 'chip.clusters.Objects.UnitTesting.Commands.TestAddArguments'> ─────────────────────╮\n",
+       " class UnitTesting.Commands.TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0) -> None:                        \n",
+       "                                                                                                                 \n",
+       " TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0)                                                            \n",
+       "                                                                                                                 \n",
+       "                  arg1 = 0                                                                                       \n",
+       "                  arg2 = 0                                                                                       \n",
+       "            cluster_id = 4294048773                                                                              \n",
+       "            command_id = 4                                                                                       \n",
+       "            descriptor = ClusterObjectDescriptor(                                                                \n",
+       "                             Fields=[                                                                            \n",
+       "                                 ClusterObjectFieldDescriptor(                                                   \n",
+       "                                     Label='arg1',                                                               \n",
+       "                                     Tag=0,                                                                      \n",
+       "                                     Type=<class 'chip.tlv.uint'>                                                \n",
+       "                                 ),                                                                              \n",
+       "                                 ClusterObjectFieldDescriptor(                                                   \n",
+       "                                     Label='arg2',                                                               \n",
+       "                                     Tag=1,                                                                      \n",
+       "                                     Type=<class 'chip.tlv.uint'>                                                \n",
+       "                                 )                                                                               \n",
+       "                             ]                                                                                   \n",
+       "                         )                                                                                       \n",
+       "             is_client = True                                                                                    \n",
+       " must_use_timed_invoke = False                                                                                   \n",
+       "         response_type = 'TestAddArgumentsResponse'                                                              \n",
+       "              FromDict = def FromDict(data: dict):                                                               \n",
+       "               FromTLV = def FromTLV(data: bytes):                                                               \n",
+       "                 ToTLV = def ToTLV(self):                                                                        \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
        "
\n" ], "text/plain": [ - "\u001b[34m╭─\u001b[0m\u001b[34m─────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Commands.TestAddArguments'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────\u001b[0m\u001b[34m─╮\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;96mdef \u001b[0m\u001b[1;31mTestCluster.Commands.TestAddArguments\u001b[0m\u001b[1m(\u001b[0marg1: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m, arg2: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m -> \u001b[3;35mNone\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;35mTestAddArguments\u001b[0m\u001b[1;36m(\u001b[0m\u001b[36marg1: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[36m, arg2: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;36m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33marg1\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33marg2\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mcluster_id\u001b[0m = \u001b[1;36m1295\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mcommand_id\u001b[0m = \u001b[1;36m4\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mdescriptor\u001b[0m = \u001b[1;35mClusterObjectDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mFields\u001b[0m=\u001b[1m[\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;35mClusterObjectFieldDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mLabel\u001b[0m=\u001b[32m'arg1'\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mTag\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mType\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.tlv.uint'\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;35mClusterObjectFieldDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mLabel\u001b[0m=\u001b[32m'arg2'\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mTag\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mType\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.tlv.uint'\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mis_client\u001b[0m = \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mmust_use_timed_invoke\u001b[0m = \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mFromDict\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mFromDict\u001b[0m\u001b[1m(\u001b[0mdata: dict\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mFromTLV\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mFromTLV\u001b[0m\u001b[1m(\u001b[0mdata: bytes\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mToTLV\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mToTLV\u001b[0m\u001b[1m(\u001b[0mself\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Commands.TestAddArguments'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m \u001b[0m\u001b[34m────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;96mclass \u001b[0m\u001b[1;31mUnitTesting.Commands.TestAddArguments\u001b[0m\u001b[1m(\u001b[0marg1: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m, arg2: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m -> \u001b[3;35mNone\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mTestAddArguments\u001b[0m\u001b[1;36m(\u001b[0m\u001b[36marg1: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[36m, arg2: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;36m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33marg1\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33marg2\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcluster_id\u001b[0m = \u001b[1;36m4294048773\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcommand_id\u001b[0m = \u001b[1;36m4\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mdescriptor\u001b[0m = \u001b[1;35mClusterObjectDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mFields\u001b[0m=\u001b[1m[\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mClusterObjectFieldDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mLabel\u001b[0m=\u001b[32m'arg1'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mTag\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mType\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.tlv.uint'\u001b[0m\u001b[39m>\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[39m \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[39m \u001b[0m\u001b[1;35mClusterObjectFieldDescriptor\u001b[0m\u001b[1;39m(\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[39m \u001b[0m\u001b[33mLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'arg2'\u001b[0m\u001b[39m,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[39m \u001b[0m\u001b[33mTag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[39m \u001b[0m\u001b[33mType\u001b[0m\u001b[39m=\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mis_client\u001b[0m = \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mmust_use_timed_invoke\u001b[0m = \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mresponse_type\u001b[0m = \u001b[32m'TestAddArgumentsResponse'\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mFromDict\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mFromDict\u001b[0m\u001b[1m(\u001b[0mdata: dict\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mFromTLV\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mFromTLV\u001b[0m\u001b[1m(\u001b[0mdata: bytes\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mToTLV\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mToTLV\u001b[0m\u001b[1m(\u001b[0mself\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, "metadata": {}, @@ -299,30 +474,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "eb2563ac-0315-45ed-9984-308d4376ca94", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
\n",
-       "NullablesAndOptionalsStruct(\n",
-       "nullableInt=Null,\n",
-       "optionalInt=None,\n",
-       "nullableOptionalInt=None,\n",
-       "nullableString=Null,\n",
-       "optionalString=None,\n",
-       "nullableOptionalString=None,\n",
-       "nullableStruct=Null,\n",
-       "optionalStruct=None,\n",
-       "nullableOptionalStruct=None,\n",
-       "nullableList=Null,\n",
-       "optionalList=None,\n",
-       "nullableOptionalList=None\n",
-       ")\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1;35mNullablesAndOptionalsStruct\u001b[0m\u001b[1m(\u001b[0m\n",
@@ -338,11 +505,12 @@
        "\u001b[2;32m│   \u001b[0m\u001b[33mnullableList\u001b[0m=\u001b[35mNull\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33moptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33mnullableOptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
-       "\u001b[1m)\u001b[0m\n"
+       "\u001b[1m)\u001b[0m"
       ]
      },
+     "execution_count": 6,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -363,22 +531,16 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 7,
    "id": "75de30fc-666c-4610-9d86-25fb9d0e4f82",
    "metadata": {},
    "outputs": [
     {
-     "data": {
-      "text/html": [
-       "
None\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[3;35mNone\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] } ], "source": [ @@ -397,26 +559,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "677ce9b4-99f3-4c0e-8f78-d123eb3190b5", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
\n",
-       "SimpleStruct(\n",
-       "a=0,\n",
-       "b=False,\n",
-       "c=0,\n",
-       "d=b'',\n",
-       "e='',\n",
-       "f=0,\n",
-       "g=0.0,\n",
-       "h=0.0\n",
-       ")\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
@@ -427,12 +585,14 @@
        "\u001b[2;32m│   \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n",
-       "\u001b[1m)\u001b[0m\n"
+       "\u001b[2;32m│   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[33mi\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[1m)\u001b[0m"
       ]
      },
+     "execution_count": 8,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -477,23 +637,25 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 9,
    "id": "52ccd8c6",
    "metadata": {},
    "outputs": [],
    "source": [
     "import time, os\n",
     "import subprocess\n",
-    "\n",
-    "# So that the all-clusters-app won't boot with stale prior state.    \n",
     "os.system('pkill -f chip-all-clusters-app')\n",
+    "time.sleep(1)\n",
     "\n",
-    "# The location of the all-clusters-app in the cloud playground is one level higher - adjust for this by testing for file presence.\n",
-    "if (os.path.isfile('../../../out/debug/chip-all-clusters-app')):\n",
-    "    appPath = '../../../out/debug/chip-all-clusters-app'\n",
+    "CI_APP_PATH = '../../../out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-clang-test/chip-all-clusters-app'\n",
+    "LOCAL_APP_PATH = '../../../out/linux-x64-all-clusters/chip-all-clusters-app'\n",
+    "\n",
+    "# Check if the app built by GitHub Actions is present. Otherwise use the standard all-clusters-app \n",
+    "if (os.path.isfile(CI_APP_PATH)):\n",
+    "    appPath = CI_APP_PATH\n",
     "else:\n",
-    "    appPath = '../../../../out/debug/chip-all-clusters-app'\n",
-    "    \n",
+    "    appPath = LOCAL_APP_PATH\n",
+    "\n",
     "process = subprocess.Popen(appPath, stdout=subprocess.DEVNULL)\n",
     "time.sleep(1)"
    ]
@@ -508,80 +670,87 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 10,
    "id": "67fa53b3",
    "metadata": {
+    "scrolled": true,
     "tags": []
    },
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "[\n",
-       "CommissionableNode(\n",
-       "│   │   (To Be Commissioned By)='caIndex(1)/fabricId(0x0000000000000001)/nodeId(0x000000000001B669)',\n",
-       "│   │   CommissionableNode(\n",
-       "│   │   │   instanceName='B2D5B11D799BB1E0',\n",
-       "│   │   │   hostName='DCA63289ABCD0000',\n",
-       "│   │   │   port=5540,\n",
-       "│   │   │   longDiscriminator=3840,\n",
-       "│   │   │   vendorId=65521,\n",
-       "│   │   │   productId=32769,\n",
-       "│   │   │   commissioningMode=1,\n",
-       "│   │   │   deviceType=0,\n",
-       "│   │   │   deviceName='',\n",
-       "│   │   │   pairingInstruction='',\n",
-       "│   │   │   pairingHint=33,\n",
-       "│   │   │   mrpRetryIntervalIdle=5000,\n",
-       "│   │   │   mrpRetryIntervalActive=300,\n",
-       "│   │   │   supportsTcp=True,\n",
-       "│   │   │   addresses=[\n",
-       "│   │   │   │   'fd1e:1a94:d591:6914:dea6:32ff:fe89:abcd',\n",
-       "│   │   │   │   'fe80::dea6:32ff:fe89:abcd',\n",
-       "│   │   │   │   '172.16.243.198'\n",
-       "│   │   │   ]\n",
-       "│   │   )\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;35mCommissionableNode\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m(\u001b[0mTo Be Commissioned By\u001b[1m)\u001b[0m=\u001b[32m'caIndex\u001b[0m\u001b[32m(\u001b[0m\u001b[32m1\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/fabricId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x0000000000000001\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/nodeId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x000000000001B669\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1;35mCommissionableNode\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33minstanceName\u001b[0m=\u001b[32m'B2D5B11D799BB1E0'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mhostName\u001b[0m=\u001b[32m'DCA63289ABCD0000'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mport\u001b[0m=\u001b[1;36m5540\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mlongDiscriminator\u001b[0m=\u001b[1;36m3840\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mproductId\u001b[0m=\u001b[1;36m32769\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mcommissioningMode\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mdeviceName\u001b[0m=\u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mpairingInstruction\u001b[0m=\u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mpairingHint\u001b[0m=\u001b[1;36m33\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mmrpRetryIntervalIdle\u001b[0m=\u001b[1;36m5000\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mmrpRetryIntervalActive\u001b[0m=\u001b[1;36m300\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33msupportsTcp\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33maddresses\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'fd1e:1a94:d591:6914:dea6:32ff:fe89:abcd'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'fe80::dea6:32ff:fe89:abcd'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'192.168.2.1'\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33minstanceName\u001b[0m=\u001b[32m'1B7688F69BBA2270'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mhostName\u001b[0m=\u001b[32m'88A4C203D2100000'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mport\u001b[0m=\u001b[1;36m5540\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mlongDiscriminator\u001b[0m=\u001b[1;36m3840\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mproductId\u001b[0m=\u001b[1;36m32769\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mcommissioningMode\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[1;36m257\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mdeviceName\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mpairingInstruction\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mpairingHint\u001b[0m=\u001b[1;36m33\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mmrpRetryIntervalIdle\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mmrpRetryIntervalActive\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mmrpRetryActiveThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msupportsTcpClient\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msupportsTcpServer\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33misICDOperatingAsLIT\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33maddresses\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'fe80::fa3c:14ea:6d21:1b06'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'192.168.50.108'\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mrotatingId\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m,\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mCommissionableNode\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m(\u001b[0mTo Be Commissioned By\u001b[1m)\u001b[0m=\u001b[32m'caIndex\u001b[0m\u001b[32m(\u001b[0m\u001b[32m1\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/fabricId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x0000000000000001\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/nodeId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x000000000001B669\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33minstanceName\u001b[0m=\u001b[32m'1B7688F69BBA2270'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mhostName\u001b[0m=\u001b[32m'88A4C203D2100000'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mport\u001b[0m=\u001b[1;36m5540\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mlongDiscriminator\u001b[0m=\u001b[1;36m3840\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mproductId\u001b[0m=\u001b[1;36m32769\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mcommissioningMode\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[1;36m257\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mdeviceName\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mpairingInstruction\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mpairingHint\u001b[0m=\u001b[1;36m33\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mmrpRetryIntervalIdle\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mmrpRetryIntervalActive\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mmrpRetryActiveThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msupportsTcpClient\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33msupportsTcpServer\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33misICDOperatingAsLIT\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33maddresses\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'172.17.0.1'\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mrotatingId\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 10,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "devices = devCtrl.DiscoverCommissionableNodes(filterType=chip.discovery.FilterType.LONG_DISCRIMINATOR, filter=3840, stopOnFirst=True, timeoutSecond=2)\n",
+    "devices = await devCtrl.DiscoverCommissionableNodes(filterType=chip.discovery.FilterType.LONG_DISCRIMINATOR, filter=3840, stopOnFirst=True, timeoutSecond=2)\n",
     "devices"
    ]
   },
@@ -597,14 +766,35 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 11,
    "id": "2a7a7c40",
    "metadata": {
     "tags": []
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\u001b[1;36m2\u001b[0m"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
-    "devices[0].Commission(233, 20202021)"
+    "await devices[0].Commission(2, 20202021)"
    ]
   },
   {
@@ -622,48 +812,25 @@
    "source": [
     "#### Commission Target (Locally Launched App)\n",
     "\n",
-    "Commission the target with a NodeId of 1."
+    "Commission the target with a NodeId of 2.\n",
+    "\n",
+    "> **WARNING**: The device can only be commissioned once. Repeating the commissioning process will result in Errors.\n",
+    "The line `%%script true` has been added to bypass execution errors and allow the notebook to run automatically.\n",
+    ">
If you wish to test the behaviour of the function, remove `%%script true`" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "id": "5e964fe3", "metadata": { "tags": [] }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-01-29 15:34:45 johnsj-macbookpro1.roam.corp.google.com chip.SC[10607] ERROR The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Node address has been updated\n", - "Commissioning complete\n" - ] - }, - { - "data": { - "text/html": [ - "
True\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[3;92mTrue\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "devCtrl.CommissionIP(b'127.0.0.1', 20202021, 2)" + "%%script true\n", + "\n", + "await devCtrl.CommissionOnNetwork(2, 20202021)" ] }, { @@ -682,14 +849,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "a1e762ad-b272-4a9c-959c-6fc1543d9631", "metadata": { "tags": [] }, "outputs": [], "source": [ - "devCtrl.CommissionThread(3840, 20202021, 2, b'\\x01\\x03\\xff')" + "%%script true\n", + "\n", + "await devCtrl.CommissionThread(3840, 20202021, 2, b'\\x01\\x03\\xff')" ] }, { @@ -701,21 +870,23 @@ "source": [ "#### Commission Target (BLE + WiFi)\n", "\n", - "To commission a Wifi-based target over BLE, ensure your BLE stack is up on your host and available as `hci0` on Linux. You can confirm this by running `hciconfig -a`. You'll also need Wifi credentials to join the Thread network.\n", + "To commission a Wifi-based target over BLE, ensure your BLE stack is up on your host and available as `hci0` on Linux. You can confirm this by running `hciconfig -a`. You'll also need Wifi credentials to join the WiFi network.\n", "\n", "> NOTE: MacOS Monterey is currently not supported due to issues with its BLE stack." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "3b552280-8586-4b5d-acde-c7806e882f23", "metadata": { "tags": [] }, "outputs": [], "source": [ - "devCtrl.CommissionWiFi(3840, 20202021, 2, 'MyWifiSsid', 'MyWifiPassword')" + "%%script true\n", + "\n", + "await devCtrl.CommissionWiFi(3840, 20202021, 2, 'MyWifiSsid', 'MyWifiPassword')" ] }, { @@ -746,7 +917,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 15, "id": "bed38512-91f8-4d4e-b6e1-b30749137bbd", "metadata": {}, "outputs": [], @@ -782,25 +953,21 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "id": "2935f13b-ca16-4f9c-b320-8896c8465278", "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
InteractionModelError(<Status.Failure: 1>)\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.Failure:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "InteractionModelError(, 255)\n" + ] } ], "source": [ + "from pprint import pprint\n", + "\n", "try:\n", " await devCtrl.SendCommand(2, 100, Clusters.OnOff.Commands.On())\n", "except Exception as e:\n", @@ -827,7 +994,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 17, "id": "33f34d12-79f4-4230-836b-2e66ea839440", "metadata": { "tags": [] @@ -836,17 +1003,15 @@ { "data": { "text/html": [ - "
\n",
-       "TestListInt8UReverseResponse(\n",
-       "arg1=[\n",
-       "│   │   7,\n",
-       "│   │   5,\n",
-       "│   │   3,\n",
-       "│   │   1\n",
-       "]\n",
-       ")\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1;35mTestListInt8UReverseResponse\u001b[0m\u001b[1m(\u001b[0m\n",
@@ -856,11 +1021,12 @@
        "\u001b[2;32m│   │   \u001b[0m\u001b[1;36m3\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m]\u001b[0m\n",
-       "\u001b[1m)\u001b[0m\n"
+       "\u001b[1m)\u001b[0m"
       ]
      },
+     "execution_count": 17,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -889,36 +1055,37 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 18,
    "id": "7167af96-43b1-4524-8712-592e3ede6114",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m439497020\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1;36m0\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 18,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -928,28 +1095,33 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 19,
    "id": "b6c3bf1f-3247-4f8d-ac42-1b5ebc59cb44",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "<class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[2;32m│   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Attribute.DataVersion'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;36m439497020\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[39m\u001b[0m: \u001b[1;36m0\u001b[0m\n",
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 19,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -958,22 +1130,29 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": 20,
    "id": "a2cafa5e-6c0e-42b9-bac0-8a1770306718",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
0\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
-       "\u001b[1;36m0\u001b[0m\n"
+       "\u001b[1;36m0\u001b[0m"
       ]
      },
+     "execution_count": 20,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -992,38 +1171,38 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 21,
    "id": "8e2cb85c-9fa4-4f2e-bd71-aea54988274d",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Boolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m439497020\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1;36m0\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 21,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -1042,48 +1221,64 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": 22,
    "id": "043cb3ac-3346-45f1-bcd3-803ea33dc3c0",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2475301757\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: Null\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 22,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -1100,70 +1295,97 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": 23,
    "id": "15d7a880-9ddd-4619-9e42-3fd8895d80e1",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n",
-       "│   │   }\n",
-       "},\n",
-       "2: {\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2475301757\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1656272886\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 23,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -1180,102 +1402,262 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 24,
    "id": "accb9351-c8e0-4a4e-86d9-784b35903144",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "2: {\n",
-       "│   │   <class 'chip.clusters.Objects.Groups'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Descriptor'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n",
-       "│   │   │   │   DeviceType(\n",
-       "│   │   │   │   │   type=256,\n",
-       "│   │   │   │   │   revision=1\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n",
-       "│   │   │   │   4,\n",
-       "│   │   │   │   6,\n",
-       "│   │   │   │   29,\n",
-       "│   │   │   │   1030\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OccupancySensing'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'>: 2\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3994102238\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m128\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2171024504\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mHoldTimeLimitsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m300\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeDefault\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m10\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1658710865\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4220563284\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m374163796\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'B3'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1270857495\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m47\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m98\u001b[0m\u001b[39m,\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1030\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m256\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1656272886\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 24,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -1292,2059 +1674,4939 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 25,
    "id": "6fff453d-59a4-4dba-878f-1c65c7b1958b",
    "metadata": {
     "scrolled": true,
     "tags": []
    },
    "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 0, Attribute = , got IM Error: InteractionModelError: UnsupportedRead (0x8f)\n",
-      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: UnsupportedRead (0x8f)\n",
-      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: InvalidDataType (0x8d)\n",
-      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: Failure (0x1)\n"
-     ]
-    },
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.Identify'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Identify.Attributes.IdentifyTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Identify.Attributes.IdentifyType'>: 2,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Identify.Attributes.ClusterRevision'>: 2\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Groups'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Descriptor'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n",
-       "│   │   │   │   DeviceType(\n",
-       "│   │   │   │   │   type=22,\n",
-       "│   │   │   │   │   revision=1\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n",
-       "│   │   │   │   3,\n",
-       "│   │   │   │   4,\n",
-       "│   │   │   │   29,\n",
-       "│   │   │   │   30,\n",
-       "│   │   │   │   31,\n",
-       "│   │   │   │   40,\n",
-       "│   │   │   │   42,\n",
-       "│   │   │   │   43,\n",
-       "│   │   │   │   44,\n",
-       "│   │   │   │   46,\n",
-       "│   │   │   │   48,\n",
-       "│   │   │   │   49,\n",
-       "│   │   │   │   50,\n",
-       "│   │   │   │   51,\n",
-       "│   │   │   │   52,\n",
-       "│   │   │   │   53,\n",
-       "│   │   │   │   54,\n",
-       "│   │   │   │   55,\n",
-       "│   │   │   │   60,\n",
-       "│   │   │   │   62,\n",
-       "│   │   │   │   63,\n",
-       "│   │   │   │   64,\n",
-       "│   │   │   │   65,\n",
-       "│   │   │   │   1029\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [\n",
-       "│   │   │   │   41\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [\n",
-       "│   │   │   │   1,\n",
-       "│   │   │   │   2\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Binding'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Binding.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.AccessControl'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.AccessControl.Attributes.Acl'>: [\n",
-       "│   │   │   │   AccessControlEntry(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   privilege=<Privilege.kAdminister: 5>,\n",
-       "│   │   │   │   │   authMode=<AuthMode.kCase: 2>,\n",
-       "│   │   │   │   │   subjects=[\n",
-       "│   │   │   │   │   │   1\n",
-       "│   │   │   │   │   ],\n",
-       "│   │   │   │   │   targets=Null\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.AccessControl.Attributes.Extension'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.AccessControl.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Basic'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.InteractionModelVersion'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.VendorName'>: 'TEST_VENDOR',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.VendorID'>: 9050,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.ProductName'>: 'TEST_PRODUCT',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.ProductID'>: 65279,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.NodeLabel'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.Location'>: 'XX',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.HardwareVersion'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.HardwareVersionString'>: 'TEST_VERSION',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.SoftwareVersion'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.SoftwareVersionString'>: 'prerelease',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.ManufacturingDate'>: '20210614123456ZZ',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.PartNumber'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.ProductURL'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.ProductLabel'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.SerialNumber'>: 'TEST_SN',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.LocalConfigDisabled'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.Reachable'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.UniqueID'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Basic.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.DefaultOTAProviders'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdatePossible'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateState'>: <UpdateStateEnum.kUnknown: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateStateProgress'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.LocalizationConfiguration'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.LocalizationConfiguration.Attributes.ActiveLocale'>: 'en-US',\n",
-       "│   │   │   <class 'chip.clusters.Objects.LocalizationConfiguration.Attributes.SupportedLocales'>: [\n",
-       "│   │   │   │   'Test',\n",
-       "│   │   │   │   'en-US',\n",
-       "│   │   │   │   'de-DE',\n",
-       "│   │   │   │   'fr-FR',\n",
-       "│   │   │   │   'en-GB',\n",
-       "│   │   │   │   'es-ES',\n",
-       "│   │   │   │   'zh-CN',\n",
-       "│   │   │   │   'it-IT',\n",
-       "│   │   │   │   'ja-JP'\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.LocalizationConfiguration.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.TimeFormatLocalization'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.HourFormat'>: <HourFormat.k12hr: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.ActiveCalendarType'>: <CalendarType.kBuddhist: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.SupportedCalendarTypes'>: [\n",
-       "│   │   │   │   <CalendarType.kBuddhist: 0>,\n",
-       "│   │   │   │   <CalendarType.kChinese: 1>,\n",
-       "│   │   │   │   <CalendarType.kCoptic: 2>,\n",
-       "│   │   │   │   <CalendarType.kEthiopian: 3>,\n",
-       "│   │   │   │   <CalendarType.kGregorian: 4>,\n",
-       "│   │   │   │   <CalendarType.kHebrew: 5>,\n",
-       "│   │   │   │   <CalendarType.kIndian: 6>,\n",
-       "│   │   │   │   <CalendarType.kIslamic: 7>,\n",
-       "│   │   │   │   <CalendarType.kJapanese: 8>,\n",
-       "│   │   │   │   <CalendarType.kKorean: 9>,\n",
-       "│   │   │   │   <CalendarType.kPersian: 10>,\n",
-       "│   │   │   │   <CalendarType.kTaiwanese: 11>\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.PowerSourceConfiguration'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSourceConfiguration.Attributes.Sources'>: [\n",
-       "│   │   │   │   1\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSourceConfiguration.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.GeneralCommissioning'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.Breadcrumb'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.BasicCommissioningInfoList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.RegulatoryConfig'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.LocationCapability'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.FeatureMap'>: 6,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.NetworkCommissioning'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'>: ValueDecodeFailure(\n",
-       "│   │   │   │   TLVValue=None,\n",
-       "│   │   │   │   Reason=InteractionModelError(<Status.UnsupportedRead: 143>)\n",
-       "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'>: <NetworkCommissioningStatusEnum.kSuccess: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.GeneralDiagnostics'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.NetworkInterfaces'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.RebootCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.UpTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.TotalOperationalHours'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.BootReasons'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveHardwareFaults'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveRadioFaults'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveNetworkFaults'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.SoftwareDiagnostics'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ThreadMetrics'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapFree'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapUsed'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapHighWatermark'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.FeatureMap'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Channel'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RoutingRole'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NetworkName'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PanId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ExtendedPanId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.MeshLocalPrefix'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OverrunCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NeighborTableList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouteTableList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Weighting'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DataVersion'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.StableDataVersion'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRouterId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DetachedRoleCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChildRoleCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouterRoleCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRoleCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.AttachAttemptCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionIdChangeCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.BetterPartitionAttachAttemptCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ParentChangeCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxTotalCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxUnicastCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBroadcastCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckRequestedCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckedCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxNoAckRequestedCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataPollCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconRequestCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxOtherCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxRetryCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDirectMaxRetryExpiryCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxIndirectMaxRetryExpiryCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrCcaCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrAbortCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrBusyChannelCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxTotalCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxUnicastCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBroadcastCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataPollCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconRequestCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxOtherCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxAddressFilteredCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDestAddrFilteredCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDuplicatedCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrNoFrameCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrUnknownNeighborCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrInvalidSrcAddrCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrSecCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrFcsCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrOtherCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveTimestamp'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PendingTimestamp'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Delay'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.SecurityPolicy'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChannelMask'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OperationalDatasetComponents'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveNetworkFaultsList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.FeatureMap'>: 15,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Bssid'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.SecurityType'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.WiFiVersion'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ChannelNumber'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Rssi'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconLostCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconRxCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastRxCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastTxCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastRxCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastTxCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.CurrentMaxRate'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.OverrunCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.FeatureMap'>: 3,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PHYRate'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FullDuplex'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketRxCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketTxCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TxErrCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CollisionCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.OverrunCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CarrierDetect'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TimeSinceReset'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FeatureMap'>: 3,\n",
-       "│   │   │   <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.AdministratorCommissioning'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.WindowStatus'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminFabricIndex'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminVendorId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OperationalCredentials'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.NOCs'>: [\n",
-       "│   │   │   │   NOCStruct(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   noc=b'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x01$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x11\\x02$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xbc8\\x9d2\\xe7\\xe6\\x0f\\x12\\xcb\\x0fYb\\x8f\\xa6zc\\xa1\\xb2y\\x18\\xc3~\\x98\\xee\\xa9r\\xd3\\x18\\xe9@\\xf9\\x17B\\xa6\\xed\\x11\\x92\\xc2\\xe2k&\\x88m\\r^`\\x10\\xc3|\\xdd\\xb4)\\r\\x11\\xcc\\xd1p\\x9bwN)H)\\x187\\n5\\x01(\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x14B8k q\\xd8Lv\\x85^A;\\xceyC\\xa4\\xe9|\\xc1\\x120\\x05\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83]\\xa5-\\x97jG\\xdb\\x87\\x180\\x0b@4\\n\\xcd\\x15+\\xa9n}s\\xbb$u\\x12\\xec\"B\\x00\\x98\\x1fD\\xd4\\xb7\\xcc\\xbb\\xd3\\x17*\\xfa\\xd3\\x8atX]\\xca\\xec\\xaf:[$o|\\xc6\"z\\x15\\xb4d\\x144\\x11i\\xa4\\xaa7\\xce\\x9f\\xc5l\\x11\\xe7I\\x87L\\x88\\x18',\n",
-       "│   │   │   │   │   icac=b'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x13\\x01$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xf2\\xc0\\x10\\xe9=c\\x9e\\xed.\\xaaQj\\x0ca\\xd8\\x1f\\xfb:\\xf2\\x92$\\x04hc><\\xb2\\xc9R>\\xfe\\x1f\\x121\\xf2\\xaf5 \\xc4\\r\\xd3=\\xd0\\xae\\xbe\\xb4\\x85\\x8dI\\xfa`Z\\xaeI\\xfe*>\\xb1\\x88:,Rs\\xb57\\n5\\x01)\\x01\\x18$\\x02`0\\x04\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83]\\xa5-\\x97jG\\xdb\\x870\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@\\x91\\x1cY!4-\\\\\\xc1hC[q\\xa8\\x85\\x00\\xa7\\xdd\\xd8\\x1fAM\\xca-6\\xf5 \\x89\\x85k\\x05;\\x15\\xd0\\x83A>D\\xe9\\x9e\\xc1]\\xbb\\xcd\\x8c\\x83\\xbbm\\xab\\xf9\\x8a\\xdb\\x9df\\x11\\x05\\x98hC\\x8f\\xcd\\xad\\n7\\x9e\\x18'\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'>: [\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa',\n",
-       "│   │   │   │   │   vendorId=60064,\n",
-       "│   │   │   │   │   fabricId=1,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label=''\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.SupportedFabrics'>: 16,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.CommissionedFabrics'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.TrustedRootCertificates'>: [\n",
-       "│   │   │   │   b'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x14\\x00$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa7\\n5\\x01)\\x01\\x18$\\x02`0\\x04\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd50\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@J\\xa5\\xdb\\xec9\\xd3i\\xbf\\xa84\\xbc(r\\xfb\\xf9\\x95X\\x00\\xf1\\x1f\\xd5#\\x14x\\xbeT}\\xda\\xe1\\x15\\x94\\x92\\xdb\\xc8\\xccI0\\xc5\\xe2\\x1ev0h\\x10N\\xdd\\x8b\\xd7\\x94\\x90]\\xd4\\x8f\\x08>\\x8b\\xc8j\\x05\\xbeb\\xed\\xd5\\xe0\\x18'\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.CurrentFabricIndex'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.GroupKeyManagement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupKeyMap'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupTable'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupsPerFabric'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupKeysPerFabric'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.FixedLabel'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.FixedLabel.Attributes.LabelList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.UserLabel'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.UserLabel.Attributes.LabelList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'>: 2\n",
-       "│   │   }\n",
-       "},\n",
-       "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.Identify'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Identify.Attributes.IdentifyTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Identify.Attributes.IdentifyType'>: 2,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Identify.Attributes.ClusterRevision'>: 2\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Groups'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Scenes'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Scenes.Attributes.SceneCount'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Scenes.Attributes.CurrentScene'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Scenes.Attributes.CurrentGroup'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Scenes.Attributes.SceneValid'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Scenes.Attributes.NameSupport'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Scenes.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OnOffSwitchConfiguration'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchType'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchActions'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.LevelControl'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.CurrentLevel'>: 254,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.RemainingTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.MinLevel'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.MaxLevel'>: 254,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.CurrentFrequency'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.MinFrequency'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.MaxFrequency'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.Options'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.OnOffTransitionTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.OnLevel'>: 254,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.OnTransitionTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.OffTransitionTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.DefaultMoveRate'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.StartUpCurrentLevel'>: Null,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.FeatureMap'>: 3,\n",
-       "│   │   │   <class 'chip.clusters.Objects.LevelControl.Attributes.ClusterRevision'>: 5\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.BinaryInputBasic'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.OutOfService'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.PresentValue'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.StatusFlags'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Descriptor'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n",
-       "│   │   │   │   DeviceType(\n",
-       "│   │   │   │   │   type=256,\n",
-       "│   │   │   │   │   revision=1\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n",
-       "│   │   │   │   3,\n",
-       "│   │   │   │   4,\n",
-       "│   │   │   │   5,\n",
-       "│   │   │   │   6,\n",
-       "│   │   │   │   7,\n",
-       "│   │   │   │   8,\n",
-       "│   │   │   │   15,\n",
-       "│   │   │   │   29,\n",
-       "│   │   │   │   30,\n",
-       "│   │   │   │   37,\n",
-       "│   │   │   │   47,\n",
-       "│   │   │   │   49,\n",
-       "│   │   │   │   57,\n",
-       "│   │   │   │   59,\n",
-       "│   │   │   │   64,\n",
-       "│   │   │   │   65,\n",
-       "│   │   │   │   69,\n",
-       "│   │   │   │   80,\n",
-       "│   │   │   │   257,\n",
-       "│   │   │   │   258,\n",
-       "│   │   │   │   259,\n",
-       "│   │   │   │   512,\n",
-       "│   │   │   │   513,\n",
-       "│   │   │   │   516,\n",
-       "│   │   │   │   768,\n",
-       "│   │   │   │   1024,\n",
-       "│   │   │   │   1026,\n",
-       "│   │   │   │   1027,\n",
-       "│   │   │   │   1028,\n",
-       "│   │   │   │   1029,\n",
-       "│   │   │   │   1030,\n",
-       "│   │   │   │   1280,\n",
-       "│   │   │   │   1283,\n",
-       "│   │   │   │   1284,\n",
-       "│   │   │   │   1285,\n",
-       "│   │   │   │   1286,\n",
-       "│   │   │   │   1287,\n",
-       "│   │   │   │   1288,\n",
-       "│   │   │   │   1289,\n",
-       "│   │   │   │   1290,\n",
-       "│   │   │   │   1291,\n",
-       "│   │   │   │   1292,\n",
-       "│   │   │   │   1293,\n",
-       "│   │   │   │   1294,\n",
-       "│   │   │   │   1295,\n",
-       "│   │   │   │   2820\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Binding'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Binding.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Actions'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Actions.Attributes.ActionList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Actions.Attributes.EndpointList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Actions.Attributes.SetupUrl'>: 'https://example.com',\n",
-       "│   │   │   <class 'chip.clusters.Objects.Actions.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.PowerSource'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.Status'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.Order'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.Description'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryVoltage'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryPercentRemaining'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryTimeRemaining'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeLevel'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.ActiveBatteryFaults'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeState'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PowerSource.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.NetworkCommissioning'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'>: ValueDecodeFailure(\n",
-       "│   │   │   │   TLVValue=None,\n",
-       "│   │   │   │   Reason=InteractionModelError(<Status.UnsupportedRead: 143>)\n",
-       "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'>: <NetworkCommissioningStatusEnum.kSuccess: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.BridgedDeviceBasicInformation'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.BridgedDeviceBasicInformation.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Switch'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Switch.Attributes.NumberOfPositions'>: 2,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Switch.Attributes.CurrentPosition'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Switch.Attributes.MultiPressMax'>: 2,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Switch.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Switch.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.FixedLabel'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.FixedLabel.Attributes.LabelList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.UserLabel'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.UserLabel.Attributes.LabelList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.BooleanState'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.BooleanState.Attributes.StateValue'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BooleanState.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ModeSelect'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ModeSelect.Attributes.CurrentMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ModeSelect.Attributes.SupportedModes'>: [\n",
-       "│   │   │   │   ModeOptionStruct(\n",
-       "│   │   │   │   │   label='Black',\n",
-       "│   │   │   │   │   mode=0,\n",
-       "│   │   │   │   │   semanticTag=0\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   ModeOptionStruct(\n",
-       "│   │   │   │   │   label='Cappuccino',\n",
-       "│   │   │   │   │   mode=4,\n",
-       "│   │   │   │   │   semanticTag=0\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   ModeOptionStruct(\n",
-       "│   │   │   │   │   label='Espresso',\n",
-       "│   │   │   │   │   mode=7,\n",
-       "│   │   │   │   │   semanticTag=0\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ModeSelect.Attributes.OnMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ModeSelect.Attributes.StartUpMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ModeSelect.Attributes.Description'>: 'Coffee',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ModeSelect.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.DoorLock'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.LockState'>: <DlLockState.kUnlocked: 2>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.LockType'>: <DlLockType.kDeadBolt: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.ActuatorEnabled'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.DoorState'>: <DlDoorState.kDoorOpen: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.DoorOpenEvents'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.DoorClosedEvents'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.OpenPeriod'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfTotalUsersSupported'>: 10,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfPINUsersSupported'>: 10,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfWeekDaySchedulesSupportedPerUser'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfYearDaySchedulesSupportedPerUser'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfHolidaySchedulesSupported'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.MaxPINCodeLength'>: 6,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.MinPINCodeLength'>: 6,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.CredentialRulesSupport'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.Language'>: 'en',\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.AutoRelockTime'>: 96,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.SoundVolume'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.OperatingMode'>: <DlOperatingMode.kNormal: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.SupportedOperatingModes'>: 65526,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.DefaultConfigurationRegister'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.EnableOneTouchLocking'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.EnableInsideStatusLED'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.EnablePrivacyModeButton'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.WrongCodeEntryLimit'>: 3,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.UserCodeTemporaryDisableTime'>: 10,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.RequirePINforRemoteOperation'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.DoorLock.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.WindowCovering'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.Type'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLift'>: 32767,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTilt'>: 32767,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.ConfigStatus'>: 3,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercentage'>: 50,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercentage'>: 50,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.OperationalStatus'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionLiftPercent100ths'>: 500,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionTiltPercent100ths'>: 500,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.EndProductType'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercent100ths'>: 500,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercent100ths'>: 500,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitLift'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitLift'>: 65535,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitTilt'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitTilt'>: 65535,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.Mode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.SafetyStatus'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.WindowCovering.Attributes.ClusterRevision'>: 5\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.BarrierControl'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierMovingState'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierSafetyStatus'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierCapabilities'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierPosition'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.BarrierControl.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxPressure'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxSpeed'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxFlow'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstPressure'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstPressure'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinCompPressure'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxCompPressure'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstSpeed'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstSpeed'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstFlow'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstFlow'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstTemp'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstTemp'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.PumpStatus'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveOperationMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveControlMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Capacity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Speed'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeRunningHours'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Power'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeEnergyConsumed'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.OperationMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ControlMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.AlarmMask'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Thermostat'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.LocalTemperature'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMinHeatSetpointLimit'>: 700,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMaxHeatSetpointLimit'>: 3000,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMinCoolSetpointLimit'>: 1600,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMaxCoolSetpointLimit'>: 3200,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.OccupiedCoolingSetpoint'>: 2600,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.OccupiedHeatingSetpoint'>: 2000,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.MinHeatSetpointLimit'>: 700,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.MaxHeatSetpointLimit'>: 3000,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.MinCoolSetpointLimit'>: 1600,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.MaxCoolSetpointLimit'>: 3200,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.MinSetpointDeadBand'>: 25,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.ControlSequenceOfOperation'>: 4,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.SystemMode'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.StartOfWeek'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.NumberOfWeeklyTransitions'>: 7,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.NumberOfDailyTransitions'>: 4,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.FeatureMap'>: 11,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Thermostat.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.TemperatureDisplayMode'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.KeypadLockout'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ScheduleProgrammingVisibility'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ColorControl'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentHue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentSaturation'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.RemainingTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentX'>: 24939,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentY'>: 24701,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.DriftCompensation'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.CompensationText'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorTemperature'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorMode'>: 2,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorControlOptions'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.NumberOfPrimaries'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary1X'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary1Y'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary1Intensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary2X'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary2Y'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary2Intensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary3X'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary3Y'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary3Intensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary4X'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary4Y'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary4Intensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary5X'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary5Y'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary5Intensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary6X'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary6Y'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.Primary6Intensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.WhitePointX'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.WhitePointY'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointRX'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointRY'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointRIntensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointGX'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointGY'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointGIntensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointBX'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointBY'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointBIntensity'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.EnhancedCurrentHue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.EnhancedColorMode'>: 2,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopActive'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopDirection'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopTime'>: 25,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStartEnhancedHue'>: 8960,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStoredEnhancedHue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorCapabilities'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMin'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMax'>: 65279,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.CoupleColorTempToLevelMinMireds'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.StartUpColorTemperatureMireds'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ColorControl.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.IlluminanceMeasurement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MinMeasuredValue'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MaxMeasuredValue'>: 65534,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.Tolerance'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.LightSensorType'>: Null,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.ClusterRevision'>: 2\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.TemperatureMeasurement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.MeasuredValue'>: -32768,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.MinMeasuredValue'>: -32768,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.MaxMeasuredValue'>: -32768,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.Tolerance'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.PressureMeasurement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.PressureMeasurement.Attributes.MeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PressureMeasurement.Attributes.MinMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PressureMeasurement.Attributes.MaxMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.PressureMeasurement.Attributes.ClusterRevision'>: 2\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.FlowMeasurement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.FlowMeasurement.Attributes.MeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.FlowMeasurement.Attributes.MinMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.FlowMeasurement.Attributes.MaxMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.FlowMeasurement.Attributes.Tolerance'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.FlowMeasurement.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.Tolerance'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'>: 2\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OccupancySensing'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'>: 2\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.IasZone'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.IasZone.Attributes.ZoneState'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IasZone.Attributes.ZoneType'>: 541,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IasZone.Attributes.ZoneStatus'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IasZone.Attributes.IasCieAddress'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IasZone.Attributes.ZoneId'>: 255,\n",
-       "│   │   │   <class 'chip.clusters.Objects.IasZone.Attributes.ClusterRevision'>: 2\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.WakeOnLan'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.WakeOnLan.Attributes.WakeOnLanMacAddress'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.WakeOnLan.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Channel'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Channel.Attributes.ChannelList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Channel.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.TargetNavigator'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.TargetNavigator.Attributes.TargetNavigatorList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TargetNavigator.Attributes.CurrentNavigatorTarget'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TargetNavigator.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.MediaPlayback'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackState'>: <PlaybackStateEnum.kPlaying: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaPlayback.Attributes.StartTime'>: 255,\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaPlayback.Attributes.Duration'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackSpeed'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeEnd'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeStart'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaPlayback.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.MediaInput'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaInput.Attributes.MediaInputList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaInput.Attributes.CurrentMediaInput'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.MediaInput.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.LowPower'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.LowPower.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.KeypadInput'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.KeypadInput.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ContentLauncher'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ContentLauncher.Attributes.AcceptHeaderList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ContentLauncher.Attributes.SupportedStreamingProtocols'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ContentLauncher.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.AudioOutput'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.AudioOutput.Attributes.AudioOutputList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.AudioOutput.Attributes.CurrentAudioOutput'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.AudioOutput.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ApplicationLauncher'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationLauncher.Attributes.ApplicationLauncherList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationLauncher.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ApplicationBasic'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.VendorName'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.VendorId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationName'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ProductId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationStatus'>: <ApplicationStatusEnum.kStopped: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationVersion'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.AllowedVendorList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.AccountLogin'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.AccountLogin.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Boolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap32'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap64'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int8u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int24u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int32u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int40u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int48u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int56u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int64u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int8s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int24s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int32s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int40s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int48s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int56s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int64s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Enum8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Enum16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.FloatSingle'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.FloatDouble'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.OctetString'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListInt8u'>: [\n",
-       "│   │   │   │   0,\n",
-       "│   │   │   │   0,\n",
-       "│   │   │   │   0,\n",
-       "│   │   │   │   0\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListOctetString'>: [\n",
-       "│   │   │   │   b'',\n",
-       "│   │   │   │   b'',\n",
-       "│   │   │   │   b'',\n",
-       "│   │   │   │   b''\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListStructOctetString'>: [\n",
-       "│   │   │   │   TestListStructOctet(\n",
-       "│   │   │   │   │   fabricIndex=0,\n",
-       "│   │   │   │   │   operationalCert=b''\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   TestListStructOctet(\n",
-       "│   │   │   │   │   fabricIndex=0,\n",
-       "│   │   │   │   │   operationalCert=b''\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   TestListStructOctet(\n",
-       "│   │   │   │   │   fabricIndex=0,\n",
-       "│   │   │   │   │   operationalCert=b''\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   TestListStructOctet(\n",
-       "│   │   │   │   │   fabricIndex=0,\n",
-       "│   │   │   │   │   operationalCert=b''\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.LongOctetString'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.CharString'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.LongCharString'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.EpochUs'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.EpochS'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.VendorId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListNullablesAndOptionalsStruct'>: [\n",
-       "│   │   │   │   NullablesAndOptionalsStruct(\n",
-       "│   │   │   │   │   nullableInt=Null,\n",
-       "│   │   │   │   │   optionalInt=None,\n",
-       "│   │   │   │   │   nullableOptionalInt=None,\n",
-       "│   │   │   │   │   nullableString=Null,\n",
-       "│   │   │   │   │   optionalString=None,\n",
-       "│   │   │   │   │   nullableOptionalString=None,\n",
-       "│   │   │   │   │   nullableStruct=Null,\n",
-       "│   │   │   │   │   optionalStruct=None,\n",
-       "│   │   │   │   │   nullableOptionalStruct=None,\n",
-       "│   │   │   │   │   nullableList=Null,\n",
-       "│   │   │   │   │   optionalList=None,\n",
-       "│   │   │   │   │   nullableOptionalList=None\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.EnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.StructAttr'>: SimpleStruct(\n",
-       "│   │   │   │   a=0,\n",
-       "│   │   │   │   b=False,\n",
-       "│   │   │   │   c=<SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   │   d=b'',\n",
-       "│   │   │   │   e='',\n",
-       "│   │   │   │   f=0,\n",
-       "│   │   │   │   g=0.0,\n",
-       "│   │   │   │   h=0.0\n",
-       "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8u'>: 70,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8s'>: -20,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16u'>: 200,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16s'>: -100,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListLongOctetString'>: [\n",
-       "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n",
-       "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n",
-       "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n",
-       "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListFabricScoped'>: [\n",
-       "│   │   │   │   TestFabricScoped(\n",
-       "│   │   │   │   │   fabricIndex=1\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.TimedWriteBoolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.GeneralErrorBoolean'>: ValueDecodeFailure(\n",
-       "│   │   │   │   TLVValue=None,\n",
-       "│   │   │   │   Reason=InteractionModelError(<Status.InvalidDataType: 141>)\n",
-       "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ClusterErrorBoolean'>: ValueDecodeFailure(\n",
-       "│   │   │   │   TLVValue=None,\n",
-       "│   │   │   │   Reason=InteractionModelError(<Status.Failure: 1>)\n",
-       "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBoolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap32'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap64'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatSingle'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatDouble'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableOctetString'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableCharString'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableEnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableStruct'>: Null,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8u'>: 70,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8s'>: -20,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16u'>: 200,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16s'>: -100,\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.ElectricalMeasurement'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.MeasurementType'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.TotalActivePower'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltage'>: 65535,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMin'>: 32768,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMax'>: 32768,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrent'>: 65535,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMin'>: 65535,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMax'>: 65535,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePower'>: -1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMin'>: -1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMax'>: -1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ClusterRevision'>: 3\n",
-       "│   │   }\n",
-       "},\n",
-       "2: {\n",
-       "│   │   <class 'chip.clusters.Objects.Groups'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n",
-       "│   │   │   <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.Descriptor'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n",
-       "│   │   │   │   DeviceType(\n",
-       "│   │   │   │   │   type=256,\n",
-       "│   │   │   │   │   revision=1\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n",
-       "│   │   │   │   4,\n",
-       "│   │   │   │   6,\n",
-       "│   │   │   │   29,\n",
-       "│   │   │   │   1030\n",
-       "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [],\n",
-       "│   │   │   <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n",
-       "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.OccupancySensing'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'>: 1,\n",
-       "│   │   │   <class 'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'>: 2\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m22\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m30\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m40\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m42\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m43\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m44\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m46\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m48\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m49\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m50\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m51\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m52\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m53\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m54\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m55\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m60\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m62\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m63\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1029\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m41\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.Acl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.Extension'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.InteractionModelVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.VendorName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_VENDOR'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.VendorID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m9050\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_PRODUCT'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65279\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.NodeLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.Location'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'XX'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.HardwareVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.HardwareVersionString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_VERSION'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.SoftwareVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.SoftwareVersionString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'prerelease'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ManufacturingDate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'20210614123456ZZ'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.PartNumber'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductURL'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.SerialNumber'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_SN'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.LocalConfigDisabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.Reachable'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.UniqueID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.DefaultOTAProviders'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdatePossible'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mUpdateStateEnum.kUnknown:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateStateProgress'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration.Attributes.ActiveLocale'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'en-US'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration.Attributes.SupportedLocales'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'Test'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'en-US'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'de-DE'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'fr-FR'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'en-GB'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'es-ES'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'zh-CN'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'it-IT'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'ja-JP'\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.HourFormat'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mHourFormat.k12hr:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.ActiveCalendarType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kBuddhist:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.SupportedCalendarTypes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kBuddhist:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kChinese:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kCoptic:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kEthiopian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m3\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kGregorian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m4\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kHebrew:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kIndian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m6\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kIslamic:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m7\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kJapanese:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m8\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kKorean:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m9\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kPersian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m10\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kTaiwanese:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m11\u001b[0m\u001b[1m>\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSourceConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSourceConfiguration.Attributes.Sources'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSourceConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.Breadcrumb'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.BasicCommissioningInfoList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.RegulatoryConfig'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.LocationCapability'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m6\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.UnsupportedRead:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m143\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mNetworkCommissioningStatusEnum.kSuccess:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.NetworkInterfaces'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.RebootCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.UpTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.TotalOperationalHours'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.BootReasons'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveHardwareFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveRadioFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveNetworkFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ThreadMetrics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapFree'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapUsed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapHighWatermark'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Channel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RoutingRole'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NetworkName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PanId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ExtendedPanId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.MeshLocalPrefix'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OverrunCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NeighborTableList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouteTableList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Weighting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DataVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.StableDataVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRouterId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DetachedRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChildRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouterRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.AttachAttemptCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionIdChangeCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.BetterPartitionAttachAttemptCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ParentChangeCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxTotalCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxUnicastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBroadcastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckRequestedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxNoAckRequestedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataPollCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconRequestCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxOtherCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxRetryCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDirectMaxRetryExpiryCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxIndirectMaxRetryExpiryCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrCcaCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrAbortCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrBusyChannelCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxTotalCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxUnicastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBroadcastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataPollCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconRequestCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxOtherCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxAddressFilteredCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDestAddrFilteredCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDuplicatedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrNoFrameCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrUnknownNeighborCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrInvalidSrcAddrCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrSecCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrFcsCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrOtherCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveTimestamp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PendingTimestamp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Delay'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.SecurityPolicy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChannelMask'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OperationalDatasetComponents'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveNetworkFaultsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m15\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Bssid'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.SecurityType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.WiFiVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ChannelNumber'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Rssi'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconLostCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastTxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastTxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.CurrentMaxRate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.OverrunCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PHYRate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FullDuplex'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketTxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TxErrCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CollisionCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.OverrunCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CarrierDetect'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TimeSinceReset'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.WindowStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminFabricIndex'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminVendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.NOCs'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNOCStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnoc\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x01$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x11\\x02$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xbc8\\x9d2\\xe7\\xe6\\x0f\\x12\\xcb\\x0fYb\\x8f\\xa6zc\\xa1\\xb2y\\x18\\xc3~\\x98\\xee\\xa9r\\xd3\\x18\\xe9@\\xf9\\x17B\\xa6\\xed\\x11\\x92\\xc2\\xe2k&\\x88m\\r^`\\x10\\xc3|\\xdd\\xb4\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\r\\x11\\xcc\\xd1p\\x9bwN\u001b[0m\u001b[32m)\u001b[0m\u001b[32mH\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x187\\n5\\x01\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x14B8k q\\xd8Lv\\x85^A;\\xceyC\\xa4\\xe9|\\xc1\\x120\\x05\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xa5-\\x97jG\\xdb\\x87\\x180\\x0b@4\\n\\xcd\\x15+\\xa9n\u001b[0m\u001b[32m}\u001b[0m\u001b[32ms\\xbb$u\\x12\\xec\"B\\x00\\x98\\x1fD\\xd4\\xb7\\xcc\\xbb\\xd3\\x17*\\xfa\\xd3\\x8atX\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xca\\xec\\xaf:\u001b[0m\u001b[32m[\u001b[0m\u001b[32m$o|\\xc6\"z\\x15\\xb4d\\x144\\x11i\\xa4\\xaa7\\xce\\x9f\\xc5l\\x11\\xe7I\\x87L\\x88\\x18'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33micac\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x13\\x01$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xf2\\xc0\\x10\\\u001b[0m\u001b[32mxe9\u001b[0m\u001b[32m=\u001b[0m\u001b[32mc\u001b[0m\u001b[32m\\x9e\\xed.\\xaaQj\\x0ca\\xd8\\x1f\\xfb:\\xf2\\x92$\\x04hc>\u001b[0m\u001b[32m<\u001b[0m\u001b[32m\\xb2\\xc9R\u001b[0m\u001b[32m>\u001b[0m\u001b[32m\\xfe\\x1f\\x121\\xf2\\xaf5 \\xc4\\r\\\u001b[0m\u001b[32mxd3\u001b[0m\u001b[32m=\\xd0\\xae\\xbe\\xb4\\x85\\x8dI\\xfa`Z\\xaeI\\xfe*>\\xb1\\x88:,Rs\\xb57\\n5\\x01\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x01\\x18$\\x02`0\\x04\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xa5-\\x97jG\\xdb\\x870\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd\u001b[0m\u001b[32m<\u001b[0m\u001b[32m\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@\\x91\\x1cY!4-\\\\\\xc1hC\u001b[0m\u001b[32m[\u001b[0m\u001b[32mq\\xa8\\x85\\x00\\xa7\\xdd\\xd8\\x1fAM\\xca-6\\xf5 \\x89\\x85k\\x05;\\x15\\xd0\\x83A\u001b[0m\u001b[32m>\u001b[0m\u001b[32mD\\xe9\\x9e\\xc1\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xbb\\xcd\\x8c\\x83\\xbbm\\xab\\xf9\\x8a\\xdb\\x9df\\x11\\x05\\x98hC\\x8f\\xcd\\xad\\n7\\x9e\\x18'\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m60064\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.SupportedFabrics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m16\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.CommissionedFabrics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.TrustedRootCertificates'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x14\\x00$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa7\\n5\\x01\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x01\\x18$\\x02`0\\x04\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd\u001b[0m\u001b[32m<\u001b[0m\u001b[32m\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd50\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@J\\xa5\\xdb\\xec9\\xd3i\\xbf\\xa84\\xbc\u001b[0m\u001b[32m(\u001b[0m\u001b[32mr\\xfb\\xf9\\x95X\\x00\\xf1\\x1f\\xd5#\\x14x\\xbeT\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xda\\xe1\\x15\\x94\\x92\\xdb\\xc8\\xccI0\\xc5\\xe2\\x1ev0h\\x10N\\xdd\\x8b\\xd7\\x94\\x90\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xd4\\x8f\\x08\u001b[0m\u001b[32m>\u001b[0m\u001b[32m\\x8b\\xc8j\\x05\\xbeb\\xed\\xd5\\xe0\\x18'\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.CurrentFabricIndex'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupKeyMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupTable'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupsPerFabric'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupKeysPerFabric'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.SceneCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.CurrentScene'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.CurrentGroup'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.SceneValid'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchActions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.CurrentLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m254\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.RemainingTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MinLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MaxLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m254\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.CurrentFrequency'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MinFrequency'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MaxFrequency'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.Options'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OnOffTransitionTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OnLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m254\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OnTransitionTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OffTransitionTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.DefaultMoveRate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.StartUpCurrentLevel'\u001b[0m\u001b[1m>\u001b[0m: Null,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m5\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.OutOfService'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.PresentValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.StatusFlags'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m30\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m37\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m47\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m49\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m57\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m59\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m69\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m80\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m257\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m258\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m259\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m512\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m513\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m516\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m768\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1024\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1026\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1027\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1028\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1029\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1030\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1280\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1283\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1284\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1285\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1286\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1287\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1288\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1289\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1290\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1291\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1292\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1293\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1294\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1295\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2820\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.ActionList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.EndpointList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.SetupUrl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'https://example.com'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.Status'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.Order'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.Description'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryVoltage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryPercentRemaining'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryTimeRemaining'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.ActiveBatteryFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.UnsupportedRead:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m143\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mNetworkCommissioningStatusEnum.kSuccess:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BridgedDeviceBasicInformation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BridgedDeviceBasicInformation.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.NumberOfPositions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.CurrentPosition'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.MultiPressMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BooleanState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BooleanState.Attributes.StateValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BooleanState.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.CurrentMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.SupportedModes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Black'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msemanticTag\u001b[0m=\u001b[1;36m0\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Cappuccino'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m=\u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msemanticTag\u001b[0m=\u001b[1;36m0\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Espresso'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m=\u001b[1;36m7\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msemanticTag\u001b[0m=\u001b[1;36m0\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.OnMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.StartUpMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.Description'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'Coffee'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.LockState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlLockState.kUnlocked:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.LockType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlLockType.kDeadBolt:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.ActuatorEnabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DoorState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlDoorState.kDoorOpen:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DoorOpenEvents'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DoorClosedEvents'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.OpenPeriod'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfTotalUsersSupported'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m10\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfPINUsersSupported'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m10\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfWeekDaySchedulesSupportedPerUser'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfYearDaySchedulesSupportedPerUser'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfHolidaySchedulesSupported'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.MaxPINCodeLength'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m6\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.MinPINCodeLength'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m6\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.CredentialRulesSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.Language'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'en'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.AutoRelockTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m96\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.SoundVolume'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.OperatingMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlOperatingMode.kNormal:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.SupportedOperatingModes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65526\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DefaultConfigurationRegister'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.EnableOneTouchLocking'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.EnableInsideStatusLED'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.EnablePrivacyModeButton'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.WrongCodeEntryLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.UserCodeTemporaryDisableTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m10\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.RequirePINforRemoteOperation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.Type'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLift'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32767\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTilt'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32767\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.ConfigStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercentage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m50\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercentage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m50\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.OperationalStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionLiftPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionTiltPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.EndProductType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitLift'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitLift'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitTilt'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitTilt'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.Mode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.SafetyStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m5\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierMovingState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierSafetyStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierCapabilities'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierPosition'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxFlow'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinCompPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxCompPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstFlow'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstFlow'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstTemp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstTemp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.PumpStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveOperationMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveControlMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Capacity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Speed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeRunningHours'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Power'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeEnergyConsumed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.OperationMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ControlMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.AlarmMask'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.LocalTemperature'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMinHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m700\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMaxHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3000\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMinCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1600\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMaxCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3200\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.OccupiedCoolingSetpoint'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2600\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.OccupiedHeatingSetpoint'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2000\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MinHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m700\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MaxHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3000\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MinCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1600\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MaxCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3200\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MinSetpointDeadBand'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m25\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.ControlSequenceOfOperation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.SystemMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.StartOfWeek'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.NumberOfWeeklyTransitions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m7\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.NumberOfDailyTransitions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m11\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.TemperatureDisplayMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.KeypadLockout'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ScheduleProgrammingVisibility'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentSaturation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.RemainingTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m24939\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m24701\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.DriftCompensation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CompensationText'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorTemperature'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorControlOptions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.NumberOfPrimaries'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary1X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary1Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary1Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary2X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary2Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary2Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary3X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary3Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary3Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary4X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary4Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary4Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary5X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary5Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary5Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary6X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary6Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary6Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.WhitePointX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.WhitePointY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointRX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointRY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointRIntensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointGX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointGY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointGIntensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointBX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointBY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointBIntensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.EnhancedCurrentHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.EnhancedColorMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopActive'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopDirection'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m25\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStartEnhancedHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m8960\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStoredEnhancedHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorCapabilities'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65279\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CoupleColorTempToLevelMinMireds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.StartUpColorTemperatureMireds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65534\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.LightSensorType'\u001b[0m\u001b[1m>\u001b[0m: Null,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-32768\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-32768\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-32768\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m541\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.IasCieAddress'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m255\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WakeOnLan'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WakeOnLan.Attributes.WakeOnLanMacAddress'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WakeOnLan.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Channel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Channel.Attributes.ChannelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Channel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator.Attributes.TargetNavigatorList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator.Attributes.CurrentNavigatorTarget'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mPlaybackStateEnum.kPlaying:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.StartTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m255\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.Duration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeEnd'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeStart'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput.Attributes.MediaInputList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput.Attributes.CurrentMediaInput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LowPower'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LowPower.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.KeypadInput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.KeypadInput.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher.Attributes.AcceptHeaderList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher.Attributes.SupportedStreamingProtocols'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput.Attributes.AudioOutputList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput.Attributes.CurrentAudioOutput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationLauncher'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationLauncher.Attributes.ApplicationLauncherList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationLauncher.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.VendorName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.VendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ProductId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mApplicationStatusEnum.kStopped:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.AllowedVendorList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccountLogin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccountLogin.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Enum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Enum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.FloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.FloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.OctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LaundryWasherControls'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3952184724\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'Off'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'Low'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'Medium'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'High'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1821926757\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m32767\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m32767\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65535\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m27\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m26\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65535\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65535\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65535\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5000\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m439497020\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mSimpleStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33ma\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mb\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mc\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33md\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33me\u001b[0m\u001b[39m=\u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mf\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mg\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mh\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mi\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m\u001b[39m,\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListStructOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.LongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.CharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.LongCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.EpochUs'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.EpochS'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.VendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListNullablesAndOptionalsStruct'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNullablesAndOptionalsStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableInt\u001b[0m=\u001b[35mNull\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalInt\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalInt\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableString\u001b[0m=\u001b[35mNull\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalString\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalString\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableStruct\u001b[0m=\u001b[35mNull\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalStruct\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalStruct\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableList\u001b[0m=\u001b[35mNull\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.EnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.StructAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListLongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mInteractionModelError\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39m\u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m-20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m70\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember1\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember2\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember1\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember2\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember1\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember2\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember1\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmember2\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m24\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4294049962\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32mb''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mInteractionModelError\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39m\u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m70\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m200\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4294049979\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m24\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m26\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m27\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m28\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m30\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m32\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m33\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m34\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m35\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m36\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m37\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m38\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m39\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m40\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m41\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m42\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m43\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m48\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m49\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m51\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m52\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12288\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12289\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16388\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16389\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16390\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16391\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16392\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16393\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16394\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16395\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16396\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16397\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16398\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16399\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16400\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16401\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16402\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16403\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16404\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16405\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16406\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16407\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16408\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16409\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16414\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16420\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16421\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16422\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16423\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16424\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16425\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16426\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16435\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16436\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4294070017\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mInteractionModelError\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39m\u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mTestGlobalStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mmyBitmap\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mmyEnum\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32mb''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m\u001b[39m,\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListFabricScoped'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestFabricScoped\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.TimedWriteBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.GeneralErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.InvalidDataType:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m141\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ClusterErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.Failure:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableEnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableStruct'\u001b[0m\u001b[1m>\u001b[0m: Null,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.MeasurementType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.TotalActivePower'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32768\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32768\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrent'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePower'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m-20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m-100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m-100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m200\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNullablesAndOptionalsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableInt\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalInt\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalInt\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableString\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalString\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalString\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableStruct\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalStruct\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalStruct\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableList\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalList\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalList\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32mb''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3518872582\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2815764172\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1867324670\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1077094336\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3130468674\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m32\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m33\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2475301757\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m838808377\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2166972274\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'111112222233'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'gtin8xxx'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'4444455555666'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'gtin14xxxxxxxx'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'oem20xxxxxxxxxxxxxxx'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2122560187\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m400316759\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m254\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m32\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m48\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m49\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m51\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m52\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m53\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m254\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2878054799\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1258332906\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mErrorStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateDetails\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m940213312\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'room'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'bedroom 2'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'orientation'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'North'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'floor'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'2'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'direction'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'up'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3118789738\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Normal'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Defrost'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3695315748\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1558336805\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'Hot'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'Warm'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'Freezing'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1263056761\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1056897843\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3831230641\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Normal'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Rapid Cool'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Rapid Freeze'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m26366735\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4056837231\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m599596032\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65534\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1982197115\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1634145010\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m30\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m37\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m47\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m59\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m69\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m72\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m73\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m74\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m80\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m81\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m82\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m83\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m84\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m85\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m86\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m87\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m89\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m91\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m92\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m93\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m94\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m96\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m97\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m98\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m113\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m114\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m128\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m129\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m144\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m145\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m148\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m152\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m153\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m155\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m156\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m157\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m158\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m159\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m258\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m512\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m513\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m514\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m516\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m768\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m769\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1024\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1026\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1027\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1028\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1029\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1030\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1036\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1037\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1043\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1045\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1066\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1067\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1068\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1069\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1070\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1071\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1283\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1288\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4294048773\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m256\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3376363787\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1278660077\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m24701\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m154\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m24939\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m454\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m250\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m250\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m67\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m68\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m71\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m75\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m76\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m8960\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m26\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m27\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m32\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m33\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m34\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m36\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m37\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m38\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m40\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m41\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m42\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m48\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m49\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m51\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m52\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m54\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m55\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m56\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m58\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m59\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m60\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16388\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16389\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16390\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16394\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16395\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16396\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16397\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16400\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2745260718\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m128\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m66\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mErrorStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateDetails\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1468428795\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m47\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m47\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1388996793\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'B2'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m849609238\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1448295399\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65536\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Vacuum'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Wash'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Deep clean'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m131907619\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3981224049\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m731264343\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m35\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m36\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m37\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m38\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m39\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m600\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m80000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1282586777\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3586559020\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Manual'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Auto-scheduled'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Solar'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Auto-scheduled with Solar charging'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m604674426\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mOperationalStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mErrorStateStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateLabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33merrorStateDetails\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2185778544\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1572204256\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Idle'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Cleaning'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Mapping'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65536\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2572965019\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m128\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1148398740\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4293984257\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'Coffee'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Black'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msemanticTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Cappuccino'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msemanticTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Espresso'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msemanticTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1183264025\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m100\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m678327300\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Normal'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Delicate'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Heavy'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Whites'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16387\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2464224752\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m24\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m27\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m28\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m72\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m73\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m74\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m75\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m77\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m78\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m79\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m80\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m81\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m82\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1600\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetHandle\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x01'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mcoolingSetpoint\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2500\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mheatingSetpoint\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mbuiltIn\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetHandle\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x02'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mcoolingSetpoint\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2600\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mheatingSetpoint\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mbuiltIn\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3200\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32mb''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m700\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1600\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2600\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m253\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnumberOfPresets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetTypeFeatures\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnumberOfPresets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetTypeFeatures\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnumberOfPresets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetTypeFeatures\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnumberOfPresets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetTypeFeatures\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnumberOfPresets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetTypeFeatures\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mPresetTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetScenario\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnumberOfPresets\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mpresetTypeFeatures\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3200\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m254\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m700\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m291\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2163402603\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3616251408\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mHoldTimeLimitsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m300\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeDefault\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m10\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1036554111\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1632544680\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m630077002\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3703460357\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m254\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m254\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2018142431\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mMeasurementAccuracyStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mmeasurementType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mmeasured\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mminMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mmaxMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33maccuracyRanges\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2023875062\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4208411723\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3203981046\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasurementType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasured\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mminMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-50000000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmaxMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m50000000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33maccuracyRanges\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-50000000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-10000000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-9999999\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m9999999\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m500\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m10000000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m50000000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasurementType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasured\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mminMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-100000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmaxMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33maccuracyRanges\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-100000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-4999\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4999\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m500\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasurementType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasured\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mminMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-500000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmaxMeasuredValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m500000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33maccuracyRanges\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-500000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-100000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m-99999\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m99999\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m500\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mMeasurementAccuracyRangeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mrangeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m500000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mpercentTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMax\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedMin\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mfixedTypical\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mHarmonicMeasurementStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33morder\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasurement\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100000\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mHarmonicMeasurementStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33morder\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmeasurement\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100000\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m191472871\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'https://example.com'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3904308277\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1177504198\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'111112222233'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'gtin8xxx'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'4444455555666'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'gtin14xxxxxxxx'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mReplacementProductStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mproductIdentifierValue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'oem20xxxxxxxxxxxxxxx'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1133184322\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mBalanceStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstep\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Efficient'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mBalanceStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstep\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mBalanceStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstep\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m100\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Comfort'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mBalanceStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstep\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'1 Minute'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mBalanceStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstep\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'5 Minutes'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mBalanceStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstep\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m24\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'10 Minutes'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3912078908\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1000.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m320\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1.0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3125157948\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSceneInfoStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msceneCount\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mcurrentScene\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mcurrentGroup\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msceneValid\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mremainingCapacity\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1013736200\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Off'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Manual'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Timed'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4283712150\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3937413178\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2087551459\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m80497179\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'No energy management \u001b[0m\u001b[32m(\u001b[0m\u001b[32mforecast only\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Device optimizes \u001b[0m\u001b[32m(\u001b[0m\u001b[32mno local or grid control\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Optimized within building'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Optimized for grid'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16387\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Optimized for grid and building'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16387\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2327973389\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m85351309\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Normal'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Heavy'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Light'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3098432079\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Bake'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16384\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Convection'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16385\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Grill'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16386\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Roast'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16387\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Clean'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16388\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Convection Bake'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16389\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Convection Roast'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16390\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Warming'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16391\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Proofing'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmode\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmodeTags\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;35mModeTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16392\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m822429471\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m374552237\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'TEST_SN'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m32769\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'XX'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mCapabilityMinimaStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mcaseSessionsPerFabric\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33msubscriptionsPerFabric\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m65535\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'D70822CB195AF636'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'TEST_VERSION'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m17039360\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mProductAppearanceStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mfinish\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mprimaryColor\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'1.0'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m65521\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'20200101'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'TEST_VENDOR'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'TEST_PRODUCT'\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2652677544\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'room'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'bedroom 2'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'orientation'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'North'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'floor'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'2'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mLabelStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'direction'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalue\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'up'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3301725475\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1493996232\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3216262947\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m791469513149945\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTimeZoneStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffset\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvalidAt\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1680707863\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1367792\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m262416\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1367792\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mThreadMetricsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2316334\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'2316334'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeMinimum\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackSize\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mThreadMetricsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2316333\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'2316333'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeMinimum\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackSize\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mThreadMetricsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2316332\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'2316332'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeMinimum\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackSize\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mThreadMetricsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2316331\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'2316331'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeMinimum\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackSize\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mThreadMetricsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2316330\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'2316330'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackFreeMinimum\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mstackSize\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1212225478\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2807182948\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1257786647\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNetworkInterface\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'docker0'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33misOperational\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv4\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv6\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mhardwareAddress\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x02B\\xc1\\x8e*\\xa0'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv4Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[32mb'\\xac\\x11\\x00\\x01'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv6Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNetworkInterface\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'wlp3s0'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33misOperational\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv4\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv6\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mhardwareAddress\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\xc8\\x94\\x02\\xdf\\x92\\x95'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv4Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[32mb'\\xc0\\xa82l'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv6Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[32mb'\\xfe\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\xfa<\\x14\\xeam!\\x1b\\x06'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNetworkInterface\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'enp2s0'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33misOperational\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv4\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv6\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mhardwareAddress\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x88\\xa4\\xc2\\x03\\xd2\\x10'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv4Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv6Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNetworkInterface\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'lo'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33misOperational\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv4\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moffPremiseServicesReachableIPv6\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mhardwareAddress\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x00\\x00\\x00\\x00\\x00\\x00'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv4Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[32mb'\\x7f\\x00\\x00\\x01'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mIPv6Addresses\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[32mb'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2442821600\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'B1'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1051125554\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m18\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m19\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m20\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m23\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m24\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m26\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m27\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m28\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m30\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m32\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m33\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m34\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m35\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m36\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m37\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m38\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m39\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m40\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m41\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m42\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m43\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m44\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m45\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m46\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m47\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m48\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m49\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m51\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m52\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m53\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m54\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m55\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m56\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m57\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m58\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m59\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m60\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m61\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m62\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2923529572\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   │   \u001b[0m\u001b[1;36m112233\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m578308192\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m-68\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m32\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32mb'\\xc8\\x94\\x02\\xdf\\x92\\x95'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m432300000\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m149\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3015977773\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1742718448\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3996473632\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2715791168\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNetworkInfoStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnetworkID\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'enp2s0'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mconnected\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnetworkIdentifier\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mclientIdentifier\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m216322318\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m128\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3099986434\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mBasicCommissioningInfo\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mfailSafeExpiryLengthSeconds\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m60\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mmaxCumulativeFailsafeSeconds\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m900\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m955126441\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m22\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m41\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m30\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m40\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m42\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m43\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m44\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m45\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m46\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m47\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m48\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m49\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m50\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m51\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m52\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m53\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m54\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m55\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m56\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m60\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m62\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m63\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1029\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4294048774\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m217815959\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m9\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m11\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNOCStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnoc\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x02\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x15\\x01$\\x11\\x02\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04T/\\xe1\\xdf\\n;>\\xd3k\\xc17\\xcd\\xf13\\x10\u001b[0m\u001b[32m)\u001b[0m\u001b[32m1\\xf9\\xf2\\xbb\\xf9L\\xbc\u001b[0m\u001b[32m[\u001b[0m\u001b[32m<\\xb0\\x1c\\x00\\xc1\\x04l\\x16!\\xe6\\xc6\\xf7\\x1bI\\x07\\xcf2\\xd5M\\xd4\\n\\x94\\x18\\x90\\xc4B\\xdf\\xed_$|\\n\\xe1\\x7fM\\xa2c\\x03*+7\\n5\\x01\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x140G \\xcd\\r\\\\b\\'\\x90\\x8d>\\x8e\\xdd\\xd9\\xff\\xd5\\x1a\\x1f\\x84\\x8f0\\x05\\x14\\xe8\\xb0\\xe8\\xd4R\\xe0\\xc3\\xf8\\xbbJ\\x1b\\xa9sL\\xa8U\\x10H\\x97I\\x180\\x0b@\u001b[0m\u001b[32m[\u001b[0m\u001b[32m\\xc5\\x8e\\xd2\\xeb\\xc3\\x8a\\xc5\\x95\\xebO:\\x07E\\xaeG\\xbd!\\xe1\\xc4X$\\xd3\\x97\\x0cQy\\\\\\xa6\\xc6\\x07H\\x9d\\xf8\\x0e-\\xfaFU\\x18\\\\\\x80A@D-E\\xea5\\x8c\\x19\\xdb\\xff_\\x9ed\\x1e\\xf5^\\xbcR\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\x80\\xc5\\x18'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33micac\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x14\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x13\\x02\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04m\\x1b\\x8eT\\x82\\x02\\xeaJ\\xf3\\xa1r\u001b[0m\u001b[32m{\u001b[0m\u001b[32mjr\\x16\\xd0\\xd5;\\x98%\u001b[0m\u001b[32m{\u001b[0m\u001b[32m7\\x06@\\xb6\\xa1\\xce\\x03#\\xfeo\\x01Ug\\xb3I$S\\xa1\\xbd\\xe9\\xb2\\x94\\xee\\xbbD\\xc5\\xb3\\x06\\xc4f\\xcf<\\xc8\\x9dZ\\xa6\\xad\\xa7\\xe5\\x96\\xc7\\x19\\xef7\\n5\\x01\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x01\\x18$\\x02`0\\x04\\x14\\xe8\\xb0\\xe8\\xd4R\\xe0\\xc3\\xf8\\xbbJ\\x1b\\xa9sL\\xa8U\\x10H\\x97I0\\x05\\x14\\xdbo\\\\Zui\\xb3\\x9f\\xe0\\xf6\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x11N\\xf8\\xc2ce\\xda\\x8e\\x01\\x180\\x0b@e\\x9e\\x17\\x8as-\\x18a\\x13\\xac9\\x92.\\t\\x99\\xd7\\x15\\x94c>\\xa7\\x16\\xab\\x84\\xdf\\xe4M\\x81\\x91\\xe4\\x91\\xdb2J\\x02\\xf3Y\\xf95\\xc4\\xaf\\x87\\xe3\\xfb\\x96\\xfd\\x81-\\x0f\\xd5e\\xf6\\xcd\\x0c\\x0bG8\\r\\xa2\\xca\\xae\\xbds\\xbb\\x18'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m\u001b[39m=\u001b[0m\u001b[32mb\"\u001b[0m\u001b[32m\\x04v\\x949'\u001b[0m\u001b[32m[\u001b[0m\u001b[32m\\x10V\\x8f\\x93\\xb6\\xb6\\x9a\\xa9Q\\xb7\\x05\\x83\\xe3\\xf2\\xa1\\xa1\\x07\\xd7S.\\x9b\\x80\u001b[0m\u001b[32m[\u001b[0m\u001b[32m#\\x04\\x14N\\x8f\\xba\\x13I\\xb3\\xcd\\xff\\xe4\\xc4\\x1a\\x13\\xe7g\\x1f\\x01c\\x92j\\xe2\\xba\\x00\\x07j\\xea\\xa9\\xf2'\\x7f\\x84\\xd3\\x0b\\xff\"\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m65521\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[32m''\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x14\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x14\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04v\\x949\\'\u001b[0m\u001b[32m[\u001b[0m\u001b[32m\\x10V\\x8f\\x93\\xb6\\xb6\\x9a\\xa9Q\\xb7\\x05\\x83\\xe3\\xf2\\xa1\\xa1\\x07\\xd7S.\\x9b\\x80\u001b[0m\u001b[32m[\u001b[0m\u001b[32m#\\x04\\x14N\\x8f\\xba\\x13I\\xb3\\xcd\\xff\\xe4\\xc4\\x1a\\x13\\xe7g\\x1f\\x01c\\x92j\\xe2\\xba\\x00\\x07j\\xea\\xa9\\xf2\\'\\x7f\\x84\\xd3\\x0b\\xff7\\n5\\x01\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x01\\x18$\\x02`0\\x04\\x14\\xdbo\\\\Zui\\xb3\\x9f\\xe0\\xf6\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x11N\\xf8\\xc2ce\\xda\\x8e\\x010\\x05\\x14\\xdbo\\\\Zui\\xb3\\x9f\\xe0\\xf6\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x11N\\xf8\\xc2ce\\xda\\x8e\\x01\\x180\\x0b@\\xed\\xc2\\xaeV\\xb4r\\xa5\\xe6\\x00\\xf4\\xca%\\x8b/\\xb4\\xdc\\x0b\\x828\\xc5M3\\xcc\\x04\\xc4\\xad|\\xe4\\xe5U<\\x8e\\x9e\\xc9\\xfb#\\xb3\\xaf\\r\\x81\\\u001b[0m\u001b[32mxc7\u001b[0m\u001b[32m=\u001b[0m\u001b[32mrSk\u001b[0m\u001b[32m:&j\\\\\\xd0\u001b[0m\u001b[32m}\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\xb3\\xe3\\xa3\\xe7v\\xadhv\\x17!\\xea\\xbe\\x18'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m8\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1539332134\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'en-US'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'en-US'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'de-DE'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'fr-FR'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'en-GB'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'es-ES'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'zh-CN'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'it-IT'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'ja-JP'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1540735921\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1392266135\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m257143989\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2505890144\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[39m\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1658710865\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: Null,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4220563284\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m374163796\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[32m'B3'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1656272886\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[3;91mFalse\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2171024504\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mHoldTimeLimitsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m300\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeDefault\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m10\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3994102238\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m128\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1270857495\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m256\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m47\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m98\u001b[0m\u001b[39m,\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1030\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1357459428\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m59\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m67\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3527829753\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m58\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3475778820\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2494470048\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m67\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m59\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2169252413\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m30\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m}\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m878799405\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: ,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1;36m4\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 25,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -3358,143 +6620,304 @@
    "source": [
     "#### Alternative 'Cluster' View\n",
     "\n",
-    "The above encapsulates each attribute as a 'cluster-object' key within the top-level cluster instance. Instead, an alternative view each attribute is represented as a field in the object can be retrieved by passing in `True` to the third argument:"
+    "The above encapsulates each attribute as a 'cluster-object' key within the top-level cluster instance. Instead, an alternative view each attribute is represented as a field in the object can be retrieved by passing in `True` to the argument `returnClusterObject`:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 26,
    "id": "b46b9c2a-30c9-48e9-84ce-fe261cc10a5f",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "2: {\n",
-       "│   │   <class 'chip.clusters.Objects.Groups'>: Groups(\n",
-       "│   │   │   nameSupport=128,\n",
-       "│   │   │   attributeList=None,\n",
-       "│   │   │   featureMap=None,\n",
-       "│   │   │   clusterRevision=3\n",
-       "│   │   ),\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: OnOff(\n",
-       "│   │   │   onOff=False,\n",
-       "│   │   │   globalSceneControl=True,\n",
-       "│   │   │   onTime=0,\n",
-       "│   │   │   offWaitTime=0,\n",
-       "│   │   │   startUpOnOff=0,\n",
-       "│   │   │   attributeList=None,\n",
-       "│   │   │   featureMap=0,\n",
-       "│   │   │   clusterRevision=4\n",
-       "│   │   ),\n",
-       "│   │   <class 'chip.clusters.Objects.Descriptor'>: Descriptor(\n",
-       "│   │   │   deviceList=[\n",
-       "│   │   │   │   DeviceType(\n",
-       "│   │   │   │   │   type=256,\n",
-       "│   │   │   │   │   revision=1\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ],\n",
-       "│   │   │   serverList=[\n",
-       "│   │   │   │   4,\n",
-       "│   │   │   │   6,\n",
-       "│   │   │   │   29,\n",
-       "│   │   │   │   1030\n",
-       "│   │   │   ],\n",
-       "│   │   │   clientList=[],\n",
-       "│   │   │   partsList=[],\n",
-       "│   │   │   attributeList=None,\n",
-       "│   │   │   featureMap=None,\n",
-       "│   │   │   clusterRevision=1\n",
-       "│   │   ),\n",
-       "│   │   <class 'chip.clusters.Objects.OccupancySensing'>: OccupancySensing(\n",
-       "│   │   │   occupancy=0,\n",
-       "│   │   │   occupancySensorType=0,\n",
-       "│   │   │   occupancySensorTypeBitmap=1,\n",
-       "│   │   │   pirOccupiedToUnoccupiedDelay=None,\n",
-       "│   │   │   pirUnoccupiedToOccupiedDelay=None,\n",
-       "│   │   │   pirUnoccupiedToOccupiedThreshold=None,\n",
-       "│   │   │   ultrasonicOccupiedToUnoccupiedDelay=None,\n",
-       "│   │   │   ultrasonicUnoccupiedToOccupiedDelay=None,\n",
-       "│   │   │   ultrasonicUnoccupiedToOccupiedThreshold=None,\n",
-       "│   │   │   physicalContactOccupiedToUnoccupiedDelay=None,\n",
-       "│   │   │   physicalContactUnoccupiedToOccupiedDelay=None,\n",
-       "│   │   │   physicalContactUnoccupiedToOccupiedThreshold=None,\n",
-       "│   │   │   attributeList=None,\n",
-       "│   │   │   featureMap=None,\n",
-       "│   │   │   clusterRevision=2\n",
-       "│   │   )\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mGroups\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mnameSupport\u001b[0m=\u001b[1;36m128\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m3\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mOnOff\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monOff\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mglobalSceneControl\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moffWaitTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mstartUpOnOff\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m4\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mdeviceList\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mserverList\u001b[0m=\u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;35mGroups\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3994102238\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mnameSupport\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m128\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mOccupancySensing\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2171024504\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moccupancy\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moccupancySensorType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moccupancySensorTypeBitmap\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mholdTime\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mholdTimeLimits\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mHoldTimeLimitsStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMin\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeMax\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m300\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mholdTimeDefault\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m10\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPIROccupiedToUnoccupiedDelay\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m10\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPIRUnoccupiedToOccupiedDelay\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPIRUnoccupiedToOccupiedThreshold\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33multrasonicOccupiedToUnoccupiedDelay\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33multrasonicUnoccupiedToOccupiedDelay\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33multrasonicUnoccupiedToOccupiedThreshold\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mphysicalContactOccupiedToUnoccupiedDelay\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mphysicalContactUnoccupiedToOccupiedDelay\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mphysicalContactUnoccupiedToOccupiedThreshold\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mScenesManagement\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1658710865\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mlastConfiguredBy\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33msceneTableSize\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfabricSceneInfo\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mIdentify\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4220563284\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33midentifyTime\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33midentifyType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mPowerSource\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m374163796\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mstatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33morder\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mdescription\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'B3'\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mwiredAssessedInputVoltage\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mwiredAssessedInputFrequency\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mwiredCurrentType\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mwiredAssessedCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mwiredNominalVoltage\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mwiredMaximumCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mwiredPresent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mactiveWiredFaults\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatVoltage\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatPercentRemaining\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatTimeRemaining\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatChargeLevel\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatReplacementNeeded\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatReplaceability\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatPresent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mactiveBatFaults\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatReplacementDescription\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatCommonDesignation\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatANSIDesignation\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatIECDesignation\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatApprovedChemistry\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatCapacity\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatQuantity\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatChargeState\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatTimeToFullCharge\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatFunctionalWhileCharging\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbatChargingCurrent\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mactiveBatChargeFaults\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mendpointList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m14\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m15\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mDescriptor\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1270857495\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mdeviceTypeList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m256\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mDeviceTypeStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mdeviceType\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m17\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mserverList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m29\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m47\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m98\u001b[0m\u001b[39m,\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1030\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclientList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mpartsList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mtagList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mSemanticTagStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mmfgCode\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnamespaceID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m8\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mtag\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;35mOnOff\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1656272886\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monOff\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mglobalSceneControl\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monTime\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moffWaitTime\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mstartUpOnOff\u001b[0m\u001b[39m=\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclientList\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mpartsList\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mOccupancySensing\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moccupancy\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moccupancySensorType\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moccupancySensorTypeBitmap\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mpirOccupiedToUnoccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mpirUnoccupiedToOccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mpirUnoccupiedToOccupiedThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33multrasonicOccupiedToUnoccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33multrasonicUnoccupiedToOccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33multrasonicUnoccupiedToOccupiedThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mphysicalContactOccupiedToUnoccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mphysicalContactUnoccupiedToOccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mphysicalContactUnoccupiedToOccupiedThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m6\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 26,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "await devCtrl.ReadAttribute(2, [2], True)"
+    "await devCtrl.ReadAttribute(2, [2], returnClusterObject=True)"
    ]
   },
   {
@@ -3517,82 +6940,149 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": 27,
    "id": "5ef28449-1262-4b06-9984-4a2f9c409450",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "[\n",
-       "EventReadResult(\n",
-       "│   │   Header=EventHeader(\n",
-       "│   │   │   EndpointId=1,\n",
-       "│   │   │   Event=None,\n",
-       "│   │   │   EventNumber=0,\n",
-       "│   │   │   Priority=<EventPriority.DEBUG: 1>,\n",
-       "│   │   │   Timestamp=<EventTimestampType.SYSTEM: 0>,\n",
-       "│   │   │   TimestampType=None\n",
-       "│   │   ),\n",
-       "│   │   Status=<Status.Success: 0>,\n",
-       "│   │   Data=TestEvent(\n",
-       "│   │   │   arg1=0,\n",
-       "│   │   │   arg2=<SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   arg3=False,\n",
-       "│   │   │   arg4=SimpleStruct(\n",
-       "│   │   │   │   a=0,\n",
-       "│   │   │   │   b=False,\n",
-       "│   │   │   │   c=<SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   │   d=b'',\n",
-       "│   │   │   │   e='',\n",
-       "│   │   │   │   f=0,\n",
-       "│   │   │   │   g=0.0,\n",
-       "│   │   │   │   h=0.0\n",
-       "│   │   │   ),\n",
-       "│   │   │   arg5=[],\n",
-       "│   │   │   arg6=[]\n",
-       "│   │   )\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m=\u001b[1;35mEventHeader\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEvent\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m=\u001b[1;36m51\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m=\u001b[1;36m3\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.DEBUG:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventTimestampType.SYSTEM:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m=\u001b[1;35mTestEvent\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg3\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg4\u001b[0m=\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.CRITICAL:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m>,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154311463\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mBootReason\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mbootReason\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mEventHeader\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m56\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154311465\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mDSTTableEmpty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mEventHeader\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m40\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154311487\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mStartUp\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33msoftwareVersion\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mEventHeader\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m93\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154311488\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mNotify\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mactive\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33minactive\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mstate\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mmask\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m47\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mEventHeader\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m31\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154312580\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mAccessControlEntryChanged\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33madminNodeID\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33madminPasscodeID\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mchangeType\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mlatestValue\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mAccessControlEntryStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mprivilege\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mauthMode\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33msubjects\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[1;36m112233\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mtargets\u001b[0m\u001b[39m=\u001b[0m\u001b[35mNull\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mEventHeader\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4294048773\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154314764\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mTestEvent\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg1\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg2\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg3\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg4\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mSimpleStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33ma\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mb\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mc\u001b[0m\u001b[39m=\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mi\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg5\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg6\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 27,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -3614,76 +7104,97 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 28,
    "id": "921b58f7-cdfb-436f-813a-412cbf7a018d",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
<Subscription (Id=6469889299346410316)>\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
-       "\u001b[1m<\u001b[0m\u001b[1;95mSubscription\u001b[0m\u001b[39m \u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6469889299346410316\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1m>\u001b[0m\n"
+       "\u001b[1m<\u001b[0m\u001b[1;95mSubscription\u001b[0m\u001b[39m \u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m2805001916\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1m>\u001b[0m"
       ]
      },
+     "execution_count": 28,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
     "reportingTimingParams = (0, 2) # MinInterval = 0s, MaxInterval = 2s\n",
-    "subscription = await devCtrl.ReadAttribute(2, [(2, Clusters.OnOff)], True, reportingTimingParams)\n",
+    "subscription = await devCtrl.ReadAttribute(2, [(2, Clusters.OnOff)], returnClusterObject=True, reportInterval=reportingTimingParams)\n",
     "subscription"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": 29,
    "id": "ebd8f6aa-cf7b-4396-a83a-ad2fdacad1ae",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "2: {\n",
-       "│   │   <class 'chip.clusters.Objects.OnOff'>: OnOff(\n",
-       "│   │   │   onOff=False,\n",
-       "│   │   │   globalSceneControl=True,\n",
-       "│   │   │   onTime=0,\n",
-       "│   │   │   offWaitTime=0,\n",
-       "│   │   │   startUpOnOff=0,\n",
-       "│   │   │   attributeList=None,\n",
-       "│   │   │   featureMap=0,\n",
-       "│   │   │   clusterRevision=4\n",
-       "│   │   )\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mOnOff\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monOff\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mglobalSceneControl\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moffWaitTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mstartUpOnOff\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m4\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;35mOnOff\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mdata version\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1656272886\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monOff\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mglobalSceneControl\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33monTime\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33moffWaitTime\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mstartUpOnOff\u001b[0m\u001b[39m=\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mgeneratedCommandList\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33macceptedCommandList\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m64\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m66\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16384\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16385\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16386\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m16387\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65528\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65529\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65531\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65532\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m65533\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m6\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 29,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -3704,7 +7215,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 25,
+   "execution_count": 30,
    "id": "b0d34116-6c9b-4aee-a8a0-f92091654b4c",
    "metadata": {},
    "outputs": [
@@ -3735,62 +7246,6 @@
      },
      "metadata": {},
      "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Attribute Changed:\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "
{\n",
-       "'Endpoint': 2,\n",
-       "'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>,\n",
-       "'Value': True\n",
-       "}\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[3;92mTrue\u001b[0m\n", - "\u001b[1m}\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Attribute Changed:\n" - ] - }, - { - "data": { - "text/html": [ - "
{\n",
-       "'Endpoint': 2,\n",
-       "'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>,\n",
-       "'Value': 0\n",
-       "}\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[1;36m0\u001b[0m\n", - "\u001b[1m}\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -3800,7 +7255,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 31, "id": "eb712364-4311-4bcb-91a4-2e9f26b825a1", "metadata": {}, "outputs": [ @@ -3831,34 +7286,6 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Attribute Changed:\n" - ] - }, - { - "data": { - "text/html": [ - "
{\n",
-       "'Endpoint': 2,\n",
-       "'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>,\n",
-       "'Value': 0\n",
-       "}\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[1;36m0\u001b[0m\n", - "\u001b[1m}\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -3868,7 +7295,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 32, "id": "50aa8d53-0fe3-4489-badd-3db9f78ea210", "metadata": {}, "outputs": [], @@ -3878,7 +7305,7 @@ }, { "cell_type": "markdown", - "id": "dad3f8bf-431e-496f-b2a7-6e675e3d3ee2", + "id": "7280cb49-a6cb-4dbf-9b0b-f887f3d9f56b", "metadata": {}, "source": [ "#### Subscribe to Events" @@ -3886,7 +7313,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 33, "id": "7db20b08-fed9-46f6-ab46-9e69c82a87fb", "metadata": { "tags": [] @@ -3894,12 +7321,13 @@ "outputs": [], "source": [ "reportingTimingParams = (0, 2) # MinInterval = 0s, MaxInterval = 2s\n", - "subscription = await devCtrl.ReadEvent(2, [()], reportingTimingParams)" + "# Subscribing to Events from EndPoint 1\n", + "subscription = await devCtrl.ReadEvent(2, [ 1 ], reportInterval = reportingTimingParams)" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 34, "id": "d8599eec-b1e1-4936-aea2-11c2a015a7a7", "metadata": { "tags": [] @@ -3908,75 +7336,72 @@ { "data": { "text/html": [ - "
\n",
-       "[\n",
-       "EventReadResult(\n",
-       "│   │   Header=EventHeader(\n",
-       "│   │   │   EndpointId=1,\n",
-       "│   │   │   Event=None,\n",
-       "│   │   │   EventNumber=0,\n",
-       "│   │   │   Priority=<EventPriority.DEBUG: 1>,\n",
-       "│   │   │   Timestamp=<EventTimestampType.SYSTEM: 0>,\n",
-       "│   │   │   TimestampType=None\n",
-       "│   │   ),\n",
-       "│   │   Status=<Status.Success: 0>,\n",
-       "│   │   Data=TestEvent(\n",
-       "│   │   │   arg1=0,\n",
-       "│   │   │   arg2=<SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   arg3=False,\n",
-       "│   │   │   arg4=SimpleStruct(\n",
-       "│   │   │   │   a=0,\n",
-       "│   │   │   │   b=False,\n",
-       "│   │   │   │   c=<SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   │   d=b'',\n",
-       "│   │   │   │   e='',\n",
-       "│   │   │   │   f=0,\n",
-       "│   │   │   │   g=0.0,\n",
-       "│   │   │   │   h=0.0\n",
-       "│   │   │   ),\n",
-       "│   │   │   arg5=[],\n",
-       "│   │   │   arg6=[]\n",
-       "│   │   )\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m=\u001b[1;35mEventHeader\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEvent\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.DEBUG:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventTimestampType.SYSTEM:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m=\u001b[1;35mTestEvent\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg3\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg4\u001b[0m=\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m=\u001b[1;36m93\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m3\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.INFO:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m>,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154311488\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mNotify\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mactive\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33minactive\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mstate\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m7\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mmask\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m47\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mHeader\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mEventHeader\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m4294048773\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEventNumber\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mPriority\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154314764\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mTestEvent\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg1\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg2\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg3\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg4\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mSimpleStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33ma\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mb\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mc\u001b[0m\u001b[39m=\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mi\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg5\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33marg6\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 34,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -3988,14 +7413,14 @@
    "id": "4ff2d257-ea1b-4957-97ed-fd6518740218",
    "metadata": {},
    "source": [
-    "### Trigger Event\n",
+    "#### Trigger Event\n",
     "\n",
     "Force an event to get emitted, which after a short while, should generate a report and trigger the print out of the received event:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 30,
+   "execution_count": 35,
    "id": "93cb4c17-b3c7-4462-b448-397171458416",
    "metadata": {},
    "outputs": [
@@ -4012,26 +7437,28 @@
        "
EventReadResult(\n",
        "Header=EventHeader(\n",
        "│   │   EndpointId=1,\n",
-       "│   │   Event=None,\n",
-       "│   │   EventNumber=1,\n",
-       "│   │   Priority=<EventPriority.DEBUG: 1>,\n",
-       "│   │   Timestamp=<EventTimestampType.SYSTEM: 0>,\n",
-       "│   │   TimestampType=None\n",
-       "),\n",
-       "Status=<Status.Success: 0>,\n",
-       "Data=TestEvent(\n",
-       "│   │   arg1=0,\n",
-       "│   │   arg2=<SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   arg3=False,\n",
-       "│   │   arg4=SimpleStruct(\n",
-       "│   │   │   a=0,\n",
-       "│   │   │   b=False,\n",
-       "│   │   │   c=<SimpleEnum.kUnspecified: 0>,\n",
+       "│   │   ClusterId=4294048773,\n",
+       "│   │   EventId=1,\n",
+       "│   │   EventNumber=6,\n",
+       "│   │   Priority=<EventPriority.INFO: 1>,\n",
+       "│   │   Timestamp=1738154316909,\n",
+       "│   │   TimestampType=<EventTimestampType.EPOCH: 1>\n",
+       "),\n",
+       "Status=<Status.Success: 0>,\n",
+       "Data=TestEvent(\n",
+       "│   │   arg1=0,\n",
+       "│   │   arg2=<SimpleEnum.kUnspecified: 0>,\n",
+       "│   │   arg3=False,\n",
+       "│   │   arg4=SimpleStruct(\n",
+       "│   │   │   a=0,\n",
+       "│   │   │   b=False,\n",
+       "│   │   │   c=<SimpleEnum.kUnspecified: 0>,\n",
        "│   │   │   d=b'',\n",
        "│   │   │   e='',\n",
        "│   │   │   f=0,\n",
        "│   │   │   g=0.0,\n",
-       "│   │   │   h=0.0\n",
+       "│   │   │   h=0.0,\n",
+       "│   │   │   i=None\n",
        "│   │   ),\n",
        "│   │   arg5=[],\n",
        "│   │   arg6=[]\n",
@@ -4043,26 +7470,28 @@
        "\u001b[1;35mEventReadResult\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[33mHeader\u001b[0m=\u001b[1;35mEventHeader\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mEvent\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.DEBUG:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mTimestamp\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventTimestampType.SYSTEM:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33mTimestampType\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[33mData\u001b[0m=\u001b[1;35mTestEvent\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg3\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg4\u001b[0m=\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mClusterId\u001b[0m=\u001b[1;36m4294048773\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mEventId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m6\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.INFO:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m>,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mTimestamp\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m1738154316909\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33mTimestampType\u001b[0m\u001b[39m=\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[33mStatus\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[33mData\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mTestEvent\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg1\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg2\u001b[0m\u001b[39m=,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg3\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[33marg4\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mSimpleStruct\u001b[0m\u001b[1;39m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33ma\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mb\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mc\u001b[0m\u001b[39m=\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mi\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33marg5\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33marg6\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n",
@@ -4081,7 +7510,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 31,
+   "execution_count": 36,
    "id": "6e294da6-1e71-444d-952b-0e1d3b8268b6",
    "metadata": {},
    "outputs": [],
@@ -4101,42 +7530,39 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 32,
+   "execution_count": 37,
    "id": "95c78192-d895-4784-b8e6-4f8884bb1f92",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "[\n",
-       "AttributeStatus(\n",
-       "│   │   Path=AttributePath(\n",
-       "│   │   │   EndpointId=1,\n",
-       "│   │   │   ClusterId=1295,\n",
-       "│   │   │   AttributeId=6\n",
-       "│   │   ),\n",
-       "│   │   Status=<Status.Success: 0>\n",
-       ")\n",
-       "]\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;35mAttributeStatus\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mPath\u001b[0m=\u001b[1;35mAttributePath\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m=\u001b[1;36m1295\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mClusterId\u001b[0m=\u001b[1;36m4294048773\u001b[0m,\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[33mAttributeId\u001b[0m=\u001b[1;36m6\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m)\u001b[0m\n",
-       "\u001b[1m]\u001b[0m\n"
+       "\u001b[1m]\u001b[0m"
       ]
      },
+     "execution_count": 37,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -4145,36 +7571,37 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 33,
+   "execution_count": 38,
    "id": "69fcf8e6-a49e-471e-9169-14c4fee88f2e",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 2\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m439497021\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1;36m2\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 38,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -4198,7 +7625,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.10.5"
+   "version": "3.10.12"
   },
   "vscode": {
    "interpreter": {
diff --git a/docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb b/docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb
index 5738ee612c9967..02f27b7aa38f9a 100644
--- a/docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb
+++ b/docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb
@@ -4,6 +4,10 @@
    "cell_type": "markdown",
    "id": "7953092e-e313-4fb5-82ab-ce1d42f4c1a9",
    "metadata": {
+    "editable": true,
+    "slideshow": {
+     "slide_type": ""
+    },
     "tags": []
    },
    "source": [
@@ -22,9 +26,11 @@
    "id": "c8aae2cc-41fa-4101-a744-c725be5f034c",
    "metadata": {},
    "source": [
-    "## FabricAdmins and Controllers\n",
+    "## CertificateAuthority, FabricAdmins and Controllers\n",
+    "\n",
+    "The `CertificateAuthorityManager` class manages a set of `CertificateAuthority` instances (both present in `chip.CertificateAuthority` package). a `CertificateAuthority` represents an operational root of trust, a Root Certificate Authority (CA) with a root key pair with the associated public key (i.e \"Root PK\"). The `CertificateAuthority` class manages a list of `FabricAdmins` adminstering a fabric within that CA.\n",
     "\n",
-    "The `FabricAdmin` class (present in the `chip.FabricAdmin` package) is responsible for administering a fabric. It houses the Fabric ID and Index, as well as an RCAC and ICAC that provides the certificate material grounding that fabric.\n",
+    "The `FabricAdmin` class (present in the `chip.FabricAdmin` package) is responsible for administering a fabric. It houses the Fabric ID and is managed by a `CertificateAuthority`.\n",
     "\n",
     "The `FabricAdmin` can be used to vend `ChipDeviceController` objects that represent a controller instance with a specific identity grounded in the admin's fabric. This controller can then be used to commission and interact with devices."
    ]
@@ -50,7 +56,7 @@
     {
      "data": {
       "text/plain": [
-       ""
+       "0"
       ]
      },
      "execution_count": 1,
@@ -77,7 +83,7 @@
    "source": [
     "## Initialization\n",
     "\n",
-    "Let's first begin by setting up by importing some key modules that are needed to make it easier for us to interact with the Matter stack.\n",
+    "Let's first begin setting up by importing some key modules that are needed to make it easier for us to interact with the Matter stack.\n",
     "\n",
     "`ChipReplStartup.py` is run within the global namespace. This results in all of its imports being made available here.\n",
     "\n",
@@ -89,17 +95,63 @@
    "execution_count": 2,
    "id": "72f25a72-0b7e-41d5-a9ef-18af8a54ec39",
    "metadata": {
+    "scrolled": true,
     "tags": []
    },
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
──────────────────────────────────────── Matter REPL ────────────────────────────────────────\n",
+       "
\n",
+       " Replacing  store path ./credentials/development/paa-root-certs with \n",
+       "/home/root/repos/connectedhomeip/credentials/development/paa-root-certs\n",
+       "Note that you are still running from \n",
+       "/home/root/repos/connectedhomeip/docs/development_controllers/chip-repl so other relative\n",
+       "paths may be off.\n",
+       "                    \n",
        "
\n" ], "text/plain": [ - "\u001b[92m──────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ────────────────────────────────────────\u001b[0m\n" + "\n", + "\u001b[1m Replacing \u001b[0m store path .\u001b[35m/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m with \n", + "\u001b[35m/home/root/repos/connectedhomeip/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m\n", + "Note that you are still running from \n", + "\u001b[35m/home/root/repos/connectedhomeip/docs/development_controllers/\u001b[0m\u001b[95mchip-repl\u001b[0m so other relative\n", + "paths may be off.\n", + " \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1738152867.148313][2264454:2264454] CHIP:CTL: Setting attestation nonce to random value\n", + "[1738152867.148534][2264454:2264454] CHIP:CTL: Setting CSR nonce to random value\n", + "[1738152867.160741][2264454:2264454] CHIP:DL: NVS set: chip-factory/unique-id = \"3844ABE883465BB4\"\n", + "[1738152867.161683][2264454:2264454] CHIP:DL: NVS set: chip-factory/vendor-id = 65521 (0xFFF1)\n", + "[1738152867.162893][2264454:2264454] CHIP:DL: NVS set: chip-factory/product-id = 32769 (0x8001)\n", + "[1738152867.164421][2264454:2264454] CHIP:DL: NVS set: chip-counters/reboot-count = 1 (0x1)\n", + "[1738152867.165934][2264454:2264454] CHIP:DL: NVS set: chip-counters/total-operational-hours = 0 (0x0)\n", + "[1738152867.167463][2264454:2264454] CHIP:DL: NVS set: chip-counters/boot-reason = 0 (0x0)\n", + "[1738152867.168925][2264454:2264454] CHIP:DL: NVS set: chip-config/regulatory-location = 0 (0x0)\n", + "[1738152867.170369][2264454:2264454] CHIP:DL: NVS set: chip-config/location-capability = 2 (0x2)\n", + "[1738152867.170831][2264454:2264454] CHIP:DL: Got Ethernet interface: enp2s0\n", + "[1738152867.171003][2264454:2264454] CHIP:DL: Found the primary Ethernet interface:enp2s0\n", + "[1738152867.171166][2264454:2264454] CHIP:DL: Got WiFi interface: wlp3s0\n", + "[1738152867.171348][2264454:2264454] CHIP:DL: Found the primary WiFi interface:wlp3s0\n" + ] + }, + { + "data": { + "text/html": [ + "
─────────────────────────────────────────────────── Matter REPL ───────────────────────────────────────────────────\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[92m─────────────────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ───────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -110,28 +162,28 @@ "text/html": [ "
\n",
        "            \n",
-       "    \n",
+       "\n",
        "            Welcome to the Matter Python REPL!\n",
-       "    \n",
+       "\n",
        "            For help, please type matterhelp()\n",
-       "    \n",
+       "\n",
        "            To get more information on a particular object/class, you can pass\n",
        "            that into matterhelp() as well.\n",
-       "    \n",
+       "\n",
        "            \n",
        "
\n" ], "text/plain": [ "\n", " \n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m \u001b[0m\n" ] }, @@ -141,11 +193,11 @@ { "data": { "text/html": [ - "
─────────────────────────────────────────────────────────────────────────────────────────────\n",
+       "
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\u001b[92m─────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" + "\u001b[92m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -155,30 +207,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "2022-01-25 16:58:57 johnsj-macbookpro1.roam.corp.google.com root[27921] ERROR [Errno 2] No such file or directory: '/tmp/repl-storage.json'\n", - "2022-01-25 16:58:57 johnsj-macbookpro1.roam.corp.google.com root[27921] WARNING Could not load configuration from /tmp/repl-storage.json - resetting configuration...\n" - ] - }, - { - "data": { - "text/html": [ - "
\n",
-       "No previous fabric admins discovered in persistent storage - creating a new one...\n",
-       "
\n" - ], - "text/plain": [ - "\n", - "\u001b[38;5;129mNo previous fabric admins discovered in persistent storage - creating a new one\u001b[0m\u001b[38;5;129m...\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New FabricAdmin: FabricId: 1(1)\n" + "2025-01-29 13:14:27 ThinkPad chip.storage[2264454] ERROR [Errno 2] No such file or directory: '/tmp/repl-storage.json'\n", + "2025-01-29 13:14:27 ThinkPad chip.storage[2264454] CRITICAL Could not load configuration from /tmp/repl-storage.json - resetting configuration...\n", + "2025-01-29 13:14:27 ThinkPad chip.storage[2264454] WARNING No valid SDK configuration present - clearing out configuration\n", + "2025-01-29 13:14:27 ThinkPad chip.storage[2264454] WARNING No valid REPL configuration present - clearing out configuration\n" ] }, { @@ -186,11 +218,13 @@ "text/html": [ "
\n",
        "\n",
+       "The following objects have been created:\n",
        "
\n" ], "text/plain": [ "\n", - "\n" + "\n", + "\u001b[34mThe following objects have been created:\u001b[0m\n" ] }, "metadata": {}, @@ -199,37 +233,36 @@ { "data": { "text/html": [ - "
Creating default device controller on fabric 1...\n",
+       "
        certificateAuthorityManager:    Manages a list of CertificateAuthority instances.\n",
+       "        caList:                         The list of CertificateAuthority instances.\n",
+       "        caList[n].adminList[m]:         A specific FabricAdmin object at index m for the nth CertificateAuthority \n",
+       "instance.\n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mCreating default device controller on fabric \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + " \u001b[31mcertificateAuthorityManager\u001b[0m\u001b[34m: \u001b[0m\u001b[34mManages a list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34mThe list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mn\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mm\u001b[0m\u001b[1;31m]\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34mA specific FabricAdmin object at index m for the nth CertificateAuthority \u001b[0m\n", + "\u001b[34minstance.\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Allocating new controller with FabricId: 1(1), NodeId: 1\n" - ] - }, { "data": { "text/html": [ "
\n",
        "\n",
-       "Default CHIP Device Controller has been initialized to manage fabricAdmins[0], and is \n",
-       "available as devCtrl\n",
+       "Default CHIP Device Controller (NodeId: 112233): has been initialized to manage caList[0].adminList[0] (FabricId = \n",
+       "1), and is available as devCtrl\n",
        "
\n" ], "text/plain": [ "\n", "\n", - "\u001b[34mDefault CHIP Device Controller has been initialized to manage \u001b[0m\u001b[1;31mfabricAdmins\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m, and is \u001b[0m\n", - "\u001b[1;34mavailable as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" + "\u001b[34mDefault CHIP Device Controller \u001b[0m\u001b[1;34m(\u001b[0m\u001b[34mNodeId: \u001b[0m\u001b[1;34m112233\u001b[0m\u001b[1;34m)\u001b[0m\u001b[34m: has been initialized to manage \u001b[0m\u001b[1;31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m \u001b[0m\u001b[1;34m(\u001b[0m\u001b[1;34mFabricId = \u001b[0m\n", + "\u001b[1;34m1\u001b[0m\u001b[1;34m)\u001b[0m\u001b[1;34m, and is available as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" ] }, "metadata": {}, @@ -237,10 +270,10 @@ } ], "source": [ - "import chip.native\n", - "import pkgutil\n", - "module = pkgutil.get_loader('chip.ChipReplStartup')\n", - "%run {module.path}" + "%reset -f\n", + "import importlib.util\n", + "spec = importlib.util.find_spec('chip.ChipReplStartup')\n", + "%run {spec.origin} --debug" ] }, { @@ -248,29 +281,49 @@ "id": "d79775d7-2ebb-4d05-9f2f-c7859802dc98", "metadata": {}, "source": [ - "At startup, the REPL will attempt to find any previously configured fabrics stored in persisted storage. If it can't find any (as is the case here), it will construct a default `FabricAdmin` object on Fabric 1 (Index 1) as well as construct a device controller (`devCtrl`) on that fabric." + "At startup, the `certificateAuthorityManager` within REPL will attempt to find `CertificateAuthority` instances present in persistent storage.If it can't find any (as is the case here), it will create a new `CertificateAuthority` instance at CA index 0. This `CertificateAuthority` instance will construct a default `FabricAdmin` object on FabricAdmin index 0 with a Fabric ID = 1." ] }, { "cell_type": "code", "execution_count": 3, "id": "030ecc69-bad4-476f-95d5-cb593597cad6", - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { "text/html": [ - "
\n",
-       "[\n",
-       "<chip.FabricAdmin.FabricAdmin object at 0x10a68dee0>\n",
-       "]\n",
+       "
╭───────────────────────────── <class 'chip.FabricAdmin.FabricAdmin'> ─────────────────────────────╮\n",
+       " Administers a fabric associated with a unique FabricID under a given CertificateAuthority        \n",
+       " instance.                                                                                        \n",
+       "                                                                                                  \n",
+       " ╭──────────────────────────────────────────────────────────────────────────────────────────────╮ \n",
+       "  <chip.FabricAdmin.FabricAdmin object at 0x74c3436d78e0>                                       \n",
+       " ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ \n",
+       "                                                                                                  \n",
+       "              caIndex = 1                                                                         \n",
+       " certificateAuthority = <chip.CertificateAuthority.CertificateAuthority object at 0x74c32c8ba680> \n",
+       "             fabricId = 1                                                                         \n",
+       "             vendorId = 65521                                                                     \n",
+       "╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
        "
\n" ], "text/plain": [ - "\n", - "\u001b[1m[\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mchip.FabricAdmin.FabricAdmin\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x10a68dee0\u001b[0m\u001b[1m>\u001b[0m\n", - "\u001b[1m]\u001b[0m\n" + "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.FabricAdmin.FabricAdmin'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m \u001b[0m\u001b[34m────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[36mAdministers a fabric associated with a unique FabricID under a given CertificateAuthority\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[36minstance.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mchip.FabricAdmin.FabricAdmin\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c3436d78e0\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcaIndex\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcertificateAuthority\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mchip.CertificateAuthority.CertificateAuthority\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c32c8ba680\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mfabricId\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mvendorId\u001b[0m = \u001b[1;36m65521\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, "metadata": {}, @@ -278,7 +331,15 @@ } ], "source": [ - "fabricAdmins" + "inspect(caList[0].adminList[0])" + ] + }, + { + "cell_type": "markdown", + "id": "8d9e6c95-5488-4a9c-87c7-4cfa2dda7d42", + "metadata": {}, + "source": [ + "The Newly created `FabricAdmin` will automatically construct a device controller (`devCtrl`) on it's own fabric. " ] }, { @@ -290,11 +351,43 @@ { "data": { "text/html": [ - "
<chip.ChipDeviceCtrl.ChipDeviceController object at 0x10a6c6040>\n",
+       "
╭────────────────── <class 'chip.ChipDeviceCtrl.ChipDeviceController'> ───────────────────╮\n",
+       " The ChipDeviceCommissioner binding, named as ChipDeviceController                       \n",
+       "                                                                                         \n",
+       " ╭─────────────────────────────────────────────────────────────────────────────────────╮ \n",
+       "  <chip.ChipDeviceCtrl.ChipDeviceController object at 0x74c32c8baa10>                  \n",
+       " ╰─────────────────────────────────────────────────────────────────────────────────────╯ \n",
+       "                                                                                         \n",
+       "      activeList = {<chip.ChipDeviceCtrl.ChipDeviceController object at 0x74c32c8baa10>} \n",
+       "         caIndex = 1                                                                     \n",
+       "         devCtrl = c_void_p(128380733235904)                                             \n",
+       "     fabricAdmin = <chip.FabricAdmin.FabricAdmin object at 0x74c3436d78e0>               \n",
+       "        fabricId = 1                                                                     \n",
+       "        isActive = True                                                                  \n",
+       "            name = 'caIndex(1)/fabricId(0x0000000000000001)/nodeId(0x000000000001B669)'  \n",
+       "          nodeId = 112233                                                                \n",
+       " pairingDelegate = c_void_p(128380733235776)                                             \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────╯\n",
        "
\n" ], "text/plain": [ - "\u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x10a6c6040\u001b[0m\u001b[1m>\u001b[0m\n" + "\u001b[34m╭─\u001b[0m\u001b[34m─────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.ChipDeviceCtrl.ChipDeviceController'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m \u001b[0m\u001b[34m──────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[36mThe ChipDeviceCommissioner binding, named as ChipDeviceController\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c32c8baa10\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mactiveList\u001b[0m = \u001b[1m{\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c32c8baa10\u001b[0m\u001b[1m>\u001b[0m\u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcaIndex\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mdevCtrl\u001b[0m = \u001b[1;35mc_void_p\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m128380733235904\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mfabricAdmin\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mchip.FabricAdmin.FabricAdmin\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c3436d78e0\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mfabricId\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33misActive\u001b[0m = \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mname\u001b[0m = \u001b[32m'caIndex\u001b[0m\u001b[32m(\u001b[0m\u001b[32m1\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/fabricId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x0000000000000001\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/nodeId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x000000000001B669\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mnodeId\u001b[0m = \u001b[1;36m112233\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mpairingDelegate\u001b[0m = \u001b[1;35mc_void_p\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m128380733235776\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, "metadata": {}, @@ -302,7 +395,7 @@ } ], "source": [ - "devCtrl" + "inspect(devCtrl)" ] }, { @@ -335,11 +428,14 @@ "os.system('pkill -f chip-all-clusters-app')\n", "time.sleep(1)\n", "\n", - "# The location of the all-clusters-app in the cloud playground is one level higher - adjust for this by testing for file presence.\n", - "if (os.path.isfile('../../../out/debug/chip-all-clusters-app')):\n", - " appPath = '../../../out/debug/chip-all-clusters-app'\n", + "CI_APP_PATH = '../../../out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-clang-test/chip-all-clusters-app'\n", + "LOCAL_APP_PATH = '../../../out/linux-x64-all-clusters/chip-all-clusters-app'\n", + "\n", + "# Check if the app built by GitHub Actions is present. Otherwise use the standard all-clusters-app \n", + "if (os.path.isfile(CI_APP_PATH)):\n", + " appPath = CI_APP_PATH\n", "else:\n", - " appPath = '../../../../out/debug/chip-all-clusters-app'\n", + " appPath = LOCAL_APP_PATH\n", "\n", "process = subprocess.Popen(appPath, stdout=subprocess.DEVNULL)\n", "time.sleep(1)" @@ -352,7 +448,7 @@ "source": [ "#### Commission Target\n", "\n", - "Commission the target onto Fabric 1 using the default device controller instance with a NodeId of 1." + "Commission the target onto Fabric 1 using the default device controller instance with a NodeId of 2." ] }, { @@ -360,41 +456,36 @@ "execution_count": 6, "id": "cde97ce7-6478-45fd-b985-103b09d8dfa9", "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-01-25 16:59:00 johnsj-macbookpro1.roam.corp.google.com chip.CTL[27921] ERROR Unable to find country code, defaulting to WW\n", - "2022-01-25 16:59:00 johnsj-macbookpro1.roam.corp.google.com chip.SC[27921] ERROR The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Node address has been updated\n", - "Commissioning complete\n" - ] - }, { "data": { "text/html": [ - "
True\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
-       "\u001b[3;92mTrue\u001b[0m\n"
+       "\u001b[1;36m2\u001b[0m"
       ]
      },
+     "execution_count": 6,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "devCtrl.CommissionIP(b'127.0.0.1', 20202021, 2)"
+    "await devCtrl.CommissionOnNetwork(2, 20202021)"
    ]
   },
   {
@@ -412,63 +503,65 @@
    "execution_count": 7,
    "id": "830e3421-45a6-435f-9617-bbf34f7c3fe0",
    "metadata": {
+    "editable": true,
+    "slideshow": {
+     "slide_type": ""
+    },
     "tags": []
    },
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.OperationalCredentials'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'>: [\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\xa2\\x88}\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98',\n",
-       "│   │   │   │   │   vendorId=27168,\n",
-       "│   │   │   │   │   fabricId=1,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label=''\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ]\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xa2\\x88\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m27168\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4246564825\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xffKd\\xd3v\\xa97c\\x87\\r\\xadXF\\xd2?\\n\\x08\\x1f\\rZE\\x91\\x0c_\\x1e`\"\\xfbwZ\\x9c\\xaf!\\\u001b[0m\u001b[32mx10\u001b[0m\u001b[32m=\\xd4\\x03\\xf5\u001b[0m\u001b[32m[\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xb3\\x08\\xa2\\xe5\\x04\\x7f\\x06\\x1c\\nEa\\x02q\\xeeK\\x91\\xda\\x1e\\xd2\\\\i\\xef\\x05#'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 7,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "await devCtrl.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.FabricsList)], fabricFiltered=False)"
+    "await devCtrl.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.Fabrics)], fabricFiltered=False)"
    ]
   },
   {
    "cell_type": "markdown",
    "id": "77c0c2a1-3014-4dc5-8d42-5a3459ed311a",
-   "metadata": {},
+   "metadata": {
+    "editable": true,
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": []
+   },
    "source": [
     "### Commission onto Fabric 2"
    ]
@@ -478,7 +571,8 @@
    "id": "965a5fbf-5762-4432-93f9-47782c5ee050",
    "metadata": {},
    "source": [
-    "#### Create new FabricAdmin"
+    "#### Create a new CertificateAuthority and a new FabricAdmin\n",
+    "We create a new `CertificateAuthority` instance, and then create a new `FabricAdmin` that administers Fabric 2 within that CA."
    ]
   },
   {
@@ -486,18 +580,54 @@
    "execution_count": 8,
    "id": "9f7d6810-6d8e-47c9-8795-b4bc8777e963",
    "metadata": {},
+   "outputs": [],
+   "source": [
+    "certificateAuthority = certificateAuthorityManager.NewCertificateAuthority()\n",
+    "\n",
+    "fabricAdmin2 = certificateAuthority.NewFabricAdmin(vendorId=0xFFF1, fabricId=2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9a4fc670-3b6f-490d-a01b-621a6b086650",
+   "metadata": {},
+   "source": [
+    "Two different `CertificateAuthority` instances are now present"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "b256ca0e-0876-41e2-a414-ca1e00beeb5e",
+   "metadata": {},
    "outputs": [
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "New FabricAdmin: FabricId: 2(2)\n"
-     ]
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\n",
+       "\u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mchip.CertificateAuthority.CertificateAuthority\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c32c8ba680\u001b[0m\u001b[39m>,\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[39m\u001b[0m\n",
+       "\u001b[1m]\u001b[0m"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "import chip.FabricAdmin as FabricAdmin\n",
-    "fabric2 = FabricAdmin.FabricAdmin(fabricId = 2, fabricIndex = 2)"
+    "caList"
    ]
   },
   {
@@ -510,86 +640,94 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 10,
    "id": "f211c5be-665b-4630-9570-a44a6f17f358",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "'repl-config': {\n",
-       "│   │   'fabricAdmins': {\n",
-       "│   │   │   '1': {\n",
-       "│   │   │   │   'fabricId': 1\n",
-       "│   │   │   },\n",
-       "│   │   │   '2': {\n",
-       "│   │   │   │   'fabricId': 2\n",
-       "│   │   │   }\n",
-       "│   │   }\n",
-       "},\n",
-       "'sdk-config': {\n",
-       "│   │   'ExampleOpCredsCAKey1': 'BKKIfb3b1LxeVaPOZveSvqdYO0W4LVkSXiTgG1P5mo+sdmr6ISZtNgDj0YVvG55Iq0M/2OwIbEi1WB86dbD7apgpj13h8fueMKMfErM65jMAsAPBcPEhnVc3JJ6m7K4Qq0ORAwBgAABhAAAAAAAAAA==',\n",
-       "│   │   'ExampleOpCredsICAKey1': 'BCwMgmSo2C1vhjBR642H5nieC/jJManFAW54QhdovJhdySYZn96XJoBNyouhoGf9rn0SipgIhmvHPcPqDrDwcAXiQyB87caIuz5DJ3v7KHHLquGmdv5pNpZ4IhqDomt/2kORAwBgAABhAAAAAAAAAA==',\n",
-       "│   │   'ExampleCAIntermediateCert1': 'MIIB2TCCAYCgAwIBAgIBADAKBggqhkjOPQQDAjBEMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMDEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwHhcNMjEwMTAxMDAwMDAwWhcNMzAxMjMwMDAwMDAwWjBEMSAwHgYKKwYBBAGConwBAwwQMDAwMDAwMDAwMDAwMDAwMTEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQsDIJkqNgtb4YwUeuNh+Z4ngv4yTGpxQFueEIXaLyYXckmGZ/elyaATcqLoaBn/a59EoqYCIZrxz3D6g6w8HAFo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcPz5CkZJujm2U0jL0G1lZwoJXD0wHwYDVR0jBBgwFoAUfvAKJyeJwjao2nq+Q3ayf27KXrUwCgYIKoZIzj0EAwIDRwAwRAIgEaX5gBqc5b8eswqDDlc2IQ+wLKfbsONC3FzsuwLCBNkCIAyn32oaFV0YCN9GeiUpYvqbypnMWQGnffF85v7wKhBX',\n",
-       "│   │   'ExampleCARootCert1': 'MIIB2jCCAYCgAwIBAgIBADAKBggqhkjOPQQDAjBEMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMDEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwHhcNMjEwMTAxMDAwMDAwWhcNMzAxMjMwMDAwMDAwWjBEMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMDEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASiiH2929S8XlWjzmb3kr6nWDtFuC1ZEl4k4BtT+ZqPrHZq+iEmbTYA49GFbxueSKtDP9jsCGxItVgfOnWw+2qYo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfvAKJyeJwjao2nq+Q3ayf27KXrUwHwYDVR0jBBgwFoAUfvAKJyeJwjao2nq+Q3ayf27KXrUwCgYIKoZIzj0EAwIDSAAwRQIgMzvVbqCxT+xJOpxN9HUSYZYdExmkRLN2Jl9vLijLc+sCIQDAxLgwwuxGNPtWJ/dY4kGqpWwNNbq9pEkmQ//t2KhfBg==',\n",
-       "│   │   'ExampleOpCredsCAKey2': 'BJ1gkAlp0ZrmBkQiko2ces/p86N1qCB30y+tdT5HrWEBqgPh6SVNnZfe5ZMjzJZFp/J1K+7MSDF7QeAgKrQYwcAcV1G9fnqw9anHoj+EW2k9xqw0b4bWXE9f2xKfWWb/ykCSAwBgAABhAAAAAAAAAA==',\n",
-       "│   │   'ExampleOpCredsICAKey2': 'BMktytxSOcWsbMcZ6WrjsODvTRKcLWZjo8bt8CDUqfhoHLFqrmahTQnH4rY8gjRpKRBw/Yw2YpEodcaLyC1V+cC2VvZrLqLVW8uRNPkVxcojVHAXYAGCRp6CW4kQ+zBtNUCSAwBgAABhAAAAAAAAAA=='\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[32m'sdk-config'\u001b[0m: \u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/lkgt'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mFSYAgKi8LBg\u001b[0m\u001b[32m='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/gcc'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32m2rpTAQ\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/gdc'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mbNE5Bw\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsCAKey1'\u001b[0m: \u001b[32m'BP9LZNN2qTdjhw2tWEbSPwoIHw1aRZEMXx5gIvt3WpyvIRA91AP1W32zCKLlBH8GHApFYQJx7kuR2h7SXGnvBSMAh4AKfr1HHSs7hYln6Oif+\u001b[0m\u001b[32mDTdrYIartnC0MufgIwjOw\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsICAKey1'\u001b[0m: \u001b[32m'BAOZBNHF54zmSMKesumS33XPPiYkNuFD4EneHIbBlGw5R74leYynlviYRo6pJJgsBFhZpPSysbanxd6FGhDMSSvkfszhKxNneEFnLM3zg/\u001b[0m\u001b[32mNWzKzqYglnZf4cjVFDVoKN1A\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleCARootCert1'\u001b[0m: \u001b[32m'MIIBljCCATygAwIBAgIBATAKBggqhkjOPQQDAjAiMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMTAeFw0yMTAxMDEwMDAwMDBaFw0zMDEyMzAwMDAwMDBaMCIxIDAeBgorBgEEAYKifAEEDBAwMDAwMDAwMDAwMDAwMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/0tk03apN2OHDa1YRtI/CggfDVpFkQxfHmAi+3danK8hED3UA/VbfbMIouUEfwYcCkVhAnHuS5HaHtJcae8FI6NjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFK4R1kjK4X+tUcRsjhHsVt60AN7yMB8GA1UdIwQYMBaAFK4R1kjK4X+tUcRsjhHsVt60AN7yMAoGCCqGSM49BAMCA0gAMEUCIQD07YMcVJ+u1B9LehEK3qnyXronDsmovVX/qXO34/JgbgIgEsIzOThDOapZJvkx8FPD0vrJMA15EywpppjznOHJ/\u001b[0m\u001b[32mrU\u001b[0m\u001b[32m='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleCAIntermediateCert1'\u001b[0m: \u001b[32m'MIIBljCCATygAwIBAgIBATAKBggqhkjOPQQDAjAiMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMTAeFw0yMTAxMDEwMDAwMDBaFw0zMDEyMzAwMDAwMDBaMCIxIDAeBgorBgEEAYKifAEDDBAwMDAwMDAwMDAwMDAwMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEA5kE0cXnjOZIwp6y6ZLfdc8+JiQ24UPgSd4chsGUbDlHviV5jKeW+JhGjqkkmCwEWFmk9LKxtqfF3oUaEMxJK6NjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFG5tDqy+Mc5ckVx9bIT6DF80ZU/hMB8GA1UdIwQYMBaAFK4R1kjK4X+tUcRsjhHsVt60AN7yMAoGCCqGSM49BAMCA0gAMEUCIADFrrNbn6Wypkk/xDt60gPZgGiFrYJci1vAmXSo7sp2AiEAm5pySx6WfY7xYbLTZzG1naB/\u001b[0m\u001b[32mUmC3l8ISwQhckSMWlIU\u001b[0m\u001b[32m='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'f/1/m'\u001b[0m: \u001b[32m'FSUA8f8sAQAY'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'f/1/n'\u001b[0m: \u001b[32m'FTABAQEkAgE3AyQTAhgmBIAigScmBYAlTTo3BiQVASYRabYBABgkBwEkCAEwCUEEh05Tmf5SwOmGDGABlanyUdZG8scEklDEtc32VnQ6dXjpSBPhj7kqbiu8NhzXVF3TIwYE0H/wM81wJ9QMlyF/PTcKNQEoARgkAgE2AwQCBAEYMAQUbhVdM1nbgFTygIhbBNspMC3qeFEwBRRubQ6svjHOXJFcfWyE+gxfNGVP4RgwC0BMfja54viizgNw/mf/rBEiMsg0i5Etaa78UXG11jLqZSpgtxMgmcM9FBvQu/I4rUn7xekyT+\u001b[0m\u001b[32mF8w9BQw3sgmk8mGA\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'f/1/i'\u001b[0m: \u001b[32m'FTABAQEkAgE3AyQUARgmBIAigScmBYAlTTo3BiQTAhgkBwEkCAEwCUEEA5kE0cXnjOZIwp6y6ZLfdc8+JiQ24UPgSd4chsGUbDlHviV5jKeW+JhGjqkkmCwEWFmk9LKxtqfF3oUaEMxJKzcKNQEpARgkAmAwBBRubQ6svjHOXJFcfWyE+gxfNGVP4TAFFK4R1kjK4X+tUcRsjhHsVt60AN7yGDALQADFrrNbn6Wypkk/xDt60gPZgGiFrYJci1vAmXSo7sp2m5pySx6WfY7xYbLTZzG1naB/UmC3l8ISwQhckSMWlIUY'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'f/1/r'\u001b[0m: \u001b[32m'FTABAQEkAgE3AyQUARgmBIAigScmBYAlTTo3BiQUARgkBwEkCAEwCUEE/0tk03apN2OHDa1YRtI/CggfDVpFkQxfHmAi+3danK8hED3UA/VbfbMIouUEfwYcCkVhAnHuS5HaHtJcae8FIzcKNQEpARgkAmAwBBSuEdZIyuF/rVHEbI4R7FbetADe8jAFFK4R1kjK4X+tUcRsjhHsVt60AN7yGDALQPTtgxxUn67UH0t6EQreqfJeuicOyai9Vf+pc7fj8mBuEsIzOThDOapZJvkx8FPD0vrJMA15EywpppjznOHJ/rUY'\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/fidx'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mFSQAAjYBBAEYGA\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'f/1/k/0'\u001b[0m: \u001b[32m'FSQBACQCATYDFSQEACUFLCcwBhCSIUaxPEVbvx/zkOg4z8LaGBUkBAAkBQAwBhAAAAAAAAAAAAAAAAAAAAAAGBUkBAAkBQAwBhAAAAAAAAAAAAAAAAAAAAAAGBglB///\u001b[0m\u001b[32mGA\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/gfl'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mFSQBASQCARg\u001b[0m\u001b[32m='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'f/1/g'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mFSQBACQCACQDACQEACQFACQGASQHABg\u001b[0m\u001b[32m='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/icdfl'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mFgQBGA\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'f/1/s/0000000000000002'\u001b[0m: \u001b[32m'FTADEOgOX23ZDpeLioK4UxaZJFQwBCCBgxGw+pVAkqR0gVWft0iQQdWbK8BmxO+\u001b[0m\u001b[32mS7uB55OEyFDAFDAAAAAAAAAAAAAAAABg\u001b[0m\u001b[32m='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/s/\u001b[0m\u001b[32m6A5fbdkOl4uKgrhTFpkkVA\u001b[0m\u001b[32m=='\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mFSQBASQCAhg\u001b[0m\u001b[32m='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'g/sri'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mFhUkAQEkAgIYGA\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsCAKey2'\u001b[0m: \u001b[32m'BHBLU0W2BwQKpXC7H6BauEhTqqrpfPGvKw6mXSA3jxDlprYVJGsII1iljyvTTZkGwYaO2tN7Jq8pgaFoxyTArZsQN9BcRw7TDItVdZ/+P2fYT7iTegeNlg5+OtW6U+\u001b[0m\u001b[32mewvA\u001b[0m\u001b[32m=='\u001b[0m,\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsICAKey2'\u001b[0m: \u001b[32m'BPFBfV0351x11SBvZVlNpRwZXfdWX4RSnHXtJDQmpdXTAG3qd7OCJvh4X1kc6kzhWZibCZd3GmQXj06BuYoeWiF/a9cWQMV3Kz0J/1DEn+EIo8T++\u001b[0m\u001b[32m62tpZereGxCtS4kNQ\u001b[0m\u001b[32m=='\u001b[0m\n",
+       "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m,\n",
        "\u001b[2;32m│   \u001b[0m\u001b[32m'repl-config'\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'fabricAdmins'\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'1'\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'fabricId'\u001b[0m: \u001b[1;36m1\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'2'\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32m'fabricId'\u001b[0m: \u001b[1;36m2\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m}\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'caList'\u001b[0m: \u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'1'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[32m'fabricId'\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[32m'vendorId'\u001b[0m: \u001b[1;36m65521\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m}\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'2'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[32m'fabricId'\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[32m'vendorId'\u001b[0m: \u001b[1;36m65521\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m}\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   \u001b[0m\u001b[32m'sdk-config'\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsCAKey1'\u001b[0m: \u001b[32m'BKKIfb3b1LxeVaPOZveSvqdYO0W4LVkSXiTgG1P5mo+sdmr6ISZtNgDj0YVvG55Iq0M/2OwIbEi1WB86dbD7apgpj13h8fueMKMf\u001b[0m\u001b[32mErM65jMAsAPBcPEhnVc3JJ6m7K4Qq0ORAwBgAABhAAAAAAAAAA\u001b[0m\u001b[32m=='\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsICAKey1'\u001b[0m: \u001b[32m'BCwMgmSo2C1vhjBR642H5nieC/jJManFAW54QhdovJhdySYZn96XJoBNyouhoGf9rn0SipgIhmvHPcPqDrDwcAXiQyB87caIuz5DJ3v7KHHLquGmdv5pNpZ4IhqDomt/\u001b[0m\u001b[32m2kORAwBgAABhAAAAAAAAAA\u001b[0m\u001b[32m=='\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleCAIntermediateCert1'\u001b[0m: \u001b[32m'MIIB2TCCAYCgAwIBAgIBADAKBggqhkjOPQQDAjBEMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMDEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwHhcNMjEwMTAxMDAwMDAwWhcNMzAxMjMwMDAwMDAwWjBEMSAwHgYKKwYBBAGConwBAwwQMDAwMDAwMDAwMDAwMDAwMTEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQsDIJkqNgtb4YwUeuNh+Z4ngv4yTGpxQFueEIXaLyYXckmGZ/elyaATcqLoaBn/a59EoqYCIZrxz3D6g6w8HAFo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcPz5CkZJujm2U0jL0G1lZwoJXD0wHwYDVR0jBBgwFoAUfvAKJyeJwjao2nq+Q3ayf27KXrUwCgYIKoZIzj0EAwIDRwAwRAIgEaX5gBqc5b8eswqDDlc2IQ+wLKfbsONC3FzsuwLCBNkCIAyn32oaFV0YCN9GeiUpYvqbypnMWQGnffF85v7wKhBX'\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleCARootCert1'\u001b[0m: \u001b[32m'MIIB2jCCAYCgAwIBAgIBADAKBggqhkjOPQQDAjBEMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMDEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwHhcNMjEwMTAxMDAwMDAwWhcNMzAxMjMwMDAwMDAwWjBEMSAwHgYKKwYBBAGConwBBAwQMDAwMDAwMDAwMDAwMDAwMDEgMB4GCisGAQQBgqJ8AQUMEDAwMDAwMDAwMDAwMDAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASiiH2929S8XlWjzmb3kr6nWDtFuC1ZEl4k4BtT+ZqPrHZq+iEmbTYA49GFbxueSKtDP9jsCGxItVgfOnWw+2qYo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfvAKJyeJwjao2nq+Q3ayf27KXrUwHwYDVR0jBBgwFoAUfvAKJyeJwjao2nq+Q3ayf27KXrUwCgYIKoZIzj0EAwIDSAAwRQIgMzvVbqCxT+xJOpxN9HUSYZYdExmkRLN2Jl9vLijLc+sCIQDAxLgwwuxGNPtWJ/dY4kGqpWwNNbq9pEkmQ//\u001b[0m\u001b[32mt2KhfBg\u001b[0m\u001b[32m=='\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsCAKey2'\u001b[0m: \u001b[32m'BJ1gkAlp0ZrmBkQiko2ces/p86N1qCB30y+tdT5HrWEBqgPh6SVNnZfe5ZMjzJZFp/J1K+7MSDF7QeAgKrQYwcAcV1G9fnqw9anHoj+EW2k9xqw0b4bWXE9f2xKfWWb/\u001b[0m\u001b[32mykCSAwBgAABhAAAAAAAAAA\u001b[0m\u001b[32m=='\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[32m'ExampleOpCredsICAKey2'\u001b[0m: \u001b[32m'BMktytxSOcWsbMcZ6WrjsODvTRKcLWZjo8bt8CDUqfhoHLFqrmahTQnH4rY8gjRpKRBw/Yw2YpEodcaLyC1V+cC2VvZrLqLVW8uRNPkVxcojVHAXYAGCRp6CW4kQ+\u001b[0m\u001b[32mzBtNUCSAwBgAABhAAAAAAAAAA\u001b[0m\u001b[32m=='\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 10,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
     "builtins.chipStack.GetStorageManager().jsonData"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "id": "098c71b3-1bdd-44a2-b122-26387913bd3e",
+   "metadata": {},
+   "source": [
+    "#### Create a new ChipDeviceController on Fabric 2"
+   ]
+  },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": 11,
    "id": "15bb2c3e-9051-421c-8769-4a59e4b2fc73",
    "metadata": {
     "tags": []
    },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Allocating new controller with FabricId: 2(2), NodeId: 1\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
-    "devCtrl2 = fabric2.NewController()"
+    "devCtrl2 = fabricAdmin2.NewController()"
    ]
   },
   {
@@ -600,54 +738,53 @@
     "#### Open Commissioning Window"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "id": "9178e145-bbcc-463d-8ada-72b3c9575b2b",
+   "metadata": {},
+   "source": [
+    "The Controller of Fabric 1 must open the commissioning window that allows the Commissioner of Fabric 2 to join the node to its fabric."
+   ]
+  },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 12,
    "id": "7902ab28-3c74-4717-8522-f6c4a17c5efe",
    "metadata": {},
    "outputs": [],
    "source": [
-    "await devCtrl.SendCommand(2, 0, Clusters.AdministratorCommissioning.Commands.OpenBasicCommissioningWindow(180))"
+    "await devCtrl.SendCommand(2, 0, Clusters.AdministratorCommissioning.Commands.OpenBasicCommissioningWindow(180),  timedRequestTimeoutMs=10000)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 13,
    "id": "1c57c8ff-5ae9-4fdd-9fb8-4eda0e297db2",
    "metadata": {},
    "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "2022-01-25 16:59:00 johnsj-macbookpro1.roam.corp.google.com chip.CTL[27921] ERROR Unable to find country code, defaulting to WW\n",
-      "2022-01-25 16:59:00 johnsj-macbookpro1.roam.corp.google.com chip.SC[27921] ERROR The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Node address has been updated\n",
-      "Commissioning complete\n"
-     ]
-    },
     {
      "data": {
       "text/html": [
-       "
True\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
-       "\u001b[3;92mTrue\u001b[0m\n"
+       "\u001b[1;36m2\u001b[0m"
       ]
      },
+     "execution_count": 13,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "devCtrl2.CommissionIP(b'127.0.0.1', 20202021, 2)"
+    "await devCtrl2.CommissionOnNetwork(2, 20202021)"
    ]
   },
   {
@@ -662,74 +799,58 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 14,
    "id": "0c087a70-d852-4329-958d-d91a1bdbffaf",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.OperationalCredentials'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'>: [\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\xa2\\x88}\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98',\n",
-       "│   │   │   │   │   vendorId=27168,\n",
-       "│   │   │   │   │   fabricId=1,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label=''\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=2,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\x9d`\\x90\\ti\\xd1\\x9a\\xe6\\x06D\"\\x92\\x8d\\x9cz\\xcf\\xe9\\xf3\\xa3u\\xa8 w\\xd3/\\xadu>G\\xada\\x01\\xaa\\x03\\xe1\\xe9%M\\x9d\\x97\\xde\\xe5\\x93#\\xcc\\x96E\\xa7\\xf2u+\\xee\\xccH1{A\\xe0 *\\xb4\\x18\\xc1\\xc0',\n",
-       "│   │   │   │   │   vendorId=28544,\n",
-       "│   │   │   │   │   fabricId=2,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label=''\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ]\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xa2\\x88\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m27168\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4246564829\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xffKd\\xd3v\\xa97c\\x87\\r\\xadXF\\xd2?\\n\\x08\\x1f\\rZE\\x91\\x0c_\\x1e`\"\\xfbwZ\\x9c\\xaf!\\\u001b[0m\u001b[32mx10\u001b[0m\u001b[32m=\\xd4\\x03\\xf5\u001b[0m\u001b[32m[\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xb3\\x08\\xa2\\xe5\\x04\\x7f\\x06\\x1c\\nEa\\x02q\\xeeK\\x91\\xda\\x1e\\xd2\\\\i\\xef\\x05#'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\x9d`\\x90\\ti\\xd1\\x9a\\xe6\\x06D\"\\x92\\x8d\\x9cz\\xcf\\xe9\\xf3\\xa3u\\xa8 w\\xd3/\\xadu>G\\xada\\x01\\xaa\\x03\\xe1\\xe9%M\\x9d\\x97\\xde\\xe5\\x93#\\xcc\\x96E\\xa7\\xf2u+\\xee\\xccH1\u001b[0m\u001b[32m{\u001b[0m\u001b[32mA\\xe0 *\\xb4\\x18\\xc1\\xc0'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m28544\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04pKSE\\xb6\\x07\\x04\\n\\xa5p\\xbb\\x1f\\xa0Z\\xb8HS\\xaa\\xaa\\xe9|\\xf1\\xaf+\\x0e\\xa6\u001b[0m\u001b[32m]\u001b[0m\u001b[32m 7\\x8f\\x10\\xe5\\xa6\\xb6\\x15$k\\x08#X\\xa5\\x8f+\\xd3M\\x99\\x06\\xc1\\x86\\x8e\\xda\\xd3\u001b[0m\u001b[32m{\u001b[0m\u001b[32m&\\xaf\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x81\\xa1h\\xc7$\\xc0\\xad\\x9b'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m2\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 14,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "await devCtrl2.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.FabricsList)], fabricFiltered=False)"
+    "await devCtrl2.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.Fabrics)], fabricFiltered=False)"
    ]
   },
   {
@@ -746,18 +867,43 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 15,
    "id": "d44f5ab8-c59f-4fdb-9a26-081f6799c512",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/html": [
-       "
──────────────────────────────────────── Matter REPL ────────────────────────────────────────\n",
+       "
\n",
+       " Replacing  store path ./credentials/development/paa-root-certs with \n",
+       "/home/root/repos/connectedhomeip/credentials/development/paa-root-certs\n",
+       "Note that you are still running from \n",
+       "/home/root/repos/connectedhomeip/docs/development_controllers/chip-repl so other relative\n",
+       "paths may be off.\n",
+       "                    \n",
+       "
\n" + ], + "text/plain": [ + "\n", + "\u001b[1m Replacing \u001b[0m store path .\u001b[35m/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m with \n", + "\u001b[35m/home/root/repos/connectedhomeip/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m\n", + "Note that you are still running from \n", + "\u001b[35m/home/root/repos/connectedhomeip/docs/development_controllers/\u001b[0m\u001b[95mchip-repl\u001b[0m so other relative\n", + "paths may be off.\n", + " \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
─────────────────────────────────────────────────── Matter REPL ───────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\u001b[92m──────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ────────────────────────────────────────\u001b[0m\n" + "\u001b[92m─────────────────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ───────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -768,28 +914,28 @@ "text/html": [ "
\n",
        "            \n",
-       "    \n",
+       "\n",
        "            Welcome to the Matter Python REPL!\n",
-       "    \n",
+       "\n",
        "            For help, please type matterhelp()\n",
-       "    \n",
+       "\n",
        "            To get more information on a particular object/class, you can pass\n",
        "            that into matterhelp() as well.\n",
-       "    \n",
+       "\n",
        "            \n",
        "
\n" ], "text/plain": [ "\n", " \n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", + "\n", "\u001b[1;34m \u001b[0m\n" ] }, @@ -799,11 +945,11 @@ { "data": { "text/html": [ - "
─────────────────────────────────────────────────────────────────────────────────────────────\n",
+       "
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\u001b[92m─────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" + "\u001b[92m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -814,66 +960,32 @@ "text/html": [ "
\n",
        "\n",
+       "The following objects have been created:\n",
        "
\n" ], "text/plain": [ "\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
Restoring FabricAdmin from storage to manage FabricId 1, FabricIndex 1...\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[38;5;129mRestoring FabricAdmin from storage to manage FabricId \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m, FabricIndex \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + "\n", + "\u001b[34mThe following objects have been created:\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New FabricAdmin: FabricId: 1(1)\n" - ] - }, { "data": { "text/html": [ - "
Restoring FabricAdmin from storage to manage FabricId 2, FabricIndex 2...\n",
+       "
        certificateAuthorityManager:    Manages a list of CertificateAuthority instances.\n",
+       "        caList:                         The list of CertificateAuthority instances.\n",
+       "        caList[n].adminList[m]:         A specific FabricAdmin object at index m for the nth CertificateAuthority \n",
+       "instance.\n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mRestoring FabricAdmin from storage to manage FabricId \u001b[0m\u001b[1;38;5;129m2\u001b[0m\u001b[38;5;129m, FabricIndex \u001b[0m\u001b[1;38;5;129m2\u001b[0m\u001b[38;5;129m...\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New FabricAdmin: FabricId: 2(2)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n",
-       "Fabric Admins have been loaded and are available at fabricAdmins\n",
-       "
\n" - ], - "text/plain": [ - "\n", - "\u001b[34mFabric Admins have been loaded and are available at \u001b[0m\u001b[31mfabricAdmins\u001b[0m\n" + " \u001b[31mcertificateAuthorityManager\u001b[0m\u001b[34m: \u001b[0m\u001b[34mManages a list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34mThe list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mn\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mm\u001b[0m\u001b[1;31m]\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34mA specific FabricAdmin object at index m for the nth CertificateAuthority \u001b[0m\n", + "\u001b[34minstance.\u001b[0m\n" ] }, "metadata": {}, @@ -884,69 +996,69 @@ "text/html": [ "
\n",
        "\n",
+       "Default CHIP Device Controller (NodeId: 112233): has been initialized to manage caList[0].adminList[0] (FabricId = \n",
+       "1), and is available as devCtrl\n",
        "
\n" ], "text/plain": [ "\n", - "\n" + "\n", + "\u001b[34mDefault CHIP Device Controller \u001b[0m\u001b[1;34m(\u001b[0m\u001b[34mNodeId: \u001b[0m\u001b[1;34m112233\u001b[0m\u001b[1;34m)\u001b[0m\u001b[34m: has been initialized to manage \u001b[0m\u001b[1;31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m \u001b[0m\u001b[1;34m(\u001b[0m\u001b[1;34mFabricId = \u001b[0m\n", + "\u001b[1;34m1\u001b[0m\u001b[1;34m)\u001b[0m\u001b[1;34m, and is available as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "%reset -f\n", + "import importlib.util\n", + "spec = importlib.util.find_spec('chip.ChipReplStartup')\n", + "%run {spec.origin}" + ] + }, + { + "cell_type": "markdown", + "id": "2a619893-da3f-4651-bc9f-a2276906fc71", + "metadata": {}, + "source": [ + "The REPL now loaded (through the `certificateAuthorityManager`) the two `certificateAuthority` instances that were created in the previous session into the `CaList`. It has also created a default controller on the first fabric in that list (Fabric 1) as `devCtrl`." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "cb277ac7-2660-45bc-a01e-8a0e543ea53f", + "metadata": {}, + "outputs": [ { "data": { "text/html": [ - "
Creating default device controller on fabric 1...\n",
-       "
\n" + "
\n"
       ],
-      "text/plain": [
-       "\u001b[38;5;129mCreating default device controller on fabric \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n"
-      ]
+      "text/plain": []
      },
      "metadata": {},
      "output_type": "display_data"
     },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Allocating new controller with FabricId: 1(1), NodeId: 1\n"
-     ]
-    },
     {
      "data": {
-      "text/html": [
-       "
\n",
-       "\n",
-       "Default CHIP Device Controller has been initialized to manage fabricAdmins[0], and is \n",
-       "available as devCtrl\n",
-       "
\n" - ], "text/plain": [ "\n", - "\n", - "\u001b[34mDefault CHIP Device Controller has been initialized to manage \u001b[0m\u001b[1;31mfabricAdmins\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m, and is \u001b[0m\n", - "\u001b[1;34mavailable as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" + "\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mchip.CertificateAuthority.CertificateAuthority\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c32c96dc30\u001b[0m\u001b[39m>,\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[39m\u001b[0m\n", + "\u001b[1m]\u001b[0m" ] }, + "execution_count": 16, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "import chip.native\n", - "import pkgutil\n", - "module = pkgutil.get_loader('chip.ChipReplStartup')\n", - "%run {module.path}" - ] - }, - { - "cell_type": "markdown", - "id": "2a619893-da3f-4651-bc9f-a2276906fc71", - "metadata": {}, - "source": [ - "The REPL has now loaded the two fabrics that were created in the previous session into the `fabricAdmins` variable. It has also created a default controller on the first fabric in that list (Fabric 1) as `devCtrl`." + "caList" ] }, { @@ -965,90 +1077,92 @@ }, { "cell_type": "code", - "execution_count": 15, - "id": "45ee5838-b1e9-4ba8-b804-c3efc9d352d0", + "execution_count": 17, + "id": "fb79f13a-9acb-4ddd-b0b4-38589ff4822e", "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-01-25 16:59:00 johnsj-macbookpro1.roam.corp.google.com chip.SC[27921] ERROR The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.\n" - ] + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
     },
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Node address has been updated\n",
-      "Established CASE with Device\n"
-     ]
-    },
+     "data": {
+      "text/plain": [
+       "\u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x74c32c96e0b0\u001b[0m\u001b[1m>\u001b[0m"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "devCtrl"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "id": "45ee5838-b1e9-4ba8-b804-c3efc9d352d0",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.OperationalCredentials'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'>: [\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\xa2\\x88}\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98',\n",
-       "│   │   │   │   │   vendorId=27168,\n",
-       "│   │   │   │   │   fabricId=1,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label='Fabric1Label'\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=2,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\x9d`\\x90\\ti\\xd1\\x9a\\xe6\\x06D\"\\x92\\x8d\\x9cz\\xcf\\xe9\\xf3\\xa3u\\xa8 w\\xd3/\\xadu>G\\xada\\x01\\xaa\\x03\\xe1\\xe9%M\\x9d\\x97\\xde\\xe5\\x93#\\xcc\\x96E\\xa7\\xf2u+\\xee\\xccH1{A\\xe0 *\\xb4\\x18\\xc1\\xc0',\n",
-       "│   │   │   │   │   vendorId=28544,\n",
-       "│   │   │   │   │   fabricId=2,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label=''\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ]\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xa2\\x88\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m27168\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Fabric1Label'\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4246564830\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xffKd\\xd3v\\xa97c\\x87\\r\\xadXF\\xd2?\\n\\x08\\x1f\\rZE\\x91\\x0c_\\x1e`\"\\xfbwZ\\x9c\\xaf!\\\u001b[0m\u001b[32mx10\u001b[0m\u001b[32m=\\xd4\\x03\\xf5\u001b[0m\u001b[32m[\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xb3\\x08\\xa2\\xe5\\x04\\x7f\\x06\\x1c\\nEa\\x02q\\xeeK\\x91\\xda\\x1e\\xd2\\\\i\\xef\\x05#'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Fabric1Label'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\x9d`\\x90\\ti\\xd1\\x9a\\xe6\\x06D\"\\x92\\x8d\\x9cz\\xcf\\xe9\\xf3\\xa3u\\xa8 w\\xd3/\\xadu>G\\xada\\x01\\xaa\\x03\\xe1\\xe9%M\\x9d\\x97\\xde\\xe5\\x93#\\xcc\\x96E\\xa7\\xf2u+\\xee\\xccH1\u001b[0m\u001b[32m{\u001b[0m\u001b[32mA\\xe0 *\\xb4\\x18\\xc1\\xc0'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m28544\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04pKSE\\xb6\\x07\\x04\\n\\xa5p\\xbb\\x1f\\xa0Z\\xb8HS\\xaa\\xaa\\xe9|\\xf1\\xaf+\\x0e\\xa6\u001b[0m\u001b[32m]\u001b[0m\u001b[32m 7\\x8f\\x10\\xe5\\xa6\\xb6\\x15$k\\x08#X\\xa5\\x8f+\\xd3M\\x99\\x06\\xc1\\x86\\x8e\\xda\\xd3\u001b[0m\u001b[32m{\u001b[0m\u001b[32m&\\xaf\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x81\\xa1h\\xc7$\\xc0\\xad\\x9b'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m2\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 18,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
     "await devCtrl.SendCommand(2, 0, Clusters.OperationalCredentials.Commands.UpdateFabricLabel(\"Fabric1Label\"))\n",
-    "await devCtrl.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.FabricsList)], fabricFiltered=False)"
+    "await devCtrl.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.Fabrics)], fabricFiltered=False)"
    ]
   },
   {
@@ -1063,97 +1177,67 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 19,
    "id": "5d88cb17-bdda-418f-94ca-83d746c162b0",
    "metadata": {},
    "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "2022-01-25 16:59:00 johnsj-macbookpro1.roam.corp.google.com chip.SC[27921] ERROR The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Allocating new controller with FabricId: 2(2), NodeId: 1\n",
-      "Node address has been updated\n",
-      "Established CASE with Device\n"
-     ]
-    },
     {
      "data": {
       "text/html": [
-       "
\n",
-       "{\n",
-       "0: {\n",
-       "│   │   <class 'chip.clusters.Objects.OperationalCredentials'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'>: [\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=1,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\xa2\\x88}\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98',\n",
-       "│   │   │   │   │   vendorId=27168,\n",
-       "│   │   │   │   │   fabricId=1,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label='Fabric1Label'\n",
-       "│   │   │   │   ),\n",
-       "│   │   │   │   FabricDescriptor(\n",
-       "│   │   │   │   │   fabricIndex=2,\n",
-       "│   │   │   │   │   rootPublicKey=b'\\x04\\x9d`\\x90\\ti\\xd1\\x9a\\xe6\\x06D\"\\x92\\x8d\\x9cz\\xcf\\xe9\\xf3\\xa3u\\xa8 w\\xd3/\\xadu>G\\xada\\x01\\xaa\\x03\\xe1\\xe9%M\\x9d\\x97\\xde\\xe5\\x93#\\xcc\\x96E\\xa7\\xf2u+\\xee\\xccH1{A\\xe0 *\\xb4\\x18\\xc1\\xc0',\n",
-       "│   │   │   │   │   vendorId=28544,\n",
-       "│   │   │   │   │   fabricId=2,\n",
-       "│   │   │   │   │   nodeId=2,\n",
-       "│   │   │   │   │   label='Fabric2Label'\n",
-       "│   │   │   │   )\n",
-       "│   │   │   ]\n",
-       "│   │   }\n",
-       "}\n",
-       "}\n",
-       "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xa2\\x88\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xbd\\xdb\\xd4\\xbc^U\\xa3\\xcef\\xf7\\x92\\xbe\\xa7X;E\\xb8-Y\\x12^$\\xe0\\x1bS\\xf9\\x9a\\x8f\\xacvj\\xfa!&m6\\x00\\xe3\\xd1\\x85o\\x1b\\x9eH\\xabC?\\xd8\\xec\\x08lH\\xb5X\\x1f:u\\xb0\\xfbj\\x98'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m27168\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Fabric1Label'\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[39m>: \u001b[0m\u001b[1;39m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m: \u001b[0m\u001b[1;36m4246564831\u001b[0m\u001b[39m,\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[39m\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\xffKd\\xd3v\\xa97c\\x87\\r\\xadXF\\xd2?\\n\\x08\\x1f\\rZE\\x91\\x0c_\\x1e`\"\\xfbwZ\\x9c\\xaf!\\\u001b[0m\u001b[32mx10\u001b[0m\u001b[32m=\\xd4\\x03\\xf5\u001b[0m\u001b[32m[\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xb3\\x08\\xa2\\xe5\\x04\\x7f\\x06\\x1c\\nEa\\x02q\\xeeK\\x91\\xda\\x1e\\xd2\\\\i\\xef\\x05#'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m=\u001b[1;36m1\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Fabric1Label'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\x9d`\\x90\\ti\\xd1\\x9a\\xe6\\x06D\"\\x92\\x8d\\x9cz\\xcf\\xe9\\xf3\\xa3u\\xa8 w\\xd3/\\xadu>G\\xada\\x01\\xaa\\x03\\xe1\\xe9%M\\x9d\\x97\\xde\\xe5\\x93#\\xcc\\x96E\\xa7\\xf2u+\\xee\\xccH1\u001b[0m\u001b[32m{\u001b[0m\u001b[32mA\\xe0 *\\xb4\\x18\\xc1\\xc0'\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m28544\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Fabric2Label'\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mFabricDescriptorStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04pKSE\\xb6\\x07\\x04\\n\\xa5p\\xbb\\x1f\\xa0Z\\xb8HS\\xaa\\xaa\\xe9|\\xf1\\xaf+\\x0e\\xa6\u001b[0m\u001b[32m]\u001b[0m\u001b[32m 7\\x8f\\x10\\xe5\\xa6\\xb6\\x15$k\\x08#X\\xa5\\x8f+\\xd3M\\x99\\x06\\xc1\\x86\\x8e\\xda\\xd3\u001b[0m\u001b[32m{\u001b[0m\u001b[32m&\\xaf\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x81\\xa1h\\xc7$\\xc0\\xad\\x9b'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mvendorID\u001b[0m=\u001b[1;36m65521\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnodeID\u001b[0m=\u001b[1;36m2\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Fabric2Label'\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m2\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 19,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "devCtrl2 = fabricAdmins[1].NewController()\n",
+    "fabricAdmin2 = caList[1].adminList[0]\n",
+    "devCtrl2 = fabricAdmin2.NewController()\n",
+    "\n",
     "await devCtrl2.SendCommand(2, 0, Clusters.OperationalCredentials.Commands.UpdateFabricLabel(\"Fabric2Label\"))\n",
-    "await devCtrl2.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.FabricsList)], fabricFiltered=False)"
+    "await devCtrl2.ReadAttribute(2, [(Clusters.OperationalCredentials.Attributes.Fabrics)], fabricFiltered=False)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": 20,
    "id": "4ecb4ab4-bb7a-4941-8080-34783028fce0",
    "metadata": {},
    "outputs": [],
@@ -1164,9 +1248,9 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "matter-env",
+   "display_name": "Python 3 (ipykernel)",
    "language": "python",
-   "name": "matter-env"
+   "name": "python3"
   },
   "language_info": {
    "codemirror_mode": {
@@ -1178,7 +1262,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.2+chromium.10"
+   "version": "3.10.12"
   }
  },
  "nbformat": 4,
diff --git a/docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb b/docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb
index 69e0a6c603452a..10363c6936e608 100644
--- a/docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb
+++ b/docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb
@@ -39,82 +39,52 @@
     "tags": []
    },
    "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "
──────────────────────────────────────── Matter REPL ────────────────────────────────────────\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[92m──────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ────────────────────────────────────────\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/html": [ "
\n",
-       "            \n",
-       "    \n",
-       "            Welcome to the Matter Python REPL!\n",
-       "    \n",
-       "            For help, please type matterhelp()\n",
-       "    \n",
-       "            To get more information on a particular object/class, you can pass\n",
-       "            that into matterhelp() as well.\n",
-       "    \n",
-       "            \n",
+       " Replacing  store path ./credentials/development/paa-root-certs with \n",
+       "/home/root/repos/connectedhomeip/credentials/development/paa-root-certs\n",
+       "Note that you are still running from \n",
+       "/home/root/repos/connectedhomeip/docs/development_controllers/chip-repl so other relative\n",
+       "paths may be off.\n",
+       "                    \n",
        "
\n" ], "text/plain": [ "\n", - " \n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", - "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m \u001b[0m\n" + "\u001b[1m Replacing \u001b[0m store path .\u001b[35m/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m with \n", + "\u001b[35m/home/root/repos/connectedhomeip/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m\n", + "Note that you are still running from \n", + "\u001b[35m/home/root/repos/connectedhomeip/docs/development_controllers/\u001b[0m\u001b[95mchip-repl\u001b[0m so other relative\n", + "paths may be off.\n", + " \n" ] }, "metadata": {}, "output_type": "display_data" }, { - "data": { - "text/html": [ - "
─────────────────────────────────────────────────────────────────────────────────────────────\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[92m─────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "2022-01-25 16:57:54 johnsj-macbookpro1.roam.corp.google.com root[27642] CRITICAL Loading configuration from /tmp/repl-storage.json...\n" + "[1738153426.053862][2285034:2285034] CHIP:CTL: Setting attestation nonce to random value\n", + "[1738153426.054073][2285034:2285034] CHIP:CTL: Setting CSR nonce to random value\n", + "[1738153426.063146][2285034:2285034] CHIP:DL: NVS set: chip-counters/reboot-count = 3 (0x3)\n", + "[1738153426.063662][2285034:2285034] CHIP:DL: Got Ethernet interface: enp2s0\n", + "[1738153426.063914][2285034:2285034] CHIP:DL: Found the primary Ethernet interface:enp2s0\n", + "[1738153426.064073][2285034:2285034] CHIP:DL: Got WiFi interface: wlp3s0\n", + "[1738153426.064230][2285034:2285034] CHIP:DL: Found the primary WiFi interface:wlp3s0\n" ] }, { "data": { "text/html": [ - "
\n",
-       "\n",
+       "
─────────────────────────────────────────────────── Matter REPL ───────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\n", - "\n" + "\u001b[92m─────────────────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ───────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -123,53 +93,44 @@ { "data": { "text/html": [ - "
Restoring FabricAdmin from storage to manage FabricId 1, FabricIndex 1...\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[38;5;129mRestoring FabricAdmin from storage to manage FabricId \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m, FabricIndex \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New FabricAdmin: FabricId: 1(1)\n" - ] - }, - { - "data": { - "text/html": [ - "
Restoring FabricAdmin from storage to manage FabricId 2, FabricIndex 2...\n",
+       "
\n",
+       "            \n",
+       "\n",
+       "            Welcome to the Matter Python REPL!\n",
+       "\n",
+       "            For help, please type matterhelp()\n",
+       "\n",
+       "            To get more information on a particular object/class, you can pass\n",
+       "            that into matterhelp() as well.\n",
+       "\n",
+       "            \n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mRestoring FabricAdmin from storage to manage FabricId \u001b[0m\u001b[1;38;5;129m2\u001b[0m\u001b[38;5;129m, FabricIndex \u001b[0m\u001b[1;38;5;129m2\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + "\n", + " \n", + "\n", + "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", + "\n", + "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", + "\n", + "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", + "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", + "\n", + "\u001b[1;34m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New FabricAdmin: FabricId: 2(2)\n" - ] - }, { "data": { "text/html": [ - "
\n",
-       "Fabric Admins have been loaded and are available at fabricAdmins\n",
+       "
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\n", - "\u001b[34mFabric Admins have been loaded and are available at \u001b[0m\u001b[31mfabricAdmins\u001b[0m\n" + "\u001b[92m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -180,11 +141,13 @@ "text/html": [ "
\n",
        "\n",
+       "The following objects have been created:\n",
        "
\n" ], "text/plain": [ "\n", - "\n" + "\n", + "\u001b[34mThe following objects have been created:\u001b[0m\n" ] }, "metadata": {}, @@ -193,37 +156,36 @@ { "data": { "text/html": [ - "
Creating default device controller on fabric 1...\n",
+       "
        certificateAuthorityManager:    Manages a list of CertificateAuthority instances.\n",
+       "        caList:                         The list of CertificateAuthority instances.\n",
+       "        caList[n].adminList[m]:         A specific FabricAdmin object at index m for the nth CertificateAuthority \n",
+       "instance.\n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mCreating default device controller on fabric \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + " \u001b[31mcertificateAuthorityManager\u001b[0m\u001b[34m: \u001b[0m\u001b[34mManages a list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34mThe list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mn\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mm\u001b[0m\u001b[1;31m]\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34mA specific FabricAdmin object at index m for the nth CertificateAuthority \u001b[0m\n", + "\u001b[34minstance.\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Allocating new controller with FabricId: 1(1), NodeId: 1\n" - ] - }, { "data": { "text/html": [ "
\n",
        "\n",
-       "Default CHIP Device Controller has been initialized to manage fabricAdmins[0], and is \n",
-       "available as devCtrl\n",
+       "Default CHIP Device Controller (NodeId: 112233): has been initialized to manage caList[0].adminList[0] (FabricId = \n",
+       "1), and is available as devCtrl\n",
        "
\n" ], "text/plain": [ "\n", "\n", - "\u001b[34mDefault CHIP Device Controller has been initialized to manage \u001b[0m\u001b[1;31mfabricAdmins\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m, and is \u001b[0m\n", - "\u001b[1;34mavailable as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" + "\u001b[34mDefault CHIP Device Controller \u001b[0m\u001b[1;34m(\u001b[0m\u001b[34mNodeId: \u001b[0m\u001b[1;34m112233\u001b[0m\u001b[1;34m)\u001b[0m\u001b[34m: has been initialized to manage \u001b[0m\u001b[1;31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m \u001b[0m\u001b[1;34m(\u001b[0m\u001b[1;34mFabricId = \u001b[0m\n", + "\u001b[1;34m1\u001b[0m\u001b[1;34m)\u001b[0m\u001b[1;34m, and is available as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" ] }, "metadata": {}, @@ -231,10 +193,10 @@ } ], "source": [ - "import chip.native\n", - "import pkgutil\n", - "module = pkgutil.get_loader('chip.ChipReplStartup')\n", - "%run {module.path}" + "%reset -f\n", + "import importlib.util\n", + "spec = importlib.util.find_spec('chip.ChipReplStartup')\n", + "%run {spec.origin}" ] }, { @@ -253,47 +215,26 @@ "id": "c05b4b22-f6b1-4669-9358-98b0fe9a9136", "metadata": {}, "outputs": [ - { - "data": { - "text/html": [ - "
──────────────────────────────────────── Matter REPL ────────────────────────────────────────\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[92m──────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ────────────────────────────────────────\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/html": [ "
\n",
-       "            \n",
-       "    \n",
-       "            Welcome to the Matter Python REPL!\n",
-       "    \n",
-       "            For help, please type matterhelp()\n",
-       "    \n",
-       "            To get more information on a particular object/class, you can pass\n",
-       "            that into matterhelp() as well.\n",
-       "    \n",
-       "            \n",
+       " Replacing  store path ./credentials/development/paa-root-certs with \n",
+       "/home/root/repos/connectedhomeip/credentials/development/paa-root-certs\n",
+       "Note that you are still running from \n",
+       "/home/root/repos/connectedhomeip/docs/development_controllers/chip-repl so other relative\n",
+       "paths may be off.\n",
+       "                    \n",
        "
\n" ], "text/plain": [ "\n", - " \n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", - "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m \u001b[0m\n" + "\u001b[1m Replacing \u001b[0m store path .\u001b[35m/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m with \n", + "\u001b[35m/home/root/repos/connectedhomeip/credentials/development/\u001b[0m\u001b[95mpaa-root-certs\u001b[0m\n", + "Note that you are still running from \n", + "\u001b[35m/home/root/repos/connectedhomeip/docs/development_controllers/\u001b[0m\u001b[95mchip-repl\u001b[0m so other relative\n", + "paths may be off.\n", + " \n" ] }, "metadata": {}, @@ -302,11 +243,11 @@ { "data": { "text/html": [ - "
─────────────────────────────────────────────────────────────────────────────────────────────\n",
+       "
─────────────────────────────────────────────────── Matter REPL ───────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\u001b[92m─────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" + "\u001b[92m─────────────────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ───────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -316,67 +257,43 @@ "data": { "text/html": [ "
\n",
+       "            \n",
        "\n",
-       "
\n" - ], - "text/plain": [ + " Welcome to the Matter Python REPL!\n", "\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
Restoring FabricAdmin from storage to manage FabricId 1, FabricIndex 1...\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[38;5;129mRestoring FabricAdmin from storage to manage FabricId \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m, FabricIndex \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New FabricAdmin: FabricId: 1(1)\n" - ] - }, - { - "data": { - "text/html": [ - "
Restoring FabricAdmin from storage to manage FabricId 2, FabricIndex 2...\n",
+       "            For help, please type matterhelp()\n",
+       "\n",
+       "            To get more information on a particular object/class, you can pass\n",
+       "            that into matterhelp() as well.\n",
+       "\n",
+       "            \n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mRestoring FabricAdmin from storage to manage FabricId \u001b[0m\u001b[1;38;5;129m2\u001b[0m\u001b[38;5;129m, FabricIndex \u001b[0m\u001b[1;38;5;129m2\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + "\n", + " \n", + "\n", + "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", + "\n", + "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", + "\n", + "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", + "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", + "\n", + "\u001b[1;34m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New FabricAdmin: FabricId: 2(2)\n" - ] - }, { "data": { "text/html": [ - "
\n",
-       "Fabric Admins have been loaded and are available at fabricAdmins\n",
+       "
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
        "
\n" ], "text/plain": [ - "\n", - "\u001b[34mFabric Admins have been loaded and are available at \u001b[0m\u001b[31mfabricAdmins\u001b[0m\n" + "\u001b[92m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n" ] }, "metadata": {}, @@ -387,11 +304,13 @@ "text/html": [ "
\n",
        "\n",
+       "The following objects have been created:\n",
        "
\n" ], "text/plain": [ "\n", - "\n" + "\n", + "\u001b[34mThe following objects have been created:\u001b[0m\n" ] }, "metadata": {}, @@ -400,37 +319,36 @@ { "data": { "text/html": [ - "
Creating default device controller on fabric 1...\n",
+       "
        certificateAuthorityManager:    Manages a list of CertificateAuthority instances.\n",
+       "        caList:                         The list of CertificateAuthority instances.\n",
+       "        caList[n].adminList[m]:         A specific FabricAdmin object at index m for the nth CertificateAuthority \n",
+       "instance.\n",
        "
\n" ], "text/plain": [ - "\u001b[38;5;129mCreating default device controller on fabric \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" + " \u001b[31mcertificateAuthorityManager\u001b[0m\u001b[34m: \u001b[0m\u001b[34mManages a list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34mThe list of CertificateAuthority instances.\u001b[0m\n", + "\u001b[34m \u001b[0m\u001b[31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mn\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[31mm\u001b[0m\u001b[1;31m]\u001b[0m\u001b[34m: \u001b[0m\u001b[34m \u001b[0m\u001b[34mA specific FabricAdmin object at index m for the nth CertificateAuthority \u001b[0m\n", + "\u001b[34minstance.\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Allocating new controller with FabricId: 1(1), NodeId: 1\n" - ] - }, { "data": { "text/html": [ "
\n",
        "\n",
-       "Default CHIP Device Controller has been initialized to manage fabricAdmins[0], and is \n",
-       "available as devCtrl\n",
+       "Default CHIP Device Controller (NodeId: 112233): has been initialized to manage caList[0].adminList[0] (FabricId = \n",
+       "1), and is available as devCtrl\n",
        "
\n" ], "text/plain": [ "\n", "\n", - "\u001b[34mDefault CHIP Device Controller has been initialized to manage \u001b[0m\u001b[1;31mfabricAdmins\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m, and is \u001b[0m\n", - "\u001b[1;34mavailable as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" + "\u001b[34mDefault CHIP Device Controller \u001b[0m\u001b[1;34m(\u001b[0m\u001b[34mNodeId: \u001b[0m\u001b[1;34m112233\u001b[0m\u001b[1;34m)\u001b[0m\u001b[34m: has been initialized to manage \u001b[0m\u001b[1;31mcaList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;31m.adminList\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m \u001b[0m\u001b[1;34m(\u001b[0m\u001b[1;34mFabricId = \u001b[0m\n", + "\u001b[1;34m1\u001b[0m\u001b[1;34m)\u001b[0m\u001b[1;34m, and is available as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" ] }, "metadata": {}, @@ -438,10 +356,10 @@ } ], "source": [ - "import chip.native\n", - "import pkgutil\n", - "module = pkgutil.get_loader('chip.ChipReplStartup')\n", - "%run {module.path} --storagepath /tmp/repl.json" + "%reset -f\n", + "import importlib.util\n", + "spec = importlib.util.find_spec('chip.ChipReplStartup')\n", + "%run {spec.origin} --storagepath /tmp/repl.json" ] }, { @@ -466,449 +384,1687 @@ { "data": { "text/html": [ - "
╭─────────────────── <class 'chip.ChipDeviceCtrl.ChipDeviceController'> ────────────────────╮\n",
-       " ╭───────────────────────────────────────────────────────────────────────────────────────╮ \n",
-       "  <chip.ChipDeviceCtrl.ChipDeviceController object at 0x1143b3910>                       \n",
-       " ╰───────────────────────────────────────────────────────────────────────────────────────╯ \n",
-       "                                                                                           \n",
-       "                                activeList = {                                             \n",
-       "                                                 <chip.ChipDeviceCtrl.ChipDeviceController \n",
-       "                                             object at 0x1143b3910>                        \n",
-       "                                             }                                             \n",
-       "                                   devCtrl = c_void_p(140320379576320)                     \n",
-       "                                  isActive = True                                          \n",
-       "                                     state = <DCState.IDLE: 1>                             \n",
-       "        cbHandleCommissioningCompleteFunct = def cbHandleCommissioningCompleteFunct(...)   \n",
-       "          cbHandleKeyExchangeCompleteFunct = def cbHandleKeyExchangeCompleteFunct(...)     \n",
-       "                 cbOnAddressUpdateComplete = def cbOnAddressUpdateComplete(...)            \n",
-       "                             CheckIsActive = def CheckIsActive():                          \n",
-       "                        CloseBLEConnection = def CloseBLEConnection():                     \n",
-       "                              CloseSession = def CloseSession(nodeid):                     \n",
-       "                                Commission = def Commission(nodeid):                       \n",
-       "                              CommissionIP = def CommissionIP(ipaddr, setupPinCode,        \n",
-       "                                             nodeid):                                      \n",
-       "                                ConnectBLE = def ConnectBLE(discriminator, setupPinCode,   \n",
-       "                                             nodeid):                                      \n",
-       "                                ConnectBle = def ConnectBle(bleConnection):                \n",
-       "                  DiscoverAllCommissioning = def DiscoverAllCommissioning():               \n",
-       " DiscoverCommissionableNodesCommissioningEn… def                                           \n",
-       "                                           = DiscoverCommissionableNodesCommissioningEnab… \n",
-       "     DiscoverCommissionableNodesDeviceType = def                                           \n",
-       "                                             DiscoverCommissionableNodesDeviceType(device… \n",
-       " DiscoverCommissionableNodesLongDiscriminat… def                                           \n",
-       "                                           = DiscoverCommissionableNodesLongDiscriminator \n",
-       " DiscoverCommissionableNodesShortDiscrimina… def                                           \n",
-       "                                           = DiscoverCommissionableNodesShortDiscriminato… \n",
-       "         DiscoverCommissionableNodesVendor = def                                           \n",
-       "                                             DiscoverCommissionableNodesVendor(vendor):    \n",
-       "                    EstablishPASESessionIP = def EstablishPASESessionIP(ipaddr,            \n",
-       "                                             setupPinCode, nodeid):                        \n",
-       "                         GetAddressAndPort = def GetAddressAndPort(nodeid):                \n",
-       "                         GetClusterHandler = def GetClusterHandler():                      \n",
-       "                     GetCompressedFabricId = def GetCompressedFabricId():                  \n",
-       "                    GetConnectedDeviceSync = def GetConnectedDeviceSync(nodeid):           \n",
-       "                               GetFabricId = def GetFabricId():                            \n",
-       "                  GetIPForDiscoveredDevice = def GetIPForDiscoveredDevice(idx, addrStr,    \n",
-       "                                             length):                                      \n",
-       "                              GetLogFilter = def GetLogFilter():                           \n",
-       "                               IsConnected = def IsConnected():                            \n",
-       "                   OpenCommissioningWindow = def OpenCommissioningWindow(nodeid, timeout,  \n",
-       "                                             iteration, discriminator, option):            \n",
-       "                               ParseQRCode = def ParseQRCode(qrCode, output):              \n",
-       "                    PrintDiscoveredDevices = def PrintDiscoveredDevices():                 \n",
-       "                             ReadAttribute = def ReadAttribute(nodeid: int, attributes:    \n",
-       "                                             List[Union[NoneType, Tuple[int],              \n",
-       "                                             Tuple[Type[chip.clusters.ClusterObjects.Clus… \n",
-       "                                             Tuple[Type[chip.clusters.ClusterObjects.Clus… \n",
-       "                                             Tuple[int,                                    \n",
-       "                                             Type[chip.clusters.ClusterObjects.Cluster]],  \n",
-       "                                             Tuple[int,                                    \n",
-       "                                             Type[chip.clusters.ClusterObjects.ClusterAtt… \n",
-       "                                             returnClusterObject: bool = False,            \n",
-       "                                             reportInterval: Tuple[int, int] = None,       \n",
-       "                                             fabricFiltered: bool = True):                 \n",
-       "                                             Read a list of attributes from a target node  \n",
-       "                                                                                           \n",
-       "                                             nodeId: Target's Node ID                      \n",
-       "                                             attributes: A list of tuples of varying types \n",
-       "                                             depending on the type of read being           \n",
-       "                                             requested:                                    \n",
-       "                                                 (endpoint, Clusters.ClusterA.AttributeA): \n",
-       "                                             Endpoint = specific,    Cluster = specific,   \n",
-       "                                             Attribute = specific                          \n",
-       "                                                 (endpoint, Clusters.ClusterA):            \n",
-       "                                             Endpoint = specific,    Cluster = specific,   \n",
-       "                                             Attribute = *                                 \n",
-       "                                                 (Clusters.ClusterA.AttributeA):           \n",
-       "                                             Endpoint = *,           Cluster = specific,   \n",
-       "                                             Attribute = specific                          \n",
-       "                                                 endpoint:                                 \n",
-       "                                             Endpoint = specific,    Cluster = *,          \n",
-       "                                             Attribute = *                                 \n",
-       "                                                 Clusters.ClusterA:                        \n",
-       "                                             Endpoint = *,           Cluster = specific,   \n",
-       "                                             Attribute = *                                 \n",
-       "                                                 '*' or ():                                \n",
-       "                                             Endpoint = *,           Cluster = *,          \n",
-       "                                             Attribute = *                                 \n",
-       "                                                                                           \n",
-       "                                                 The cluster and attributes specified      \n",
-       "                                             above are to be selected from the generated   \n",
-       "                                             cluster objects.                              \n",
-       "                                                                                           \n",
-       "                                                 e.g.                                      \n",
-       "                                                     ReadAttribute(1, [ 1 ] ) -- case 4    \n",
-       "                                             above.                                        \n",
-       "                                                     ReadAttribute(1, [ Clusters.BasicInformation ] ) \n",
-       "                                             -- case 5 above.                              \n",
-       "                                                     ReadAttribute(1, [ (1,                \n",
-       "                                             Clusters.BasicInformation.Attributes.Location ] ) --     \n",
-       "                                             case 1 above.                                 \n",
-       "                                                                                           \n",
-       "                                             returnClusterObject: This returns the data as \n",
-       "                                             consolidated cluster objects, with all        \n",
-       "                                             attributes for a cluster inside               \n",
-       "                                                                  a single cluster-wide    \n",
-       "                                             cluster object.                               \n",
-       "                                                                                           \n",
-       "                                             reportInterval: A tuple of two int-s for      \n",
-       "                                             (MinIntervalFloor, MaxIntervalCeiling). Used  \n",
-       "                                             by establishing subscriptions.                \n",
-       "                                                 When not provided, a read request will be \n",
-       "                                             sent.                                         \n",
-       "                                 ReadEvent = def ReadEvent(nodeid: int, events:            \n",
-       "                                             List[Union[NoneType, Tuple[int],              \n",
-       "                                             Tuple[Type[chip.clusters.ClusterObjects.Clus… \n",
-       "                                             Tuple[Type[chip.clusters.ClusterObjects.Clus… \n",
-       "                                             Tuple[int,                                    \n",
-       "                                             Type[chip.clusters.ClusterObjects.Cluster]],  \n",
-       "                                             Tuple[int,                                    \n",
-       "                                             Type[chip.clusters.ClusterObjects.ClusterEve… \n",
-       "                                             reportInterval: Tuple[int, int] = None):      \n",
-       "                                             Read a list of events from a target node      \n",
-       "                                                                                           \n",
-       "                                             nodeId: Target's Node ID                      \n",
-       "                                             events: A list of tuples of varying types     \n",
-       "                                             depending on the type of read being           \n",
-       "                                             requested:                                    \n",
-       "                                                 (endpoint, Clusters.ClusterA.EventA):     \n",
-       "                                             Endpoint = specific,    Cluster = specific,   \n",
-       "                                             Event = specific                              \n",
-       "                                                 (endpoint, Clusters.ClusterA):            \n",
-       "                                             Endpoint = specific,    Cluster = specific,   \n",
-       "                                             Event = *                                     \n",
-       "                                                 (Clusters.ClusterA.EventA):               \n",
-       "                                             Endpoint = *,           Cluster = specific,   \n",
-       "                                             Event = specific                              \n",
-       "                                                 endpoint:                                 \n",
-       "                                             Endpoint = specific,    Cluster = *,          \n",
-       "                                             Event = *                                     \n",
-       "                                                 Clusters.ClusterA:                        \n",
-       "                                             Endpoint = *,           Cluster = specific,   \n",
-       "                                             Event = *                                     \n",
-       "                                                 '*' or ():                                \n",
-       "                                             Endpoint = *,           Cluster = *,          \n",
-       "                                             Event = *                                     \n",
-       "                                                                                           \n",
-       "                                             The cluster and events specified above are to \n",
-       "                                             be selected from the generated cluster        \n",
-       "                                             objects.                                      \n",
-       "                                                                                           \n",
-       "                                             e.g.                                          \n",
-       "                                                 ReadEvent(1, [ 1 ] ) -- case 4 above.     \n",
-       "                                                 ReadEvent(1, [ Clusters.BasicInformation ] ) -- case \n",
-       "                                             5 above.                                      \n",
-       "                                                 ReadEvent(1, [ (1,                        \n",
-       "                                             Clusters.BasicInformation.Events.Location ] ) -- case 1  \n",
-       "                                             above.                                        \n",
-       "                                                                                           \n",
-       "                                             reportInterval: A tuple of two int-s for      \n",
-       "                                             (MinIntervalFloor, MaxIntervalCeiling). Used  \n",
-       "                                             by establishing subscriptions.                \n",
-       "                                                 When not provided, a read request will be \n",
-       "                                             sent.                                         \n",
-       "                               ResolveNode = def ResolveNode(nodeid):                      \n",
-       "                               SendCommand = def SendCommand(nodeid: int, endpoint: int,   \n",
-       "                                             payload:                                      \n",
-       "                                             chip.clusters.ClusterObjects.ClusterCommand,  \n",
-       "                                             responseType=None, timedRequestTimeoutMs: int \n",
-       "                                             = None):                                      \n",
-       "                                             Send a cluster-object encapsulated command to \n",
-       "                                             a node and get returned a future that can be  \n",
-       "                                             awaited upon to receive the response.         \n",
-       "                                             If a valid responseType is passed in, that    \n",
-       "                                             will be used to deserialize the object. If    \n",
-       "                                             not, the type will be automatically deduced   \n",
-       "                                             from the metadata received over the wire.     \n",
-       "                                                                                           \n",
-       "                                             timedWriteTimeoutMs: Timeout for a timed      \n",
-       "                                             invoke request. Omit or set to 'None' to      \n",
-       "                                             indicate a non-timed request.                 \n",
-       "                             SetBlockingCB = def SetBlockingCB(blockingCB):                \n",
-       "                              SetLogFilter = def SetLogFilter(category):                   \n",
-       "               SetThreadOperationalDataset = def                                           \n",
-       "                                             SetThreadOperationalDataset(threadOperationa… \n",
-       "                        SetWiFiCredentials = def SetWiFiCredentials(ssid, credentials):    \n",
-       "                                  Shutdown = def Shutdown():                               \n",
-       "                                             Shuts down this controller and reclaims any   \n",
-       "                                             used resources, including the bound           \n",
-       "                                             C++ constructor instance in the SDK.          \n",
-       "                               ShutdownAll = def ShutdownAll(...) Shut down all active     \n",
-       "                                             controllers and reclaim any used resources.   \n",
-       "                            WriteAttribute = def WriteAttribute(nodeid: int, attributes:   \n",
-       "                                             List[Tuple[int,                               \n",
-       "                                             chip.clusters.ClusterObjects.ClusterAttribut… \n",
-       "                                             timedRequestTimeoutMs: int = None):           \n",
-       "                                             Write a list of attributes on a target node.  \n",
-       "                                                                                           \n",
-       "                                             nodeId: Target's Node ID                      \n",
-       "                                             timedWriteTimeoutMs: Timeout for a timed      \n",
-       "                                             write request. Omit or set to 'None' to       \n",
-       "                                             indicate a non-timed request.                 \n",
-       "                                             attributes: A list of tuples of type          \n",
-       "                                             (endpoint, cluster-object):                   \n",
-       "                                                                                           \n",
-       "                                             E.g                                           \n",
-       "                                                 (1,                                       \n",
-       "                                             Clusters.UnitTesting.Attributes.XYZAttribute \n",
-       "                                             -- Write 'hello' to the XYZ attribute on the  \n",
-       "                                             test cluster to endpoint 1                    \n",
-       "                          ZCLAttributeList = def ZCLAttributeList():                       \n",
-       "                            ZCLCommandList = def ZCLCommandList():                         \n",
-       "                          ZCLReadAttribute = def ZCLReadAttribute(cluster, attribute,      \n",
-       "                                             nodeid, endpoint, groupid, blocking=True):    \n",
-       "                                   ZCLSend = def ZCLSend(cluster, command, nodeid,         \n",
-       "                                             endpoint, groupid, args, blocking=False):     \n",
-       "                     ZCLSubscribeAttribute = def ZCLSubscribeAttribute(cluster, attribute, \n",
-       "                                             nodeid, endpoint, minInterval, maxInterval,   \n",
-       "                                             blocking=True):                               \n",
-       "                         ZCLWriteAttribute = def ZCLWriteAttribute(cluster: str,           \n",
-       "                                             attribute: str, nodeid, endpoint, groupid,    \n",
-       "                                             value, blocking=True):                        \n",
-       "╰───────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
╭────────────────────────────── <class 'chip.ChipDeviceCtrl.ChipDeviceController'> ───────────────────────────────╮\n",
+       " The ChipDeviceCommissioner binding, named as ChipDeviceController                                               \n",
+       "                                                                                                                 \n",
+       " TODO: This class contains DEPRECATED functions, we should update the test scripts to avoid the usage of those   \n",
+       " functions.                                                                                                      \n",
+       "                                                                                                                 \n",
+       " ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ \n",
+       "  <chip.ChipDeviceCtrl.ChipDeviceController object at 0x78e55c7c3fa0>                                          \n",
+       " ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ \n",
+       "                                                                                                                 \n",
+       "                                           activeList = {                                                        \n",
+       "                                                            <chip.ChipDeviceCtrl.ChipDeviceController object at  \n",
+       "                                                        0x78e55c7c3fa0>                                          \n",
+       "                                                        }                                                        \n",
+       "                                              caIndex = 1                                                        \n",
+       "                                              devCtrl = c_void_p(132925546862080)                                \n",
+       "                                          fabricAdmin = <chip.FabricAdmin.FabricAdmin object at 0x78e55c7c3be0>  \n",
+       "                                             fabricId = 1                                                        \n",
+       "                                             isActive = True                                                     \n",
+       "                                                 name = 'caIndex(1)/fabricId(0x0000000000000001)/nodeId(0x00000… \n",
+       "                                               nodeId = 112233                                                   \n",
+       "                                      pairingDelegate = c_void_p(132925546882384)                                \n",
+       "                   cbHandleCommissioningCompleteFunct = def cbHandleCommissioningCompleteFunct(...)              \n",
+       "                    cbHandleDeviceUnpairCompleteFunct = def cbHandleDeviceUnpairCompleteFunct(...)               \n",
+       "                             cbHandleFabricCheckFunct = def cbHandleFabricCheckFunct(...)                        \n",
+       "                      cbHandleOpenWindowCompleteFunct = def cbHandleOpenWindowCompleteFunct(...)                 \n",
+       "               cbHandlePASEEstablishmentCompleteFunct = def cbHandlePASEEstablishmentCompleteFunct(...)          \n",
+       "                                        CheckIsActive = def CheckIsActive():                                     \n",
+       "                                 CheckStageSuccessful = def CheckStageSuccessful(stage: 'int'):                  \n",
+       "                       CheckTestCommissionerCallbacks = def CheckTestCommissionerCallbacks():                    \n",
+       "                  CheckTestCommissionerPaseConnection = def CheckTestCommissionerPaseConnection(nodeid):         \n",
+       "                                   CloseBLEConnection = def CloseBLEConnection():                                \n",
+       "                                         CloseSession = def CloseSession(nodeid):                                \n",
+       "                                           Commission = async def Commission(nodeid) -> 'int':                   \n",
+       "                                                        Start the auto-commissioning process on a node after     \n",
+       "                                                        establishing a PASE connection.                          \n",
+       "                                                        This function is intended to be used in conjunction with \n",
+       "                                                        `EstablishPASESessionBLE` or                             \n",
+       "                                                        `EstablishPASESessionIP`. It can be called either before \n",
+       "                                                        or after the DevicePairingDelegate                       \n",
+       "                                                        receives the OnPairingComplete call. Commissioners that  \n",
+       "                                                        want to perform simple                                   \n",
+       "                                                        auto-commissioning should use the supplied               \n",
+       "                                                        \"CommissionWithCode\" function, which will                \n",
+       "                                                        establish the PASE connection and commission             \n",
+       "                                                        automatically.                                           \n",
+       "                                                                                                                 \n",
+       "                                                        Raises a ChipStackError on failure.                      \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - Effective Node ID of the device (as defined by the \n",
+       "                                                        assigned NOC)                                            \n",
+       "                          CommissioningWindowPasscode = class CommissioningWindowPasscode(value, names=None, *,  \n",
+       "                                                        module=None, qualname=None, type=None, start=1): An      \n",
+       "                                                        enumeration.                                             \n",
+       "                                         CommissionIP = async def CommissionIP(ipaddr: 'str', setupPinCode:      \n",
+       "                                                        'int', nodeid: 'int') -> 'int':                          \n",
+       "                                                        DEPRECATED, DO NOT USE! Use `CommissionOnNetwork` or     \n",
+       "                                                        `CommissionWithCode`                                     \n",
+       "                                                                                                                 \n",
+       "                                                        Raises a ChipStackError on failure.                      \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - Effective Node ID of the device (as defined by the \n",
+       "                                                        assigned NOC)                                            \n",
+       "                                  CommissionOnNetwork = async def CommissionOnNetwork(nodeId: 'int',             \n",
+       "                                                        setupPinCode: 'int', filterType: 'DiscoveryFilterType' = \n",
+       "                                                        <FilterType.NONE: 0>, filter: 'typing.Any' = None,       \n",
+       "                                                        discoveryTimeoutMsec: 'int' = 30000) -> 'int':           \n",
+       "                                                        Does the routine for OnNetworkCommissioning, with a      \n",
+       "                                                        filter for mDNS discovery.                               \n",
+       "                                                        Supported filters are:                                   \n",
+       "                                                                                                                 \n",
+       "                                                            DiscoveryFilterType.NONE                             \n",
+       "                                                            DiscoveryFilterType.SHORT_DISCRIMINATOR              \n",
+       "                                                            DiscoveryFilterType.LONG_DISCRIMINATOR               \n",
+       "                                                            DiscoveryFilterType.VENDOR_ID                        \n",
+       "                                                            DiscoveryFilterType.DEVICE_TYPE                      \n",
+       "                                                            DiscoveryFilterType.COMMISSIONING_MODE               \n",
+       "                                                            DiscoveryFilterType.INSTANCE_NAME                    \n",
+       "                                                            DiscoveryFilterType.COMMISSIONER                     \n",
+       "                                                            DiscoveryFilterType.COMPRESSED_FABRIC_ID             \n",
+       "                                                                                                                 \n",
+       "                                                        The filter can be an integer, a string or None depending \n",
+       "                                                        on the actual type of selected filter.                   \n",
+       "                                                                                                                 \n",
+       "                                                        Raises a ChipStackError on failure.                      \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - Effective Node ID of the device (as defined by the \n",
+       "                                                        assigned NOC)                                            \n",
+       "                                     CommissionThread = async def CommissionThread(discriminator, setupPinCode,  \n",
+       "                                                        nodeId, threadOperationalDataset: 'bytes',               \n",
+       "                                                        isShortDiscriminator: 'bool' = False) -> 'int':          \n",
+       "                                                        Commissions a Thread device over BLE                     \n",
+       "                                       CommissionWiFi = async def CommissionWiFi(discriminator, setupPinCode,    \n",
+       "                                                        nodeId, ssid: 'str', credentials: 'str',                 \n",
+       "                                                        isShortDiscriminator: 'bool' = False) -> 'int':          \n",
+       "                                                        Commissions a Wi-Fi device over BLE.                     \n",
+       "                                   CommissionWithCode = async def CommissionWithCode(setupPayload: 'str',        \n",
+       "                                                        nodeid: 'int', discoveryType: 'DiscoveryType' =          \n",
+       "                                                        <DiscoveryType.DISCOVERY_ALL: 2>) -> 'int':              \n",
+       "                                                        Commission with the given nodeid from the setupPayload.  \n",
+       "                                                            setupPayload may be a QR or manual code.             \n",
+       "                                                                                                                 \n",
+       "                                                            Raises a ChipStackError on failure.                  \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - Effective Node ID of the device (as defined by the \n",
+       "                                                        assigned NOC)                                            \n",
+       "                              ComputeRoundTripTimeout = def ComputeRoundTripTimeout(nodeid,                      \n",
+       "                                                        upperLayerProcessingTimeoutMs: 'int' = 0):               \n",
+       "                                                        Returns a computed timeout value based on the round-trip \n",
+       "                                                        time it takes for the peer at the other end of the       \n",
+       "                                                        session to                                               \n",
+       "                                                        receive a message, process it and send it back. This is  \n",
+       "                                                        computed based on the session type, the type of          \n",
+       "                                                        transport,                                               \n",
+       "                                                        sleepy characteristics of the target and a               \n",
+       "                                                        caller-provided value for the time it takes to process a \n",
+       "                                                        message                                                  \n",
+       "                                                        at the upper layer on the target For group sessions.     \n",
+       "                                                                                                                 \n",
+       "                                                        This will result in a session being established if one   \n",
+       "                                                        wasn't already.                                          \n",
+       "                                           ConnectBLE = async def ConnectBLE(discriminator: 'int', setupPinCode: \n",
+       "                                                        'int', nodeid: 'int', isShortDiscriminator: 'bool' =     \n",
+       "                                                        False) -> 'int':                                         \n",
+       "                                                        Connect to a BLE device using the given discriminator    \n",
+       "                                                        and setup pin code.                                      \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - Effective Node ID of the device (as defined by the \n",
+       "                                                        assigned NOC)                                            \n",
+       "                                     CreateManualCode = def CreateManualCode(discriminator: 'int', passcode:     \n",
+       "                                                        'int') -> 'str': Creates a standard flow manual code     \n",
+       "                                                        from the given discriminator and passcode.               \n",
+       "                               DisableICDRegistration = def DisableICDRegistration(): Disables ICD registration. \n",
+       "                          DiscoverCommissionableNodes = async def DiscoverCommissionableNodes(filterType:        \n",
+       "                                                        'discovery.FilterType' = <FilterType.NONE: 0>, filter:   \n",
+       "                                                        'typing.Any' = None, stopOnFirst: 'bool' = False,        \n",
+       "                                                        timeoutSecond: 'int' = 5) -> 'typing.Union[None,         \n",
+       "                                                        CommissionableNode, typing.List[CommissionableNode]]':   \n",
+       "                                                        Discover commissionable nodes via DNS-SD with specified  \n",
+       "                                                        filters.                                                 \n",
+       "                                                        Supported filters are:                                   \n",
+       "                                                                                                                 \n",
+       "                                                            discovery.FilterType.NONE                            \n",
+       "                                                            discovery.FilterType.SHORT_DISCRIMINATOR             \n",
+       "                                                            discovery.FilterType.LONG_DISCRIMINATOR              \n",
+       "                                                            discovery.FilterType.VENDOR_ID                       \n",
+       "                                                            discovery.FilterType.DEVICE_TYPE                     \n",
+       "                                                            discovery.FilterType.COMMISSIONING_MODE              \n",
+       "                                                            discovery.FilterType.INSTANCE_NAME                   \n",
+       "                                                            discovery.FilterType.COMMISSIONER                    \n",
+       "                                                            discovery.FilterType.COMPRESSED_FABRIC_ID            \n",
+       "                                                                                                                 \n",
+       "                                                        This function will always return a list of               \n",
+       "                                                        CommissionableDevice. When stopOnFirst is set,           \n",
+       "                                                        this function will return when at least one device is    \n",
+       "                                                        discovered or on timeout.                                \n",
+       "                                EnableICDRegistration = def EnableICDRegistration(parameters:                    \n",
+       "                                                        'ICDRegistrationParameters'):                            \n",
+       "                                                        Enables ICD registration for the following commissioning \n",
+       "                                                        session.                                                 \n",
+       "                                                                                                                 \n",
+       "                                                        Args:                                                    \n",
+       "                                                            parameters: A ICDRegistrationParameters for the      \n",
+       "                                                        parameters used for ICD registration, or None for        \n",
+       "                                                        default arguments.                                       \n",
+       "                                 EstablishPASESession = async def EstablishPASESession(setUpCode: 'str', nodeid: \n",
+       "                                                        'int') -> 'None':                                        \n",
+       "                              EstablishPASESessionBLE = async def EstablishPASESessionBLE(setupPinCode: 'int',   \n",
+       "                                                        discriminator: 'int', nodeid: 'int') -> 'None':          \n",
+       "                               EstablishPASESessionIP = async def EstablishPASESessionIP(ipaddr: 'str',          \n",
+       "                                                        setupPinCode: 'int', nodeid: 'int', port: 'int' = 0) ->  \n",
+       "                                                        'None':                                                  \n",
+       "                                       ExpireSessions = def ExpireSessions(nodeid):                              \n",
+       "                                                        Close all sessions with `nodeid` (if any existed) so     \n",
+       "                                                        that sessions get re-established.                        \n",
+       "                                                                                                                 \n",
+       "                                                        This is needed to properly handle operations that        \n",
+       "                                                        invalidate a node's state, such as                       \n",
+       "                                                        UpdateNOC.                                               \n",
+       "                                                                                                                 \n",
+       "                                                        WARNING: ONLY CALL THIS IF YOU UNDERSTAND THE            \n",
+       "                                                        SIDE-EFFECTS                                             \n",
+       "                           FindOrEstablishPASESession = async def FindOrEstablishPASESession(setupCode: 'str',   \n",
+       "                                                        nodeid: 'int', timeoutMs: 'typing.Optional[int]' = None) \n",
+       "                                                        -> 'typing.Optional[DeviceProxyWrapper]': Returns        \n",
+       "                                                        CommissioneeDeviceProxy if we can find or establish a    \n",
+       "                                                        PASE connection to the specified device                  \n",
+       "                    GenerateICDRegistrationParameters = def GenerateICDRegistrationParameters(): Generates ICD   \n",
+       "                                                        registration parameters for this controller.             \n",
+       "                                    GetAddressAndPort = def GetAddressAndPort(nodeid):                           \n",
+       "                                    GetClusterHandler = def GetClusterHandler():                                 \n",
+       "                                GetCompressedFabricId = def GetCompressedFabricId():                             \n",
+       "                                   GetConnectedDevice = async def GetConnectedDevice(nodeid, allowPASE: 'bool' = \n",
+       "                                                        True, timeoutMs: 'typing.Optional[int]' = None,          \n",
+       "                                                        payloadCapability: 'int' = 0):                           \n",
+       "                                                        Gets an OperationalDeviceProxy or                        \n",
+       "                                                        CommissioneeDeviceProxy for the specified Node.          \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Target's Node ID                                 \n",
+       "                                                        allowPASE: Get a device proxy of a device being          \n",
+       "                                                        commissioned.                                            \n",
+       "                                                        timeoutMs: Timeout for a timed invoke request. Omit or   \n",
+       "                                                        set to 'None' to indicate a non-timed request.           \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - DeviceProxyWrapper on success                      \n",
+       "                               GetConnectedDeviceSync = def GetConnectedDeviceSync(nodeid, allowPASE=True,       \n",
+       "                                                        timeoutMs: 'typing.Optional[int]' = None,                \n",
+       "                                                        payloadCapability: 'int' = 0):                           \n",
+       "                                                        Gets an OperationalDeviceProxy or                        \n",
+       "                                                        CommissioneeDeviceProxy for the specified Node.          \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Target's Node ID                                 \n",
+       "                                                        allowPASE: Get a device proxy of a device being          \n",
+       "                                                        commissioned.                                            \n",
+       "                                                        timeoutMs: Timeout for a timed invoke request. Omit or   \n",
+       "                                                        set to 'None' to indicate a non-timed request.           \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - DeviceProxyWrapper on success                      \n",
+       "                                 GetDiscoveredDevices = async def GetDiscoveredDevices():                        \n",
+       "                                 GetFabricCheckResult = def GetFabricCheckResult() -> 'int': Returns the fabric  \n",
+       "                                                        check result if SetCheckMatchingFabric was used.         \n",
+       "                                  GetFabricIdInternal = def GetFabricIdInternal(): Get the fabric ID from the    \n",
+       "                                                        object. Only used to validate cached value from          \n",
+       "                                                        property.                                                \n",
+       "                               GetFabricIndexInternal = def GetFabricIndexInternal(): Get the fabric index from  \n",
+       "                                                        the object. Only used to validate cached value from      \n",
+       "                                                        property.                                                \n",
+       "                             GetIPForDiscoveredDevice = def GetIPForDiscoveredDevice(idx, addrStr, length):      \n",
+       "                                    GetNodeIdInternal = def GetNodeIdInternal() -> 'int': Get the node ID from   \n",
+       "                                                        the object. Only used to validate cached value from      \n",
+       "                                                        property.                                                \n",
+       "                           GetRemoteSessionParameters = def GetRemoteSessionParameters(nodeid) ->                \n",
+       "                                                        'typing.Optional[SessionParameters]':                    \n",
+       "                                                        Returns the SessionParameters of reported by the remote  \n",
+       "                                                        node associated with `nodeid`.                           \n",
+       "                                                        If there is some error in getting SessionParameters None \n",
+       "                                                        is returned.                                             \n",
+       "                                                                                                                 \n",
+       "                                                        This will result in a session being established if one   \n",
+       "                                                        wasn't already established.                              \n",
+       "                              GetTestCommissionerUsed = def GetTestCommissionerUsed():                           \n",
+       "                                 InitGroupTestingData = def InitGroupTestingData(): Populates the Device         \n",
+       "                                                        Controller's GroupDataProvider with known test group     \n",
+       "                                                        info and keys.                                           \n",
+       "                                          IsConnected = def IsConnected():                                       \n",
+       "                                        IssueNOCChain = async def IssueNOCChain(csr:                             \n",
+       "                                                        'Clusters.OperationalCredentials.Commands.CSRResponse',  \n",
+       "                                                        nodeId: 'int'):                                          \n",
+       "                                                        Issue an NOC chain using the associated                  \n",
+       "                                                        OperationalCredentialsDelegate.                          \n",
+       "                                                        The NOC chain will be provided in TLV cert format.       \n",
+       "                                     NOCChainCallback = def NOCChainCallback(nocChain):                          \n",
+       "                              OpenCommissioningWindow = async def OpenCommissioningWindow(nodeid: 'int',         \n",
+       "                                                        timeout: 'int', iteration: 'int', discriminator: 'int',  \n",
+       "                                                        option: 'CommissioningWindowPasscode') ->                \n",
+       "                                                        'CommissioningParameters':                               \n",
+       "                                                        Opens a commissioning window on the device with the      \n",
+       "                                                        given nodeid.                                            \n",
+       "                                                        nodeid:        Node id of the device                     \n",
+       "                                                        timeout:       Command timeout                           \n",
+       "                                                        iteration:     The PAKE iteration count associated with  \n",
+       "                                                        the PAKE Passcode ID and ephemeral                       \n",
+       "                                                                       PAKE passcode verifier to be used for     \n",
+       "                                                        this commissioning. Valid range: 1000 - 100000           \n",
+       "                                                                       Ignored if option == 0                    \n",
+       "                                                        discriminator: The long discriminator for the DNS-SD     \n",
+       "                                                        advertisement. Valid range: 0-4095                       \n",
+       "                                                                       Ignored if option == 0                    \n",
+       "                                                        option:        0 = kOriginalSetupCode                    \n",
+       "                                                                       1 = kTokenWithRandomPIN                   \n",
+       "                                                                                                                 \n",
+       "                                                        Returns CommissioningParameters                          \n",
+       "                                                 Read = async def Read(nodeid: 'int', attributes:                \n",
+       "                                                        'typing.Optional[typing.List[typing.Union[None,          \n",
+       "                                                        typing.Tuple[int],                                       \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.Cluster]],       \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.ClusterAttribut… \n",
+       "                                                        typing.Tuple[int, typing.Type[ClusterObjects.Cluster]],  \n",
+       "                                                        typing.Tuple[int,                                        \n",
+       "                                                        typing.Type[ClusterObjects.ClusterAttributeDescriptor]], \n",
+       "                                                        ClusterAttribute.AttributePath]]]' = None,               \n",
+       "                                                        dataVersionFilters:                                      \n",
+       "                                                        'typing.Optional[typing.List[typing.Tuple[int,           \n",
+       "                                                        typing.Type[ClusterObjects.Cluster], int]]]' = None,     \n",
+       "                                                        events: 'typing.Optional[typing.List[typing.Union[None,  \n",
+       "                                                        typing.Tuple[str, int], typing.Tuple[int, int],          \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.Cluster], int],  \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.ClusterEvent],   \n",
+       "                                                        int], typing.Tuple[int,                                  \n",
+       "                                                        typing.Type[ClusterObjects.Cluster], int],               \n",
+       "                                                        typing.Tuple[int,                                        \n",
+       "                                                        typing.Type[ClusterObjects.ClusterEvent], int]]]]' =     \n",
+       "                                                        None, eventNumberFilter: 'typing.Optional[int]' = None,  \n",
+       "                                                        returnClusterObject: 'bool' = False, reportInterval:     \n",
+       "                                                        'typing.Optional[typing.Tuple[int, int]]' = None,        \n",
+       "                                                        fabricFiltered: 'bool' = True, keepSubscriptions: 'bool' \n",
+       "                                                        = False, autoResubscribe: 'bool' = True,                 \n",
+       "                                                        payloadCapability: 'int' = 0):                           \n",
+       "                                                        Read a list of attributes and/or events from a target    \n",
+       "                                                        node                                                     \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Target's Node ID                                 \n",
+       "                                                        attributes: A list of tuples of varying types depending  \n",
+       "                                                        on the type of read being requested:                     \n",
+       "                                                            (endpoint, Clusters.ClusterA.AttributeA):   Endpoint \n",
+       "                                                        = specific,    Cluster = specific,   Attribute =         \n",
+       "                                                        specific                                                 \n",
+       "                                                            (endpoint, Clusters.ClusterA):              Endpoint \n",
+       "                                                        = specific,    Cluster = specific,   Attribute = *       \n",
+       "                                                            (Clusters.ClusterA.AttributeA):             Endpoint \n",
+       "                                                        = *,           Cluster = specific,   Attribute =         \n",
+       "                                                        specific                                                 \n",
+       "                                                            endpoint:                                   Endpoint \n",
+       "                                                        = specific,    Cluster = *,          Attribute = *       \n",
+       "                                                            Clusters.ClusterA:                          Endpoint \n",
+       "                                                        = *,           Cluster = specific,   Attribute = *       \n",
+       "                                                            '*' or ():                                  Endpoint \n",
+       "                                                        = *,           Cluster = *,          Attribute = *       \n",
+       "                                                                                                                 \n",
+       "                                                            The cluster and attributes specified above are to be \n",
+       "                                                        selected from the generated cluster objects.             \n",
+       "                                                                                                                 \n",
+       "                                                            e.g.                                                 \n",
+       "                                                                ReadAttribute(1, [ 1 ] ) -- case 4 above.        \n",
+       "                                                                ReadAttribute(1, [ Clusters.BasicInformation ] ) \n",
+       "                                                        -- case 5 above.                                         \n",
+       "                                                                ReadAttribute(1, [ (1,                           \n",
+       "                                                        Clusters.BasicInformation.Attributes.Location ] ) --     \n",
+       "                                                        case 1 above.                                            \n",
+       "                                                                                                                 \n",
+       "                                                            An AttributePath can also be specified directly by   \n",
+       "                                                        [chip.cluster.Attribute.AttributePath(...)]              \n",
+       "                                                                                                                 \n",
+       "                                                        dataVersionFilters: A list of tuples of (endpoint,       \n",
+       "                                                        cluster, data version).                                  \n",
+       "                                                                                                                 \n",
+       "                                                        events: A list of tuples of varying types depending on   \n",
+       "                                                        the type of read being requested:                        \n",
+       "                                                            (endpoint, Clusters.ClusterA.EventA, urgent):        \n",
+       "                                                        Endpoint = specific,                                     \n",
+       "                                                         \n",
+       "                                                        = specific,   Event = specific, Urgent = True/False      \n",
+       "                                                            (endpoint, Clusters.ClusterA, urgent):               \n",
+       "                                                        Endpoint = specific,                                     \n",
+       "                                                         \n",
+       "                                                        = specific,   Event = *, Urgent = True/False             \n",
+       "                                                            (Clusters.ClusterA.EventA, urgent):                  \n",
+       "                                                        Endpoint = *,                                            \n",
+       "                                                         \n",
+       "                                                        = specific,   Event = specific, Urgent = True/False      \n",
+       "                                                            endpoint:                                   Endpoint \n",
+       "                                                        = specific,    Cluster = *,          Event = *, Urgent = \n",
+       "                                                        True/False                                               \n",
+       "                                                            Clusters.ClusterA:                          Endpoint \n",
+       "                                                        = *,          Cluster = specific,    Event = *, Urgent = \n",
+       "                                                        True/False                                               \n",
+       "                                                            '*' or ():                                  Endpoint \n",
+       "                                                        = *,          Cluster = *,          Event = *, Urgent =  \n",
+       "                                                        True/False                                               \n",
+       "                                                                                                                 \n",
+       "                                                        eventNumberFilter: Optional minimum event number filter. \n",
+       "                                                                                                                 \n",
+       "                                                        returnClusterObject: This returns the data as            \n",
+       "                                                        consolidated cluster objects, with all attributes for a  \n",
+       "                                                        cluster inside                                           \n",
+       "                                                                             a single cluster-wide cluster       \n",
+       "                                                        object.                                                  \n",
+       "                                                                                                                 \n",
+       "                                                        reportInterval: A tuple of two int-s for                 \n",
+       "                                                        (MinIntervalFloor, MaxIntervalCeiling). Used by          \n",
+       "                                                        establishing subscriptions.                              \n",
+       "                                                            When not provided, a read request will be sent.      \n",
+       "                                                        fabricFiltered: If True (default), the read/subscribe is \n",
+       "                                                        fabric-filtered and will only see things associated with \n",
+       "                                                        the fabric                                               \n",
+       "                                                            of the reader/subscriber. Relevant for attributes    \n",
+       "                                                        with fabric-scoped data.                                 \n",
+       "                                                        keepSubscriptions: Keep existing subscriptions. If set   \n",
+       "                                                        to False, existing subscriptions with this node will get \n",
+       "                                                        cancelled                                                \n",
+       "                                                            and a new one gets setup.                            \n",
+       "                                                        autoResubscribe: Automatically resubscribe to the        \n",
+       "                                                        subscription if subscription is lost. The automatic      \n",
+       "                                                        re-subscription only                                     \n",
+       "                                                            applies if the subscription establishes on first     \n",
+       "                                                        try. If the first subscription establishment attempt     \n",
+       "                                                        fails the function                                       \n",
+       "                                                            returns right away.                                  \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - AsyncReadTransaction.ReadResponse. Please see      \n",
+       "                                                        ReadAttribute and ReadEvent for examples of how to       \n",
+       "                                                        access data.                                             \n",
+       "                                                                                                                 \n",
+       "                                                        Raises:                                                  \n",
+       "                                                            - InteractionModelError (chip.interaction_model) on  \n",
+       "                                                        error                                                    \n",
+       "                                        ReadAttribute = async def ReadAttribute(nodeid: 'int', attributes:       \n",
+       "                                                        'typing.Optional[typing.List[typing.Union[None,          \n",
+       "                                                        typing.Tuple[int],                                       \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.Cluster]],       \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.ClusterAttribut… \n",
+       "                                                        typing.Tuple[int, typing.Type[ClusterObjects.Cluster]],  \n",
+       "                                                        typing.Tuple[int,                                        \n",
+       "                                                        typing.Type[ClusterObjects.ClusterAttributeDescriptor]], \n",
+       "                                                        ClusterAttribute.AttributePath]]]', dataVersionFilters:  \n",
+       "                                                        'typing.Optional[typing.List[typing.Tuple[int,           \n",
+       "                                                        typing.Type[ClusterObjects.Cluster], int]]]' = None,     \n",
+       "                                                        returnClusterObject: 'bool' = False, reportInterval:     \n",
+       "                                                        'typing.Optional[typing.Tuple[int, int]]' = None,        \n",
+       "                                                        fabricFiltered: 'bool' = True, keepSubscriptions: 'bool' \n",
+       "                                                        = False, autoResubscribe: 'bool' = True,                 \n",
+       "                                                        payloadCapability: 'int' = 0):                           \n",
+       "                                                        Read a list of attributes from a target node, this is a  \n",
+       "                                                        wrapper of DeviceController.Read()                       \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Target's Node ID                                 \n",
+       "                                                        attributes: A list of tuples of varying types depending  \n",
+       "                                                        on the type of read being requested:                     \n",
+       "                                                            (endpoint, Clusters.ClusterA.AttributeA):   Endpoint \n",
+       "                                                        = specific,    Cluster = specific,   Attribute =         \n",
+       "                                                        specific                                                 \n",
+       "                                                            (endpoint, Clusters.ClusterA):              Endpoint \n",
+       "                                                        = specific,    Cluster = specific,   Attribute = *       \n",
+       "                                                            (Clusters.ClusterA.AttributeA):             Endpoint \n",
+       "                                                        = *,           Cluster = specific,   Attribute =         \n",
+       "                                                        specific                                                 \n",
+       "                                                            endpoint:                                   Endpoint \n",
+       "                                                        = specific,    Cluster = *,          Attribute = *       \n",
+       "                                                            Clusters.ClusterA:                          Endpoint \n",
+       "                                                        = *,           Cluster = specific,   Attribute = *       \n",
+       "                                                            '*' or ():                                  Endpoint \n",
+       "                                                        = *,           Cluster = *,          Attribute = *       \n",
+       "                                                                                                                 \n",
+       "                                                            The cluster and attributes specified above are to be \n",
+       "                                                        selected from the generated cluster objects.             \n",
+       "                                                                                                                 \n",
+       "                                                            e.g.                                                 \n",
+       "                                                                ReadAttribute(1, [ 1 ] ) -- case 4 above.        \n",
+       "                                                                ReadAttribute(1, [ Clusters.BasicInformation ] ) \n",
+       "                                                        -- case 5 above.                                         \n",
+       "                                                                ReadAttribute(1, [ (1,                           \n",
+       "                                                        Clusters.BasicInformation.Attributes.Location ] ) --     \n",
+       "                                                        case 1 above.                                            \n",
+       "                                                                                                                 \n",
+       "                                                            An AttributePath can also be specified directly by   \n",
+       "                                                        [chip.cluster.Attribute.AttributePath(...)]              \n",
+       "                                                                                                                 \n",
+       "                                                        returnClusterObject: This returns the data as            \n",
+       "                                                        consolidated cluster objects, with all attributes for a  \n",
+       "                                                        cluster inside                                           \n",
+       "                                                                             a single cluster-wide cluster       \n",
+       "                                                        object.                                                  \n",
+       "                                                                                                                 \n",
+       "                                                        reportInterval: A tuple of two int-s for                 \n",
+       "                                                        (MinIntervalFloor, MaxIntervalCeiling). Used by          \n",
+       "                                                        establishing subscriptions.                              \n",
+       "                                                            When not provided, a read request will be sent.      \n",
+       "                                                        fabricFiltered: If True (default), the read/subscribe is \n",
+       "                                                        fabric-filtered and will only see things associated with \n",
+       "                                                        the fabric                                               \n",
+       "                                                            of the reader/subscriber. Relevant for attributes    \n",
+       "                                                        with fabric-scoped data.                                 \n",
+       "                                                        keepSubscriptions: Keep existing subscriptions. If set   \n",
+       "                                                        to False, existing subscriptions with this node will get \n",
+       "                                                        cancelled                                                \n",
+       "                                                            and a new one gets setup.                            \n",
+       "                                                        autoResubscribe: Automatically resubscribe to the        \n",
+       "                                                        subscription if subscription is lost. The automatic      \n",
+       "                                                        re-subscription only                                     \n",
+       "                                                            applies if the subscription establishes on first     \n",
+       "                                                        try. If the first subscription establishment attempt     \n",
+       "                                                        fails the function                                       \n",
+       "                                                            returns right away.                                  \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - subscription request:                              \n",
+       "                                                        ClusterAttribute.SubscriptionTransaction                 \n",
+       "                                                                                    To get notified on attribute \n",
+       "                                                        change use SetAttributeUpdateCallback on the returned    \n",
+       "                                                                                    SubscriptionTransaction.     \n",
+       "                                                        This is used to set a callback function, which is a      \n",
+       "                                                        callable of                                              \n",
+       "                                                                                    type                         \n",
+       "                                                        Callable[[TypedAttributePath, SubscriptionTransaction],  \n",
+       "                                                        None]                                                    \n",
+       "                                                                                    Get the attribute value from \n",
+       "                                                        the change path using GetAttribute on the                \n",
+       "                                                        SubscriptionTransaction                                  \n",
+       "                                                                                    You can await changes in the \n",
+       "                                                        main loop using a trigger mechanism from the callback.   \n",
+       "                                                                                    ex. queue.SimpleQueue        \n",
+       "                                                                                                                 \n",
+       "                                                            - read request:                                      \n",
+       "                                                        AsyncReadTransaction.ReadResponse.attributes.            \n",
+       "                                                                            This is of type                      \n",
+       "                                                        AttributeCache.attributeCache (Attribute.py),            \n",
+       "                                                                            which is a dict mapping endpoints to \n",
+       "                                                        a list of Cluster (ClusterObjects.py) classes            \n",
+       "                                                                            (dict[int, List[Cluster]])           \n",
+       "                                                                            Access as                            \n",
+       "                                                        returned_object[endpoint_id][<Cluster class>][<Attribute \n",
+       "                                                        class>]                                                  \n",
+       "                                                                            Ex. To access the OnTime attribute   \n",
+       "                                                        from the OnOff cluster on endpoint 1                     \n",
+       "                                                                            returned_object[1][Clusters.OnOff][ \n",
+       "                                                                                                                 \n",
+       "                                                        Raises:                                                  \n",
+       "                                                            - InteractionModelError (chip.interaction_model) on  \n",
+       "                                                        error                                                    \n",
+       "                                            ReadEvent = async def ReadEvent(nodeid: 'int', events:               \n",
+       "                                                        'typing.List[typing.Union[None, typing.Tuple[str, int],  \n",
+       "                                                        typing.Tuple[int, int],                                  \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.Cluster], int],  \n",
+       "                                                        typing.Tuple[typing.Type[ClusterObjects.ClusterEvent],   \n",
+       "                                                        int], typing.Tuple[int,                                  \n",
+       "                                                        typing.Type[ClusterObjects.Cluster], int],               \n",
+       "                                                        typing.Tuple[int,                                        \n",
+       "                                                        typing.Type[ClusterObjects.ClusterEvent], int]]]',       \n",
+       "                                                        eventNumberFilter: 'typing.Optional[int]' = None,        \n",
+       "                                                        fabricFiltered: 'bool' = True, reportInterval:           \n",
+       "                                                        'typing.Optional[typing.Tuple[int, int]]' = None,        \n",
+       "                                                        keepSubscriptions: 'bool' = False, autoResubscribe:      \n",
+       "                                                        'bool' = True, payloadCapability: 'int' = 0):            \n",
+       "                                                        Read a list of events from a target node, this is a      \n",
+       "                                                        wrapper of DeviceController.Read()                       \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Target's Node ID                                 \n",
+       "                                                        events: A list of tuples of varying types depending on   \n",
+       "                                                        the type of read being requested:                        \n",
+       "                                                            (endpoint, Clusters.ClusterA.EventA, urgent):        \n",
+       "                                                        Endpoint = specific,                                     \n",
+       "                                                         \n",
+       "                                                        = specific,   Event = specific, Urgent = True/False      \n",
+       "                                                            (endpoint, Clusters.ClusterA, urgent):               \n",
+       "                                                        Endpoint = specific,                                     \n",
+       "                                                         \n",
+       "                                                        = specific,   Event = *, Urgent = True/False             \n",
+       "                                                            (Clusters.ClusterA.EventA, urgent):                  \n",
+       "                                                        Endpoint = *,                                            \n",
+       "                                                         \n",
+       "                                                        = specific,   Event = specific, Urgent = True/False      \n",
+       "                                                            endpoint:                                   Endpoint \n",
+       "                                                        = specific,    Cluster = *,          Event = *, Urgent = \n",
+       "                                                        True/False                                               \n",
+       "                                                            Clusters.ClusterA:                          Endpoint \n",
+       "                                                        = *,          Cluster = specific,    Event = *, Urgent = \n",
+       "                                                        True/False                                               \n",
+       "                                                            '*' or ():                                  Endpoint \n",
+       "                                                        = *,          Cluster = *,          Event = *, Urgent =  \n",
+       "                                                        True/False                                               \n",
+       "                                                                                                                 \n",
+       "                                                        The cluster and events specified above are to be         \n",
+       "                                                        selected from the generated cluster objects.             \n",
+       "                                                                                                                 \n",
+       "                                                        e.g.                                                     \n",
+       "                                                            ReadEvent(1, [ 1 ] ) -- case 4 above.                \n",
+       "                                                            ReadEvent(1, [ Clusters.BasicInformation ] ) -- case \n",
+       "                                                        5 above.                                                 \n",
+       "                                                            ReadEvent(1, [ (1,                                   \n",
+       "                                                        Clusters.BasicInformation.Events.Location ] ) -- case 1  \n",
+       "                                                        above.                                                   \n",
+       "                                                                                                                 \n",
+       "                                                        eventNumberFilter: Optional minimum event number filter. \n",
+       "                                                        reportInterval: A tuple of two int-s for                 \n",
+       "                                                        (MinIntervalFloor, MaxIntervalCeiling). Used by          \n",
+       "                                                        establishing subscriptions.                              \n",
+       "                                                            When not provided, a read request will be sent.      \n",
+       "                                                        keepSubscriptions: Keep existing subscriptions. If set   \n",
+       "                                                        to False, existing subscriptions with this node will get \n",
+       "                                                        cancelled                                                \n",
+       "                                                            and a new one gets setup.                            \n",
+       "                                                        autoResubscribe: Automatically resubscribe to the        \n",
+       "                                                        subscription if subscription is lost. The automatic      \n",
+       "                                                        re-subscription only                                     \n",
+       "                                                            applies if the subscription establishes on first     \n",
+       "                                                        try. If the first subscription establishment attempt     \n",
+       "                                                        fails the function                                       \n",
+       "                                                            returns right away.                                  \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - subscription request:                              \n",
+       "                                                        ClusterAttribute.SubscriptionTransaction                 \n",
+       "                                                                                    To get notified on event     \n",
+       "                                                        subscriptions, use the SetEventUpdateCallback function   \n",
+       "                                                        on the                                                   \n",
+       "                                                                                    returned                     \n",
+       "                                                        SubscriptionTransaction. This is a callable of type      \n",
+       "                                                                                    Callable[[EventReadResult,   \n",
+       "                                                        SubscriptionTransaction], None]                          \n",
+       "                                                                                    You can await events using a \n",
+       "                                                        trigger mechanism in the callback. ex. queue.SimpleQueue \n",
+       "                                                                                                                 \n",
+       "                                                            - read request:                                      \n",
+       "                                                        AsyncReadTransaction.ReadResponse.events.                \n",
+       "                                                                            This is a List[ClusterEvent].        \n",
+       "                                                                                                                 \n",
+       "                                                        Raises:                                                  \n",
+       "                                                            - InteractionModelError (chip.interaction_model) on  \n",
+       "                                                        error                                                    \n",
+       "                         ResetCommissioningParameters = def ResetCommissioningParameters(): Sets the             \n",
+       "                                                        commissioning parameters back to the default values.     \n",
+       "                                ResetTestCommissioner = def ResetTestCommissioner():                             \n",
+       "                                          ResolveNode = def ResolveNode(nodeid):                                 \n",
+       "                                    SendBatchCommands = async def SendBatchCommands(nodeid: 'int', commands:     \n",
+       "                                                        'typing.List[ClusterCommand.InvokeRequestInfo]',         \n",
+       "                                                        timedRequestTimeoutMs: 'typing.Optional[int]' = None,    \n",
+       "                                                        interactionTimeoutMs: 'typing.Optional[int]' = None,     \n",
+       "                                                        busyWaitMs: 'typing.Optional[int]' = None,               \n",
+       "                                                        suppressResponse: 'typing.Optional[bool]' = None,        \n",
+       "                                                        payloadCapability: 'int' = 0):                           \n",
+       "                                                        Send a batch of cluster-object encapsulated commands to  \n",
+       "                                                        a node and get returned a future that can be awaited     \n",
+       "                                                        upon to receive                                          \n",
+       "                                                        the responses. If a valid responseType is passed in,     \n",
+       "                                                        that will be used to de-serialize the object. If not,    \n",
+       "                                                        the type will be automatically deduced from the metadata \n",
+       "                                                        received over the wire.                                  \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Target's Node ID                                 \n",
+       "                                                        commands: A list of InvokeRequestInfo containing the     \n",
+       "                                                        commands to invoke.                                      \n",
+       "                                                        timedWriteTimeoutMs: Timeout for a timed invoke request. \n",
+       "                                                        Omit or set to 'None' to indicate a non-timed request.   \n",
+       "                                                        interactionTimeoutMs: Overall timeout for the            \n",
+       "                                                        interaction. Omit or set to 'None' to have the SDK       \n",
+       "                                                        automatically compute the                                \n",
+       "                                                                              right timeout value based on       \n",
+       "                                                        transport characteristics as well as the responsiveness  \n",
+       "                                                        of the target.                                           \n",
+       "                                                        busyWaitMs: How long to wait in ms after sending command \n",
+       "                                                        to device before performing any other operations.        \n",
+       "                                                        suppressResponse: Do not send a response to this action  \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - List of command responses in the same order as     \n",
+       "                                                        what was given in `commands`. The type of the response   \n",
+       "                                                        is defined by the command.                               \n",
+       "                                                                      - A value of `None` indicates success.     \n",
+       "                                                                      - If only a single command fails, for      \n",
+       "                                                        example with `UNSUPPORTED_COMMAND`, the corresponding    \n",
+       "                                                        index associated with the command will,                  \n",
+       "                                                                        contain                                  \n",
+       "                                                        `interaction_model.Status.UnsupportedCommand`.           \n",
+       "                                                                      - If a command is not responded to by      \n",
+       "                                                        server, command will contain                             \n",
+       "                                                        `interaction_model.Status.NoCommandResponse`             \n",
+       "                                                        Raises:                                                  \n",
+       "                                                            - InteractionModelError if error with sending of     \n",
+       "                                                        InvokeRequestMessage fails as a whole.                   \n",
+       "                                          SendCommand = async def SendCommand(nodeid: 'int', endpoint: 'int',    \n",
+       "                                                        payload: 'ClusterObjects.ClusterCommand',                \n",
+       "                                                        responseType=None, timedRequestTimeoutMs:                \n",
+       "                                                        'typing.Optional[int]' = None, interactionTimeoutMs:     \n",
+       "                                                        'typing.Optional[int]' = None, busyWaitMs:               \n",
+       "                                                        'typing.Optional[int]' = None, suppressResponse:         \n",
+       "                                                        'typing.Optional[bool]' = None, payloadCapability: 'int' \n",
+       "                                                        = 0):                                                    \n",
+       "                                                        Send a cluster-object encapsulated command to a node and \n",
+       "                                                        get returned a future that can be awaited upon to        \n",
+       "                                                        receive                                                  \n",
+       "                                                        the response. If a valid responseType is passed in, that \n",
+       "                                                        will be used to de-serialize the object. If not,         \n",
+       "                                                        the type will be automatically deduced from the metadata \n",
+       "                                                        received over the wire.                                  \n",
+       "                                                                                                                 \n",
+       "                                                        timedWriteTimeoutMs: Timeout for a timed invoke request. \n",
+       "                                                        Omit or set to 'None' to indicate a non-timed request.   \n",
+       "                                                        interactionTimeoutMs: Overall timeout for the            \n",
+       "                                                        interaction. Omit or set to 'None' to have the SDK       \n",
+       "                                                        automatically compute the                                \n",
+       "                                                                              right timeout value based on       \n",
+       "                                                        transport characteristics as well as the responsiveness  \n",
+       "                                                        of the target.                                           \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - command response. The type of the response is      \n",
+       "                                                        defined by the command.                                  \n",
+       "                                                        Raises:                                                  \n",
+       "                                                            - InteractionModelError on error                     \n",
+       "                                     SendGroupCommand = def SendGroupCommand(groupid: 'int', payload:            \n",
+       "                                                        'ClusterObjects.ClusterCommand', busyWaitMs:             \n",
+       "                                                        'typing.Optional[int]' = None):                          \n",
+       "                                                        Send a group cluster-object encapsulated command to a    \n",
+       "                                                        group_id and get returned a future                       \n",
+       "                                                        that can be awaited upon to get confirmation command was \n",
+       "                                                        sent.                                                    \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - None: responses are not sent to group commands     \n",
+       "                                                        Raises:                                                  \n",
+       "                                                            - InteractionModelError on error                     \n",
+       "                               SetCheckMatchingFabric = def SetCheckMatchingFabric(check: 'bool'): Instructs the \n",
+       "                                                        auto-commissioner to perform a matching fabric check     \n",
+       "                                                        before commissioning.                                    \n",
+       "                                        SetDefaultNTP = def SetDefaultNTP(defaultNTP: 'str'): Set the DefaultNTP \n",
+       "                                                        to set during commissioning                              \n",
+       "                                         SetDSTOffset = def SetDSTOffset(offset: 'int', validStarting: 'int',    \n",
+       "                                                        validUntil: 'int'): Set the DST offset to set during     \n",
+       "                                                        commissioning. Currently only one DST entry is supported \n",
+       "                                               SetIpk = def SetIpk(ipk: 'bytes'):                                \n",
+       "                         SetSkipCommissioningComplete = def                                                      \n",
+       "                                                        SetSkipCommissioningComplete(skipCommissioningComplete:  \n",
+       "                                                        'bool'): Set whether to skip the commissioning complete  \n",
+       "                                                        callback                                                 \n",
+       "                                SetTCAcknowledgements = def SetTCAcknowledgements(tcAcceptedVersion: 'int',      \n",
+       "                                                        tcUserResponse: 'int'): Set the TC acknowledgements to   \n",
+       "                                                        set during commissioning                                 \n",
+       "            SetTestCommissionerPrematureCompleteAfter = def SetTestCommissionerPrematureCompleteAfter(stage:     \n",
+       "                                                        'int'):                                                  \n",
+       "           SetTestCommissionerSimulateFailureOnReport = def SetTestCommissionerSimulateFailureOnReport(stage:    \n",
+       "                                                        'int'):                                                  \n",
+       "            SetTestCommissionerSimulateFailureOnStage = def SetTestCommissionerSimulateFailureOnStage(stage:     \n",
+       "                                                        'int'):                                                  \n",
+       "                          SetThreadOperationalDataset = def                                                      \n",
+       "                                                        SetThreadOperationalDataset(threadOperationalDataset):   \n",
+       "                                                        Set the Thread operational dataset to set during         \n",
+       "                                                        commissioning.                                           \n",
+       "                                          SetTimeZone = def SetTimeZone(offset: 'int', validAt: 'int', name:     \n",
+       "                                                        'str' = ''): Set the time zone to set during             \n",
+       "                                                        commissioning. Currently only one time zone entry is     \n",
+       "                                                        supported                                                \n",
+       "                                 SetTrustedTimeSource = def SetTrustedTimeSource(nodeId: 'int', endpoint:        \n",
+       "                                                        'int'): Set the trusted time source nodeId to set during \n",
+       "                                                        commissioning. This must be a node on the commissioner   \n",
+       "                                                        fabric.                                                  \n",
+       "                                   SetWiFiCredentials = def SetWiFiCredentials(ssid: 'str', credentials: 'str'): \n",
+       "                                                        Set the Wi-Fi credentials to set during commissioning.   \n",
+       "                                             Shutdown = def Shutdown():                                          \n",
+       "                                                        Shuts down this controller and reclaims any used         \n",
+       "                                                        resources, including the bound                           \n",
+       "                                                        C++ constructor instance in the SDK.                     \n",
+       "                                          ShutdownAll = def ShutdownAll(): Shut down all active controllers and  \n",
+       "                                                        reclaim any used resources.                              \n",
+       "                      TestOnlyPrepareToReceiveBdxData = def TestOnlyPrepareToReceiveBdxData() ->                 \n",
+       "                                                        'asyncio.Future':                                        \n",
+       "                                                        Sets up the system to expect a node to initiate a BDX    \n",
+       "                                                        transfer. The transfer will send data here.              \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - a future that will yield a BdxTransfer with the    \n",
+       "                                                        init message from the transfer.                          \n",
+       "                         TestOnlyPrepareToSendBdxData = def TestOnlyPrepareToSendBdxData(data: 'bytes') ->       \n",
+       "                                                        'asyncio.Future':                                        \n",
+       "                                                        Sets up the system to expect a node to initiate a BDX    \n",
+       "                                                        transfer. The transfer will send data to the node.       \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - a future that will yield a BdxTransfer with the    \n",
+       "                                                        init message from the transfer.                          \n",
+       "                            TestOnlySendBatchCommands = async def TestOnlySendBatchCommands(nodeid: 'int',       \n",
+       "                                                        commands:                                                \n",
+       "                                                        'typing.List[ClusterCommand.InvokeRequestInfo]',         \n",
+       "                                                        timedRequestTimeoutMs: 'typing.Optional[int]' = None,    \n",
+       "                                                        interactionTimeoutMs: 'typing.Optional[int]' = None,     \n",
+       "                                                        busyWaitMs: 'typing.Optional[int]' = None,               \n",
+       "                                                        suppressResponse: 'typing.Optional[bool]' = None,        \n",
+       "                                                        remoteMaxPathsPerInvoke: 'typing.Optional[int]' = None,  \n",
+       "                                                        suppressTimedRequestMessage: 'bool' = False,             \n",
+       "                                                        commandRefsOverride: 'typing.Optional[typing.List[int]]' \n",
+       "                                                        = None):                                                 \n",
+       "                                                        Please see SendBatchCommands for description.            \n",
+       "                                                        TestOnly overridable arguments:                          \n",
+       "                                                            remoteMaxPathsPerInvoke: Overrides the number of     \n",
+       "                                                        batch commands we think can be sent to remote node.      \n",
+       "                                                            suppressTimedRequestMessage: When set to true, we    \n",
+       "                                                        suppress sending Timed Request Message.                  \n",
+       "                                                            commandRefsOverride: List of commandRefs to use for  \n",
+       "                                                        each command with the same index in `commands`.          \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - TestOnlyBatchCommandResponse                       \n",
+       " TestOnlySendCommandTimedRequestFlagWithNoTimedInvoke = async def                                                \n",
+       "                                                        TestOnlySendCommandTimedRequestFlagWithNoTimedInvoke(no… \n",
+       "                                                        'int', endpoint: 'int', payload:                         \n",
+       "                                                        'ClusterObjects.ClusterCommand', responseType=None):     \n",
+       "                                                        Please see SendCommand for description.                  \n",
+       "                                         UnpairDevice = async def UnpairDevice(nodeid: 'int') -> 'None':         \n",
+       "                                        WaitForActive = async def WaitForActive(nodeid, *, timeoutSeconds=30.0,  \n",
+       "                                                        stayActiveDurationMs=30000):                             \n",
+       "                                                        Waits a LIT ICD device to become active. Will send a     \n",
+       "                                                        StayActive command to the device on active to allow      \n",
+       "                                                        human operations.                                        \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Node ID of the LID ICD                           \n",
+       "                                                        stayActiveDurationMs: The duration in the StayActive     \n",
+       "                                                        command, in milliseconds                                 \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - StayActiveResponse on success                      \n",
+       "                                       WriteAttribute = async def WriteAttribute(nodeid: 'int', attributes:      \n",
+       "                                                        'typing.List[typing.Tuple[int,                           \n",
+       "                                                        ClusterObjects.ClusterAttributeDescriptor]]',            \n",
+       "                                                        timedRequestTimeoutMs: 'typing.Optional[int]' = None,    \n",
+       "                                                        interactionTimeoutMs: 'typing.Optional[int]' = None,     \n",
+       "                                                        busyWaitMs: 'typing.Optional[int]' = None,               \n",
+       "                                                        payloadCapability: 'int' = 0):                           \n",
+       "                                                        Write a list of attributes on a target node.             \n",
+       "                                                                                                                 \n",
+       "                                                        nodeId: Target's Node ID                                 \n",
+       "                                                        timedWriteTimeoutMs: Timeout for a timed write request.  \n",
+       "                                                        Omit or set to 'None' to indicate a non-timed request.   \n",
+       "                                                        attributes: A list of tuples of type (endpoint,          \n",
+       "                                                        cluster-object):                                         \n",
+       "                                                        interactionTimeoutMs: Overall timeout for the            \n",
+       "                                                        interaction. Omit or set to 'None' to have the SDK       \n",
+       "                                                        automatically compute the                                \n",
+       "                                                                              right timeout value based on       \n",
+       "                                                        transport characteristics as well as the responsiveness  \n",
+       "                                                        of the target.                                           \n",
+       "                                                                                                                 \n",
+       "                                                        E.g                                                      \n",
+       "                                                            (1,                                                  \n",
+       "                                                        Clusters.UnitTesting.Attributes.XYZAttribute('hello'))   \n",
+       "                                                        -- Write 'hello'                                         \n",
+       "                                                            to the XYZ attribute on the test cluster to endpoint \n",
+       "                                                        1                                                        \n",
+       "                                                                                                                 \n",
+       "                                                        Returns:                                                 \n",
+       "                                                            - [AttributeStatus] (list - one for each path)       \n",
+       "                                  WriteGroupAttribute = def WriteGroupAttribute(groupid: 'int', attributes:      \n",
+       "                                                        'typing.List[typing.Tuple[ClusterObjects.ClusterAttribu… \n",
+       "                                                        int]]', busyWaitMs: 'typing.Optional[int]' = None):      \n",
+       "                                                        Write a list of attributes on a target group.            \n",
+       "                                                                                                                 \n",
+       "                                                        groupid: Group ID to send write attribute to.            \n",
+       "                                                        attributes: A list of tuples of type (cluster-object,    \n",
+       "                                                        data-version). The data-version can be omitted.          \n",
+       "                                                                                                                 \n",
+       "                                                        E.g                                                      \n",
+       "                                                            (Clusters.UnitTesting.Attributes.XYZAttribute('hell… \n",
+       "                                                        1) -- Group Write 'hello' with data version 1            \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
        "
\n" ], "text/plain": [ - "\u001b[34m╭─\u001b[0m\u001b[34m────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.ChipDeviceCtrl.ChipDeviceController'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ───────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[32m╭───────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x1143b3910\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[32m╰───────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mactiveList\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[39mobject at \u001b[0m\u001b[1;36m0x1143b3910\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mdevCtrl\u001b[0m = \u001b[1;35mc_void_p\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m140320379576320\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33misActive\u001b[0m = \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mstate\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mDCState.IDLE:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mcbHandleCommissioningCompleteFunct\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbHandleCommissioningCompleteFunct\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mcbHandleKeyExchangeCompleteFunct\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbHandleKeyExchangeCompleteFunct\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mcbOnAddressUpdateComplete\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbOnAddressUpdateComplete\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mCheckIsActive\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCheckIsActive\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mCloseBLEConnection\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCloseBLEConnection\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mCloseSession\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCloseSession\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mCommission\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCommission\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mCommissionIP\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCommissionIP\u001b[0m\u001b[1m(\u001b[0mipaddr, setupPinCode, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m nodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mConnectBLE\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mConnectBLE\u001b[0m\u001b[1m(\u001b[0mdiscriminator, setupPinCode, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m nodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mConnectBle\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mConnectBle\u001b[0m\u001b[1m(\u001b[0mbleConnection\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mDiscoverAllCommissioning\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mDiscoverAllCommissioning\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mDiscoverCommissionableNodesCommissioningEn…\u001b[0m \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m = \u001b[1;31mDiscoverCommissionableNodesCommissioningEnab…\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mDiscoverCommissionableNodesDeviceType\u001b[0m = \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;31mDiscoverCommissionableNodesDeviceType\u001b[0m\u001b[1m(\u001b[0mdevice… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mDiscoverCommissionableNodesLongDiscriminat…\u001b[0m \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m = \u001b[1;31mDiscoverCommissionableNodesLongDiscriminator\u001b[0m\u001b[1m…\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mDiscoverCommissionableNodesShortDiscrimina…\u001b[0m \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m = \u001b[1;31mDiscoverCommissionableNodesShortDiscriminato…\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mDiscoverCommissionableNodesVendor\u001b[0m = \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;31mDiscoverCommissionableNodesVendor\u001b[0m\u001b[1m(\u001b[0mvendor\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mEstablishPASESessionIP\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mEstablishPASESessionIP\u001b[0m\u001b[1m(\u001b[0mipaddr, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m setupPinCode, nodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mGetAddressAndPort\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetAddressAndPort\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mGetClusterHandler\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetClusterHandler\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mGetCompressedFabricId\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetCompressedFabricId\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mGetConnectedDeviceSync\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetConnectedDeviceSync\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mGetFabricId\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetFabricId\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mGetIPForDiscoveredDevice\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetIPForDiscoveredDevice\u001b[0m\u001b[1m(\u001b[0midx, addrStr, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m length\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mGetLogFilter\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetLogFilter\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mIsConnected\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mIsConnected\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mOpenCommissioningWindow\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mOpenCommissioningWindow\u001b[0m\u001b[1m(\u001b[0mnodeid, timeout, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m iteration, discriminator, option\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mParseQRCode\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mParseQRCode\u001b[0m\u001b[1m(\u001b[0mqrCode, output\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mPrintDiscoveredDevices\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mPrintDiscoveredDevices\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mReadAttribute\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mReadAttribute\u001b[0m\u001b[1m(\u001b[0mnodeid: int, attributes: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m List\u001b[1m[\u001b[0mUnion\u001b[1m[\u001b[0mNoneType, Tuple\u001b[1m[\u001b[0mint\u001b[1m]\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mType\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.Clus… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mType\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.Clus… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mint, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Type\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.Cluster\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mint, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Type\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.ClusterAtt… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m returnClusterObject: bool = \u001b[3;91mFalse\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m reportInterval: Tuple\u001b[1m[\u001b[0mint, int\u001b[1m]\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m fabricFiltered: bool = \u001b[3;92mTrue\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mRead a list of attributes from a target node\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mattributes: A list of tuples of varying types\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mdepending on the type of read being \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mrequested:\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA.AttributeA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m:\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mAttribute = specific\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mAttribute = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mClusters.ClusterA.AttributeA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mAttribute = specific\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m endpoint: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific, Cluster = *, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mAttribute = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m Clusters.ClusterA: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mAttribute = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[2;32m'*'\u001b[0m\u001b[2m or \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *, Cluster = *, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mAttribute = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m The cluster and attributes specified \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mabove are to be selected from the generated \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mcluster objects.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m e.g.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m4\u001b[0m\u001b[2m \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mabove.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.BasicInformation \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m-- case \u001b[0m\u001b[1;2;36m5\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mClusters.BasicInformation.Attributes.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mcase \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mreturnClusterObject: This returns the data as\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mconsolidated cluster objects, with all \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mattributes for a cluster inside\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m a single cluster-wide \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mcluster object.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mreportInterval: A tuple of two int-s for \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;2m(\u001b[0m\u001b[2mMinIntervalFloor, MaxIntervalCeiling\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m. Used \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mby establishing subscriptions.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m When not provided, a read request will be\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2msent.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mReadEvent\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mReadEvent\u001b[0m\u001b[1m(\u001b[0mnodeid: int, events: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m List\u001b[1m[\u001b[0mUnion\u001b[1m[\u001b[0mNoneType, Tuple\u001b[1m[\u001b[0mint\u001b[1m]\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mType\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.Clus… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mType\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.Clus… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mint, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Type\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.Cluster\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Tuple\u001b[1m[\u001b[0mint, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m Type\u001b[1m[\u001b[0mchip.clusters.ClusterObjects.ClusterEve… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m reportInterval: Tuple\u001b[1m[\u001b[0mint, int\u001b[1m]\u001b[0m = \u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mRead a list of events from a target node\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mevents: A list of tuples of varying types \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mdepending on the type of read being \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mrequested:\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA.EventA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEvent = specific\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEvent = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mClusters.ClusterA.EventA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEvent = specific\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m endpoint: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific, Cluster = *, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEvent = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m Clusters.ClusterA: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *, Cluster = specific, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEvent = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[2;32m'*'\u001b[0m\u001b[2m or \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *, Cluster = *, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mEvent = *\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mThe cluster and events specified above are to\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mbe selected from the generated cluster \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mobjects.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2me.g.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m4\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.BasicInformation \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;2;36m5\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mClusters.BasicInformation.Events.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mabove.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mreportInterval: A tuple of two int-s for \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;2m(\u001b[0m\u001b[2mMinIntervalFloor, MaxIntervalCeiling\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m. Used \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mby establishing subscriptions.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m When not provided, a read request will be\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2msent.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mResolveNode\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mResolveNode\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mSendCommand\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSendCommand\u001b[0m\u001b[1m(\u001b[0mnodeid: int, endpoint: int, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m payload: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m chip.clusters.ClusterObjects.ClusterCommand, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mresponseType\u001b[0m=\u001b[3;35mNone\u001b[0m, timedRequestTimeoutMs: int \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m = \u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mSend a cluster-object encapsulated command to\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2ma node and get returned a future that can be \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mawaited upon to receive the response.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mIf a valid responseType is passed in, that \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mwill be used to deserialize the object. If \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mnot, the type will be automatically deduced\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mfrom the metadata received over the wire.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mtimedWriteTimeoutMs: Timeout for a timed \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2minvoke request. Omit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mindicate a non-timed request.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mSetBlockingCB\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetBlockingCB\u001b[0m\u001b[1m(\u001b[0mblockingCB\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mSetLogFilter\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetLogFilter\u001b[0m\u001b[1m(\u001b[0mcategory\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mSetThreadOperationalDataset\u001b[0m = \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;31mSetThreadOperationalDataset\u001b[0m\u001b[1m(\u001b[0mthreadOperationa… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mSetWiFiCredentials\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetWiFiCredentials\u001b[0m\u001b[1m(\u001b[0mssid, credentials\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mShutdown\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mShutdown\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mShuts down this controller and reclaims any \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mused resources, including the bound\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mC++ constructor instance in the SDK.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mShutdownAll\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mShutdownAll\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[2mShut down all active \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mcontrollers and reclaim any used resources.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mWriteAttribute\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mWriteAttribute\u001b[0m\u001b[1m(\u001b[0mnodeid: int, attributes: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m List\u001b[1m[\u001b[0mTuple\u001b[1m[\u001b[0mint, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m chip.clusters.ClusterObjects.ClusterAttribut… \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m timedRequestTimeoutMs: int = \u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mWrite a list of attributes on a target node.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mtimedWriteTimeoutMs: Timeout for a timed \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mwrite request. Omit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mindicate a non-timed request.\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mattributes: A list of tuples of type \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;2m(\u001b[0m\u001b[2mendpoint, cluster-object\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m:\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mE.g\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;2;35mClusters.UnitTesting.luster.Attributes.XYZAttribute\u001b[0m\u001b[1;2m…\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2m-- Write \u001b[0m\u001b[2;32m'hello'\u001b[0m\u001b[2m to the XYZ attribute on the \u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[2mtest cluster to endpoint \u001b[0m\u001b[1;2;36m1\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mZCLAttributeList\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mZCLAttributeList\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mZCLCommandList\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mZCLCommandList\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mZCLReadAttribute\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mZCLReadAttribute\u001b[0m\u001b[1m(\u001b[0mcluster, attribute, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m nodeid, endpoint, groupid, \u001b[33mblocking\u001b[0m=\u001b[3;92mTrue\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mZCLSend\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mZCLSend\u001b[0m\u001b[1m(\u001b[0mcluster, command, nodeid, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m endpoint, groupid, args, \u001b[33mblocking\u001b[0m=\u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mZCLSubscribeAttribute\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mZCLSubscribeAttribute\u001b[0m\u001b[1m(\u001b[0mcluster, attribute, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m nodeid, endpoint, minInterval, maxInterval, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[33mblocking\u001b[0m=\u001b[3;92mTrue\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[3;33mZCLWriteAttribute\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mZCLWriteAttribute\u001b[0m\u001b[1m(\u001b[0mcluster: str, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m attribute: str, nodeid, endpoint, groupid, \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m value, \u001b[33mblocking\u001b[0m=\u001b[3;92mTrue\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", - "\u001b[34m╰───────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + "\u001b[34m╭─\u001b[0m\u001b[34m─────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.ChipDeviceCtrl.ChipDeviceController'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m \u001b[0m\u001b[34m──────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[36mThe ChipDeviceCommissioner binding, named as ChipDeviceController\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[36mTODO: This class contains DEPRECATED functions, we should update the test scripts to avoid the usage of those \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[36mfunctions.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x78e55c7c3fa0\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mactiveList\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mchip.ChipDeviceCtrl.ChipDeviceController\u001b[0m\u001b[39m object at \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36m0x78e55c7c3fa0\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcaIndex\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mdevCtrl\u001b[0m = \u001b[1;35mc_void_p\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m132925546862080\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mfabricAdmin\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mchip.FabricAdmin.FabricAdmin\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x78e55c7c3be0\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mfabricId\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33misActive\u001b[0m = \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mname\u001b[0m = \u001b[32m'caIndex\u001b[0m\u001b[32m(\u001b[0m\u001b[32m1\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/fabricId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x0000000000000001\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/nodeId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x00000…\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mnodeId\u001b[0m = \u001b[1;36m112233\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mpairingDelegate\u001b[0m = \u001b[1;35mc_void_p\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m132925546882384\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcbHandleCommissioningCompleteFunct\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbHandleCommissioningCompleteFunct\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcbHandleDeviceUnpairCompleteFunct\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbHandleDeviceUnpairCompleteFunct\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcbHandleFabricCheckFunct\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbHandleFabricCheckFunct\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcbHandleOpenWindowCompleteFunct\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbHandleOpenWindowCompleteFunct\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcbHandlePASEEstablishmentCompleteFunct\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mcbHandlePASEEstablishmentCompleteFunct\u001b[0m\u001b[1m(\u001b[0m\u001b[33m...\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCheckIsActive\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCheckIsActive\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCheckStageSuccessful\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCheckStageSuccessful\u001b[0m\u001b[1m(\u001b[0mstage: \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCheckTestCommissionerCallbacks\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCheckTestCommissionerCallbacks\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCheckTestCommissionerPaseConnection\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCheckTestCommissionerPaseConnection\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCloseBLEConnection\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCloseBLEConnection\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCloseSession\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCloseSession\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCommission\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mCommission\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m -> \u001b[32m'int'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mStart the auto-commissioning process on a node after \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mestablishing a PASE connection.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThis function is intended to be used in conjunction with\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m`EstablishPASESessionBLE` or\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m`EstablishPASESessionIP`. It can be called either before\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mor after the DevicePairingDelegate\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreceives the OnPairingComplete call. Commissioners that \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwant to perform simple\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mauto-commissioning should use the supplied \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;32m\"CommissionWithCode\"\u001b[0m\u001b[2m function, which will\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mestablish the PASE connection and commission \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mautomatically.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises a ChipStackError on failure.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - Effective Node ID of the device \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mas defined by the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2massigned NOC\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCommissioningWindowPasscode\u001b[0m = \u001b[3;96mclass \u001b[0m\u001b[1;31mCommissioningWindowPasscode\u001b[0m\u001b[1m(\u001b[0mvalue, \u001b[33mnames\u001b[0m=\u001b[3;35mNone\u001b[0m, *, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mmodule\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mqualname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mstart\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mAn \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2menumeration.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCommissionIP\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mCommissionIP\u001b[0m\u001b[1m(\u001b[0mipaddr: \u001b[32m'str'\u001b[0m, setupPinCode: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m, nodeid: \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'int'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mDEPRECATED, DO NOT USE! Use `CommissionOnNetwork` or \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m`CommissionWithCode`\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises a ChipStackError on failure.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - Effective Node ID of the device \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mas defined by the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2massigned NOC\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCommissionOnNetwork\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mCommissionOnNetwork\u001b[0m\u001b[1m(\u001b[0mnodeId: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m setupPinCode: \u001b[32m'int'\u001b[0m, filterType: \u001b[32m'DiscoveryFilterType'\u001b[0m = \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mFilterType.NONE:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m>, filter: \u001b[0m\u001b[32m'typing.Any'\u001b[0m\u001b[39m = \u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[39mdiscoveryTimeoutMsec: \u001b[0m\u001b[32m'int'\u001b[0m\u001b[39m = \u001b[0m\u001b[1;36m30000\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m -\u001b[0m\u001b[1m>\u001b[0m \u001b[32m'int'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mDoes the routine for OnNetworkCommissioning, with a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfilter for mDNS discovery.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSupported filters are:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.NONE\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.SHORT_DISCRIMINATOR\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.LONG_DISCRIMINATOR\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.VENDOR_ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.DEVICE_TYPE\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.COMMISSIONING_MODE\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.INSTANCE_NAME\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.COMMISSIONER\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m DiscoveryFilterType.COMPRESSED_FABRIC_ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThe filter can be an integer, a string or \u001b[0m\u001b[2;3;35mNone\u001b[0m\u001b[2m depending\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mon the actual type of selected filter.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises a ChipStackError on failure.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - Effective Node ID of the device \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mas defined by the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2massigned NOC\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCommissionThread\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mCommissionThread\u001b[0m\u001b[1m(\u001b[0mdiscriminator, setupPinCode, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m nodeId, threadOperationalDataset: \u001b[32m'bytes'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m isShortDiscriminator: \u001b[32m'bool'\u001b[0m = \u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'int'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCommissions a Thread device over BLE\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCommissionWiFi\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mCommissionWiFi\u001b[0m\u001b[1m(\u001b[0mdiscriminator, setupPinCode, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m nodeId, ssid: \u001b[32m'str'\u001b[0m, credentials: \u001b[32m'str'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m isShortDiscriminator: \u001b[32m'bool'\u001b[0m = \u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'int'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCommissions a Wi-Fi device over BLE.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCommissionWithCode\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mCommissionWithCode\u001b[0m\u001b[1m(\u001b[0msetupPayload: \u001b[32m'str'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m nodeid: \u001b[32m'int'\u001b[0m, discoveryType: \u001b[32m'DiscoveryType'\u001b[0m = \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mDiscoveryType.DISCOVERY_ALL:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m>\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m -\u001b[0m\u001b[1m>\u001b[0m \u001b[32m'int'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCommission with the given nodeid from the setupPayload.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m setupPayload may be a QR or manual code.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Raises a ChipStackError on failure.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - Effective Node ID of the device \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mas defined by the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2massigned NOC\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mComputeRoundTripTimeout\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mComputeRoundTripTimeout\u001b[0m\u001b[1m(\u001b[0mnodeid, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m upperLayerProcessingTimeoutMs: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns a computed timeout value based on the round-trip\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtime it takes for the peer at the other end of the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msession to\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreceive a message, process it and send it back. This is \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcomputed based on the session type, the type of \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtransport,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msleepy characteristics of the target and a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcaller-provided value for the time it takes to process a\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mmessage\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mat the upper layer on the target For group sessions.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThis will result in a session being established if one \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwasn't already.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mConnectBLE\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mConnectBLE\u001b[0m\u001b[1m(\u001b[0mdiscriminator: \u001b[32m'int'\u001b[0m, setupPinCode: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m, nodeid: \u001b[32m'int'\u001b[0m, isShortDiscriminator: \u001b[32m'bool'\u001b[0m = \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'int'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mConnect to a BLE device using the given discriminator \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mand setup pin code.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - Effective Node ID of the device \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mas defined by the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2massigned NOC\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mCreateManualCode\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mCreateManualCode\u001b[0m\u001b[1m(\u001b[0mdiscriminator: \u001b[32m'int'\u001b[0m, passcode: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'str'\u001b[0m: \u001b[2mCreates a standard flow manual code \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfrom the given discriminator and passcode.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mDisableICDRegistration\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mDisableICDRegistration\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mDisables ICD registration.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mDiscoverCommissionableNodes\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mDiscoverCommissionableNodes\u001b[0m\u001b[1m(\u001b[0mfilterType: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'discovery.FilterType'\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mFilterType.NONE:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m>, filter: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Any'\u001b[0m\u001b[39m = \u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, stopOnFirst: \u001b[0m\u001b[32m'bool'\u001b[0m\u001b[39m = \u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[39mtimeoutSecond: \u001b[0m\u001b[32m'int'\u001b[0m\u001b[39m = \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m -\u001b[0m\u001b[1m>\u001b[0m \u001b[32m'typing.Union\u001b[0m\u001b[32m[\u001b[0m\u001b[32mNone, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mCommissionableNode, typing.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mCommissionableNode\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mDiscover commissionable nodes via DNS-SD with specified \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfilters.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSupported filters are:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.NONE\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.SHORT_DISCRIMINATOR\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.LONG_DISCRIMINATOR\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.VENDOR_ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.DEVICE_TYPE\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.COMMISSIONING_MODE\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.INSTANCE_NAME\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.COMMISSIONER\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m discovery.FilterType.COMPRESSED_FABRIC_ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThis function will always return a list of \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCommissionableDevice. When stopOnFirst is set,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthis function will return when at least one device is \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mdiscovered or on timeout.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mEnableICDRegistration\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mEnableICDRegistration\u001b[0m\u001b[1m(\u001b[0mparameters: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'ICDRegistrationParameters'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mEnables ICD registration for the following commissioning\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msession.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mArgs:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m parameters: A ICDRegistrationParameters for the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mparameters used for ICD registration, or \u001b[0m\u001b[2;3;35mNone\u001b[0m\u001b[2m for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mdefault arguments.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mEstablishPASESession\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mEstablishPASESession\u001b[0m\u001b[1m(\u001b[0msetUpCode: \u001b[32m'str'\u001b[0m, nodeid: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'None'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mEstablishPASESessionBLE\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mEstablishPASESessionBLE\u001b[0m\u001b[1m(\u001b[0msetupPinCode: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m discriminator: \u001b[32m'int'\u001b[0m, nodeid: \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'None'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mEstablishPASESessionIP\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mEstablishPASESessionIP\u001b[0m\u001b[1m(\u001b[0mipaddr: \u001b[32m'str'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m setupPinCode: \u001b[32m'int'\u001b[0m, nodeid: \u001b[32m'int'\u001b[0m, port: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m -> \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'None'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mExpireSessions\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mExpireSessions\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mClose all sessions with `nodeid` \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mif any existed\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m so \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthat sessions get re-established.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThis is needed to properly handle operations that \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minvalidate a node's state, such as\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mUpdateNOC.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mWARNING: ONLY CALL THIS IF YOU UNDERSTAND THE \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSIDE-EFFECTS\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mFindOrEstablishPASESession\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mFindOrEstablishPASESession\u001b[0m\u001b[1m(\u001b[0msetupCode: \u001b[32m'str'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m nodeid: \u001b[32m'int'\u001b[0m, timeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m -> \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mDeviceProxyWrapper\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m: \u001b[2mReturns \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCommissioneeDeviceProxy if we can find or establish a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mPASE connection to the specified device\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGenerateICDRegistrationParameters\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGenerateICDRegistrationParameters\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mGenerates ICD \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mregistration parameters for this controller.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetAddressAndPort\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetAddressAndPort\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetClusterHandler\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetClusterHandler\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetCompressedFabricId\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetCompressedFabricId\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetConnectedDevice\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mGetConnectedDevice\u001b[0m\u001b[1m(\u001b[0mnodeid, allowPASE: \u001b[32m'bool'\u001b[0m = \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;92mTrue\u001b[0m, timeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m payloadCapability: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mGets an OperationalDeviceProxy or \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCommissioneeDeviceProxy for the specified Node.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mallowPASE: Get a device proxy of a device being \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommissioned.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtimeoutMs: Timeout for a timed invoke request. Omit or \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mset to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to indicate a non-timed request.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - DeviceProxyWrapper on success\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetConnectedDeviceSync\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetConnectedDeviceSync\u001b[0m\u001b[1m(\u001b[0mnodeid, \u001b[33mallowPASE\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m timeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m payloadCapability: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mGets an OperationalDeviceProxy or \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCommissioneeDeviceProxy for the specified Node.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mallowPASE: Get a device proxy of a device being \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommissioned.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtimeoutMs: Timeout for a timed invoke request. Omit or \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mset to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to indicate a non-timed request.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - DeviceProxyWrapper on success\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetDiscoveredDevices\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mGetDiscoveredDevices\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetFabricCheckResult\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetFabricCheckResult\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'int'\u001b[0m: \u001b[2mReturns the fabric \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcheck result if SetCheckMatchingFabric was used.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetFabricIdInternal\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetFabricIdInternal\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mGet the fabric ID from the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mobject. Only used to validate cached value from \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mproperty.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetFabricIndexInternal\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetFabricIndexInternal\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mGet the fabric index from \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe object. Only used to validate cached value from \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mproperty.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetIPForDiscoveredDevice\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetIPForDiscoveredDevice\u001b[0m\u001b[1m(\u001b[0midx, addrStr, length\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetNodeIdInternal\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetNodeIdInternal\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'int'\u001b[0m: \u001b[2mGet the node ID from \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe object. Only used to validate cached value from \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mproperty.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetRemoteSessionParameters\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetRemoteSessionParameters\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m -> \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mSessionParameters\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns the SessionParameters of reported by the remote \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnode associated with `nodeid`.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mIf there is some error in getting SessionParameters \u001b[0m\u001b[2;3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mis returned.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThis will result in a session being established if one \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwasn't already established.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mGetTestCommissionerUsed\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mGetTestCommissionerUsed\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mInitGroupTestingData\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mInitGroupTestingData\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mPopulates the Device \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mController's GroupDataProvider with known test group \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minfo and keys.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mIsConnected\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mIsConnected\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mIssueNOCChain\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mIssueNOCChain\u001b[0m\u001b[1m(\u001b[0mcsr: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'Clusters.OperationalCredentials.Commands.CSRResponse'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m nodeId: \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mIssue an NOC chain using the associated \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mOperationalCredentialsDelegate.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThe NOC chain will be provided in TLV cert format.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mNOCChainCallback\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mNOCChainCallback\u001b[0m\u001b[1m(\u001b[0mnocChain\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mOpenCommissioningWindow\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mOpenCommissioningWindow\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m timeout: \u001b[32m'int'\u001b[0m, iteration: \u001b[32m'int'\u001b[0m, discriminator: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m option: \u001b[32m'CommissioningWindowPasscode'\u001b[0m\u001b[1m)\u001b[0m -> \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'CommissioningParameters'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mOpens a commissioning window on the device with the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mgiven nodeid.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeid: Node id of the device\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtimeout: Command timeout\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2miteration: The PAKE iteration count associated with \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe PAKE Passcode ID and ephemeral\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m PAKE passcode verifier to be used for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthis commissioning. Valid range: \u001b[0m\u001b[1;2;36m1000\u001b[0m\u001b[2m - \u001b[0m\u001b[1;2;36m100000\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Ignored if option == \u001b[0m\u001b[1;2;36m0\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mdiscriminator: The long discriminator for the DNS-SD \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2madvertisement. Valid range: \u001b[0m\u001b[1;2;36m0\u001b[0m\u001b[2m-\u001b[0m\u001b[1;2;36m4095\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Ignored if option == \u001b[0m\u001b[1;2;36m0\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2moption: \u001b[0m\u001b[1;2;36m0\u001b[0m\u001b[2m = kOriginalSetupCode\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m = kTokenWithRandomPIN\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns CommissioningParameters\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mRead\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mRead\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, attributes: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Union\u001b[0m\u001b[32m[\u001b[0m\u001b[32mNone, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterAttribut…\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, typing.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterAttributeDescriptor\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mClusterAttribute.AttributePath\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m dataVersionFilters: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m events: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Union\u001b[0m\u001b[32m[\u001b[0m\u001b[32mNone, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mstr, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, typing.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterEvent\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, typing.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterEvent\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;35mNone\u001b[0m, eventNumberFilter: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m returnClusterObject: \u001b[32m'bool'\u001b[0m = \u001b[3;91mFalse\u001b[0m, reportInterval: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m fabricFiltered: \u001b[32m'bool'\u001b[0m = \u001b[3;92mTrue\u001b[0m, keepSubscriptions: \u001b[32m'bool'\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m = \u001b[3;91mFalse\u001b[0m, autoResubscribe: \u001b[32m'bool'\u001b[0m = \u001b[3;92mTrue\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m payloadCapability: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRead a list of attributes and/or events from a target \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnode\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mattributes: A list of tuples of varying types depending \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mon the type of read being requested:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA.AttributeA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = specific, Attribute = \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mspecific\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = specific, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mClusters.ClusterA.AttributeA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = specific, Attribute = \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mspecific\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m endpoint: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = *, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Clusters.ClusterA: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = specific, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[2;32m'*'\u001b[0m\u001b[2m or \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = *, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m The cluster and attributes specified above are to be\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mselected from the generated cluster objects.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m e.g.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m4\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.BasicInformation \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m-- case \u001b[0m\u001b[1;2;36m5\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mClusters.BasicInformation.Attributes.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcase \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m An AttributePath can also be specified directly by \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2m[\u001b[0m\u001b[1;2;35mchip.cluster.Attribute.AttributePath\u001b[0m\u001b[1;2m(\u001b[0m\u001b[2;33m...\u001b[0m\u001b[1;2m)\u001b[0m\u001b[1;2m]\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mdataVersionFilters: A list of tuples of \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcluster, data version\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mevents: A list of tuples of varying types depending on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe type of read being requested:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA.EventA, urgent\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m …\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Event = specific, Urgent = \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA, urgent\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m …\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Event = *, Urgent = \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mClusters.ClusterA.EventA, urgent\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m …\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Event = specific, Urgent = \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m endpoint: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = *, Event = *, Urgent =\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Clusters.ClusterA: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = specific, Event = *, Urgent =\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[2;32m'*'\u001b[0m\u001b[2m or \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = *, Event = *, Urgent = \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2meventNumberFilter: Optional minimum event number filter.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreturnClusterObject: This returns the data as \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mconsolidated cluster objects, with all attributes for a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcluster inside\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m a single cluster-wide cluster \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mobject.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreportInterval: A tuple of two int-s for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2m(\u001b[0m\u001b[2mMinIntervalFloor, MaxIntervalCeiling\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m. Used by \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mestablishing subscriptions.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m When not provided, a read request will be sent.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfabricFiltered: If \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mdefault\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m, the read/subscribe is\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfabric-filtered and will only see things associated with\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe fabric\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m of the reader/subscriber. Relevant for attributes \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwith fabric-scoped data.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mkeepSubscriptions: Keep existing subscriptions. If set \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mto \u001b[0m\u001b[2;3;91mFalse\u001b[0m\u001b[2m, existing subscriptions with this node will get\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcancelled\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m and a new one gets setup.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mautoResubscribe: Automatically resubscribe to the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msubscription if subscription is lost. The automatic \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mre-subscription only\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m applies if the subscription establishes on first \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtry. If the first subscription establishment attempt \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfails the function\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m returns right away.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - AsyncReadTransaction.ReadResponse. Please see \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReadAttribute and ReadEvent for examples of how to \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2maccess data.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - InteractionModelError \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mchip.interaction_model\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2merror\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mReadAttribute\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mReadAttribute\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, attributes: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Union\u001b[0m\u001b[32m[\u001b[0m\u001b[32mNone, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterAttribut…\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, typing.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterAttributeDescriptor\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mClusterAttribute.AttributePath\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m, dataVersionFilters: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m returnClusterObject: \u001b[32m'bool'\u001b[0m = \u001b[3;91mFalse\u001b[0m, reportInterval: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m fabricFiltered: \u001b[32m'bool'\u001b[0m = \u001b[3;92mTrue\u001b[0m, keepSubscriptions: \u001b[32m'bool'\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m = \u001b[3;91mFalse\u001b[0m, autoResubscribe: \u001b[32m'bool'\u001b[0m = \u001b[3;92mTrue\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m payloadCapability: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRead a list of attributes from a target node, this is a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwrapper of \u001b[0m\u001b[1;2;35mDeviceController.Read\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mattributes: A list of tuples of varying types depending \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mon the type of read being requested:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA.AttributeA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = specific, Attribute = \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mspecific\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = specific, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mClusters.ClusterA.AttributeA\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = specific, Attribute = \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mspecific\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m endpoint: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = *, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Clusters.ClusterA: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = specific, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[2;32m'*'\u001b[0m\u001b[2m or \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = *, Attribute = *\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m The cluster and attributes specified above are to be\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mselected from the generated cluster objects.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m e.g.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m4\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.BasicInformation \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m-- case \u001b[0m\u001b[1;2;36m5\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mClusters.BasicInformation.Attributes.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcase \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m An AttributePath can also be specified directly by \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2m[\u001b[0m\u001b[1;2;35mchip.cluster.Attribute.AttributePath\u001b[0m\u001b[1;2m(\u001b[0m\u001b[2;33m...\u001b[0m\u001b[1;2m)\u001b[0m\u001b[1;2m]\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreturnClusterObject: This returns the data as \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mconsolidated cluster objects, with all attributes for a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcluster inside\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m a single cluster-wide cluster \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mobject.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreportInterval: A tuple of two int-s for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2m(\u001b[0m\u001b[2mMinIntervalFloor, MaxIntervalCeiling\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m. Used by \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mestablishing subscriptions.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m When not provided, a read request will be sent.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfabricFiltered: If \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mdefault\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m, the read/subscribe is\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfabric-filtered and will only see things associated with\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe fabric\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m of the reader/subscriber. Relevant for attributes \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwith fabric-scoped data.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mkeepSubscriptions: Keep existing subscriptions. If set \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mto \u001b[0m\u001b[2;3;91mFalse\u001b[0m\u001b[2m, existing subscriptions with this node will get\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcancelled\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m and a new one gets setup.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mautoResubscribe: Automatically resubscribe to the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msubscription if subscription is lost. The automatic \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mre-subscription only\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m applies if the subscription establishes on first \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtry. If the first subscription establishment attempt \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfails the function\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m returns right away.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - subscription request: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mClusterAttribute.SubscriptionTransaction\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m To get notified on attribute\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mchange use SetAttributeUpdateCallback on the returned\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m SubscriptionTransaction. \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThis is used to set a callback function, which is a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcallable of\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m type \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mCallable\u001b[0m\u001b[1;2m[\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mTypedAttributePath, SubscriptionTransaction\u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;3;35mNone\u001b[0m\u001b[1;2m]\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Get the attribute value from\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe change path using GetAttribute on the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSubscriptionTransaction\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m You can await changes in the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mmain loop using a trigger mechanism from the callback.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m ex. queue.SimpleQueue\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - read request: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mAsyncReadTransaction.ReadResponse.attributes.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m This is of type \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mAttributeCache.attributeCache \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mAttribute.py\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m which is a dict mapping endpoints to\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2ma list of Cluster \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mClusterObjects.py\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m classes\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mdict\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mint, List\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mCluster\u001b[0m\u001b[1;2m]\u001b[0m\u001b[1;2m]\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Access as \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreturned_object\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mendpoint_id\u001b[0m\u001b[1;2m]\u001b[0m\u001b[1;2m[\u001b[0m\u001b[1;2m<\u001b[0m\u001b[1;2;95mCluster\u001b[0m\u001b[2;39m class>\u001b[0m\u001b[1;2;39m]\u001b[0m\u001b[1;2;39m[\u001b[0m\u001b[2;39m\u001b[0m\u001b[1;2m]\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Ex. To access the OnTime attribute \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfrom the OnOff cluster on endpoint \u001b[0m\u001b[1;2;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m returned_object\u001b[0m\u001b[1;2m[\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[1;2m]\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mClusters.OnOff\u001b[0m\u001b[1;2m]\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m…\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - InteractionModelError \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mchip.interaction_model\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2merror\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mReadEvent\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mReadEvent\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, events: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Union\u001b[0m\u001b[32m[\u001b[0m\u001b[32mNone, typing.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mstr, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterEvent\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, typing.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.Cluster\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mtyping.Type\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterEvent\u001b[0m\u001b[32m]\u001b[0m\u001b[32m, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m eventNumberFilter: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m fabricFiltered: \u001b[32m'bool'\u001b[0m = \u001b[3;92mTrue\u001b[0m, reportInterval: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, int\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m keepSubscriptions: \u001b[32m'bool'\u001b[0m = \u001b[3;91mFalse\u001b[0m, autoResubscribe: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'bool'\u001b[0m = \u001b[3;92mTrue\u001b[0m, payloadCapability: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRead a list of events from a target node, this is a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwrapper of \u001b[0m\u001b[1;2;35mDeviceController.Read\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mevents: A list of tuples of varying types depending on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe type of read being requested:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA.EventA, urgent\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m …\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Event = specific, Urgent = \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, Clusters.ClusterA, urgent\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mEndpoint = specific,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m …\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Event = *, Urgent = \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mClusters.ClusterA.EventA, urgent\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mEndpoint = *,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m …\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Event = specific, Urgent = \u001b[0m\u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m endpoint: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= specific, Cluster = *, Event = *, Urgent =\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Clusters.ClusterA: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = specific, Event = *, Urgent =\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[2;32m'*'\u001b[0m\u001b[2m or \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m: Endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m= *, Cluster = *, Event = *, Urgent = \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2;3;92mTrue\u001b[0m\u001b[2m/\u001b[0m\u001b[2;3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mThe cluster and events specified above are to be \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mselected from the generated cluster objects.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2me.g.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m4\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.BasicInformation \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2;36m5\u001b[0m\u001b[2m above.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mClusters.BasicInformation.Events.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mabove.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2meventNumberFilter: Optional minimum event number filter.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreportInterval: A tuple of two int-s for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2m(\u001b[0m\u001b[2mMinIntervalFloor, MaxIntervalCeiling\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m. Used by \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mestablishing subscriptions.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m When not provided, a read request will be sent.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mkeepSubscriptions: Keep existing subscriptions. If set \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mto \u001b[0m\u001b[2;3;91mFalse\u001b[0m\u001b[2m, existing subscriptions with this node will get\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcancelled\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m and a new one gets setup.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mautoResubscribe: Automatically resubscribe to the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msubscription if subscription is lost. The automatic \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mre-subscription only\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m applies if the subscription establishes on first \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtry. If the first subscription establishment attempt \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfails the function\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m returns right away.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - subscription request: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mClusterAttribute.SubscriptionTransaction\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m To get notified on event \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msubscriptions, use the SetEventUpdateCallback function \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mon the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m returned \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSubscriptionTransaction. This is a callable of type\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m Callable\u001b[0m\u001b[1;2m[\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mEventReadResult, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSubscriptionTransaction\u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m, \u001b[0m\u001b[2;3;35mNone\u001b[0m\u001b[1;2m]\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m You can await events using a\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtrigger mechanism in the callback. ex. queue.SimpleQueue\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - read request: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mAsyncReadTransaction.ReadResponse.events.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m This is a List\u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mClusterEvent\u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - InteractionModelError \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mchip.interaction_model\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2merror\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mResetCommissioningParameters\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mResetCommissioningParameters\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mSets the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommissioning parameters back to the default values.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mResetTestCommissioner\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mResetTestCommissioner\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mResolveNode\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mResolveNode\u001b[0m\u001b[1m(\u001b[0mnodeid\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSendBatchCommands\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mSendBatchCommands\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, commands: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterCommand.InvokeRequestInfo\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m timedRequestTimeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m interactionTimeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m busyWaitMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m suppressResponse: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mbool\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m payloadCapability: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSend a batch of cluster-object encapsulated commands to \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2ma node and get returned a future that can be awaited \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mupon to receive\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe responses. If a valid responseType is passed in, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthat will be used to de-serialize the object. If not,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe type will be automatically deduced from the metadata\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreceived over the wire.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommands: A list of InvokeRequestInfo containing the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommands to invoke.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtimedWriteTimeoutMs: Timeout for a timed invoke request.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mOmit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to indicate a non-timed request.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minteractionTimeoutMs: Overall timeout for the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minteraction. Omit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to have the SDK \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mautomatically compute the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m right timeout value based on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtransport characteristics as well as the responsiveness \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mof the target.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mbusyWaitMs: How long to wait in ms after sending command\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mto device before performing any other operations.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msuppressResponse: Do not send a response to this action\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - List of command responses in the same order as \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwhat was given in `commands`. The type of the response \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mis defined by the command.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - A value of `\u001b[0m\u001b[2;3;35mNone\u001b[0m\u001b[2m` indicates success.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - If only a single command fails, for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mexample with `UNSUPPORTED_COMMAND`, the corresponding \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mindex associated with the command will,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m contain \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m`interaction_model.Status.UnsupportedCommand`.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - If a command is not responded to by \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mserver, command will contain \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m`interaction_model.Status.NoCommandResponse`\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - InteractionModelError if error with sending of \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mInvokeRequestMessage fails as a whole.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSendCommand\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mSendCommand\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, endpoint: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m payload: \u001b[32m'ClusterObjects.ClusterCommand'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mresponseType\u001b[0m=\u001b[3;35mNone\u001b[0m, timedRequestTimeoutMs: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, interactionTimeoutMs: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, busyWaitMs: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, suppressResponse: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mbool\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, payloadCapability: \u001b[32m'int'\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSend a cluster-object encapsulated command to a node and\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mget returned a future that can be awaited upon to \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreceive\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe response. If a valid responseType is passed in, that\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mwill be used to de-serialize the object. If not,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthe type will be automatically deduced from the metadata\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreceived over the wire.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtimedWriteTimeoutMs: Timeout for a timed invoke request.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mOmit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to indicate a non-timed request.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minteractionTimeoutMs: Overall timeout for the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minteraction. Omit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to have the SDK \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mautomatically compute the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m right timeout value based on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtransport characteristics as well as the responsiveness \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mof the target.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - command response. The type of the response is \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mdefined by the command.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - InteractionModelError on error\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSendGroupCommand\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSendGroupCommand\u001b[0m\u001b[1m(\u001b[0mgroupid: \u001b[32m'int'\u001b[0m, payload: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'ClusterObjects.ClusterCommand'\u001b[0m, busyWaitMs: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSend a group cluster-object encapsulated command to a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mgroup_id and get returned a future\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mthat can be awaited upon to get confirmation command was\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msent.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - \u001b[0m\u001b[2;3;35mNone\u001b[0m\u001b[2m: responses are not sent to group commands\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mRaises:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - InteractionModelError on error\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetCheckMatchingFabric\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetCheckMatchingFabric\u001b[0m\u001b[1m(\u001b[0mcheck: \u001b[32m'bool'\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mInstructs the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mauto-commissioner to perform a matching fabric check \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mbefore commissioning.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetDefaultNTP\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetDefaultNTP\u001b[0m\u001b[1m(\u001b[0mdefaultNTP: \u001b[32m'str'\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mSet the DefaultNTP\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mto set during commissioning\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetDSTOffset\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetDSTOffset\u001b[0m\u001b[1m(\u001b[0moffset: \u001b[32m'int'\u001b[0m, validStarting: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m validUntil: \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mSet the DST offset to set during \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommissioning. Currently only one DST entry is supported\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetIpk\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetIpk\u001b[0m\u001b[1m(\u001b[0mipk: \u001b[32m'bytes'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetSkipCommissioningComplete\u001b[0m = \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;31mSetSkipCommissioningComplete\u001b[0m\u001b[1m(\u001b[0mskipCommissioningComplete: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'bool'\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mSet whether to skip the commissioning complete \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcallback\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetTCAcknowledgements\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetTCAcknowledgements\u001b[0m\u001b[1m(\u001b[0mtcAcceptedVersion: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m tcUserResponse: \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mSet the TC acknowledgements to \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mset during commissioning\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetTestCommissionerPrematureCompleteAfter\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetTestCommissionerPrematureCompleteAfter\u001b[0m\u001b[1m(\u001b[0mstage: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetTestCommissionerSimulateFailureOnReport\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetTestCommissionerSimulateFailureOnReport\u001b[0m\u001b[1m(\u001b[0mstage: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetTestCommissionerSimulateFailureOnStage\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetTestCommissionerSimulateFailureOnStage\u001b[0m\u001b[1m(\u001b[0mstage: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetThreadOperationalDataset\u001b[0m = \u001b[3;96mdef \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;31mSetThreadOperationalDataset\u001b[0m\u001b[1m(\u001b[0mthreadOperationalDataset\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSet the Thread operational dataset to set during \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommissioning.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetTimeZone\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetTimeZone\u001b[0m\u001b[1m(\u001b[0moffset: \u001b[32m'int'\u001b[0m, validAt: \u001b[32m'int'\u001b[0m, name: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'str'\u001b[0m = \u001b[32m''\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mSet the time zone to set during \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommissioning. Currently only one time zone entry is \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msupported\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetTrustedTimeSource\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetTrustedTimeSource\u001b[0m\u001b[1m(\u001b[0mnodeId: \u001b[32m'int'\u001b[0m, endpoint: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mSet the trusted time source nodeId to set during\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommissioning. This must be a node on the commissioner \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mfabric.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mSetWiFiCredentials\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mSetWiFiCredentials\u001b[0m\u001b[1m(\u001b[0mssid: \u001b[32m'str'\u001b[0m, credentials: \u001b[32m'str'\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSet the Wi-Fi credentials to set during commissioning.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mShutdown\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mShutdown\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mShuts down this controller and reclaims any used \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mresources, including the bound\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mC++ constructor instance in the SDK.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mShutdownAll\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mShutdownAll\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[2mShut down all active controllers and \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mreclaim any used resources.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mTestOnlyPrepareToReceiveBdxData\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mTestOnlyPrepareToReceiveBdxData\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m -> \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'asyncio.Future'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSets up the system to expect a node to initiate a BDX \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtransfer. The transfer will send data here.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - a future that will yield a BdxTransfer with the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minit message from the transfer.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mTestOnlyPrepareToSendBdxData\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mTestOnlyPrepareToSendBdxData\u001b[0m\u001b[1m(\u001b[0mdata: \u001b[32m'bytes'\u001b[0m\u001b[1m)\u001b[0m -> \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'asyncio.Future'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mSets up the system to expect a node to initiate a BDX \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtransfer. The transfer will send data to the node.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - a future that will yield a BdxTransfer with the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minit message from the transfer.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mTestOnlySendBatchCommands\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mTestOnlySendBatchCommands\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m commands: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterCommand.InvokeRequestInfo\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m timedRequestTimeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m interactionTimeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m busyWaitMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m suppressResponse: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mbool\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m remoteMaxPathsPerInvoke: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m suppressTimedRequestMessage: \u001b[32m'bool'\u001b[0m = \u001b[3;91mFalse\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m commandRefsOverride: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m = \u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mPlease see SendBatchCommands for description.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mTestOnly overridable arguments:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m remoteMaxPathsPerInvoke: Overrides the number of \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mbatch commands we think can be sent to remote node.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m suppressTimedRequestMessage: When set to true, we \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2msuppress sending Timed Request Message.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m commandRefsOverride: List of commandRefs to use for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2meach command with the same index in `commands`.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - TestOnlyBatchCommandResponse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mTestOnlySendCommandTimedRequestFlagWithNoTimedInvoke\u001b[0m = \u001b[3;96masync def \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;31mTestOnlySendCommandTimedRequestFlagWithNoTimedInvoke\u001b[0m\u001b[1m(\u001b[0mno… \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'int'\u001b[0m, endpoint: \u001b[32m'int'\u001b[0m, payload: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'ClusterObjects.ClusterCommand'\u001b[0m, \u001b[33mresponseType\u001b[0m=\u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mPlease see SendCommand for description.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mUnpairDevice\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mUnpairDevice\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m\u001b[1m)\u001b[0m -> \u001b[32m'None'\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mWaitForActive\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mWaitForActive\u001b[0m\u001b[1m(\u001b[0mnodeid, *, \u001b[33mtimeoutSeconds\u001b[0m=\u001b[1;36m30\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mstayActiveDurationMs\u001b[0m=\u001b[1;36m30000\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mWaits a LIT ICD device to become active. Will send a \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mStayActive command to the device on active to allow \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mhuman operations.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Node ID of the LID ICD\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mstayActiveDurationMs: The duration in the StayActive \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcommand, in milliseconds\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - StayActiveResponse on success\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mWriteAttribute\u001b[0m = \u001b[3;96masync def \u001b[0m\u001b[1;31mWriteAttribute\u001b[0m\u001b[1m(\u001b[0mnodeid: \u001b[32m'int'\u001b[0m, attributes: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mClusterObjects.ClusterAttributeDescriptor\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m timedRequestTimeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m interactionTimeoutMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m busyWaitMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m payloadCapability: \u001b[32m'int'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mWrite a list of attributes on a target node.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mnodeId: Target's Node ID\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtimedWriteTimeoutMs: Timeout for a timed write request. \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mOmit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to indicate a non-timed request.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mattributes: A list of tuples of type \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mendpoint, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mcluster-object\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minteractionTimeoutMs: Overall timeout for the \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2minteraction. Omit or set to \u001b[0m\u001b[2;32m'None'\u001b[0m\u001b[2m to have the SDK \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mautomatically compute the\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m right timeout value based on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mtransport characteristics as well as the responsiveness \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mof the target.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mE.g\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2;35mClusters.UnitTesting.Attributes.XYZAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[2;32m'hello'\u001b[0m\u001b[1;2m)\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m-- Write \u001b[0m\u001b[2;32m'hello'\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m to the XYZ attribute on the test cluster to endpoint\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mReturns:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m - \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2mAttributeStatus\u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mlist - one for each path\u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mWriteGroupAttribute\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mWriteGroupAttribute\u001b[0m\u001b[1m(\u001b[0mgroupid: \u001b[32m'int'\u001b[0m, attributes: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32m'typing.List\u001b[0m\u001b[32m[\u001b[0m\u001b[32mtyping.Tuple\u001b[0m\u001b[32m[\u001b[0m\u001b[32mClusterObjects.ClusterAttribu…\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m, busyWaitMs: \u001b[32m'typing.Optional\u001b[0m\u001b[32m[\u001b[0m\u001b[32mint\u001b[0m\u001b[32m]\u001b[0m\u001b[32m'\u001b[0m = \u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mWrite a list of attributes on a target group.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mgroupid: Group ID to send write attribute to.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mattributes: A list of tuples of type \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mcluster-object, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mdata-version\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m. The data-version can be omitted.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2mE.g\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;35mClusters.UnitTesting.Attributes.XYZAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[2;32m'hell…\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;2;36m1\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- Group Write \u001b[0m\u001b[2;32m'hello'\u001b[0m\u001b[2m with data version \u001b[0m\u001b[1;2;36m1\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, "metadata": {}, @@ -917,18 +2073,18 @@ { "data": { "text/html": [ - "
╭─────────── <function mattersetlog at 0x115ea1670> ───────────╮\n",
+       "
╭───────── <function mattersetlog at 0x78e55d1fba30> ──────────╮\n",
        " def mattersetlog(level):                                     \n",
        "                                                              \n",
-       " 35 attribute(s) not shown. Run inspect(inspect) for options. \n",
+       " 36 attribute(s) not shown. Run inspect(inspect) for options. \n",
        "╰──────────────────────────────────────────────────────────────╯\n",
        "
\n" ], "text/plain": [ - "\u001b[34m╭─\u001b[0m\u001b[34m────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mfunction\u001b[0m\u001b[39m mattersetlog at \u001b[0m\u001b[1;36m0x115ea1670\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m╭─\u001b[0m\u001b[34m────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mfunction\u001b[0m\u001b[39m mattersetlog at \u001b[0m\u001b[1;36m0x78e55d1fba30\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m \u001b[0m\u001b[34m─────────\u001b[0m\u001b[34m─╮\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;96mdef \u001b[0m\u001b[1;31mmattersetlog\u001b[0m\u001b[1m(\u001b[0mlevel\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36m36\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n", "\u001b[34m╰──────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, @@ -938,26 +2094,26 @@ { "data": { "text/html": [ - "
╭───────────────── <function mattersetdebug at 0x115ea1700> ──────────────────╮\n",
+       "
╭──────────────── <function mattersetdebug at 0x78e55d1fb7f0> ────────────────╮\n",
        " def mattersetdebug(enableDebugMode: bool = True):                           \n",
        "                                                                             \n",
        " Enables debug mode that is utilized by some Matter modules                  \n",
        " to better facilitate debugging of failures (e.g throwing exceptions instead \n",
        " of returning well-formatted results).                                       \n",
        "                                                                             \n",
-       " 35 attribute(s) not shown. Run inspect(inspect) for options.                \n",
+       " 36 attribute(s) not shown. Run inspect(inspect) for options.                \n",
        "╰─────────────────────────────────────────────────────────────────────────────╯\n",
        "
\n" ], "text/plain": [ - "\u001b[34m╭─\u001b[0m\u001b[34m──────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mfunction\u001b[0m\u001b[39m mattersetdebug at \u001b[0m\u001b[1;36m0x115ea1700\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ─────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m╭─\u001b[0m\u001b[34m───────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mfunction\u001b[0m\u001b[39m mattersetdebug at \u001b[0m\u001b[1;36m0x78e55d1fb7f0\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m \u001b[0m\u001b[34m───────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;96mdef \u001b[0m\u001b[1;31mmattersetdebug\u001b[0m\u001b[1m(\u001b[0menableDebugMode: bool = \u001b[3;92mTrue\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[36mEnables debug mode that is utilized by some Matter modules\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[36mto better facilitate debugging of failures \u001b[0m\u001b[1;36m(\u001b[0m\u001b[36me.g throwing exceptions instead\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[36mof returning well-formatted results\u001b[0m\u001b[1;36m)\u001b[0m\u001b[36m.\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", - "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36m36\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n", "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, @@ -986,41 +2142,57 @@ { "data": { "text/html": [ - "
╭─ <bound method ChipDeviceController.SendCommand of <chip.ChipDeviceCtrl.ChipDeviceControl─╮\n",
-       " def ChipDeviceController.SendCommand(nodeid: int, endpoint: int, payload:                 \n",
-       " chip.clusters.ClusterObjects.ClusterCommand, responseType=None, timedRequestTimeoutMs:    \n",
-       " int = None):                                                                              \n",
-       "                                                                                           \n",
-       " Send a cluster-object encapsulated command to a node and get returned a future that can   \n",
-       " be awaited upon to receive the response.                                                  \n",
-       " If a valid responseType is passed in, that will be used to deserialize the object. If     \n",
-       " not, the type will be automatically deduced                                               \n",
-       " from the metadata received over the wire.                                                 \n",
-       "                                                                                           \n",
-       " timedWriteTimeoutMs: Timeout for a timed invoke request. Omit or set to 'None' to         \n",
-       " indicate a non-timed request.                                                             \n",
-       "                                                                                           \n",
-       " 27 attribute(s) not shown. Run inspect(inspect) for options.                              \n",
-       "╰───────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
╭─ <bound method ChipDeviceControllerBase.SendCommand of <chip.ChipDeviceCtrl.ChipDeviceController object at 0x78─╮\n",
+       " async def ChipDeviceControllerBase.SendCommand(nodeid: 'int', endpoint: 'int', payload:                         \n",
+       " 'ClusterObjects.ClusterCommand', responseType=None, timedRequestTimeoutMs: 'typing.Optional[int]' = None,       \n",
+       " interactionTimeoutMs: 'typing.Optional[int]' = None, busyWaitMs: 'typing.Optional[int]' = None,                 \n",
+       " suppressResponse: 'typing.Optional[bool]' = None, payloadCapability: 'int' = 0):                                \n",
+       "                                                                                                                 \n",
+       " Send a cluster-object encapsulated command to a node and get returned a future that can be awaited upon to      \n",
+       " receive                                                                                                         \n",
+       " the response. If a valid responseType is passed in, that will be used to de-serialize the object. If not,       \n",
+       " the type will be automatically deduced from the metadata received over the wire.                                \n",
+       "                                                                                                                 \n",
+       " timedWriteTimeoutMs: Timeout for a timed invoke request. Omit or set to 'None' to indicate a non-timed request. \n",
+       " interactionTimeoutMs: Overall timeout for the interaction. Omit or set to 'None' to have the SDK automatically  \n",
+       " compute the                                                                                                     \n",
+       "                       right timeout value based on transport characteristics as well as the responsiveness of   \n",
+       " the target.                                                                                                     \n",
+       "                                                                                                                 \n",
+       " Returns:                                                                                                        \n",
+       "     - command response. The type of the response is defined by the command.                                     \n",
+       " Raises:                                                                                                         \n",
+       "     - InteractionModelError on error                                                                            \n",
+       "                                                                                                                 \n",
+       " 27 attribute(s) not shown. Run inspect(inspect) for options.                                                    \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
        "
\n" ], "text/plain": [ - "\u001b[34m╭─\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mbound\u001b[0m\u001b[39m method ChipDeviceController.SendCommand of \n", - "{\n", - "'value': [\n", - "│ │ 1,\n", - "│ │ 2,\n", - "│ │ 3,\n", - "│ │ 4,\n", - "│ │ [\n", - "│ │ │ 1,\n", - "│ │ │ 2\n", - "│ │ ]\n", - "]\n", - "}\n", - "
\n" + "
\n"
       ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
       "text/plain": [
        "\n",
        "\u001b[1m{\u001b[0m\n",
@@ -1117,11 +2283,12 @@
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1;36m2\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m]\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m]\u001b[0m\n",
-       "\u001b[1m}\u001b[0m\n"
+       "\u001b[1m}\u001b[0m"
       ]
      },
+     "execution_count": 7,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -1132,9 +2299,9 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "matter-env",
+   "display_name": "Python 3 (ipykernel)",
    "language": "python",
-   "name": "matter-env"
+   "name": "python3"
   },
   "language_info": {
    "codemirror_mode": {
@@ -1146,7 +2313,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.2+chromium.10"
+   "version": "3.10.12"
   }
  },
  "nbformat": 4,
diff --git a/docs/development_controllers/chip-repl/python_chip_controller_building.md b/docs/development_controllers/chip-repl/python_chip_controller_building.md
index aa49adad246f5e..d5d660db7231b3 100644
--- a/docs/development_controllers/chip-repl/python_chip_controller_building.md
+++ b/docs/development_controllers/chip-repl/python_chip_controller_building.md
@@ -103,6 +103,8 @@ To build and run the Python CHIP controller:
     chip-repl
     ```
 
+NOTE: To get more verbose logs, pass the debug flag: `chip-repl --debug`
+
 
## Using Python CHIP Controller REPL for Matter accessory testing @@ -133,8 +135,8 @@ An uncommissioned accessory device advertises over Bluetooth LE or via mDNS if already on the network. Run the following command to scan all advertised Matter devices: -``` -devCtrl.DiscoverCommissionableNodes() +```python +await devCtrl.DiscoverCommissionableNodes() ``` ### Step 4: Set network pairing credentials @@ -173,7 +175,7 @@ network interface, such as Thread or Wi-Fi. 2. Set the previously obtained Active Operational Dataset as a byte array using the following command: - ``` + ```python thread_dataset = bytes.fromhex("0e080000000000010000000300001335060004001fffe002084fe76e9a8b5edaf50708fde46f999f0698e20510d47f5027a414ffeebaefa92285cc84fa030f4f70656e5468726561642d653439630102e49c0410b92f8c7fbb4f9f3e08492ee3915fbd2f0c0402a0fff8") devCtrl.SetThreadOperationalDataset(thread_dataset) ``` @@ -183,7 +185,7 @@ network interface, such as Thread or Wi-Fi. Assuming your Wi-Fi SSID is _TESTSSID_, and your Wi-Fi password is _P455W4RD_, set the credentials to the controller by executing the following command: -``` +```python devCtrl.SetWiFiCredentials(, ) ``` @@ -213,8 +215,8 @@ with the following assumptions for the Matter accessory device: - The setup pin code of the device is _20202021_ - The temporary Node ID is _1234_ -``` -devCtrl.ConnectBLE(3840, 20202021, 1234) +```python +await devCtrl.ConnectBLE(3840, 20202021, 1234) ``` You can skip the last parameter, the Node ID, in the command. If you skip it, @@ -230,8 +232,8 @@ CHIP:SVR: SetupQRCode: [MT:-24J0AFN00KA0648G00] Use the following command to commission the device with the QR code: -``` -devCtrl.CommissionWithCode("MT:-24J0AFN00KA0648G00", 1234) +```python +await devCtrl.CommissionWithCode("MT:-24J0AFN00KA0648G00", 1234) ``` After connecting the device over Bluetooth LE, the controller will go through @@ -262,14 +264,14 @@ the following stages: For the light bulb example, execute the following command to toggle the LED state: -``` +```python await devCtrl.SendCommand(1234, 1, Clusters.OnOff.Commands.Toggle()) ``` To change the brightness of the LED, use the following command, with the level value somewhere between 0 and 255. -``` +```python commandToSend = LevelControl.Commands.MoveToLevel(level=50, transitionTime=Null, optionsMask=0, optionsOverride=0) await devCtrl.SendCommand(1234, 1, commandToSend) ``` @@ -281,7 +283,7 @@ maintains collection of attributes that a controller can obtain from a device, such as the vendor name, the product name, or software version. Use `ReadAttribute()` command to read those values from the device: -``` +```python attributes = [ (0, Clusters.BasicInformation.Attributes.VendorName), (0, Clusters.BasicInformation.Attributes.ProductName), @@ -309,7 +311,7 @@ the full list of available commands. Provides the controller with Thread network credentials that will be used in the device commissioning procedure to configure the device with a Thread interface. -``` +```python thread_dataset = bytes.fromhex("0e080000000000010000000300001335060004001fffe002084fe76e9a8b5edaf50708fde46f999f0698e20510d47f5027a414ffeebaefa92285cc84fa030f4f70656e5468726561642d653439630102e49c0410b92f8c7fbb4f9f3e08492ee3915fbd2f0c0402a0fff8") devCtrl.SetThreadOperationalDataset(thread_dataset) ``` @@ -319,7 +321,7 @@ devCtrl.SetThreadOperationalDataset(thread_dataset) Provides the controller with Wi-Fi network credentials that will be used in the device commissioning procedure to configure the device with a Wi-Fi interface. -``` +```python devCtrl.SetWiFiCredentials('TESTSSID', 'P455W4RD') ``` @@ -328,8 +330,8 @@ devCtrl.SetWiFiCredentials('TESTSSID', 'P455W4RD') Commission with the given nodeid from the setupPayload. setupPayload may be a QR or the manual setup code. -``` -devCtrl.CommissionWithCode("MT:-24J0AFN00KA0648G00", 1234) +```python +await devCtrl.CommissionWithCode("MT:-24J0AFN00KA0648G00", 1234) ``` ### `SendCommand(: int, : int, Clusters..Commands.())` diff --git a/scripts/jupyterlab_requirements.txt b/scripts/jupyterlab_requirements.txt index 2a2c2c30b9b0fa..a05aca00091f5d 100644 --- a/scripts/jupyterlab_requirements.txt +++ b/scripts/jupyterlab_requirements.txt @@ -4,10 +4,10 @@ # jupyter-lab # # -------------------------------------- -# import chip.native -# import pkgutil -# module = pkgutil.get_loader('chip.ChipReplStartup') -# %run {module.path} +# %reset -f +# import importlib.util +# spec = importlib.util.find_spec('chip.ChipReplStartup') +# %run {spec.origin} # -------------------------------------- # @@ -15,3 +15,4 @@ jupyterlab ipykernel jupyterlab-lsp python-lsp-server +jupyterlab-git diff --git a/src/app/data-model-provider/MetadataList.cpp b/src/app/data-model-provider/MetadataList.cpp index 564ccdf53f91cd..01da67ea37bfd9 100644 --- a/src/app/data-model-provider/MetadataList.cpp +++ b/src/app/data-model-provider/MetadataList.cpp @@ -82,10 +82,11 @@ CHIP_ERROR GenericAppendOnlyBuffer::EnsureAppendCapacity(size_t numElements) if (mBuffer == nullptr) { - mBuffer = static_cast(Platform::MemoryCalloc(numElements, mElementSize)); + mBuffer = static_cast(Platform::MemoryCalloc(numElements, mElementSize)); + VerifyOrReturnError(mBuffer != nullptr, CHIP_ERROR_NO_MEMORY); mCapacity = numElements; mBufferIsAllocated = true; - return mBuffer != nullptr ? CHIP_NO_ERROR : CHIP_ERROR_NO_MEMORY; + return CHIP_NO_ERROR; } // we already have the data in buffer. we have two choices: @@ -100,9 +101,9 @@ CHIP_ERROR GenericAppendOnlyBuffer::EnsureAppendCapacity(size_t numElements) else { // this is NOT an allocated buffer, but it should become one - auto new_buffer = static_cast(Platform::MemoryCalloc(mElementCount + numElements, mElementSize)); - mBufferIsAllocated = true; + auto new_buffer = static_cast(Platform::MemoryCalloc(mElementCount + numElements, mElementSize)); VerifyOrReturnError(new_buffer != nullptr, CHIP_ERROR_NO_MEMORY); + mBufferIsAllocated = true; memcpy(new_buffer, mBuffer, mElementCount * mElementSize); mBuffer = new_buffer; } @@ -119,7 +120,7 @@ CHIP_ERROR GenericAppendOnlyBuffer::AppendSingleElementRaw(const void * buffer) return CHIP_NO_ERROR; } -CHIP_ERROR GenericAppendOnlyBuffer::AppendElementArrayRaw(const void * buffer, size_t numElements) +CHIP_ERROR GenericAppendOnlyBuffer::AppendElementArrayRaw(const void * __restrict__ buffer, size_t numElements) { ReturnErrorOnFailure(EnsureAppendCapacity(numElements)); diff --git a/src/app/data-model-provider/MetadataList.h b/src/app/data-model-provider/MetadataList.h index 5086a430749b93..24a34c8223f655 100644 --- a/src/app/data-model-provider/MetadataList.h +++ b/src/app/data-model-provider/MetadataList.h @@ -47,7 +47,7 @@ class GenericAppendOnlyBuffer /// Ensure that at least the specified number of elements /// can be appended to the internal buffer; /// - /// This will cause the internal buffer to become and allocated buffer + /// This will cause the internal buffer to become an allocated buffer CHIP_ERROR EnsureAppendCapacity(size_t numElements); bool IsEmpty() const { return mElementCount == 0; } @@ -66,7 +66,10 @@ class GenericAppendOnlyBuffer /// /// This ALWAYS COPIES the elements internally. /// Additional capacity is AUTOMATICALLY ADDED. - CHIP_ERROR AppendElementArrayRaw(const void * buffer, size_t numElements); + /// + /// buffer MUST NOT point inside "own" buffer as mBuffer may be reallocated + /// as part of the appending. + CHIP_ERROR AppendElementArrayRaw(const void * __restrict__ buffer, size_t numElements); /// Appends a list of elements from a raw array. /// @@ -93,7 +96,11 @@ class GenericAppendOnlyBuffer /// Represents a RAII instance owning a buffer. /// -/// It auto-frees the owned buffer on destruction +/// It auto-frees the owned buffer on destruction via `Platform::MemoryFree`. +/// +/// This class is designed to be a storage class for `GenericAppendOnlyBuffer` and +/// its subclasses (i.e. GenericAppendOnlyBuffer uses PlatformMemory and this class +/// does the same. They MUST be kept in sync.) class ScopedBuffer { public: @@ -165,6 +172,10 @@ class ListBuilder : public detail::GenericAppendOnlyBuffer /// /// Automatically attempts to allocate sufficient space to fulfill the element /// requirements. + /// + /// `span` MUST NOT point inside "own" buffer (and generally will not + /// as this class does not expose buffer access except by releasing ownership + /// via `Take`) CHIP_ERROR AppendElements(SpanType span) { return AppendElementArrayRaw(span.data(), span.size()); } /// Append a single element. diff --git a/src/app/data-model-provider/ProviderMetadataTree.h b/src/app/data-model-provider/ProviderMetadataTree.h index cd1ff179806e3b..bad2e7533604a5 100644 --- a/src/app/data-model-provider/ProviderMetadataTree.h +++ b/src/app/data-model-provider/ProviderMetadataTree.h @@ -83,7 +83,11 @@ class ProviderMetadataTree virtual void Temporary_ReportAttributeChanged(const AttributePathParams & path) = 0; // "convenience" functions that just return the data and ignore the error - // This returns the builder as-is even after the error (e.g. not found would return empty data) + // This returns the `ListBuilder<..>::TakeBuffer` from their equivalent fuctions as-is, + // even after an error (e.g. not found would return empty data). + // + // Usage of these indicates no error handling (not even logging) and code should + // consider handling errors instead. ReadOnlyBuffer EndpointsIgnoreError(); ReadOnlyBuffer ServerClustersIgnoreError(EndpointId endpointId); ReadOnlyBuffer AttributesIgnoreError(const ConcreteClusterPath & path); diff --git a/src/controller/python/chip-repl.py b/src/controller/python/chip-repl.py index 861ad8962ccc84..1cfd9bc6637044 100755 --- a/src/controller/python/chip-repl.py +++ b/src/controller/python/chip-repl.py @@ -26,9 +26,9 @@ def main(): c = Config() c.InteractiveShellApp.exec_lines = [ - "import pkgutil", - "module = pkgutil.get_loader('chip.ChipReplStartup')", - "%run {module.path} " + " ".join(sys.argv[1:]) + "import importlib.util", + "spec = importlib.util.find_spec('chip.ChipReplStartup')", + "%run {spec.origin} " + " ".join(sys.argv[1:]) ] sys.argv = [sys.argv[0]] diff --git a/src/controller/python/chip/ChipReplStartup.py b/src/controller/python/chip/ChipReplStartup.py index 13a93a1efb453b..56c18243272744 100644 --- a/src/controller/python/chip/ChipReplStartup.py +++ b/src/controller/python/chip/ChipReplStartup.py @@ -6,6 +6,7 @@ import pathlib import chip.CertificateAuthority +import chip.clusters as Clusters # noqa: F401 import chip.FabricAdmin import chip.logging import chip.native @@ -163,7 +164,7 @@ def main(): console.print( '''\t[red]certificateAuthorityManager[blue]:\tManages a list of CertificateAuthority instances. \t[red]caList[blue]:\t\t\t\tThe list of CertificateAuthority instances. - \t[red]caList[n][m][blue]:\t\t\tA specific FabricAdmin object at index m for the nth CertificateAuthority instance.''') + \t[red]caList\[n].adminList\[m][blue]:\t\tA specific FabricAdmin object at index m for the nth CertificateAuthority instance.''') console.print( f'\n\n[blue]Default CHIP Device Controller (NodeId: {devCtrl.nodeId}): '