commit 6c1b6a614a40b9f9e83c21ca78d356594316f688 Author: Aurorxa Date: Thu Jul 11 08:07:44 2024 +0000 deploy: 278752d4361d2df75fbdf23bf93cc01a974db3c6 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..adbabc2 --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ + + + + + + 404 | Hi,终于等到你 + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/assets/1.CXNJqOOc.png b/assets/1.CXNJqOOc.png new file mode 100644 index 0000000..2b2523d Binary files /dev/null and b/assets/1.CXNJqOOc.png differ diff --git a/assets/1.D4a42fT1.jpg b/assets/1.D4a42fT1.jpg new file mode 100644 index 0000000..a0a752f Binary files /dev/null and b/assets/1.D4a42fT1.jpg differ diff --git a/assets/10.CkykpHY2.png b/assets/10.CkykpHY2.png new file mode 100644 index 0000000..738681d Binary files /dev/null and b/assets/10.CkykpHY2.png differ diff --git a/assets/10.h1ugtjyX.png b/assets/10.h1ugtjyX.png new file mode 100644 index 0000000..7adb100 Binary files /dev/null and b/assets/10.h1ugtjyX.png differ diff --git a/assets/100.CaUm8Qhc.png b/assets/100.CaUm8Qhc.png new file mode 100644 index 0000000..5497322 Binary files /dev/null and b/assets/100.CaUm8Qhc.png differ diff --git a/assets/101.kOkqIKG6.png b/assets/101.kOkqIKG6.png new file mode 100644 index 0000000..806e57d Binary files /dev/null and b/assets/101.kOkqIKG6.png differ diff --git a/assets/102.CyeASH-c.png b/assets/102.CyeASH-c.png new file mode 100644 index 0000000..07e0627 Binary files /dev/null and b/assets/102.CyeASH-c.png differ diff --git a/assets/103.CFdk60La.png b/assets/103.CFdk60La.png new file mode 100644 index 0000000..71b706d Binary files /dev/null and b/assets/103.CFdk60La.png differ diff --git a/assets/104.Bhl-0uK_.png b/assets/104.Bhl-0uK_.png new file mode 100644 index 0000000..d86bfb1 Binary files /dev/null and b/assets/104.Bhl-0uK_.png differ diff --git a/assets/105.Dni9KbXV.png b/assets/105.Dni9KbXV.png new file mode 100644 index 0000000..69511a0 Binary files /dev/null and b/assets/105.Dni9KbXV.png differ diff --git a/assets/106.BXx10MCV.png b/assets/106.BXx10MCV.png new file mode 100644 index 0000000..ea4d131 Binary files /dev/null and b/assets/106.BXx10MCV.png differ diff --git a/assets/107.CXcIKX1T.png b/assets/107.CXcIKX1T.png new file mode 100644 index 0000000..2790766 Binary files /dev/null and b/assets/107.CXcIKX1T.png differ diff --git a/assets/108.CQ3_QCQT.png b/assets/108.CQ3_QCQT.png new file mode 100644 index 0000000..4693479 Binary files /dev/null and b/assets/108.CQ3_QCQT.png differ diff --git a/assets/109.CQoDRJM5.gif b/assets/109.CQoDRJM5.gif new file mode 100644 index 0000000..e6b2b41 Binary files /dev/null and b/assets/109.CQoDRJM5.gif differ diff --git a/assets/11.D5PWTabw.png b/assets/11.D5PWTabw.png new file mode 100644 index 0000000..5f6dc7e Binary files /dev/null and b/assets/11.D5PWTabw.png differ diff --git a/assets/11.DV1YbrOP.png b/assets/11.DV1YbrOP.png new file mode 100644 index 0000000..76ddff9 Binary files /dev/null and b/assets/11.DV1YbrOP.png differ diff --git a/assets/110.CPfwZvD9.gif b/assets/110.CPfwZvD9.gif new file mode 100644 index 0000000..8e7f13e Binary files /dev/null and b/assets/110.CPfwZvD9.gif differ diff --git a/assets/111.bxEomEjU.gif b/assets/111.bxEomEjU.gif new file mode 100644 index 0000000..f6bd6e5 Binary files /dev/null and b/assets/111.bxEomEjU.gif differ diff --git a/assets/112.C_onhf2k.png b/assets/112.C_onhf2k.png new file mode 100644 index 0000000..7cbd8ec Binary files /dev/null and b/assets/112.C_onhf2k.png differ diff --git a/assets/113.Budj3s38.gif b/assets/113.Budj3s38.gif new file mode 100644 index 0000000..c0bdf70 Binary files /dev/null and b/assets/113.Budj3s38.gif differ diff --git a/assets/114.CH8koQdu.gif b/assets/114.CH8koQdu.gif new file mode 100644 index 0000000..6ced42e Binary files /dev/null and b/assets/114.CH8koQdu.gif differ diff --git a/assets/115.kUJhxMtg.png b/assets/115.kUJhxMtg.png new file mode 100644 index 0000000..1007dc7 Binary files /dev/null and b/assets/115.kUJhxMtg.png differ diff --git a/assets/116.BJeJJW4_.png b/assets/116.BJeJJW4_.png new file mode 100644 index 0000000..07b1243 Binary files /dev/null and b/assets/116.BJeJJW4_.png differ diff --git a/assets/117.BCuK6eJL.gif b/assets/117.BCuK6eJL.gif new file mode 100644 index 0000000..f14a6fc Binary files /dev/null and b/assets/117.BCuK6eJL.gif differ diff --git a/assets/118.rKC-z4z-.gif b/assets/118.rKC-z4z-.gif new file mode 100644 index 0000000..88080b7 Binary files /dev/null and b/assets/118.rKC-z4z-.gif differ diff --git a/assets/119.BJE3xxuT.gif b/assets/119.BJE3xxuT.gif new file mode 100644 index 0000000..09a94f7 Binary files /dev/null and b/assets/119.BJE3xxuT.gif differ diff --git a/assets/12.AHNJT9TV.png b/assets/12.AHNJT9TV.png new file mode 100644 index 0000000..207db8f Binary files /dev/null and b/assets/12.AHNJT9TV.png differ diff --git a/assets/12.Bvs6QYjl.jpg b/assets/12.Bvs6QYjl.jpg new file mode 100644 index 0000000..d822eb3 Binary files /dev/null and b/assets/12.Bvs6QYjl.jpg differ diff --git a/assets/120.DJOq__O0.gif b/assets/120.DJOq__O0.gif new file mode 100644 index 0000000..43e614c Binary files /dev/null and b/assets/120.DJOq__O0.gif differ diff --git a/assets/121.BDt_0fRR.png b/assets/121.BDt_0fRR.png new file mode 100644 index 0000000..168e260 Binary files /dev/null and b/assets/121.BDt_0fRR.png differ diff --git a/assets/122.Bo5OawW8.png b/assets/122.Bo5OawW8.png new file mode 100644 index 0000000..2022a3d Binary files /dev/null and b/assets/122.Bo5OawW8.png differ diff --git a/assets/123.sUWUfl5e.png b/assets/123.sUWUfl5e.png new file mode 100644 index 0000000..427d0da Binary files /dev/null and b/assets/123.sUWUfl5e.png differ diff --git a/assets/124.BK4jpnB8.png b/assets/124.BK4jpnB8.png new file mode 100644 index 0000000..ae95fd6 Binary files /dev/null and b/assets/124.BK4jpnB8.png differ diff --git a/assets/125.EF8vdbSq.png b/assets/125.EF8vdbSq.png new file mode 100644 index 0000000..861c995 Binary files /dev/null and b/assets/125.EF8vdbSq.png differ diff --git a/assets/126.DjxdA_Co.png b/assets/126.DjxdA_Co.png new file mode 100644 index 0000000..5159db4 Binary files /dev/null and b/assets/126.DjxdA_Co.png differ diff --git a/assets/127.sp68q1hh.gif b/assets/127.sp68q1hh.gif new file mode 100644 index 0000000..78e968a Binary files /dev/null and b/assets/127.sp68q1hh.gif differ diff --git a/assets/128.DhMRyxNN.gif b/assets/128.DhMRyxNN.gif new file mode 100644 index 0000000..7e92e4b Binary files /dev/null and b/assets/128.DhMRyxNN.gif differ diff --git a/assets/129.CdcLZM0R.gif b/assets/129.CdcLZM0R.gif new file mode 100644 index 0000000..3b31baa Binary files /dev/null and b/assets/129.CdcLZM0R.gif differ diff --git a/assets/13.Bs-MOwx2.png b/assets/13.Bs-MOwx2.png new file mode 100644 index 0000000..20414b0 Binary files /dev/null and b/assets/13.Bs-MOwx2.png differ diff --git a/assets/130.D-5AsTTr.png b/assets/130.D-5AsTTr.png new file mode 100644 index 0000000..2e9a3ef Binary files /dev/null and b/assets/130.D-5AsTTr.png differ diff --git a/assets/131.2RQKmAUa.png b/assets/131.2RQKmAUa.png new file mode 100644 index 0000000..4076696 Binary files /dev/null and b/assets/131.2RQKmAUa.png differ diff --git a/assets/132.CI4xX8SM.png b/assets/132.CI4xX8SM.png new file mode 100644 index 0000000..f016d0c Binary files /dev/null and b/assets/132.CI4xX8SM.png differ diff --git a/assets/133.C8QUZ9v3.gif b/assets/133.C8QUZ9v3.gif new file mode 100644 index 0000000..beea99f Binary files /dev/null and b/assets/133.C8QUZ9v3.gif differ diff --git a/assets/134.g5tQfhWz.gif b/assets/134.g5tQfhWz.gif new file mode 100644 index 0000000..dffcc80 Binary files /dev/null and b/assets/134.g5tQfhWz.gif differ diff --git a/assets/135.CX0_1NsE.gif b/assets/135.CX0_1NsE.gif new file mode 100644 index 0000000..68c8edc Binary files /dev/null and b/assets/135.CX0_1NsE.gif differ diff --git a/assets/136.BrFJeoK6.png b/assets/136.BrFJeoK6.png new file mode 100644 index 0000000..2ba4864 Binary files /dev/null and b/assets/136.BrFJeoK6.png differ diff --git a/assets/137.58TjSSjH.gif b/assets/137.58TjSSjH.gif new file mode 100644 index 0000000..30538f0 Binary files /dev/null and b/assets/137.58TjSSjH.gif differ diff --git a/assets/138.CgqNV2hL.png b/assets/138.CgqNV2hL.png new file mode 100644 index 0000000..3deaf9e Binary files /dev/null and b/assets/138.CgqNV2hL.png differ diff --git a/assets/139.BasYWvkM.png b/assets/139.BasYWvkM.png new file mode 100644 index 0000000..482e0ac Binary files /dev/null and b/assets/139.BasYWvkM.png differ diff --git a/assets/14.CsR5exrN.png b/assets/14.CsR5exrN.png new file mode 100644 index 0000000..8a52912 Binary files /dev/null and b/assets/14.CsR5exrN.png differ diff --git a/assets/14.StzjmBz-.png b/assets/14.StzjmBz-.png new file mode 100644 index 0000000..efc4033 Binary files /dev/null and b/assets/14.StzjmBz-.png differ diff --git a/assets/140.CjFxJpBr.png b/assets/140.CjFxJpBr.png new file mode 100644 index 0000000..f052766 Binary files /dev/null and b/assets/140.CjFxJpBr.png differ diff --git a/assets/141.Dm5Jspvp.gif b/assets/141.Dm5Jspvp.gif new file mode 100644 index 0000000..643da5b Binary files /dev/null and b/assets/141.Dm5Jspvp.gif differ diff --git a/assets/142.1krCh8cy.gif b/assets/142.1krCh8cy.gif new file mode 100644 index 0000000..0e78f9f Binary files /dev/null and b/assets/142.1krCh8cy.gif differ diff --git a/assets/143.DOSyahv7.gif b/assets/143.DOSyahv7.gif new file mode 100644 index 0000000..ea466ac Binary files /dev/null and b/assets/143.DOSyahv7.gif differ diff --git a/assets/144.BHEvX_FI.gif b/assets/144.BHEvX_FI.gif new file mode 100644 index 0000000..e2c28f4 Binary files /dev/null and b/assets/144.BHEvX_FI.gif differ diff --git a/assets/145.DFA0g1_d.gif b/assets/145.DFA0g1_d.gif new file mode 100644 index 0000000..e421e78 Binary files /dev/null and b/assets/145.DFA0g1_d.gif differ diff --git a/assets/146.D50nO5eA.gif b/assets/146.D50nO5eA.gif new file mode 100644 index 0000000..a78934c Binary files /dev/null and b/assets/146.D50nO5eA.gif differ diff --git a/assets/147.cAvG1Qfq.png b/assets/147.cAvG1Qfq.png new file mode 100644 index 0000000..e34853d Binary files /dev/null and b/assets/147.cAvG1Qfq.png differ diff --git a/assets/148.DpakQFWz.gif b/assets/148.DpakQFWz.gif new file mode 100644 index 0000000..f7dc22a Binary files /dev/null and b/assets/148.DpakQFWz.gif differ diff --git a/assets/149.Bg61j9QI.gif b/assets/149.Bg61j9QI.gif new file mode 100644 index 0000000..5bc7a5c Binary files /dev/null and b/assets/149.Bg61j9QI.gif differ diff --git a/assets/15.BRG9GQdT.png b/assets/15.BRG9GQdT.png new file mode 100644 index 0000000..7c81fe3 Binary files /dev/null and b/assets/15.BRG9GQdT.png differ diff --git a/assets/15.C0wVWaxD.png b/assets/15.C0wVWaxD.png new file mode 100644 index 0000000..fb08278 Binary files /dev/null and b/assets/15.C0wVWaxD.png differ diff --git a/assets/150.DPvD9UCw.gif b/assets/150.DPvD9UCw.gif new file mode 100644 index 0000000..5edcd16 Binary files /dev/null and b/assets/150.DPvD9UCw.gif differ diff --git a/assets/151.Ceu65U_n.gif b/assets/151.Ceu65U_n.gif new file mode 100644 index 0000000..e01c95d Binary files /dev/null and b/assets/151.Ceu65U_n.gif differ diff --git a/assets/152.BWPFRK_8.gif b/assets/152.BWPFRK_8.gif new file mode 100644 index 0000000..cc77b91 Binary files /dev/null and b/assets/152.BWPFRK_8.gif differ diff --git a/assets/153.Ct4TfxPf.gif b/assets/153.Ct4TfxPf.gif new file mode 100644 index 0000000..d9e2582 Binary files /dev/null and b/assets/153.Ct4TfxPf.gif differ diff --git a/assets/154.zsKtx_jV.png b/assets/154.zsKtx_jV.png new file mode 100644 index 0000000..41f14bd Binary files /dev/null and b/assets/154.zsKtx_jV.png differ diff --git a/assets/155.3oqDAW0w.png b/assets/155.3oqDAW0w.png new file mode 100644 index 0000000..980f568 Binary files /dev/null and b/assets/155.3oqDAW0w.png differ diff --git a/assets/156.D9TSeAa9.gif b/assets/156.D9TSeAa9.gif new file mode 100644 index 0000000..339ab2a Binary files /dev/null and b/assets/156.D9TSeAa9.gif differ diff --git a/assets/157.CCRgYIVq.png b/assets/157.CCRgYIVq.png new file mode 100644 index 0000000..3cd0407 Binary files /dev/null and b/assets/157.CCRgYIVq.png differ diff --git a/assets/158.C1t2T6FV.gif b/assets/158.C1t2T6FV.gif new file mode 100644 index 0000000..389f147 Binary files /dev/null and b/assets/158.C1t2T6FV.gif differ diff --git a/assets/159.Rqa4uHq6.png b/assets/159.Rqa4uHq6.png new file mode 100644 index 0000000..af9b61a Binary files /dev/null and b/assets/159.Rqa4uHq6.png differ diff --git a/assets/16.C2sciGZn.png b/assets/16.C2sciGZn.png new file mode 100644 index 0000000..f564cde Binary files /dev/null and b/assets/16.C2sciGZn.png differ diff --git a/assets/16.LXJMAihe.png b/assets/16.LXJMAihe.png new file mode 100644 index 0000000..85ef98d Binary files /dev/null and b/assets/16.LXJMAihe.png differ diff --git a/assets/160.6yQYnjOa.gif b/assets/160.6yQYnjOa.gif new file mode 100644 index 0000000..181bac1 Binary files /dev/null and b/assets/160.6yQYnjOa.gif differ diff --git a/assets/161.hYR9GiiD.gif b/assets/161.hYR9GiiD.gif new file mode 100644 index 0000000..103a50a Binary files /dev/null and b/assets/161.hYR9GiiD.gif differ diff --git a/assets/162.D3b-QIrA.gif b/assets/162.D3b-QIrA.gif new file mode 100644 index 0000000..5e49062 Binary files /dev/null and b/assets/162.D3b-QIrA.gif differ diff --git a/assets/163.DGbA6qsW.gif b/assets/163.DGbA6qsW.gif new file mode 100644 index 0000000..3686a3f Binary files /dev/null and b/assets/163.DGbA6qsW.gif differ diff --git a/assets/164.BToOkxf2.gif b/assets/164.BToOkxf2.gif new file mode 100644 index 0000000..cb8ae8f Binary files /dev/null and b/assets/164.BToOkxf2.gif differ diff --git a/assets/17.DdyXXyxJ.png b/assets/17.DdyXXyxJ.png new file mode 100644 index 0000000..d22418c Binary files /dev/null and b/assets/17.DdyXXyxJ.png differ diff --git a/assets/17._UTCq3PD.png b/assets/17._UTCq3PD.png new file mode 100644 index 0000000..69eadd4 Binary files /dev/null and b/assets/17._UTCq3PD.png differ diff --git a/assets/18.BjQ5kBL-.png b/assets/18.BjQ5kBL-.png new file mode 100644 index 0000000..35dda66 Binary files /dev/null and b/assets/18.BjQ5kBL-.png differ diff --git a/assets/18.DIeb_KXW.png b/assets/18.DIeb_KXW.png new file mode 100644 index 0000000..fd9fc8f Binary files /dev/null and b/assets/18.DIeb_KXW.png differ diff --git a/assets/19.C-kvMz2p.png b/assets/19.C-kvMz2p.png new file mode 100644 index 0000000..5ff1eaf Binary files /dev/null and b/assets/19.C-kvMz2p.png differ diff --git a/assets/19.COIOzcmT.png b/assets/19.COIOzcmT.png new file mode 100644 index 0000000..41326ad Binary files /dev/null and b/assets/19.COIOzcmT.png differ diff --git a/assets/2.D2wnxl5F.png b/assets/2.D2wnxl5F.png new file mode 100644 index 0000000..68c6b3e Binary files /dev/null and b/assets/2.D2wnxl5F.png differ diff --git a/assets/2.E0LS08Y5.png b/assets/2.E0LS08Y5.png new file mode 100644 index 0000000..0c36d70 Binary files /dev/null and b/assets/2.E0LS08Y5.png differ diff --git a/assets/20.CQqFxmDa.png b/assets/20.CQqFxmDa.png new file mode 100644 index 0000000..68a4aac Binary files /dev/null and b/assets/20.CQqFxmDa.png differ diff --git a/assets/20.Cu__mjav.png b/assets/20.Cu__mjav.png new file mode 100644 index 0000000..31f6522 Binary files /dev/null and b/assets/20.Cu__mjav.png differ diff --git a/assets/21.BX_KzkHt.png b/assets/21.BX_KzkHt.png new file mode 100644 index 0000000..a00fbf2 Binary files /dev/null and b/assets/21.BX_KzkHt.png differ diff --git a/assets/21.CjMWyIiX.png b/assets/21.CjMWyIiX.png new file mode 100644 index 0000000..c187c0b Binary files /dev/null and b/assets/21.CjMWyIiX.png differ diff --git a/assets/22.COt_QxSP.png b/assets/22.COt_QxSP.png new file mode 100644 index 0000000..41dc121 Binary files /dev/null and b/assets/22.COt_QxSP.png differ diff --git a/assets/22.DFQhcDgs.png b/assets/22.DFQhcDgs.png new file mode 100644 index 0000000..9d71ebd Binary files /dev/null and b/assets/22.DFQhcDgs.png differ diff --git a/assets/23.Cco1vsW8.png b/assets/23.Cco1vsW8.png new file mode 100644 index 0000000..9255720 Binary files /dev/null and b/assets/23.Cco1vsW8.png differ diff --git a/assets/24.D60Zf6_d.png b/assets/24.D60Zf6_d.png new file mode 100644 index 0000000..0a06e02 Binary files /dev/null and b/assets/24.D60Zf6_d.png differ diff --git a/assets/25.D2-G6nV2.png b/assets/25.D2-G6nV2.png new file mode 100644 index 0000000..5044ea9 Binary files /dev/null and b/assets/25.D2-G6nV2.png differ diff --git a/assets/26.DpzkVk5V.png b/assets/26.DpzkVk5V.png new file mode 100644 index 0000000..0ccd7e2 Binary files /dev/null and b/assets/26.DpzkVk5V.png differ diff --git a/assets/27.BXk95GIP.png b/assets/27.BXk95GIP.png new file mode 100644 index 0000000..820ebb7 Binary files /dev/null and b/assets/27.BXk95GIP.png differ diff --git a/assets/28.CbWTB08W.png b/assets/28.CbWTB08W.png new file mode 100644 index 0000000..c322baa Binary files /dev/null and b/assets/28.CbWTB08W.png differ diff --git a/assets/29.twO9TCIg.png b/assets/29.twO9TCIg.png new file mode 100644 index 0000000..9c9d743 Binary files /dev/null and b/assets/29.twO9TCIg.png differ diff --git a/assets/3.Dq625oo9.jpg b/assets/3.Dq625oo9.jpg new file mode 100644 index 0000000..0873e90 Binary files /dev/null and b/assets/3.Dq625oo9.jpg differ diff --git a/assets/3.XcPl7d9s.png b/assets/3.XcPl7d9s.png new file mode 100644 index 0000000..e6cfab4 Binary files /dev/null and b/assets/3.XcPl7d9s.png differ diff --git a/assets/30.CKOjeIvS.png b/assets/30.CKOjeIvS.png new file mode 100644 index 0000000..57a6dfd Binary files /dev/null and b/assets/30.CKOjeIvS.png differ diff --git a/assets/31.DKmR0CxE.png b/assets/31.DKmR0CxE.png new file mode 100644 index 0000000..cf9dd38 Binary files /dev/null and b/assets/31.DKmR0CxE.png differ diff --git a/assets/32.Cudf77_s.gif b/assets/32.Cudf77_s.gif new file mode 100644 index 0000000..5b5b2a9 Binary files /dev/null and b/assets/32.Cudf77_s.gif differ diff --git a/assets/33.BBUUlhRC.png b/assets/33.BBUUlhRC.png new file mode 100644 index 0000000..7e20bc7 Binary files /dev/null and b/assets/33.BBUUlhRC.png differ diff --git a/assets/34.iLABkB7O.png b/assets/34.iLABkB7O.png new file mode 100644 index 0000000..cd2a9c7 Binary files /dev/null and b/assets/34.iLABkB7O.png differ diff --git a/assets/35.BQuYWOU9.png b/assets/35.BQuYWOU9.png new file mode 100644 index 0000000..879f4b9 Binary files /dev/null and b/assets/35.BQuYWOU9.png differ diff --git a/assets/36.CslpH6j0.png b/assets/36.CslpH6j0.png new file mode 100644 index 0000000..516fa4c Binary files /dev/null and b/assets/36.CslpH6j0.png differ diff --git a/assets/37.BAyvZdKq.png b/assets/37.BAyvZdKq.png new file mode 100644 index 0000000..6bb5a43 Binary files /dev/null and b/assets/37.BAyvZdKq.png differ diff --git a/assets/38.C3oC1iUd.png b/assets/38.C3oC1iUd.png new file mode 100644 index 0000000..e51e4cf Binary files /dev/null and b/assets/38.C3oC1iUd.png differ diff --git a/assets/39.Ds-jsEZn.png b/assets/39.Ds-jsEZn.png new file mode 100644 index 0000000..818d693 Binary files /dev/null and b/assets/39.Ds-jsEZn.png differ diff --git a/assets/4.DL02VQMp.png b/assets/4.DL02VQMp.png new file mode 100644 index 0000000..533be0f Binary files /dev/null and b/assets/4.DL02VQMp.png differ diff --git a/assets/4.uqu1DEK4.png b/assets/4.uqu1DEK4.png new file mode 100644 index 0000000..973d6ee Binary files /dev/null and b/assets/4.uqu1DEK4.png differ diff --git a/assets/40.Cd37gMYs.png b/assets/40.Cd37gMYs.png new file mode 100644 index 0000000..a83195b Binary files /dev/null and b/assets/40.Cd37gMYs.png differ diff --git a/assets/41.CAw2z3gc.png b/assets/41.CAw2z3gc.png new file mode 100644 index 0000000..e6a6d7c Binary files /dev/null and b/assets/41.CAw2z3gc.png differ diff --git a/assets/42.DdPThnr-.png b/assets/42.DdPThnr-.png new file mode 100644 index 0000000..bb666c8 Binary files /dev/null and b/assets/42.DdPThnr-.png differ diff --git a/assets/43.q_rvlDnY.png b/assets/43.q_rvlDnY.png new file mode 100644 index 0000000..69ac1cf Binary files /dev/null and b/assets/43.q_rvlDnY.png differ diff --git a/assets/44.JRHg9RZA.png b/assets/44.JRHg9RZA.png new file mode 100644 index 0000000..c4b92b4 Binary files /dev/null and b/assets/44.JRHg9RZA.png differ diff --git a/assets/45.Baq-Hb06.png b/assets/45.Baq-Hb06.png new file mode 100644 index 0000000..f53407f Binary files /dev/null and b/assets/45.Baq-Hb06.png differ diff --git a/assets/46.c1ht53mu.png b/assets/46.c1ht53mu.png new file mode 100644 index 0000000..4b7c69b Binary files /dev/null and b/assets/46.c1ht53mu.png differ diff --git a/assets/47.CAZmH5Py.png b/assets/47.CAZmH5Py.png new file mode 100644 index 0000000..f2eef8a Binary files /dev/null and b/assets/47.CAZmH5Py.png differ diff --git a/assets/48.DWeCYBe9.png b/assets/48.DWeCYBe9.png new file mode 100644 index 0000000..f3d7446 Binary files /dev/null and b/assets/48.DWeCYBe9.png differ diff --git a/assets/49.2XM8pYni.png b/assets/49.2XM8pYni.png new file mode 100644 index 0000000..bc2aea4 Binary files /dev/null and b/assets/49.2XM8pYni.png differ diff --git a/assets/5.C6Q0Q8kf.jpg b/assets/5.C6Q0Q8kf.jpg new file mode 100644 index 0000000..2b61d98 Binary files /dev/null and b/assets/5.C6Q0Q8kf.jpg differ diff --git a/assets/5.Dr67r_Ws.png b/assets/5.Dr67r_Ws.png new file mode 100644 index 0000000..80eee94 Binary files /dev/null and b/assets/5.Dr67r_Ws.png differ diff --git a/assets/50.CN0t-fuo.png b/assets/50.CN0t-fuo.png new file mode 100644 index 0000000..29e61a3 Binary files /dev/null and b/assets/50.CN0t-fuo.png differ diff --git a/assets/51.AcDh3LXQ.png b/assets/51.AcDh3LXQ.png new file mode 100644 index 0000000..66efe1c Binary files /dev/null and b/assets/51.AcDh3LXQ.png differ diff --git a/assets/52.CUkDFAc6.png b/assets/52.CUkDFAc6.png new file mode 100644 index 0000000..67565ef Binary files /dev/null and b/assets/52.CUkDFAc6.png differ diff --git a/assets/53.picNTNaJ.png b/assets/53.picNTNaJ.png new file mode 100644 index 0000000..7e69527 Binary files /dev/null and b/assets/53.picNTNaJ.png differ diff --git a/assets/54.DKX92RgJ.png b/assets/54.DKX92RgJ.png new file mode 100644 index 0000000..6014f53 Binary files /dev/null and b/assets/54.DKX92RgJ.png differ diff --git a/assets/55.Bxr7QKI3.png b/assets/55.Bxr7QKI3.png new file mode 100644 index 0000000..f5d79ad Binary files /dev/null and b/assets/55.Bxr7QKI3.png differ diff --git a/assets/56.DuFWsOgW.png b/assets/56.DuFWsOgW.png new file mode 100644 index 0000000..e8f99ce Binary files /dev/null and b/assets/56.DuFWsOgW.png differ diff --git a/assets/57.Da9qUcfr.png b/assets/57.Da9qUcfr.png new file mode 100644 index 0000000..e02205d Binary files /dev/null and b/assets/57.Da9qUcfr.png differ diff --git a/assets/58.7_gEABSX.gif b/assets/58.7_gEABSX.gif new file mode 100644 index 0000000..ebb2658 Binary files /dev/null and b/assets/58.7_gEABSX.gif differ diff --git a/assets/59.C2KQYoVC.gif b/assets/59.C2KQYoVC.gif new file mode 100644 index 0000000..dc19e91 Binary files /dev/null and b/assets/59.C2KQYoVC.gif differ diff --git a/assets/6.B4Srsb-0.png b/assets/6.B4Srsb-0.png new file mode 100644 index 0000000..7d97a4c Binary files /dev/null and b/assets/6.B4Srsb-0.png differ diff --git a/assets/6.C5XiXNVN.png b/assets/6.C5XiXNVN.png new file mode 100644 index 0000000..0bcf281 Binary files /dev/null and b/assets/6.C5XiXNVN.png differ diff --git a/assets/60.RTUP8Vtx.png b/assets/60.RTUP8Vtx.png new file mode 100644 index 0000000..5b03420 Binary files /dev/null and b/assets/60.RTUP8Vtx.png differ diff --git a/assets/61.Dq21DxwL.png b/assets/61.Dq21DxwL.png new file mode 100644 index 0000000..deec4ce Binary files /dev/null and b/assets/61.Dq21DxwL.png differ diff --git a/assets/62.QmpUaNxU.png b/assets/62.QmpUaNxU.png new file mode 100644 index 0000000..d3b974a Binary files /dev/null and b/assets/62.QmpUaNxU.png differ diff --git a/assets/63.DP0C29gZ.png b/assets/63.DP0C29gZ.png new file mode 100644 index 0000000..e8c509b Binary files /dev/null and b/assets/63.DP0C29gZ.png differ diff --git a/assets/64.DwzHokd4.png b/assets/64.DwzHokd4.png new file mode 100644 index 0000000..4c8ddb1 Binary files /dev/null and b/assets/64.DwzHokd4.png differ diff --git a/assets/65.Bi6K26yA.png b/assets/65.Bi6K26yA.png new file mode 100644 index 0000000..3dcef53 Binary files /dev/null and b/assets/65.Bi6K26yA.png differ diff --git a/assets/66.Bw8DcEQ_.png b/assets/66.Bw8DcEQ_.png new file mode 100644 index 0000000..d96231f Binary files /dev/null and b/assets/66.Bw8DcEQ_.png differ diff --git a/assets/67.DPc8Z9rS.png b/assets/67.DPc8Z9rS.png new file mode 100644 index 0000000..18cee74 Binary files /dev/null and b/assets/67.DPc8Z9rS.png differ diff --git a/assets/68.S84xHMTl.png b/assets/68.S84xHMTl.png new file mode 100644 index 0000000..7ab6c69 Binary files /dev/null and b/assets/68.S84xHMTl.png differ diff --git a/assets/69.iw3JQUkn.png b/assets/69.iw3JQUkn.png new file mode 100644 index 0000000..a2e38ca Binary files /dev/null and b/assets/69.iw3JQUkn.png differ diff --git a/assets/7.DO8XxSV6.jpg b/assets/7.DO8XxSV6.jpg new file mode 100644 index 0000000..089e484 Binary files /dev/null and b/assets/7.DO8XxSV6.jpg differ diff --git a/assets/7._D_c8Lrn.png b/assets/7._D_c8Lrn.png new file mode 100644 index 0000000..fe9e3c7 Binary files /dev/null and b/assets/7._D_c8Lrn.png differ diff --git a/assets/70.ILeJt-HK.png b/assets/70.ILeJt-HK.png new file mode 100644 index 0000000..eca4ba5 Binary files /dev/null and b/assets/70.ILeJt-HK.png differ diff --git a/assets/71.CHgm7khh.png b/assets/71.CHgm7khh.png new file mode 100644 index 0000000..7001b73 Binary files /dev/null and b/assets/71.CHgm7khh.png differ diff --git a/assets/72.N1nqJaEg.png b/assets/72.N1nqJaEg.png new file mode 100644 index 0000000..eb4b043 Binary files /dev/null and b/assets/72.N1nqJaEg.png differ diff --git a/assets/73.DHsnibMi.png b/assets/73.DHsnibMi.png new file mode 100644 index 0000000..969f9f1 Binary files /dev/null and b/assets/73.DHsnibMi.png differ diff --git a/assets/74.BQr6Q0uV.png b/assets/74.BQr6Q0uV.png new file mode 100644 index 0000000..3701026 Binary files /dev/null and b/assets/74.BQr6Q0uV.png differ diff --git a/assets/75.BVemi2Lh.png b/assets/75.BVemi2Lh.png new file mode 100644 index 0000000..abaa9bd Binary files /dev/null and b/assets/75.BVemi2Lh.png differ diff --git a/assets/76.BHR69UXx.png b/assets/76.BHR69UXx.png new file mode 100644 index 0000000..976273d Binary files /dev/null and b/assets/76.BHR69UXx.png differ diff --git a/assets/77.CPSU5SJI.png b/assets/77.CPSU5SJI.png new file mode 100644 index 0000000..969b011 Binary files /dev/null and b/assets/77.CPSU5SJI.png differ diff --git a/assets/78.CaQLoDlw.png b/assets/78.CaQLoDlw.png new file mode 100644 index 0000000..24dba88 Binary files /dev/null and b/assets/78.CaQLoDlw.png differ diff --git a/assets/79.aRGy4XbL.png b/assets/79.aRGy4XbL.png new file mode 100644 index 0000000..4a340d6 Binary files /dev/null and b/assets/79.aRGy4XbL.png differ diff --git a/assets/8.CUXrdefp.jpeg b/assets/8.CUXrdefp.jpeg new file mode 100644 index 0000000..09a96d6 Binary files /dev/null and b/assets/8.CUXrdefp.jpeg differ diff --git a/assets/8.DlIyFGDg.png b/assets/8.DlIyFGDg.png new file mode 100644 index 0000000..cf98d6a Binary files /dev/null and b/assets/8.DlIyFGDg.png differ diff --git a/assets/80.kNO9fmPR.png b/assets/80.kNO9fmPR.png new file mode 100644 index 0000000..67b34b7 Binary files /dev/null and b/assets/80.kNO9fmPR.png differ diff --git a/assets/81.D4EkoC4o.png b/assets/81.D4EkoC4o.png new file mode 100644 index 0000000..de50a66 Binary files /dev/null and b/assets/81.D4EkoC4o.png differ diff --git a/assets/82.V23Lo9e_.png b/assets/82.V23Lo9e_.png new file mode 100644 index 0000000..cc05902 Binary files /dev/null and b/assets/82.V23Lo9e_.png differ diff --git a/assets/83.Du9LVeMB.png b/assets/83.Du9LVeMB.png new file mode 100644 index 0000000..917fe9a Binary files /dev/null and b/assets/83.Du9LVeMB.png differ diff --git a/assets/84.DdFg75U9.png b/assets/84.DdFg75U9.png new file mode 100644 index 0000000..b45ee07 Binary files /dev/null and b/assets/84.DdFg75U9.png differ diff --git a/assets/85.C6bz6KtT.png b/assets/85.C6bz6KtT.png new file mode 100644 index 0000000..fc61e09 Binary files /dev/null and b/assets/85.C6bz6KtT.png differ diff --git a/assets/86.CB6LAhB5.png b/assets/86.CB6LAhB5.png new file mode 100644 index 0000000..731ab8a Binary files /dev/null and b/assets/86.CB6LAhB5.png differ diff --git a/assets/87.Bip8bkua.png b/assets/87.Bip8bkua.png new file mode 100644 index 0000000..2f6920a Binary files /dev/null and b/assets/87.Bip8bkua.png differ diff --git a/assets/88.DRNHRduW.png b/assets/88.DRNHRduW.png new file mode 100644 index 0000000..704d398 Binary files /dev/null and b/assets/88.DRNHRduW.png differ diff --git a/assets/89.Cth4qqEn.png b/assets/89.Cth4qqEn.png new file mode 100644 index 0000000..ba69231 Binary files /dev/null and b/assets/89.Cth4qqEn.png differ diff --git a/assets/9.7zkUmpQw.png b/assets/9.7zkUmpQw.png new file mode 100644 index 0000000..78f67c2 Binary files /dev/null and b/assets/9.7zkUmpQw.png differ diff --git a/assets/9.uqLiL_yu.png b/assets/9.uqLiL_yu.png new file mode 100644 index 0000000..dd60060 Binary files /dev/null and b/assets/9.uqLiL_yu.png differ diff --git a/assets/90.DWGWZ64P.png b/assets/90.DWGWZ64P.png new file mode 100644 index 0000000..7bde91b Binary files /dev/null and b/assets/90.DWGWZ64P.png differ diff --git a/assets/91.3hDIDdvx.png b/assets/91.3hDIDdvx.png new file mode 100644 index 0000000..14f7f8c Binary files /dev/null and b/assets/91.3hDIDdvx.png differ diff --git a/assets/92.Bw_dQ4ap.png b/assets/92.Bw_dQ4ap.png new file mode 100644 index 0000000..279c412 Binary files /dev/null and b/assets/92.Bw_dQ4ap.png differ diff --git a/assets/93.Cn_ubTyA.png b/assets/93.Cn_ubTyA.png new file mode 100644 index 0000000..7f3c71f Binary files /dev/null and b/assets/93.Cn_ubTyA.png differ diff --git a/assets/94.C84EBqwB.png b/assets/94.C84EBqwB.png new file mode 100644 index 0000000..b86a1e1 Binary files /dev/null and b/assets/94.C84EBqwB.png differ diff --git a/assets/95.dZfJY4eR.png b/assets/95.dZfJY4eR.png new file mode 100644 index 0000000..9e6f050 Binary files /dev/null and b/assets/95.dZfJY4eR.png differ diff --git a/assets/96.B0zm0Z79.png b/assets/96.B0zm0Z79.png new file mode 100644 index 0000000..3deb8fa Binary files /dev/null and b/assets/96.B0zm0Z79.png differ diff --git a/assets/97.CaTcEy1Q.png b/assets/97.CaTcEy1Q.png new file mode 100644 index 0000000..1151c63 Binary files /dev/null and b/assets/97.CaTcEy1Q.png differ diff --git a/assets/98.iEc8mo9g.png b/assets/98.iEc8mo9g.png new file mode 100644 index 0000000..46ffa21 Binary files /dev/null and b/assets/98.iEc8mo9g.png differ diff --git a/assets/99.Co2KxM6t.png b/assets/99.Co2KxM6t.png new file mode 100644 index 0000000..5c92607 Binary files /dev/null and b/assets/99.Co2KxM6t.png differ diff --git a/assets/app.BmFonQgT.js b/assets/app.BmFonQgT.js new file mode 100644 index 0000000..ba1c9d7 --- /dev/null +++ b/assets/app.BmFonQgT.js @@ -0,0 +1 @@ +import{U as o,a6 as p,a7 as u,a8 as l,a9 as c,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,d as P,u as v,y,x as w,ag as C,ah as R,ai as b,a4 as E}from"./chunks/framework.D1oHBMsh.js";import{R as S}from"./chunks/theme.DstJSxiY.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(T)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.C5vPI6F-.js b/assets/chunks/@localSearchIndexroot.C5vPI6F-.js new file mode 100644 index 0000000..bc7214f --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.C5vPI6F-.js @@ -0,0 +1 @@ +const t='{"documentCount":126,"nextId":126,"documentIds":{"0":"/coa6/notes/01_c-basic/01_xdx/#第一章-计算机组成原理","1":"/coa6/notes/01_c-basic/01_xdx/#_1-1-计算机系统","2":"/coa6/notes/01_c-basic/01_xdx/#_1-2-冯·诺依曼体系结构","3":"/coa6/notes/01_c-basic/01_xdx/#_1-3-各种硬件处理速度和性能优化","4":"/coa6/notes/01_c-basic/01_xdx/#_1-4-计算机软件","5":"/coa6/notes/01_c-basic/01_xdx/#_1-4-1-操作系统的来源","6":"/coa6/notes/01_c-basic/01_xdx/#_1-4-2-用户态和内核态","7":"/coa6/notes/01_c-basic/01_xdx/#_1-4-3-isa、abi-和-api","8":"/coa6/notes/01_c-basic/01_xdx/#_1-4-4-系统调用-system-call-和函数库-library-call","9":"/coa6/notes/01_c-basic/01_xdx/#第二章-初识计算机语言","10":"/coa6/notes/01_c-basic/01_xdx/#_2-1-计算机语言是什么","11":"/coa6/notes/01_c-basic/01_xdx/#_2-2-为什么要学习计算机语言","12":"/coa6/notes/01_c-basic/01_xdx/#_2-3-计算机语言简史","13":"/coa6/notes/01_c-basic/01_xdx/#_2-3-1-机器语言-相当于人类的石器时代","14":"/coa6/notes/01_c-basic/01_xdx/#_2-3-2-汇编语言-相当于人类的青铜-铁器时代","15":"/coa6/notes/01_c-basic/01_xdx/#_2-3-3-高级语言-相当于人类的信息时代","16":"/coa6/notes/01_c-basic/01_xdx/#_2-3-4-总结","17":"/coa6/notes/01_c-basic/01_xdx/#第三章-初识-c-语言","18":"/coa6/notes/01_c-basic/01_xdx/#_3-1-c-语言的由来","19":"/coa6/notes/01_c-basic/01_xdx/#_3-2-为什么要学习-c-语言","20":"/coa6/notes/01_c-basic/01_xdx/#_3-3-计算机语言排行榜","21":"/coa6/notes/01_c-basic/01_xdx/#_3-4-c-语言的版本选择","22":"/coa6/notes/01_c-basic/01_xdx/#_3-5-c-语言的优缺点","23":"/coa6/notes/01_c-basic/01_xdx/#第四章-c-语言入门-hello-world-⭐","24":"/coa6/notes/01_c-basic/01_xdx/#_4-1-环境的安装和配置","25":"/coa6/notes/01_c-basic/01_xdx/#_4-1-1-概述","26":"/coa6/notes/01_c-basic/01_xdx/#_4-1-2-mingw-w64-的安装和配置","27":"/coa6/notes/01_c-basic/01_xdx/#_4-1-2-1-安装","28":"/coa6/notes/01_c-basic/01_xdx/#_4-1-2-2-配置-path-环境变量","29":"/coa6/notes/01_c-basic/01_xdx/#_4-1-3-cygwin-的安装和配置","30":"/coa6/notes/01_c-basic/01_xdx/#_4-1-3-1-安装","31":"/coa6/notes/01_c-basic/01_xdx/#_4-1-3-2-配置-path-环境变量","32":"/coa6/notes/01_c-basic/01_xdx/#_4-1-4-msys2-推荐","33":"/coa6/notes/01_c-basic/01_xdx/#_4-1-4-1-安装","34":"/coa6/notes/01_c-basic/01_xdx/#_4-1-4-2-配置-path-环境变量","35":"/coa6/notes/01_c-basic/01_xdx/#_4-2-ide-的安装和配置","36":"/coa6/notes/01_c-basic/01_xdx/#_4-2-1-clion","37":"/coa6/notes/01_c-basic/01_xdx/#_4-2-1-1-概述","38":"/coa6/notes/01_c-basic/01_xdx/#_4-2-1-2-安装","39":"/coa6/notes/01_c-basic/01_xdx/#_4-2-1-3-配置","40":"/coa6/notes/01_c-basic/01_xdx/#_4-2-2-vs-code","41":"/coa6/notes/01_c-basic/01_xdx/#_4-2-2-1-概述","42":"/coa6/notes/01_c-basic/01_xdx/#_4-2-2-2-安装","43":"/coa6/notes/01_c-basic/01_xdx/#_4-2-2-3-配置","44":"/coa6/notes/01_c-basic/01_xdx/#_4-2-3-microsoft-visual-studio","45":"/coa6/notes/01_c-basic/01_xdx/#_4-2-3-1-概述","46":"/coa6/notes/01_c-basic/01_xdx/#_4-2-3-2-安装","47":"/coa6/notes/01_c-basic/01_xdx/#_4-2-3-3-配置","48":"/coa6/notes/01_c-basic/01_xdx/#_4-3-helloworld","49":"/coa6/notes/01_c-basic/01_xdx/#_4-3-1-手动版","50":"/coa6/notes/01_c-basic/01_xdx/#_4-3-2-vs-code-版","51":"/coa6/notes/01_c-basic/01_xdx/#_4-3-3-vs-版","52":"/coa6/notes/01_c-basic/01_xdx/#_4-3-4-clion","53":"/coa6/notes/01_c-basic/01_xdx/#第五章-注释","54":"/coa6/notes/01_c-basic/01_xdx/#_5-1-概述","55":"/coa6/notes/01_c-basic/01_xdx/#_5-2-单行注释","56":"/coa6/notes/01_c-basic/01_xdx/#_5-3-多行注释","57":"/coa6/notes/01_c-basic/01_xdx/#第六章-helloworld-的规范-⭐","58":"/coa6/notes/01_c-basic/01_xdx/#_6-1-规范的代码风格","59":"/coa6/notes/01_c-basic/01_xdx/#_6-1-1-正确的缩进和空白","60":"/coa6/notes/01_c-basic/01_xdx/#_6-1-2-代码风格","61":"/coa6/notes/01_c-basic/01_xdx/#_6-2-代码细节剖析","62":"/coa6/notes/01_c-basic/01_xdx/#_6-2-1-main-函数","63":"/coa6/notes/01_c-basic/01_xdx/#_6-2-2-函数体","64":"/coa6/notes/01_c-basic/01_xdx/#_6-2-3-printf-函数","65":"/coa6/notes/01_c-basic/01_xdx/#_6-2-4-标准库和头文件","66":"/coa6/notes/01_c-basic/01_xdx/#_6-2-4-1-概述","67":"/coa6/notes/01_c-basic/01_xdx/#_6-2-4-2-标准库-standard-library","68":"/coa6/notes/01_c-basic/01_xdx/#_6-2-4-3-头文件-header-files","69":"/coa6/notes/01_c-basic/01_xdx/#_6-2-4-4-预处理命令","70":"/coa6/notes/01_c-basic/01_xdx/#第七章-clion-高级配置-⭐","71":"/coa6/notes/01_c-basic/01_xdx/#_7-1-安装和配置-wsl2","72":"/coa6/notes/01_c-basic/01_xdx/#_7-1-1-概述","73":"/coa6/notes/01_c-basic/01_xdx/#_7-1-2-wsl2-的安装","74":"/coa6/notes/01_c-basic/01_xdx/#_7-1-3-配置-wsl2","75":"/coa6/notes/01_c-basic/01_xdx/#_7-1-4-配置-wsl2","76":"/coa6/notes/01_c-basic/01_xdx/#_7-2-切换-clion-中的-cmake-的工具链","77":"/coa6/notes/01_c-basic/01_xdx/#_7-3-修改-cmakelists-txt-文件","78":"/coa6/notes/01_c-basic/01_xdx/#_7-4-配置-clang-format-文件","79":"/coa6/notes/01_c-basic/01_xdx/#_7-5-配置-gitignore-文件","80":"/coa6/notes/01_c-basic/01_xdx/#_7-6-演示","81":"/coa6/notes/01_c-basic/01_xdx/#第八章-c-语言的编译过程-⭐","82":"/coa6/notes/01_c-basic/01_xdx/#_8-1-概述","83":"/coa6/notes/01_c-basic/01_xdx/#_8-2-gcc-编译器的介绍","84":"/coa6/notes/01_c-basic/01_xdx/#_8-3-通过-gcc-直接生成可执行文件","85":"/coa6/notes/01_c-basic/01_xdx/#_8-4-通过-gcc-分步编译","86":"/coa6/notes/01_c-basic/01_xdx/#_8-3-1-概述","87":"/coa6/notes/01_c-basic/01_xdx/#_8-4-2-应用示例","88":"/coa6/notes/01_c-basic/02_xdx/#第一章-变量-⭐","89":"/coa6/notes/01_c-basic/02_xdx/#_1-1-程序中变化的数据","90":"/coa6/notes/01_c-basic/02_xdx/#_1-2-变量","91":"/coa6/notes/01_c-basic/02_xdx/#_1-3-变量的声明和使用","92":"/coa6/notes/01_c-basic/02_xdx/#_1-4-输出变量","93":"/coa6/notes/01_c-basic/02_xdx/#_1-5-输入数据赋值给变量","94":"/coa6/notes/01_c-basic/02_xdx/#_1-6-标识符","95":"/coa6/notes/01_c-basic/02_xdx/#_1-6-1-概述","96":"/coa6/notes/01_c-basic/02_xdx/#_1-6-2-标识符的命名规范","97":"/coa6/notes/01_c-basic/02_xdx/#_1-6-3-关键字","98":"/coa6/notes/01_c-basic/02_xdx/#第二章-常量-⭐","99":"/coa6/notes/01_c-basic/02_xdx/#_2-1-概述","100":"/coa6/notes/01_c-basic/02_xdx/#_2-2-常量的分类","101":"/coa6/notes/01_c-basic/02_xdx/#_2-3-使用-define-定义常量","102":"/coa6/notes/01_c-basic/02_xdx/#_2-4-const-关键字","103":"/coa6/notes/01_c-basic/02_xdx/#_2-5-枚举常量","104":"/coa6/notes/01_c-basic/02_xdx/#_2-6-defind-定义常量-vs-const-定义常量","105":"/coa6/notes/01_c-basic/02_xdx/#第三章-二进制","106":"/coa6/notes/01_c-basic/02_xdx/#_3-1-概述","107":"/coa6/notes/01_c-basic/02_xdx/#_3-2-进制","108":"/coa6/notes/01_c-basic/02_xdx/#_3-2-1-常见的进制","109":"/coa6/notes/01_c-basic/02_xdx/#_3-2-2-c-语言中如何表示不同进制的整数","110":"/coa6/notes/01_c-basic/02_xdx/#_3-2-3-输出格式","111":"/coa6/notes/01_c-basic/02_xdx/#_3-3-进制的转换","112":"/coa6/notes/01_c-basic/02_xdx/#_3-3-1-概述","113":"/coa6/notes/01_c-basic/02_xdx/#_3-3-2-二进制和十进制的转换","114":"/coa6/notes/01_c-basic/02_xdx/#_3-3-2-1-二进制转换为十进制","115":"/coa6/notes/01_c-basic/02_xdx/#_3-3-2-2-十进制转换二进制","116":"/coa6/notes/01_c-basic/02_xdx/#_3-3-3-二进制转八进制","117":"/coa6/notes/01_c-basic/02_xdx/#_3-3-4-二进制转十六进制","118":"/coa6/notes/01_c-basic/02_xdx/#_3-4-原码、反码和补码","119":"/coa6/notes/01_c-basic/02_xdx/#_3-4-1-概述","120":"/coa6/notes/01_c-basic/02_xdx/#_3-4-2-原码","121":"/coa6/notes/01_c-basic/02_xdx/#_3-4-3-反码","122":"/coa6/notes/01_c-basic/02_xdx/#_3-4-4-补码","123":"/coa6/notes/01_c-basic/02_xdx/#_3-4-5-总结","124":"/coa6/notes/01_c-basic/02_xdx/#_3-5-计算机底层为什么使用补码","125":"/coa6/notes/#计算机基础知识"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[2,2,23],"2":[4,2,61],"3":[3,2,141],"4":[3,2,1],"5":[3,5,72],"6":[4,5,116],"7":[7,5,146],"8":[8,5,83],"9":[2,1,1],"10":[4,2,21],"11":[3,2,59],"12":[3,2,1],"13":[6,5,49],"14":[7,5,21],"15":[5,5,22],"16":[4,5,46],"17":[4,1,1],"18":[4,4,58],"19":[6,4,79],"20":[2,4,14],"21":[4,4,134],"22":[4,4,71],"23":[7,1,1],"24":[3,7,1],"25":[3,9,116],"26":[6,9,1],"27":[4,13,11],"28":[6,13,23],"29":[5,9,1],"30":[4,12,16],"31":[7,12,10],"32":[5,9,1],"33":[3,12,46],"34":[6,12,10],"35":[4,7,1],"36":[4,10,1],"37":[4,12,17],"38":[4,12,6],"39":[5,12,20],"40":[4,10,1],"41":[4,12,30],"42":[3,12,8],"43":[4,12,6],"44":[6,10,1],"45":[5,14,45],"46":[4,14,27],"47":[4,14,26],"48":[3,7,1],"49":[4,9,33],"50":[6,9,55],"51":[4,9,27],"52":[3,9,42],"53":[2,1,1],"54":[3,2,12],"55":[3,2,29],"56":[3,2,34],"57":[5,1,1],"58":[3,5,1],"59":[3,7,43],"60":[4,7,27],"61":[3,5,1],"62":[5,7,44],"63":[3,7,20],"64":[5,7,24],"65":[4,7,1],"66":[5,9,14],"67":[7,9,34],"68":[8,9,95],"69":[4,9,19],"70":[5,1,1],"71":[4,5,1],"72":[3,8,86],"73":[5,8,84],"74":[5,8,28],"75":[5,8,38],"76":[7,5,8],"77":[6,5,105],"78":[6,5,55],"79":[5,5,17],"80":[3,5,10],"81":[5,1,1],"82":[3,5,119],"83":[4,5,50],"84":[5,5,11],"85":[5,5,1],"86":[4,9,30],"87":[4,9,18],"88":[4,1,1],"89":[2,4,28],"90":[3,4,61],"91":[3,4,56],"92":[3,4,103],"93":[3,4,92],"94":[3,4,1],"95":[3,6,30],"96":[4,6,89],"97":[4,6,82],"98":[4,1,1],"99":[3,4,17],"100":[2,4,48],"101":[5,4,55],"102":[4,4,44],"103":[3,4,43],"104":[6,4,17],"105":[2,1,1],"106":[3,2,44],"107":[3,2,1],"108":[4,5,110],"109":[5,5,48],"110":[3,5,46],"111":[2,2,1],"112":[3,4,9],"113":[3,4,1],"114":[4,6,22],"115":[3,6,29],"116":[2,4,11],"117":[3,4,10],"118":[4,2,1],"119":[4,6,23],"120":[4,6,34],"121":[3,6,35],"122":[3,6,42],"123":[4,6,16],"124":[4,2,15],"125":[1,1,1]},"averageFieldLength":[4.03174603174603,5.873015873015873,32.82539682539683],"storedFields":{"0":{"title":"第一章:计算机组成原理","titles":[]},"1":{"title":"1.1 计算机系统","titles":["第一章:计算机组成原理"]},"2":{"title":"1.2 冯·诺依曼体系结构","titles":["第一章:计算机组成原理"]},"3":{"title":"1.3 各种硬件处理速度和性能优化","titles":["第一章:计算机组成原理"]},"4":{"title":"1.4 计算机软件","titles":["第一章:计算机组成原理"]},"5":{"title":"1.4.1 操作系统的来源","titles":["第一章:计算机组成原理","1.4 计算机软件"]},"6":{"title":"1.4.2 用户态和内核态","titles":["第一章:计算机组成原理","1.4 计算机软件"]},"7":{"title":"1.4.3 ISA、ABI 和 API","titles":["第一章:计算机组成原理","1.4 计算机软件"]},"8":{"title":"1.4.4 系统调用(System Call)和函数库(Library Call)","titles":["第一章:计算机组成原理","1.4 计算机软件"]},"9":{"title":"第二章:初识计算机语言","titles":[]},"10":{"title":"2.1 计算机语言是什么?","titles":["第二章:初识计算机语言"]},"11":{"title":"2.2 为什么要学习计算机语言?","titles":["第二章:初识计算机语言"]},"12":{"title":"2.3 计算机语言简史","titles":["第二章:初识计算机语言"]},"13":{"title":"2.3.1 机器语言(相当于人类的石器时代)","titles":["第二章:初识计算机语言","2.3 计算机语言简史"]},"14":{"title":"2.3.2 汇编语言(相当于人类的青铜&铁器时代)","titles":["第二章:初识计算机语言","2.3 计算机语言简史"]},"15":{"title":"2.3.3 高级语言(相当于人类的信息时代)","titles":["第二章:初识计算机语言","2.3 计算机语言简史"]},"16":{"title":"2.3.4 总结","titles":["第二章:初识计算机语言","2.3 计算机语言简史"]},"17":{"title":"第三章:初识 C 语言","titles":[]},"18":{"title":"3.1 C 语言的由来","titles":["第三章:初识 C 语言"]},"19":{"title":"3.2 为什么要学习 C 语言?","titles":["第三章:初识 C 语言"]},"20":{"title":"3.3 计算机语言排行榜","titles":["第三章:初识 C 语言"]},"21":{"title":"3.4 C 语言的版本选择","titles":["第三章:初识 C 语言"]},"22":{"title":"3.5 C 语言的优缺点","titles":["第三章:初识 C 语言"]},"23":{"title":"第四章:C 语言入门(Hello World,⭐)","titles":[]},"24":{"title":"4.1 环境的安装和配置","titles":["第四章:C 语言入门(Hello World,⭐)"]},"25":{"title":"4.1.1 概述","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置"]},"26":{"title":"4.1.2 MinGW-w64 的安装和配置","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置"]},"27":{"title":"4.1.2.1 安装","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置","4.1.2 MinGW-w64 的安装和配置"]},"28":{"title":"4.1.2.2 配置 path 环境变量","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置","4.1.2 MinGW-w64 的安装和配置"]},"29":{"title":"4.1.3 Cygwin 的安装和配置","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置"]},"30":{"title":"4.1.3.1 安装","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置","4.1.3 Cygwin 的安装和配置"]},"31":{"title":"4.1.3.2 配置 path 环境变量","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置","4.1.3 Cygwin 的安装和配置"]},"32":{"title":"4.1.4 MSYS2(推荐)","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置"]},"33":{"title":"4.1.4.1 安装","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置","4.1.4 MSYS2(推荐)"]},"34":{"title":"4.1.4.2 配置 path 环境变量","titles":["第四章:C 语言入门(Hello World,⭐)","4.1 环境的安装和配置","4.1.4 MSYS2(推荐)"]},"35":{"title":"4.2 IDE 的安装和配置","titles":["第四章:C 语言入门(Hello World,⭐)"]},"36":{"title":"4.2.1 CLion","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置"]},"37":{"title":"4.2.1.1 概述","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.1 CLion"]},"38":{"title":"4.2.1.2 安装","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.1 CLion"]},"39":{"title":"4.2.1.3 配置","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.1 CLion"]},"40":{"title":"4.2.2 VS Code","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置"]},"41":{"title":"4.2.2.1 概述","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.2 VS Code"]},"42":{"title":"4.2.2.2 安装","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.2 VS Code"]},"43":{"title":"4.2.2.3 配置","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.2 VS Code"]},"44":{"title":"4.2.3 Microsoft Visual Studio","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置"]},"45":{"title":"4.2.3.1 概述","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.3 Microsoft Visual Studio"]},"46":{"title":"4.2.3.2 安装","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.3 Microsoft Visual Studio"]},"47":{"title":"4.2.3.3 配置","titles":["第四章:C 语言入门(Hello World,⭐)","4.2 IDE 的安装和配置","4.2.3 Microsoft Visual Studio"]},"48":{"title":"4.3 HelloWorld","titles":["第四章:C 语言入门(Hello World,⭐)"]},"49":{"title":"4.3.1 手动版","titles":["第四章:C 语言入门(Hello World,⭐)","4.3 HelloWorld"]},"50":{"title":"4.3.2 VS Code 版","titles":["第四章:C 语言入门(Hello World,⭐)","4.3 HelloWorld"]},"51":{"title":"4.3.3 VS 版","titles":["第四章:C 语言入门(Hello World,⭐)","4.3 HelloWorld"]},"52":{"title":"4.3.4 CLion","titles":["第四章:C 语言入门(Hello World,⭐)","4.3 HelloWorld"]},"53":{"title":"第五章:注释","titles":[]},"54":{"title":"5.1 概述","titles":["第五章:注释"]},"55":{"title":"5.2 单行注释","titles":["第五章:注释"]},"56":{"title":"5.3 多行注释","titles":["第五章:注释"]},"57":{"title":"第六章:HelloWorld 的规范(⭐)","titles":[]},"58":{"title":"6.1 规范的代码风格","titles":["第六章:HelloWorld 的规范(⭐)"]},"59":{"title":"6.1.1 正确的缩进和空白","titles":["第六章:HelloWorld 的规范(⭐)","6.1 规范的代码风格"]},"60":{"title":"6.1.2 代码风格","titles":["第六章:HelloWorld 的规范(⭐)","6.1 规范的代码风格"]},"61":{"title":"6.2 代码细节剖析","titles":["第六章:HelloWorld 的规范(⭐)"]},"62":{"title":"6.2.1 main() 函数","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析"]},"63":{"title":"6.2.2 函数体","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析"]},"64":{"title":"6.2.3 printf() 函数","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析"]},"65":{"title":"6.2.4 标准库和头文件","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析"]},"66":{"title":"6.2.4.1 概述","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析","6.2.4 标准库和头文件"]},"67":{"title":"6.2.4.2 标准库(Standard Library)","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析","6.2.4 标准库和头文件"]},"68":{"title":"6.2.4.3 头文件(Header Files)","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析","6.2.4 标准库和头文件"]},"69":{"title":"6.2.4.4 预处理命令","titles":["第六章:HelloWorld 的规范(⭐)","6.2 代码细节剖析","6.2.4 标准库和头文件"]},"70":{"title":"第七章:CLion 高级配置(⭐)","titles":[]},"71":{"title":"7.1 安装和配置 WSL2","titles":["第七章:CLion 高级配置(⭐)"]},"72":{"title":"7.1.1 概述","titles":["第七章:CLion 高级配置(⭐)","7.1 安装和配置 WSL2"]},"73":{"title":"7.1.2 WSL2 的安装","titles":["第七章:CLion 高级配置(⭐)","7.1 安装和配置 WSL2"]},"74":{"title":"7.1.3 配置 WSL2","titles":["第七章:CLion 高级配置(⭐)","7.1 安装和配置 WSL2"]},"75":{"title":"7.1.4 配置 WSL2","titles":["第七章:CLion 高级配置(⭐)","7.1 安装和配置 WSL2"]},"76":{"title":"7.2 切换 CLion 中的 cmake 的工具链","titles":["第七章:CLion 高级配置(⭐)"]},"77":{"title":"7.3 修改 CMakeLists.txt 文件","titles":["第七章:CLion 高级配置(⭐)"]},"78":{"title":"7.4 配置 .clang-format 文件","titles":["第七章:CLion 高级配置(⭐)"]},"79":{"title":"7.5 配置 .gitignore 文件","titles":["第七章:CLion 高级配置(⭐)"]},"80":{"title":"7.6 演示","titles":["第七章:CLion 高级配置(⭐)"]},"81":{"title":"第八章:C 语言的编译过程(⭐)","titles":[]},"82":{"title":"8.1 概述","titles":["第八章:C 语言的编译过程(⭐)"]},"83":{"title":"8.2 GCC 编译器的介绍","titles":["第八章:C 语言的编译过程(⭐)"]},"84":{"title":"8.3 通过 gcc 直接生成可执行文件","titles":["第八章:C 语言的编译过程(⭐)"]},"85":{"title":"8.4 通过 gcc 分步编译","titles":["第八章:C 语言的编译过程(⭐)"]},"86":{"title":"8.3.1 概述","titles":["第八章:C 语言的编译过程(⭐)","8.4 通过 gcc 分步编译"]},"87":{"title":"8.4.2 应用示例","titles":["第八章:C 语言的编译过程(⭐)","8.4 通过 gcc 分步编译"]},"88":{"title":"第一章:变量(⭐)","titles":[]},"89":{"title":"1.1 程序中变化的数据","titles":["第一章:变量(⭐)"]},"90":{"title":"1.2 变量","titles":["第一章:变量(⭐)"]},"91":{"title":"1.3 变量的声明和使用","titles":["第一章:变量(⭐)"]},"92":{"title":"1.4 输出变量","titles":["第一章:变量(⭐)"]},"93":{"title":"1.5 输入数据赋值给变量","titles":["第一章:变量(⭐)"]},"94":{"title":"1.6 标识符","titles":["第一章:变量(⭐)"]},"95":{"title":"1.6.1 概述","titles":["第一章:变量(⭐)","1.6 标识符"]},"96":{"title":"1.6.2 标识符的命名规范","titles":["第一章:变量(⭐)","1.6 标识符"]},"97":{"title":"1.6.3 关键字","titles":["第一章:变量(⭐)","1.6 标识符"]},"98":{"title":"第二章:常量(⭐)","titles":[]},"99":{"title":"2.1 概述","titles":["第二章:常量(⭐)"]},"100":{"title":"2.2 常量的分类","titles":["第二章:常量(⭐)"]},"101":{"title":"2.3 使用 #define 定义常量","titles":["第二章:常量(⭐)"]},"102":{"title":"2.4 const 关键字","titles":["第二章:常量(⭐)"]},"103":{"title":"2.5 枚举常量","titles":["第二章:常量(⭐)"]},"104":{"title":"2.6 #defind 定义常量 VS const 定义常量","titles":["第二章:常量(⭐)"]},"105":{"title":"第三章:二进制","titles":[]},"106":{"title":"3.1 概述","titles":["第三章:二进制"]},"107":{"title":"3.2 进制","titles":["第三章:二进制"]},"108":{"title":"3.2.1 常见的进制","titles":["第三章:二进制","3.2 进制"]},"109":{"title":"3.2.2 C 语言中如何表示不同进制的整数?","titles":["第三章:二进制","3.2 进制"]},"110":{"title":"3.2.3 输出格式","titles":["第三章:二进制","3.2 进制"]},"111":{"title":"3.3 进制的转换","titles":["第三章:二进制"]},"112":{"title":"3.3.1 概述","titles":["第三章:二进制","3.3 进制的转换"]},"113":{"title":"3.3.2 二进制和十进制的转换","titles":["第三章:二进制","3.3 进制的转换"]},"114":{"title":"3.3.2.1 二进制转换为十进制","titles":["第三章:二进制","3.3 进制的转换","3.3.2 二进制和十进制的转换"]},"115":{"title":"3.3.2.2 十进制转换二进制","titles":["第三章:二进制","3.3 进制的转换","3.3.2 二进制和十进制的转换"]},"116":{"title":"3.3.3 二进制转八进制","titles":["第三章:二进制","3.3 进制的转换"]},"117":{"title":"3.3.4 二进制转十六进制","titles":["第三章:二进制","3.3 进制的转换"]},"118":{"title":"3.4 原码、反码和补码","titles":["第三章:二进制"]},"119":{"title":"3.4.1 概述","titles":["第三章:二进制","3.4 原码、反码和补码"]},"120":{"title":"3.4.2 原码","titles":["第三章:二进制","3.4 原码、反码和补码"]},"121":{"title":"3.4.3 反码","titles":["第三章:二进制","3.4 原码、反码和补码"]},"122":{"title":"3.4.4 补码","titles":["第三章:二进制","3.4 原码、反码和补码"]},"123":{"title":"3.4.5 总结","titles":["第三章:二进制","3.4 原码、反码和补码"]},"124":{"title":"3.5 计算机底层为什么使用补码?","titles":["第三章:二进制"]},"125":{"title":"计算机基础知识","titles":[]}},"dirtCount":0,"index":[["变",{"2":{"123":2}}],["变量需要提前声明",{"2":{"93":1}}],["变量或表达式",{"2":{"92":1}}],["变量必须先声明",{"2":{"91":1}}],["变量名",{"2":{"90":1,"97":1}}],["变量是内存中的一个存储区域",{"2":{"90":1}}],["变量是程序中不可或缺的组成单位",{"2":{"90":1}}],["变量的值可以在同一类型范围内不断变化",{"2":{"91":1}}],["变量的声明和使用",{"0":{"91":1}}],["变量的构成包含三个要素",{"2":{"90":1}}],["变量的特别之处就在于它存放的数据是可以改变的",{"2":{"90":1}}],["变量的定义",{"2":{"90":1}}],["变量就是一个存储数据的临时空间",{"2":{"90":1}}],["变量",{"0":{"88":1,"90":1},"1":{"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1},"2":{"90":1,"95":1}}],["三码合一",{"2":{"123":1}}],["补码的设计可以巧妙的让符号位也参与计算",{"2":{"124":1}}],["补码使得加法运算和减法运算可以统一处理",{"2":{"122":1}}],["补码表示法解决了原码和反码存在的两种零",{"2":{"122":1}}],["补码",{"0":{"122":1},"2":{"122":2}}],["符号位不变",{"2":{"121":1,"123":1}}],["符号位是",{"2":{"120":1}}],["反码",{"0":{"121":1},"2":{"121":2,"122":2}}],["反码和补码都是一样的",{"2":{"123":1}}],["反码和补码",{"0":{"118":1},"1":{"119":1,"120":1,"121":1,"122":1,"123":1}}],["显然不符合实际情况",{"2":{"120":1,"121":1}}],["显示前缀",{"2":{"110":3}}],["显示器",{"2":{"92":1}}],["负数的补码是其反码",{"2":{"123":1}}],["负数的补码是在其反码的基础上",{"2":{"122":1}}],["负数的反码是在其原码的基础上",{"2":{"121":1,"123":1}}],["负数的原码是它本身绝对值对应的二进制数",{"2":{"120":1}}],["负责初始化程序运行时的环境",{"2":{"82":1}}],["负责数据处理和指令执行",{"2":{"2":1}}],["负责解释和执行指令",{"2":{"2":1,"106":1}}],["首位是符号位",{"2":{"119":1}}],["真值",{"2":{"119":2}}],["真实的linux内核",{"2":{"72":1}}],["机器数可以是有符号的",{"2":{"119":1}}],["机器数",{"2":{"119":1}}],["机器语言程序几乎没有可移植性",{"2":{"13":1}}],["机器语言与特定硬件架构紧密相关",{"2":{"13":1}}],["机器语言",{"0":{"13":1},"2":{"16":1}}],["吗",{"2":{"115":1}}],["很好理解",{"2":{"115":1}}],["很多应用程序都是直接跑在硬件上的",{"2":{"5":1}}],["直到商为",{"2":{"115":1}}],["直接生成可执行文件",{"0":{"84":1}}],["直接生成",{"2":{"25":1}}],["直接由计算机执行的二进制代码",{"2":{"16":1}}],["次方",{"2":{"114":1}}],["次行风格",{"2":{"60":1}}],["位二进数来表示",{"2":{"120":2,"121":2,"122":2}}],["位二进制就是一个八进制",{"2":{"116":1,"117":1}}],["位二进制数表示",{"2":{"108":2}}],["位二进制数",{"2":{"108":2}}],["位二进制",{"2":{"108":1}}],["位数",{"2":{"114":1}}],["乘以",{"2":{"114":1}}],["前缀",{"2":{"110":6}}],["前文也提到了",{"2":{"77":1}}],["规则",{"2":{"114":1,"115":1,"116":1,"117":1,"120":1,"121":1,"122":1}}],["规则如下",{"2":{"109":1}}],["规范的代码风格",{"0":{"58":1},"1":{"59":1,"60":1}}],["规范的二进制文件",{"2":{"7":1}}],["规范的",{"2":{"7":1}}],["规范来生成二进制文件",{"2":{"7":1}}],["到",{"2":{"108":1}}],["~",{"2":{"108":9}}],["满",{"2":{"108":3}}],["几乎都遵循冯",{"2":{"106":1}}],["几乎所有的硬件平台都支持",{"2":{"22":1}}],["视频等",{"2":{"106":1}}],["您的性别是",{"2":{"103":1}}],["才会继续编译代码",{"2":{"101":1}}],["才能运行",{"2":{"41":1}}],["才能被计算机识别和执行",{"2":{"15":1}}],["浮点数常量",{"2":{"100":1}}],["浮点数常量以及字符常量",{"2":{"100":1}}],["浮点类型",{"2":{"90":1}}],["枚举常量是从",{"2":{"103":1}}],["枚举常量",{"0":{"103":1},"2":{"100":2,"103":1}}],["字面常量",{"2":{"109":4}}],["字面量常量",{"2":{"100":3}}],["字母",{"2":{"108":3}}],["字符常量",{"2":{"100":1}}],["字符串常量",{"2":{"100":1}}],["字符串类型",{"2":{"90":1}}],["字符串等",{"2":{"90":1}}],["字符串处理库",{"2":{"68":1}}],["字符串处理",{"2":{"8":1,"22":1,"67":1}}],["字符",{"2":{"90":1,"106":1}}],["字符处理库",{"2":{"68":1}}],["男和女也是常量",{"2":{"99":1}}],["π",{"2":{"99":1}}],["联合体和枚举关键字",{"2":{"97":1}}],["具体关键字",{"2":{"97":3}}],["具有较低的系统资源访问权限",{"2":{"6":1}}],["关键字修饰的标识符常量",{"2":{"100":2}}],["关键字不能用作标识符",{"2":{"97":1}}],["关键字",{"0":{"97":1,"102":1},"2":{"102":1}}],["非法的标识符",{"2":{"96":1}}],["非常适合开发需要直接硬件控制的应用",{"2":{"22":1}}],["非常适合写需要和硬件交互",{"2":{"19":1}}],["合法",{"2":{"96":1}}],["合写了一本著名的教材",{"2":{"21":1}}],["建议开发者尽量避免使用下划线开头的标识符",{"2":{"96":1}}],["建议规范",{"2":{"96":1}}],["后续单词的首字母大写",{"2":{"96":1}}],["后使用",{"2":{"91":1}}],["除了",{"2":{"108":1}}],["除了使用下划线连接",{"2":{"96":1}}],["除第一个单词外",{"2":{"96":1}}],["见名知意",{"2":{"96":1}}],["严格区分大小写字母",{"2":{"96":1}}],["组成",{"2":{"96":1}}],["组成中央处理器",{"2":{"2":1}}],["强制规范",{"2":{"96":1}}],["强大的包管理系统",{"2":{"25":2}}],["伴随人的一生",{"2":{"95":1}}],["狗剩都是名字",{"2":{"95":1}}],["狗剩等",{"2":{"95":1}}],["二狗子",{"2":{"95":1}}],["二进制转十六进制",{"0":{"117":1}}],["二进制转十进制",{"2":{"114":1}}],["二进制转八进制",{"0":{"116":1}}],["二进制转换为十进制",{"0":{"114":1}}],["二进制和十进制的转换",{"0":{"113":1},"1":{"114":1,"115":1}}],["二进制和十六进制的关系",{"2":{"108":1}}],["二进制和八进制的关系",{"2":{"108":1}}],["二进制",{"0":{"105":1},"1":{"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1},"2":{"92":2,"108":4,"109":1}}],["二进制代码",{"2":{"16":1}}],["二进制逻辑",{"2":{"2":1,"106":1}}],["李华强",{"2":{"95":1}}],["李华强等",{"2":{"95":1}}],["像",{"2":{"95":1}}],["养活",{"2":{"95":1}}],["张建国",{"2":{"95":2}}],["家长虽然会给孩子取名为",{"2":{"95":1}}],["×",{"2":{"93":2}}],["求其乘积",{"2":{"93":1}}],["求其绝对值",{"2":{"93":1}}],["半径为",{"2":{"101":1,"102":1}}],["半径是",{"2":{"93":1}}],["半径由用户指定",{"2":{"93":1}}],["键或回车键",{"2":{"93":1}}],["键盘",{"2":{"92":1}}],["空格",{"2":{"93":1}}],["空指针引用等安全漏洞",{"2":{"22":1}}],["我今年",{"2":{"92":1}}],["我们称这些二进制数为机器数",{"2":{"119":1}}],["我们最为常用的进制就是十进制",{"2":{"108":1}}],["我们也提到现代的计算机",{"2":{"106":1}}],["我们也可以在",{"2":{"92":1}}],["我们也会看到系统调用",{"2":{"8":1}}],["我们通常都会在声明变量的同时",{"2":{"91":1}}],["我们会经常说",{"2":{"90":1}}],["我们使用最多的不是固定的数据",{"2":{"89":1}}],["我们用编辑器编写程序",{"2":{"83":1}}],["我们需要把它转成电脑能懂的语句",{"2":{"83":1}}],["我们就会使用变量来保存和操作这些变化的数据",{"2":{"89":1}}],["我们就可以在控制台上执行运行此",{"2":{"82":1}}],["我们就需要让计算机能识别我们编写的源程序",{"2":{"11":1}}],["我们可以给盒子添加数据或移除数据",{"2":{"90":1}}],["我们可以将变量想象为一个容器",{"2":{"90":1}}],["我们可以在项目中",{"2":{"80":1}}],["我们可以修改",{"2":{"77":1}}],["我们可以知道",{"2":{"3":1}}],["我们首先会选用",{"2":{"21":1}}],["十六进制转换为二进制和十进制转换为二进制的算法相同",{"2":{"115":1}}],["十六进制转换为十进制和二进制转换为十进制的算法相同",{"2":{"114":1}}],["十六进制整数",{"2":{"110":1}}],["十六进制的范围是",{"2":{"108":1}}],["十六进制是以",{"2":{"108":1}}],["十六进制",{"2":{"92":1,"108":3,"109":1}}],["十进制数",{"2":{"120":2,"121":2,"122":2}}],["十进制转二进制",{"2":{"115":1}}],["十进制转换二进制",{"0":{"115":1}}],["十进制转十进制",{"2":{"114":1,"115":1}}],["十进制整数",{"2":{"110":1}}],["十进制",{"2":{"92":1,"108":1,"109":1}}],["十进制以及十六进制的英文名称和缩写",{"2":{"92":1}}],["缩写是",{"2":{"92":4}}],["八进制转换为二进制",{"2":{"115":1}}],["八进制转换为十进制",{"2":{"114":1}}],["八进制整数",{"2":{"110":1}}],["八进制的范围是",{"2":{"108":1}}],["八进制是以",{"2":{"108":1}}],["八进制和十六进制",{"2":{"108":1}}],["八进制",{"2":{"92":2,"108":3,"109":1}}],["里面包含了普通的字符串和格式占位符",{"2":{"92":1}}],["里奇",{"2":{"18":2,"21":1}}],["向计算机输入数据",{"2":{"92":1}}],["向其中存储数据或获取数据以及移除数据",{"2":{"90":1}}],["扫描仪",{"2":{"92":1}}],["鼠标",{"2":{"92":1}}],["鼠标双击",{"2":{"38":1,"42":1,"46":1}}],["声明变量并赋值",{"2":{"92":1}}],["声明变量的同时给其赋值",{"2":{"91":1}}],["声明一个整型变量",{"2":{"91":2}}],["初始化",{"2":{"91":2}}],["初识",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1}}],["初识计算机语言",{"0":{"9":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1}}],["给变量赋值",{"2":{"91":1}}],["给其赋值",{"2":{"91":1}}],["取名为",{"2":{"91":2}}],["取决于使用的工具链",{"2":{"25":1}}],["先声明",{"2":{"91":1}}],["之前",{"2":{"106":1}}],["之类的话",{"2":{"90":1}}],["之间",{"2":{"25":1}}],["今天天气真好",{"2":{"90":1}}],["元",{"2":{"90":2}}],["该区域的数据可以在同一类型范围内不断变化",{"2":{"90":1}}],["该架构定义了处理器",{"2":{"7":1}}],["盒子中装的就是我们想要的数据",{"2":{"90":1}}],["小数",{"2":{"90":2}}],["整型",{"2":{"90":1}}],["整数常量",{"2":{"100":2}}],["整数",{"2":{"90":1,"110":6}}],["整个",{"2":{"18":1}}],["金币的数量等",{"2":{"89":1}}],["金融应用",{"2":{"19":1}}],["蓝量",{"2":{"89":1}}],["血量",{"2":{"89":1}}],["名称等",{"2":{"89":1}}],["头像",{"2":{"89":1}}],["头文件包含",{"2":{"82":1}}],["头文件包含函数声明",{"2":{"68":1}}],["头文件可能在同一目录下",{"2":{"77":1}}],["头文件需要在源代码文件中使用",{"2":{"68":1}}],["头文件告知编译器如何使用标准库中的函数和定义",{"2":{"68":1}}],["头文件通常以",{"2":{"68":1}}],["头文件的作用是为源代码提供必要的声明和定义",{"2":{"68":1}}],["头文件是包含函数声明",{"2":{"68":1}}],["头文件",{"0":{"68":1},"2":{"68":1}}],["歌词的展示等",{"2":{"89":1}}],["价格等",{"2":{"89":1}}],["价格不同",{"2":{"3":1}}],["购物车商品的数量",{"2":{"89":1}}],["结构体",{"2":{"97":1}}],["结构体等要素命名的时候使用的字符序列",{"2":{"95":1}}],["结尾",{"2":{"86":6,"101":1}}],["结尾表示这个文件是一个中间状态",{"2":{"86":1}}],["结合了",{"2":{"25":1}}],["已经成为了能够编译",{"2":{"83":1}}],["采纳为标准的编译器",{"2":{"83":1}}],["现已被大多数类",{"2":{"83":1}}],["阅读和维护的高级计算机语言翻译为计算机能解读",{"2":{"83":1}}],["由此可见",{"2":{"108":2}}],["由",{"2":{"92":1}}],["由编译器编译后才可以运行",{"2":{"83":1}}],["由于符号位的存在",{"2":{"124":1}}],["由于使用了真实的",{"2":{"72":1}}],["由于",{"2":{"19":1,"21":1,"22":1}}],["由于涉及到用户态与内核态之间的切换",{"2":{"8":1}}],["由于内核态具有如此高的权限",{"2":{"6":1}}],["方能生效",{"2":{"82":1}}],["再次论证了为什么计算机只能识别二进制",{"2":{"106":1}}],["再使用",{"2":{"91":1}}],["再执行",{"2":{"82":1}}],["再调用",{"2":{"82":1}}],["再在标准头文件目录中查找",{"2":{"69":1}}],["形成一个统一的二进制文件",{"2":{"82":1}}],["连接",{"2":{"82":1}}],["链接",{"2":{"82":2,"86":1}}],["汇编",{"2":{"86":1}}],["汇编和链接",{"2":{"84":1,"86":1,"87":1}}],["汇编器将汇编指令转换为二进制机器指令",{"2":{"82":1}}],["汇编是将汇编代码转换为机器代码",{"2":{"82":1}}],["汇编语言同样依赖于具体的计算机架构",{"2":{"14":1}}],["汇编语言的优点是能编写高效率的程序",{"2":{"14":1}}],["汇编语言也被称为符号语言",{"2":{"14":1}}],["汇编语言使用助记符",{"2":{"14":1}}],["汇编语言",{"0":{"14":1},"2":{"14":1,"16":1}}],["删除代码中的注释",{"2":{"82":1}}],["根据条件指令",{"2":{"82":1}}],["根据使用工具链决定",{"2":{"25":1}}],["条件编译",{"2":{"82":1}}],["替换宏定义",{"2":{"82":1}}],["替换清华镜像源",{"2":{"33":1}}],["预处理",{"2":{"86":2}}],["预处理和编译",{"2":{"86":1}}],["预处理完成后",{"2":{"82":1}}],["预处理器处理源代码中的指令",{"2":{"82":1}}],["预处理是编译过程的第一个阶段",{"2":{"82":1}}],["预处理命令",{"0":{"69":1},"2":{"86":1}}],["过程",{"2":{"82":4}}],["项目",{"2":{"80":1}}],["项目名称和版本号",{"2":{"77":1}}],["请输入性别",{"2":{"103":1}}],["请输入整数",{"2":{"93":1}}],["请输入一个整数",{"2":{"93":1}}],["请输入一个半径",{"2":{"93":1}}],["请点击重新加载",{"2":{"80":1}}],["请求和处理响应",{"2":{"7":1}}],["看上述配置是否生效",{"2":{"80":1}}],["看个人爱好",{"2":{"60":1}}],["临时创建或复制一个文件",{"2":{"80":1}}],["演示",{"0":{"80":1}}],["忽略某些文件或目录",{"2":{"79":1}}],["仓库的时候",{"2":{"79":1}}],["短",{"2":{"78":1}}],["检查并添加子目录中的",{"2":{"77":1}}],["检查是否已经创建过同名的可执行文件",{"2":{"77":1}}],["检测",{"2":{"39":1}}],["处理与",{"2":{"77":1}}],["获取文件的相对路径",{"2":{"77":1}}],["获取数据或提交表单",{"2":{"7":1}}],["创建可执行文件",{"2":{"77":2}}],["$",{"2":{"77":25}}],["辅助函数",{"2":{"77":1}}],["切换",{"0":{"76":1}}],["本次不再演示",{"2":{"75":1}}],["本人的安装的是",{"2":{"74":1,"75":1}}],["本人的解压目录是",{"2":{"27":1}}],["本人喜欢行尾分格",{"2":{"60":1}}],["本人安装",{"2":{"28":1}}],["自定义它们的值",{"2":{"103":1}}],["自行编译",{"2":{"75":1}}],["自动化控制系统",{"2":{"2":1}}],["查找源文件所在的目录",{"2":{"77":1}}],["查找所有源文件",{"2":{"77":1}}],["查找顶层",{"2":{"77":1}}],["查询本地安装的",{"2":{"73":1}}],["查看官方在线支持的",{"2":{"73":1}}],["查看是否开启了虚拟化",{"2":{"73":1}}],["⑩",{"2":{"73":1}}],["⑨",{"2":{"73":1}}],["托管在",{"2":{"73":1}}],["托遗响于悲风",{"2":{"3":1}}],["官方支持的",{"2":{"73":1}}],["某些国家可能会污染",{"2":{"73":2}}],["更新",{"2":{"73":1}}],["更新包管理器",{"2":{"33":1,"74":1,"75":1}}],["子系统",{"2":{"73":1}}],["启用虚拟机功能",{"2":{"73":1}}],["启用适用于",{"2":{"73":1}}],["启动",{"2":{"47":1}}],["测试或运行应用程序的开发者非常有帮助",{"2":{"72":1}}],["测试是否安装成功",{"2":{"28":1,"74":1,"75":1}}],["比传统的虚拟机占用更少的资源",{"2":{"72":1}}],["比如文件操作",{"2":{"8":1}}],["比如",{"2":{"6":1,"8":1,"21":1,"63":1}}],["资源使用优化",{"2":{"72":1}}],["许多在",{"2":{"72":1}}],["密集型的操作",{"2":{"72":1}}],["能够更容易地与",{"2":{"72":1}}],["能够提供更快的速度",{"2":{"72":1}}],["能够运行更多的",{"2":{"72":1}}],["能够处理低级硬件交互",{"2":{"19":1}}],["70",{"2":{"95":1}}],["7",{"0":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1},"1":{"72":1,"73":1,"74":1,"75":1},"2":{"108":7}}],["799",{"2":{"45":1}}],["断言库",{"2":{"68":1}}],["布尔类型库",{"2":{"68":1}}],["布局",{"2":{"7":1}}],["时间",{"2":{"89":2}}],["时间和日期库",{"2":{"68":1}}],["时间的单位换算如下",{"2":{"3":1}}],["随机数生成等功能",{"2":{"68":1}}],["随着项目的发展",{"2":{"83":1}}],["随着微型计算机的日益普及",{"2":{"21":1}}],["随着计算机科学的发展",{"2":{"16":1}}],["随着技术的发展",{"2":{"5":1}}],["常量值",{"2":{"101":1,"102":1}}],["常量名习惯用大写字母表示",{"2":{"101":1}}],["常量名",{"2":{"101":1,"102":1}}],["常量的分类",{"0":{"100":1}}],["常量",{"0":{"98":1},"1":{"99":1,"100":1,"101":1,"102":1,"103":1,"104":1}}],["常用函数和宏",{"2":{"68":1}}],["常见的进制有二进制",{"2":{"108":1}}],["常见的进制",{"0":{"108":1}}],["常见的",{"2":{"21":1,"68":1}}],["宏展开",{"2":{"82":1}}],["宏和数据类型",{"2":{"69":1}}],["宏等",{"2":{"68":1}}],["宏定义的标识符常量",{"2":{"100":2}}],["宏定义和数据类型定义",{"2":{"68":1}}],["宏定义",{"2":{"68":1}}],["遵循",{"2":{"67":1}}],["必须写在",{"2":{"101":1}}],["必须在源文件的头部引入该头文件",{"2":{"66":1}}],["必须通过操作系统提供的接口",{"2":{"6":1}}],["行尾不换行",{"2":{"64":1}}],["行尾风格",{"2":{"60":1}}],["行尾风格和次行风格",{"2":{"60":1}}],["作用是将输出的数据转换为指定的格式后输出",{"2":{"92":1}}],["作用是将参数文本输出到屏幕",{"2":{"64":1}}],["作为扩展名",{"2":{"82":1}}],["作为语句结束的标志",{"2":{"63":1}}],["作为程序执行的入口",{"2":{"62":1}}],["每",{"2":{"116":1,"117":1}}],["每个八进制数字确实由",{"2":{"108":1}}],["每个八进制数位都可以映射到一个唯一的",{"2":{"108":1}}],["每个十六进制数字确实由",{"2":{"108":1}}],["每个十六进制数都可以映射到一个唯一的",{"2":{"108":1}}],["每种数据类型都有特定的属性和用途",{"2":{"90":1}}],["每一个执行语句后面都会有一个英文分号",{"2":{"63":1}}],["每月更新",{"2":{"20":1}}],["打印机",{"2":{"92":1}}],["打印等",{"2":{"63":1}}],["打开解决方案资源管理器",{"2":{"51":1}}],["打开该目录",{"2":{"50":1}}],["打开",{"2":{"39":1}}],["排序",{"2":{"63":1}}],["排名权重基于世界范围内工程师数量",{"2":{"20":1}}],["搜索",{"2":{"63":1}}],["成对出现",{"2":{"63":1}}],["成为了日常软件开发的主流选择",{"2":{"16":1}}],["且运行成功",{"2":{"62":1}}],["且执行的操作多在用户空间完成",{"2":{"8":1}}],[">",{"2":{"60":2}}],["任选一种即可",{"2":{"60":1}}],["任选其一安装即可",{"2":{"25":1}}],["则需要在十六进制整数前加上",{"2":{"109":1}}],["则需要在八进制整数前加上",{"2":{"109":1}}],["则需要在二进制整数前加上",{"2":{"109":1}}],["则输入的时候需要加上空格",{"2":{"93":1}}],["则输入的时候需要加上逗号",{"2":{"93":1}}],["则编译器会自动加上",{"2":{"62":1}}],["则表示运行失败",{"2":{"62":1}}],["则整体向左移动",{"2":{"59":1}}],["则可以使用英语",{"2":{"10":1}}],["注释是一个程序员必须有具有的良好编程习惯",{"2":{"54":1}}],["注释是一种特殊的文本",{"2":{"54":1}}],["注释",{"0":{"53":1},"1":{"54":1,"55":1,"56":1}}],["注册",{"2":{"47":1}}],["源文件",{"2":{"86":8}}],["源文件包含",{"2":{"52":1}}],["源程序需要以",{"2":{"82":1}}],["源代码",{"2":{"11":2,"82":1}}],["默认仓库中的",{"2":{"75":1}}],["默认整体向右边移动",{"2":{"59":1}}],["默认情况下",{"2":{"52":1,"62":1,"103":1}}],["默认是最小化安装",{"2":{"30":1}}],["⑧",{"2":{"50":1,"73":1}}],["⑦",{"2":{"50":1,"73":1}}],["目的是希望孩子能健康成长",{"2":{"95":1}}],["目录",{"2":{"50":1,"77":2}}],["目前最新版本为",{"2":{"45":1}}],["目前的",{"2":{"25":1}}],["目前有两种主流实现",{"2":{"25":1}}],["目前仍然应用于工业电子编程领域",{"2":{"14":1}}],["版",{"0":{"50":1,"51":1}}],["版本支持",{"2":{"25":1}}],["版本",{"2":{"21":7,"47":2,"73":3}}],["手动版",{"0":{"49":1}}],["手动管理内存",{"2":{"22":1}}],["填写注册码",{"2":{"47":1}}],["登录或跳过该选项",{"2":{"47":1}}],["开始递增的",{"2":{"103":1}}],["开始安装",{"2":{"46":1}}],["开启虚拟化",{"2":{"73":1}}],["开发的编程语言编译器",{"2":{"83":1}}],["开发环境",{"2":{"72":1}}],["开发效率",{"2":{"37":1}}],["开发",{"2":{"25":1}}],["开发中",{"2":{"7":1}}],["开发者可能会使用",{"2":{"7":1}}],["开发者需要确保操作系统能够支持特定的",{"2":{"7":1}}],["开发者通过系统调用可以实现对底层资源的直接控制",{"2":{"5":1}}],["开发人员",{"2":{"7":1}}],["全称为",{"2":{"72":1}}],["全部删除",{"2":{"46":1}}],["全平台实现",{"2":{"25":1}}],["修改变量",{"2":{"91":1}}],["修改",{"0":{"77":1}}],["修改默认的安装位置",{"2":{"46":1}}],["修订标准的原因并不是因为原标准不能用",{"2":{"21":1}}],["单行注释",{"0":{"55":1},"2":{"55":1}}],["单个组件",{"2":{"46":1}}],["单元测试",{"2":{"37":1}}],["工作负荷",{"2":{"46":1}}],["工具链是否安装成功",{"2":{"39":1}}],["工具链",{"2":{"25":1}}],["工具链和",{"2":{"25":1}}],["工具和应用程序",{"2":{"72":2}}],["工具和",{"2":{"46":1}}],["工具和开发",{"2":{"25":1}}],["工具和库较少",{"2":{"25":1}}],["工具和库",{"2":{"25":2}}],["继续",{"2":{"46":1,"47":1}}],["继续执行用户程序",{"2":{"6":1}}],["旨在成为世界上最好的",{"2":{"45":1}}],["企业版拥有面向架构师的功能",{"2":{"45":1}}],["美元续订",{"2":{"45":2}}],["美元",{"2":{"45":2}}],["美国国家标准协会",{"2":{"18":1,"21":1}}],["美国贝尔实验室的肯",{"2":{"18":1}}],["专业版",{"2":{"45":1}}],["免费",{"2":{"45":1}}],["社区版",{"2":{"45":1}}],["插件",{"2":{"43":1,"50":1}}],["同样适用于微软的",{"2":{"83":1}}],["同时声明多个整型的变量并赋值",{"2":{"91":1}}],["同时声明多个变量并赋值",{"2":{"91":1}}],["同时提供了类似的隔离和安全性",{"2":{"72":1}}],["同时也使得多个程序可以在相互隔离的环境中同时运行",{"2":{"6":1}}],["同意协议",{"2":{"42":1}}],["还引入了字母",{"2":{"108":1}}],["还需要重新编译",{"2":{"82":1}}],["还会加入启动代码",{"2":{"82":1}}],["还可能会塞满磁盘",{"2":{"45":1}}],["还支持在微软",{"2":{"41":1}}],["还有生产环境中提供重要业务支撑的各种服务器",{"2":{"1":1}}],["主题和调试工具",{"2":{"41":1}}],["主要任务包括",{"2":{"82":1}}],["主要面向普通用户",{"2":{"5":1}}],["主要针对开发人员和高级用户",{"2":{"5":1}}],["支持在",{"2":{"72":1}}],["支持",{"2":{"45":1}}],["支持新的编程语言",{"2":{"41":1}}],["支持多种编程范式",{"2":{"16":1}}],["智能代码补全",{"2":{"41":1}}],["智能手机",{"2":{"1":1}}],["适用于各种编程语言和框架",{"2":{"41":1}}],["适用于",{"2":{"41":1}}],["适用场景",{"2":{"25":1}}],["8位二进制数",{"2":{"120":2,"121":4,"122":6}}],["88jwh",{"2":{"47":1}}],["8",{"0":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"1":{"86":1,"87":1},"2":{"39":2,"52":2,"108":6,"120":2,"121":2,"122":2}}],["85",{"2":{"3":1}}],["新增的关键字",{"2":{"97":2}}],["新建",{"2":{"51":1}}],["新建空项目",{"2":{"51":1,"52":1}}],["新建一个空文件夹",{"2":{"50":1}}],["新建一个",{"2":{"49":1}}],["新",{"2":{"39":1}}],["新版本只是解决了",{"2":{"21":1}}],["下图是一个购物车中变化的数据",{"2":{"89":1}}],["下主要有",{"2":{"82":1}}],["下一步",{"2":{"38":3,"42":3}}],["下载地址在这里",{"2":{"27":1,"30":1,"33":1,"73":1}}],["下载到本地",{"2":{"27":1,"30":1,"33":1}}],["进",{"2":{"108":4}}],["进制的转换",{"0":{"111":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1}}],["进制的换算举例",{"2":{"108":1}}],["进制",{"0":{"107":1},"1":{"108":1,"109":1,"110":1}}],["进度条",{"2":{"89":1}}],["进行预处理",{"2":{"84":1,"87":1}}],["进入安装",{"2":{"38":1,"42":1,"46":1}}],["进程控制",{"2":{"8":1}}],["进程管理",{"2":{"5":2}}],["调试器",{"2":{"37":1}}],["调试和排查错误可能比较困难",{"2":{"22":1}}],["构建支持",{"2":{"37":1}}],["构成了一个完整的计算机系统",{"2":{"2":1}}],["集成开发环境",{"2":{"37":1,"45":2}}],["推出的跨平台",{"2":{"37":1}}],["推荐",{"0":{"32":1},"1":{"33":1,"34":1}}],["j",{"2":{"96":1}}],["jetbrains",{"2":{"37":1}}],["javascript",{"2":{"7":1,"10":1,"15":1}}],["java",{"2":{"6":5,"10":1,"11":3,"15":1,"16":1,"19":1,"83":1}}],["javaimport",{"2":{"6":1}}],["步骤略",{"2":{"50":1,"73":1}}],["步骤相同",{"2":{"31":1,"34":1}}],["步提高的瓶颈",{"2":{"3":1}}],["点击安装",{"2":{"30":1,"33":1}}],["命令行工具和应用程序",{"2":{"72":1}}],["命令的作用是将指定文件的内容插入到包含该命令的源文件中",{"2":{"69":1}}],["命令编译该文件",{"2":{"49":1,"50":1}}],["命令",{"2":{"28":1,"86":3}}],["命令查看指定可执行应用程序的",{"2":{"7":1}}],["配置编辑器的字体",{"2":{"39":1}}],["配置显示方法分隔符功能",{"2":{"39":1}}],["配置控制台编码为",{"2":{"39":1}}],["配置文件编码",{"2":{"39":1}}],["配置自动保存功能",{"2":{"39":1}}],["配置自定义字体",{"2":{"39":1}}],["配置新",{"2":{"39":1}}],["配置环境变量",{"2":{"28":1}}],["配置",{"0":{"28":1,"31":1,"34":1,"39":1,"43":1,"47":1,"74":1,"75":1,"78":1,"79":1},"2":{"31":1,"34":1,"78":1,"79":1}}],["解压到指定的目录",{"2":{"27":1}}],["略",{"2":{"27":1,"30":1,"31":1,"33":1,"34":1}}],["安装gcc相关工具链",{"2":{"74":1}}],["安装指定版本的",{"2":{"73":1}}],["安装和配置",{"0":{"71":1},"1":{"72":1,"73":1,"74":1,"75":1}}],["安装中",{"2":{"46":1}}],["安装中文插件",{"2":{"39":1,"43":1}}],["安装位置",{"2":{"46":1}}],["安装过程",{"2":{"42":1}}],["安装完成",{"2":{"38":1,"42":1,"46":1}}],["安装开发",{"2":{"33":1}}],["安装开发工具包",{"2":{"33":1,"74":1,"75":1}}],["安装",{"0":{"27":1,"30":1,"33":1,"38":1,"42":1,"46":1},"2":{"33":1,"38":1,"42":1,"43":1,"50":1,"74":3,"75":3}}],["安全性问题",{"2":{"22":1}}],["安全性",{"2":{"6":1}}],["安全地运行",{"2":{"5":1}}],["安全管理",{"2":{"5":1}}],["然后将每步得到的余数倒过来",{"2":{"115":1}}],["然后将处理结果输出的现代化智能电子设备",{"2":{"1":1}}],["然后求和",{"2":{"114":1}}],["然后安装即可",{"2":{"73":1}}],["然后再用代码去实现",{"2":{"54":1}}],["然后再运行",{"2":{"25":1}}],["然后关闭",{"2":{"46":1}}],["然后关闭再重新安装",{"2":{"46":1}}],["占用更多空间",{"2":{"25":1}}],["完整的",{"2":{"25":1}}],["应用示例",{"0":{"87":1}}],["应用",{"2":{"25":1}}],["应用程序的兼容性大幅提高",{"2":{"72":1}}],["应用程序",{"2":{"72":1}}],["应用程序都不能直接作用于硬件",{"2":{"8":1}}],["应用程序与操作系统",{"2":{"7":1}}],["应用程序二进制接口",{"2":{"7":1}}],["应用程序通过调用这些接口来请求操作系统执行特定的硬件操作",{"2":{"5":1}}],["应用程序需要对接的硬件也将越来越多",{"2":{"5":1}}],["轻量级",{"2":{"25":1}}],["混合使用",{"2":{"25":1}}],["较为灵活",{"2":{"25":1}}],["设置为默认版本",{"2":{"73":1}}],["设置",{"2":{"50":1,"77":1}}],["设置和使用相对复杂",{"2":{"25":1}}],["设计的基础",{"2":{"2":1}}],["简称宏替换",{"2":{"101":1}}],["简称",{"2":{"45":1}}],["简单易用",{"2":{"25":1}}],["简介",{"2":{"25":1}}],["复杂性比",{"2":{"25":1}}],["复杂度介于",{"2":{"25":1}}],["复杂度",{"2":{"25":1}}],["复数",{"2":{"21":1}}],["丰富的工具",{"2":{"25":1}}],["丰富的工具和库",{"2":{"25":1}}],["丰富的",{"2":{"25":1}}],["基本的编译工具",{"2":{"25":1}}],["无需手动包含",{"2":{"67":1}}],["无需额外依赖",{"2":{"25":1}}],["无依赖",{"2":{"25":1}}],["无论我们学习任何一门编程语言",{"2":{"11":1}}],["兼容性增强",{"2":{"72":1}}],["兼容的可执行文件",{"2":{"25":1}}],["兼容环境",{"2":{"25":2}}],["兼容环境和工具集",{"2":{"25":1}}],["原码的表示与机器数真值表示的一样",{"2":{"120":1}}],["原码",{"0":{"118":1,"120":1},"1":{"119":1,"120":1,"121":1,"122":1,"123":1},"2":{"120":2,"121":2,"122":2}}],["原本作为",{"2":{"83":1}}],["原生应用",{"2":{"25":2}}],["原生可执行文件或",{"2":{"25":1}}],["原生可执行文件",{"2":{"25":1}}],["原先是",{"2":{"19":1}}],["生成一个扩展名为",{"2":{"82":3}}],["生成唯一的可执行文件名",{"2":{"77":1}}],["生成文件依赖",{"2":{"25":1}}],["生成文件",{"2":{"25":1}}],["生成的可执行文件就可以在任何遵循相同",{"2":{"7":1}}],["环境变量就需要",{"2":{"28":1}}],["环境变量",{"0":{"28":1,"31":1,"34":1},"2":{"31":1,"34":1}}],["环境较大",{"2":{"25":1}}],["环境",{"2":{"25":1}}],["环境的安装和配置",{"0":{"24":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1}}],["包含大量工具",{"2":{"25":1}}],["包括",{"2":{"100":2,"106":1}}],["包括很多大学将",{"2":{"19":1}}],["包括指令的编码",{"2":{"7":1}}],["特性",{"2":{"25":1}}],["特征",{"2":{"16":1}}],["要么在",{"2":{"73":1}}],["要么走科学上网",{"2":{"73":1}}],["要想在程序中使用这个函数",{"2":{"66":1}}],["要开发",{"2":{"25":1}}],["要求将",{"2":{"21":1}}],["概述",{"0":{"25":1,"37":1,"41":1,"45":1,"54":1,"66":1,"72":1,"82":1,"86":1,"95":1,"99":1,"106":1,"112":1,"119":1}}],["⭐",{"0":{"23":1,"57":1,"70":1,"81":1,"88":1,"98":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1}}],["多个单词组成的标识符",{"2":{"96":1}}],["多平台开发",{"2":{"72":1}}],["多平台编译的方式",{"2":{"7":1}}],["多行注释不能嵌套使用",{"2":{"56":1}}],["多行注释",{"0":{"56":1}}],["多线程编程等方面",{"2":{"22":1}}],["尤其是在网络编程",{"2":{"22":1}}],["尤其是在处理复杂指针和内存操作的时候",{"2":{"22":1}}],["虽然",{"2":{"22":1}}],["错误调试困难",{"2":{"22":1}}],["分号也会成为常量值的一部分",{"2":{"101":1}}],["分隔",{"2":{"93":1}}],["分步编译",{"0":{"85":1},"1":{"86":1,"87":1}}],["分配内存和释放内存",{"2":{"22":1}}],["分钟",{"2":{"3":1}}],["垃圾回收机制等",{"2":{"22":1}}],["面向对象编程",{"2":{"22":1}}],["面向机器",{"2":{"14":1}}],["缺乏高级特性",{"2":{"22":1}}],["缺点",{"2":{"16":1,"25":1}}],["缺点和机器语言没什么不同",{"2":{"14":1}}],["没有任何提示",{"2":{"82":1}}],["没有就暂时跳过",{"2":{"47":1}}],["没有",{"2":{"30":1}}],["没有过多的复杂特性",{"2":{"22":1}}],["没有引入任何新功能",{"2":{"21":1}}],["涵盖了文件操作",{"2":{"22":1}}],["涵盖了低级数据类型",{"2":{"7":1}}],["广泛的硬件和平台支持",{"2":{"22":1}}],["广泛用于开发操作系统",{"2":{"19":1}}],["广泛用于各种操作系统和系统软件的开发",{"2":{"18":1}}],["灵活的环境",{"2":{"25":1}}],["灵活的数组成员",{"2":{"21":1}}],["灵活性和低级控制",{"2":{"22":1}}],["英特尔编译器",{"2":{"21":1}}],["宝蓝公司",{"2":{"21":1}}],["导致编译程序错误的现象",{"2":{"21":1}}],["导致了计算机系统",{"2":{"3":1}}],["甚至会出现某些",{"2":{"21":1}}],["只有一个零",{"2":{"122":1}}],["只有不断地除以",{"2":{"115":1}}],["只是简单地文本替换",{"2":{"104":1}}],["只是个说明文档而已",{"2":{"21":1}}],["只不过",{"2":{"102":1}}],["只进行预处理和编译",{"2":{"87":1}}],["只进行预处理",{"2":{"87":2}}],["只能有",{"2":{"115":1}}],["只能有一个",{"2":{"77":1}}],["只能",{"2":{"108":1}}],["只能由小写或大写英文字母",{"2":{"96":1}}],["只能使用空白字符",{"2":{"93":1}}],["只能识别二进制的指令",{"2":{"11":1}}],["只支持",{"2":{"25":1}}],["引入模块化语言概念等新特性",{"2":{"21":1}}],["消除实现定义的行为",{"2":{"21":1}}],["计算圆的面积",{"2":{"93":1}}],["计算机基础知识",{"0":{"125":1}}],["计算机底层为什么使用补码",{"0":{"124":1}}],["计算机底层存储和计算的都是二进数的补码",{"2":{"122":1}}],["计算机底层虽然存储和计算的都是二进数",{"2":{"120":1,"121":1}}],["计算机不能直接识别和执行用高级语言编写的程序",{"2":{"15":1}}],["计算机病毒分析等",{"2":{"14":1}}],["计算机却不能识别",{"2":{"11":1}}],["计算机语言走势图",{"2":{"20":1}}],["计算机语言排行榜",{"0":{"20":1}}],["计算机语言简史",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1}}],["计算机语言有很多种",{"2":{"10":1}}],["计算机语言是什么",{"0":{"10":1}}],["计算机编程语言是人和计算机交流的方式",{"2":{"10":1}}],["计算机设计的也非常简陋",{"2":{"5":1}}],["计算机软件",{"0":{"4":1},"1":{"5":1,"6":1,"7":1,"8":1}}],["计算机的底层只有二进制",{"2":{"106":1}}],["计算机的各个设备部件的延迟从高到低的排列",{"2":{"3":1}}],["计算机的性能短板",{"2":{"3":1}}],["计算机的控制单元",{"2":{"2":1,"106":1}}],["计算机由运算器",{"2":{"2":1,"106":1}}],["计算机科学",{"2":{"2":1}}],["计算机有很多形式",{"2":{"1":1}}],["计算机",{"2":{"1":1}}],["计算机系统",{"0":{"1":1}}],["计算机组成原理",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1}}],["计划进一步增强安全性",{"2":{"21":1}}],["5999",{"2":{"45":1}}],["5",{"0":{"22":1,"54":1,"55":1,"56":1,"79":1,"93":1,"103":1,"123":1,"124":1},"2":{"21":1,"90":1,"101":1,"102":1,"108":5}}],["50",{"2":{"3":1}}],["500",{"2":{"3":1}}],["增加了",{"2":{"21":1}}],["增加了许多语言特性",{"2":{"21":1}}],["双斜杠",{"2":{"21":1}}],["发生在",{"2":{"21":1}}],["称为短除法或连续除2取余法",{"2":{"115":1}}],["称为位权相加法",{"2":{"114":1}}],["称为标识符",{"2":{"95":1}}],["称为关键字",{"2":{"62":1}}],["称为",{"2":{"21":1}}],["制定了一套",{"2":{"21":1}}],["加上",{"2":{"21":1}}],["又称",{"2":{"21":1}}],["柯林",{"2":{"21":1}}],["指针运算等底层编程",{"2":{"22":1}}],["指的是",{"2":{"21":1}}],["指令集架构",{"2":{"13":1}}],["指令",{"2":{"10":1}}],["指令由操作码和地址码组成",{"2":{"2":1,"106":1}}],["指令结构",{"2":{"2":1,"106":1}}],["指令按照它们在内存中的顺序执行",{"2":{"2":1,"106":1}}],["k",{"2":{"21":3}}],["keepemptylinesatthestartofblocks",{"2":{"78":1}}],["kernighan",{"2":{"21":1}}],["kernel",{"2":{"6":3}}],["ken",{"2":{"18":1}}],["出现命令终端",{"2":{"33":1}}],["出现了许多",{"2":{"21":1}}],["出自",{"2":{"3":2}}],["也叫作宏定义",{"2":{"101":1}}],["也会取小名为二狗子",{"2":{"95":1}}],["也称为目标代码或目标文件",{"2":{"82":1}}],["也可以在定义枚举常量的时候",{"2":{"103":1}}],["也可以在声明变量的同时进行赋值",{"2":{"91":1}}],["也可以使用小驼峰命名法",{"2":{"96":1}}],["也可以是一句话中的关键词或其它任意格式的数据",{"2":{"90":1}}],["也可以生成桌面应用程序",{"2":{"45":1}}],["也可以按照发布年份",{"2":{"21":1}}],["也将作为排名权重的参考指标",{"2":{"20":1}}],["也是类似的道理",{"2":{"3":1}}],["yyy",{"2":{"103":1}}],["year",{"2":{"96":1}}],["y",{"2":{"74":6,"75":5}}],["ywv2j",{"2":{"47":1}}],["y8mmm",{"2":{"47":1}}],["yq6xk",{"2":{"47":1}}],["youtube",{"2":{"20":1}}],["yahoo",{"2":{"20":1}}],["拥有庞大而活跃的用户社区",{"2":{"19":1}}],["拥有访问系统全部资源和执行硬件操作的最高权限",{"2":{"6":1}}],["学习和实验",{"2":{"72":1}}],["学习",{"2":{"19":1}}],["学习该语言的文字和符号编写的规则",{"2":{"11":1}}],["仿真软件和数值分析工具",{"2":{"19":1}}],["科学应用",{"2":{"19":1}}],["神经网络和深度学习算法",{"2":{"19":1}}],["游戏中技能的冷却时间",{"2":{"89":1}}],["游戏",{"2":{"19":1}}],["数字",{"2":{"106":1}}],["数组名",{"2":{"95":1}}],["数据是从右往左的方式排列的",{"2":{"112":1}}],["数据之间不可以使用逗号",{"2":{"93":1}}],["数据类型关键字",{"2":{"97":2}}],["数据类型用于定义变量所能存储的数据的种类以及可以对这些数据进行的操作的一种分类",{"2":{"90":1}}],["数据类型",{"2":{"90":2,"102":1}}],["数据类型定义等内容的文件",{"2":{"68":1}}],["数据",{"2":{"90":1}}],["数据库",{"2":{"72":1}}],["数据库系统",{"2":{"19":1}}],["数学库",{"2":{"68":1}}],["数学库中的",{"2":{"8":1}}],["数学计算等",{"2":{"8":1,"67":1}}],["服务器",{"2":{"19":1}}],["微信聊天中消息条数",{"2":{"89":1}}],["微软公司",{"2":{"21":1}}],["微处理器和其它电子设备",{"2":{"19":1}}],["微控制器",{"2":{"19":1}}],["微妙",{"2":{"3":2}}],["嵌入式系统等需要高性能的场景",{"2":{"22":1}}],["嵌入式系统",{"2":{"19":1}}],["跨平台的特点",{"2":{"19":1}}],["标识符常量",{"2":{"100":1}}],["标识符具有长度限制",{"2":{"96":1}}],["标识符的命名规范",{"0":{"96":1}}],["标识符",{"0":{"94":1},"1":{"95":1,"96":1,"97":1},"2":{"95":1}}],["标准新增",{"2":{"102":1}}],["标准添加的类型",{"2":{"96":1}}],["标准输入输出库",{"2":{"68":1}}],["标准库",{"0":{"67":1},"2":{"68":1}}],["标准库和头文件",{"0":{"65":1},"1":{"66":1,"67":1,"68":1,"69":1}}],["标准库有限",{"2":{"22":1}}],["标准库丰富",{"2":{"22":1}}],["标准库中的函数由编译器提供",{"2":{"67":1}}],["标准库中的",{"2":{"8":1}}],["标准在",{"2":{"21":1}}],["标准化组织再一次对",{"2":{"21":1}}],["标准",{"2":{"21":1,"67":1,"77":1}}],["标志着",{"2":{"18":1}}],["正数的原码",{"2":{"123":1}}],["正数的原码是它本身对应的二进制数",{"2":{"120":1}}],["正数的补码和它的原码相同",{"2":{"122":1}}],["正数的反码和它的原码相同",{"2":{"121":1}}],["正常数字表示即可",{"2":{"109":1}}],["正确的缩进和空白",{"0":{"59":1}}],["正式将",{"2":{"18":1}}],["正是由于计算机各个部件的速度不同",{"2":{"3":1}}],["此时",{"2":{"46":1,"73":1}}],["此后",{"2":{"18":1}}],["此接口允许应用程序和库在实现相同",{"2":{"7":1}}],["丹尼斯",{"2":{"18":1}}],["肯",{"2":{"18":1}}],["为例",{"2":{"119":1}}],["为止",{"2":{"115":1}}],["为基数的进制系统",{"2":{"108":2}}],["为防止冲突",{"2":{"96":1}}],["为主体而言的",{"2":{"92":1}}],["为什么需要链接库文件",{"2":{"82":1}}],["为什么要学习",{"0":{"19":1}}],["为什么要学习计算机语言",{"0":{"11":1}}],["为什么要找你",{"2":{"3":1}}],["为开发者提供了一个原生的linux开发环境",{"2":{"72":1}}],["为了提高阅读性",{"2":{"96":1}}],["为了保持统一的代码风格",{"2":{"62":1}}],["为了程序的可读性和可移植性",{"2":{"18":1}}],["为",{"2":{"39":1,"119":1}}],["最高位表示符号位",{"2":{"124":1}}],["最高级别的抽象由应用程序编程接口",{"2":{"7":1}}],["最左边的是高位",{"2":{"112":1}}],["最右边的是低位",{"2":{"112":1}}],["最基本的存储单元",{"2":{"90":1}}],["最初用于编译",{"2":{"83":1}}],["最初是使用汇编语言编写的",{"2":{"18":1}}],["最终都会转换为二进制的机器指令",{"2":{"82":1}}],["最流行的编程语言之一",{"2":{"19":1}}],["一般限制在",{"2":{"96":1}}],["一首歌播放的时间",{"2":{"89":1}}],["一条语句也可写在几行上",{"2":{"63":1}}],["一行内可写几条语句",{"2":{"63":1}}],["一对花括号",{"2":{"63":1}}],["一起开发了",{"2":{"18":1}}],["一个数在计算机的存储形式是二进制",{"2":{"119":1}}],["一个八进制位可以表示",{"2":{"108":1}}],["一个十六进制可以表示",{"2":{"108":1}}],["一个程序或工程可以定义很多函数",{"2":{"62":1}}],["一个项目只能有一个",{"2":{"52":1}}],["一个计算机只能跑一个应用程序",{"2":{"5":1}}],["一个时钟周期是",{"2":{"3":1}}],["一个完整的计算机系统由硬件",{"2":{"1":1}}],["rate",{"2":{"96":1}}],["radius",{"2":{"93":5,"101":4,"102":4}}],["rand",{"2":{"68":1}}],["runner",{"2":{"50":1}}],["r",{"2":{"21":3}}],["ritchie",{"2":{"18":2,"21":1}}],["restrict",{"2":{"97":1}}],["result",{"2":{"77":3,"93":2}}],["register",{"2":{"97":1}}],["regroup",{"2":{"78":1}}],["reflowcomments",{"2":{"78":1}}],["replace",{"2":{"77":3}}],["rel",{"2":{"77":2}}],["relative",{"2":{"77":1}}],["recurse",{"2":{"77":1}}],["required",{"2":{"77":2}}],["return",{"2":{"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":1,"59":1,"62":3,"91":3,"92":1,"93":3,"97":1,"100":2,"101":1,"102":1,"103":2,"109":1,"110":1}}],["read",{"2":{"8":1}}],["汤姆森就在",{"2":{"18":1}}],["汤姆森",{"2":{"18":1}}],["良好的可移植性和易用性",{"2":{"16":1}}],["易于编写和维护",{"2":{"16":1}}],["易用的操作方式",{"2":{"5":1}}],["接近人类语言",{"2":{"16":1}}],["接近于自然语言和数学语言",{"2":{"15":1}}],["依赖",{"2":{"25":2}}],["依赖于计算机硬件",{"2":{"18":1}}],["依然是最广泛使用",{"2":{"19":1}}],["依然需要了解硬件",{"2":{"16":1}}],["依次是机械硬盘",{"2":{"3":1}}],["与具体硬件或平台相关",{"2":{"16":1}}],["与具体硬件强绑定",{"2":{"16":1}}],["与用户进行交互的界面",{"2":{"5":1}}],["可选",{"2":{"33":1,"39":3,"50":2,"73":1}}],["可能会出现共享组件",{"2":{"46":1}}],["可能会导致缓冲区溢出",{"2":{"22":1}}],["可能较低",{"2":{"25":1}}],["可能存在一定的性能损失",{"2":{"16":1}}],["可以简化硬件设计",{"2":{"122":1}}],["可以使用不同的格式占位符来输出不同进制的整数",{"2":{"110":1}}],["可以先声明变量再赋值",{"2":{"91":1}}],["可以操作这块内存区域",{"2":{"90":1}}],["可以是常量",{"2":{"92":1}}],["可以是一个用来计算的数字",{"2":{"90":1}}],["可以是库",{"2":{"7":1}}],["可以向其中存储不同类型的数据",{"2":{"90":1}}],["可以自动保存并格式化",{"2":{"78":1}}],["可以通过",{"2":{"74":1,"75":1}}],["可以在",{"2":{"72":1,"76":1}}],["可以在输出文本的结尾",{"2":{"64":1}}],["可以添加一个换行符",{"2":{"64":1}}],["可以有多个包含",{"2":{"77":1}}],["可以有多个",{"2":{"52":1}}],["可以用于生成web应用程序",{"2":{"45":1}}],["可以极大提高",{"2":{"37":1}}],["可以实现在",{"2":{"25":1}}],["可以生成",{"2":{"25":1}}],["可以进行位操作",{"2":{"22":1}}],["可变长度数组",{"2":{"21":1}}],["可移植性好",{"2":{"16":1}}],["可读性差",{"2":{"16":1}}],["优点",{"2":{"16":1,"25":1}}],["类别",{"2":{"16":1}}],["类型安全性更强",{"2":{"104":1}}],["类型检查",{"2":{"104":1}}],["类型转换",{"2":{"68":1}}],["类型",{"2":{"6":1,"8":1,"97":3}}],["总结",{"0":{"16":1,"123":1}}],["总而言之",{"2":{"11":1,"22":1}}],["普遍使用的高级编程语言",{"2":{"15":1}}],["容易混淆",{"2":{"96":1}}],["容易产生难以调试的错误和安全隐患",{"2":{"22":1}}],["容易被人们掌握",{"2":{"15":1}}],["容量不同",{"2":{"3":1}}],["软件的加密解密",{"2":{"14":1}}],["代码细节剖析",{"0":{"61":1},"1":{"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1}}],["代码风格",{"0":{"60":1}}],["代码管控工具",{"2":{"45":1}}],["代码",{"2":{"41":1}}],["代码分析等功能",{"2":{"37":1}}],["代替二进制操作码",{"2":{"14":1}}],["代表数据类型是整型",{"2":{"62":1}}],["代表",{"2":{"13":3}}],["铁器时代",{"0":{"14":1}}],["决定了机器语言的具体形式",{"2":{"13":1}}],["架构",{"2":{"13":1}}],["架构的处理器上",{"2":{"7":1}}],["都有格式化的快捷键",{"2":{"59":1}}],["都是异类",{"2":{"13":1}}],["都必须做如下的两件事情",{"2":{"11":1}}],["9",{"2":{"13":1,"96":1,"108":6}}],["99",{"2":{"13":1}}],["换言之",{"2":{"13":2,"67":1,"68":1,"83":1}}],["诞生",{"2":{"13":1}}],["日",{"2":{"13":1}}],["月",{"2":{"13":1}}],["语音的长度",{"2":{"89":1}}],["语句和循环的格式",{"2":{"78":1}}],["语法",{"2":{"69":1}}],["语法依然在快速发展",{"2":{"21":1}}],["语法规则相对简单",{"2":{"22":1}}],["语法规则",{"2":{"11":1}}],["语言源程序转换为目标程序",{"2":{"82":1}}],["语言源程序代码",{"2":{"82":1}}],["语言项目中",{"2":{"77":2}}],["语言头文件及其功能和常用函数",{"2":{"68":1}}],["语言中没有输出二进制数的格式占位符",{"2":{"110":1}}],["语言中如何表示不同进制的整数",{"0":{"109":1}}],["语言中",{"2":{"60":1,"62":2,"92":2,"93":1,"95":1,"109":4,"110":1}}],["语言中的变量的分类",{"2":{"100":1}}],["语言中的关键字是编译器预定义的保留字",{"2":{"97":1}}],["语言中的每条可执行语句经过编译之后",{"2":{"82":1}}],["语言中的多行注释的格式",{"2":{"56":1}}],["语言中的单行注释的格式",{"2":{"55":1}}],["语言包",{"2":{"46":1}}],["语言入门",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["语言依然是不可替代的选择",{"2":{"22":1}}],["语言需要程序员手动管理内存",{"2":{"22":1}}],["语言允许直接操作内存",{"2":{"22":1}}],["语言允许直接操作内存和硬件",{"2":{"22":1}}],["语言缺乏一些高级特性",{"2":{"22":1}}],["语言简洁",{"2":{"22":1}}],["语言有一个标准库",{"2":{"22":1}}],["语言有助于快速上手其他编程语言",{"2":{"19":1}}],["语言几乎可以在所有的计算机平台上运行",{"2":{"22":1}}],["语言生成的代码非常高效",{"2":{"22":1}}],["语言在安全和可靠性方面有重大提高",{"2":{"21":1}}],["语言在许多领域应用广泛",{"2":{"19":1}}],["语言进行修订",{"2":{"21":1}}],["语言标准的第一次大型修订",{"2":{"21":1}}],["语言标准",{"2":{"21":1}}],["语言标准化的呼声越来越高",{"2":{"21":1}}],["语言标准化",{"2":{"18":1}}],["语言还没有成文的语法标准",{"2":{"21":1}}],["语言版本",{"2":{"21":1}}],["语言作为计算机教学的入门语言",{"2":{"19":1}}],["语言至今",{"2":{"19":1}}],["语言长盛不衰",{"2":{"19":1}}],["语言能够直接对硬件进行操作",{"2":{"19":1}}],["语言广泛用于开发网络应用程序",{"2":{"19":1}}],["语言编写的代码可以在不同的操作系统和硬件平台上编译和运行",{"2":{"19":1}}],["语言编写了程序",{"2":{"11":2}}],["语言具有可移植好",{"2":{"19":1}}],["语言开始稳定和规范化",{"2":{"18":1}}],["语言最初是作为",{"2":{"18":1}}],["语言重写",{"2":{"18":1}}],["语言的编译器大家族",{"2":{"83":1}}],["语言的编译器将",{"2":{"11":2}}],["语言的编译过程",{"0":{"81":1},"1":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1}}],["语言的高效性和灵活性使其在系统级编程和嵌入式系统中占据重要地位",{"2":{"22":1}}],["语言的底层操作特点",{"2":{"22":1}}],["语言的缺点",{"2":{"22":1}}],["语言的优点",{"2":{"22":1}}],["语言的优缺点",{"0":{"22":1}}],["语言的标准库提供了可重用的函数实现",{"2":{"67":1}}],["语言的标准库就是包含函数的实际代码",{"2":{"67":1}}],["语言的标准库是由一组函数组成",{"2":{"67":1}}],["语言的标准库涵盖了很多基本功能",{"2":{"22":1}}],["语言的标准在这个编译器下实现了",{"2":{"21":1}}],["语言的标准有不同的实现",{"2":{"21":1}}],["语言的标准并没有强制性的约束",{"2":{"21":1}}],["语言的发明者布莱恩",{"2":{"21":1}}],["语言的原始版本非常简单",{"2":{"21":1}}],["语言的原始版本",{"2":{"21":1}}],["语言的版本选择",{"0":{"21":1}}],["语言的影响和启发",{"2":{"19":1}}],["语言的一个扩展",{"2":{"19":1}}],["语言的最原始的设计目的",{"2":{"19":1}}],["语言的基础上嫁接了面向对象编程思想",{"2":{"19":1}}],["语言的基础上重新设计了一种新的语言",{"2":{"18":1}}],["语言的基础上发明了",{"2":{"18":1}}],["语言的由来",{"0":{"18":1}}],["语言",{"0":{"17":1,"19":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1},"2":{"18":3,"22":1,"83":1}}],["语言程序",{"2":{"7":1}}],["想要将程序运行起来",{"2":{"11":1}}],["其反码是",{"2":{"121":1}}],["其反码还是",{"2":{"121":1}}],["其余各位取反",{"2":{"121":1}}],["其余位表示数值",{"2":{"120":1}}],["其真正表示的值",{"2":{"119":1}}],["其规则是满",{"2":{"108":1}}],["其理论要点如下",{"2":{"106":1}}],["其值为",{"2":{"99":1}}],["其他关键字",{"2":{"97":3}}],["其中",{"2":{"92":1,"99":1,"112":1}}],["其语法规则",{"2":{"92":1,"93":1}}],["其函数声明是",{"2":{"92":1,"93":1}}],["其架构图",{"2":{"72":1}}],["其作用就是用来将程序员编写的源代码转换为计算机能够识别的二进制指令",{"2":{"11":1}}],["其会帮助我们将所编写的源代码转换为计算机能够识别的二进制指令",{"2":{"11":1}}],["其实宏定义的常量的执行时机是在预处理阶段",{"2":{"101":1}}],["其实就是学习这些文字和符号编写的规则",{"2":{"11":1}}],["其实",{"2":{"3":1,"8":1,"82":2,"90":1,"92":1}}],["让其完成我们需要的功能",{"2":{"11":1}}],["让计算机完成人们需要的功能",{"2":{"10":1}}],["函数名等",{"2":{"97":1}}],["函数中的",{"2":{"93":1}}],["函数中省略",{"2":{"62":1}}],["函数用于从标准输入",{"2":{"93":1}}],["函数用于输出信息",{"2":{"92":1}}],["函数是在标准库的头文件",{"2":{"66":1}}],["函数是产生格式化输出的函数",{"2":{"64":1}}],["函数是空括号",{"2":{"62":1}}],["函数的外面",{"2":{"101":1}}],["函数的文件",{"2":{"77":1}}],["函数的实现",{"2":{"67":1}}],["函数的实现代码通常位于标准库的实现文件中",{"2":{"67":1}}],["函数的格式",{"2":{"64":1}}],["函数的返回值的类型",{"2":{"62":1}}],["函数体",{"0":{"63":1}}],["函数终止运行",{"2":{"62":1}}],["函数之后一定会得到一个整数类型的值",{"2":{"62":1}}],["函数之前的",{"2":{"62":1}}],["函数不接收任何参数",{"2":{"62":1}}],["函数结尾结束整个程序的运行",{"2":{"62":1}}],["函数",{"0":{"62":1,"64":1},"2":{"52":1,"62":1,"77":1,"82":2,"95":1}}],["函数执行完毕时返回函数值0",{"2":{"11":1,"55":1}}],["函数库调用则提供了方便",{"2":{"8":1}}],["函数库调用则因为主要在用户态执行",{"2":{"8":1}}],["函数库调用的性能开销较小",{"2":{"8":1}}],["函数库调用通常在用户态执行",{"2":{"8":1}}],["函数库调用是指使用高级语言编写的一组预先编译好的函数",{"2":{"8":1}}],["函数库",{"2":{"8":1}}],["输出格式",{"0":{"110":1}}],["输出列表",{"2":{"92":1}}],["输出数据",{"2":{"92":1}}],["输出",{"2":{"92":1}}],["输出变量",{"0":{"92":1}}],["输出所指定的一行信息",{"2":{"11":1,"55":1}}],["输入多个变量的值",{"2":{"93":1}}],["输入一个整数值",{"2":{"93":1}}],["输入数据赋值给变量",{"0":{"93":1}}],["输入",{"2":{"92":1}}],["输入输出",{"2":{"67":1}}],["输入如下的代码",{"2":{"49":1}}],["输入设备和输出设备负责与外界的交互",{"2":{"2":1}}],["输入设备和输出设备组成",{"2":{"2":1,"106":1}}],["世界上第一台计算机",{"2":{"13":1}}],["世界",{"2":{"11":1,"55":1,"56":1}}],["你好",{"2":{"11":1,"55":1,"56":1,"100":2}}],["你算个啥",{"2":{"3":1}}],["xxx",{"2":{"103":1}}],["x",{"2":{"83":1,"110":6}}],["x26",{"2":{"75":2,"93":5,"103":1}}],["x3c",{"2":{"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":1,"59":1,"66":1,"69":1,"91":3,"92":1,"93":4,"100":2,"101":1,"102":1,"103":2,"109":1,"110":1}}],["x86",{"2":{"7":1,"13":1,"33":1}}],["第八章",{"0":{"81":1},"1":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1}}],["第七章",{"0":{"70":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1}}],["第六章",{"0":{"57":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1}}],["第五章",{"0":{"53":1},"1":{"54":1,"55":1,"56":1}}],["第一年",{"2":{"45":2}}],["第一章",{"0":{"0":1,"88":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1}}],["第四章",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["第三章",{"0":{"17":1,"105":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1}}],["第二章",{"0":{"9":1,"98":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1}}],["高级配置",{"0":{"70":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1}}],["高级调试和测试",{"2":{"45":1}}],["高级语言因其强大的表达能力",{"2":{"16":1}}],["高级语言独立于计算机硬件",{"2":{"15":1}}],["高级语言是一种接近于人们使用习惯的程序设计语言",{"2":{"15":1}}],["高级语言",{"0":{"15":1},"2":{"16":1}}],["高",{"2":{"25":1}}],["高效",{"2":{"22":1}}],["高效执行常见任务的手段",{"2":{"8":1}}],["高速缓存",{"2":{"3":1}}],["高速的处理",{"2":{"1":1}}],["因为机器数带有符号位",{"2":{"119":1}}],["因为国家贫穷",{"2":{"95":1}}],["因为我们的",{"2":{"82":1}}],["因为通过兼容层调用系统",{"2":{"25":1}}],["因为",{"2":{"11":1,"28":1}}],["因为它们通常不涉及到模式切换",{"2":{"8":1}}],["因此将带有符号位的机器数的真正表示的值称为机器数的真值",{"2":{"119":1}}],["因此需要链接",{"2":{"82":1}}],["因此经常用于开发计算机游戏",{"2":{"19":1}}],["因此",{"2":{"8":1,"14":1}}],["因此只有可信的",{"2":{"6":1}}],["相关的域名",{"2":{"73":1}}],["相关工具链",{"2":{"33":1,"74":1,"75":2}}],["相对机器语言更易编写和理解",{"2":{"16":1}}],["相对于系统调用",{"2":{"8":1}}],["相当于人类的信息时代",{"0":{"15":1}}],["相当于人类的青铜",{"0":{"14":1}}],["相当于人类的石器时代",{"0":{"13":1}}],["相同的源代码",{"2":{"7":1}}],["频繁的系统调用可能会影响程序的性能",{"2":{"8":1}}],["性能可能较低",{"2":{"25":1}}],["性能较好",{"2":{"25":2}}],["性能",{"2":{"25":1}}],["性能开销较小",{"2":{"8":1}}],["性能开销相对较大",{"2":{"8":1}}],["性能开销",{"2":{"8":2}}],["性能也越来越好",{"2":{"5":1}}],["会出现",{"2":{"120":1}}],["会进行类型检查",{"2":{"104":1}}],["会自动记住这些关键字以及对应的含义",{"2":{"97":1}}],["会被替换为stdio",{"2":{"82":1}}],["会不支持",{"2":{"75":1}}],["会从用户态切换到内核态",{"2":{"8":1}}],["会发生从用户态到内核态的切换",{"2":{"6":1}}],["执行时机",{"2":{"104":1}}],["执行完上述命令之后",{"2":{"73":2}}],["执行完毕后",{"2":{"6":1}}],["执行",{"2":{"49":1,"50":1,"82":1}}],["执行速度快",{"2":{"16":1,"22":1}}],["执行更底层的操作",{"2":{"8":1}}],["执行层级",{"2":{"8":1}}],["执行系统调用时",{"2":{"8":1}}],["定义常量需要指定数据类型",{"2":{"104":1}}],["定义常量不用指定类型",{"2":{"104":1}}],["定义常量",{"0":{"101":1,"104":2}}],["定义的常量有详细的数据类型",{"2":{"102":1}}],["定义的关键字",{"2":{"97":1}}],["定义的指令集",{"2":{"7":1}}],["定义了函数的主体",{"2":{"63":1}}],["定义主函数",{"2":{"11":1,"55":1}}],["定义",{"2":{"8":1}}],["协议或服务",{"2":{"7":1}}],["协议和工具",{"2":{"7":1}}],["框架",{"2":{"7":1}}],["允许他们在一个操作系统上同时进行",{"2":{"72":1}}],["允许用户在",{"2":{"72":1}}],["允许用户态程序安全地请求使用操作系统提供的服务",{"2":{"6":1}}],["允许直接控制硬件资源",{"2":{"16":1}}],["允许不同的软件系统相互交互",{"2":{"7":1}}],["用机器数的最高位来存放符号位",{"2":{"119":1}}],["用来存储数据的容器",{"2":{"90":1}}],["用户可以使用",{"2":{"72":1}}],["用户可以通过扩展来添加更多功能",{"2":{"41":1}}],["用户态保证了操作系统的稳定性和安全性",{"2":{"6":1}}],["用户态为系统提供了一层保护",{"2":{"6":1}}],["用户态是普通应用程序运行的模式",{"2":{"6":1}}],["用户态",{"2":{"6":10}}],["用户态和内核态的这种分离设计是现代操作系统中实现安全",{"2":{"6":1}}],["用户态和内核态",{"0":{"6":1}}],["用于控制程序的结构和执行",{"2":{"97":1}}],["用于存储已经处理过的可执行文件名",{"2":{"77":1}}],["用于存放代码",{"2":{"50":1}}],["用于递归查找所有源文件",{"2":{"77":1}}],["用于包含用户自定义的头文件",{"2":{"69":1}}],["用于包含标准库头文件或系统头文件",{"2":{"69":1}}],["用于开发股票市场分析和交易系统等金融应用",{"2":{"19":1}}],["用于开发科学应用程序",{"2":{"19":1}}],["用于开发人工智能和机器学习的应用程序",{"2":{"19":1}}],["用于开发数据库系统",{"2":{"19":1}}],["用于开发设备驱动程序",{"2":{"19":1}}],["用于构建软件和应用程序",{"2":{"7":1}}],["用",{"2":{"19":1}}],["用助记符代替二进制代码的低级语言",{"2":{"16":1}}],["或目标文件",{"2":{"82":1}}],["或者完全在用户空间内完成计算",{"2":{"8":1}}],["或",{"2":{"7":1,"21":2,"73":1,"82":1,"96":1,"108":6,"109":1,"115":1}}],["针对",{"2":{"7":1}}],["就会导致计算结果不正确",{"2":{"124":1}}],["就会将其转换为加法计算的形式",{"2":{"124":1}}],["就会生成一个扩展名为",{"2":{"82":1}}],["就能保证最大的数字不超过",{"2":{"115":1}}],["就包含了",{"2":{"67":1}}],["就表示",{"2":{"62":1}}],["就是",{"2":{"120":2,"121":2,"122":2}}],["就是对应的二进制",{"2":{"115":1}}],["就是用一个标识符来表示一个常量值",{"2":{"101":1}}],["就是使用标识符来作为常量名",{"2":{"100":1}}],["就是可以直接使用的常量",{"2":{"100":1}}],["就是一个常量",{"2":{"99":1}}],["就是为了将",{"2":{"19":1}}],["就是这样的",{"2":{"5":1}}],["就需要打开注册表编辑器",{"2":{"46":1}}],["就需要将我们编写的源代码交给编译器程序",{"2":{"11":1}}],["就需要使用一套代码",{"2":{"7":1}}],["运算符两边习惯各加一个空格",{"2":{"59":1}}],["运算器和控制器通常被集成在一起",{"2":{"2":1}}],["运行的低级机器语言的程序",{"2":{"83":1}}],["运行和开发",{"2":{"25":1}}],["运行",{"2":{"7":1,"72":1}}],["平台",{"2":{"41":1}}],["平台的开发和测试",{"2":{"72":1}}],["平台的",{"2":{"7":1}}],["平板电脑等",{"2":{"1":1}}],["编辑代码",{"2":{"83":1}}],["编辑器",{"2":{"83":1}}],["编辑",{"2":{"82":1}}],["编写",{"2":{"82":2}}],["编写如下代码",{"2":{"51":1,"52":1}}],["编写如下的代码",{"2":{"50":1}}],["编写困难",{"2":{"16":1}}],["编写语言的对比",{"2":{"16":1}}],["编程语言环境等",{"2":{"72":1}}],["编程语言中",{"2":{"54":1}}],["编程语言",{"2":{"21":1}}],["编程语言就是用于控制计算机",{"2":{"11":1}}],["编程语言就是由文字和符号组成的",{"2":{"11":1}}],["编程语言到底是什么",{"2":{"11":1}}],["编程中的各种问题以及相应的解决方案",{"2":{"3":1}}],["编译是将预处理后的源代码转换为汇编代码的过程",{"2":{"82":1}}],["编译阶段包含了预处理",{"2":{"82":1}}],["编译",{"2":{"82":1,"84":1,"86":2,"87":1}}],["编译代码或数据库操作",{"2":{"72":1}}],["编译和汇编",{"2":{"82":1,"86":1,"87":1}}],["编译和运行",{"2":{"52":1}}],["编译和执行",{"2":{"51":1}}],["编译套件来进行开发",{"2":{"21":1}}],["编译套件对标准的支持是最好的",{"2":{"21":1}}],["编译套件",{"2":{"21":1}}],["编译器套件",{"2":{"83":1}}],["编译器是将易于编写",{"2":{"83":1}}],["编译器就是这样的转化工具",{"2":{"83":1}}],["编译器就是运行在操作系统之上的程序",{"2":{"11":1}}],["编译器的介绍",{"0":{"83":1}}],["编译器会检查代码的语法和语义",{"2":{"82":1}}],["编译器会遵循",{"2":{"7":1}}],["编译器首先在当前目录中查找文件",{"2":{"69":1}}],["编译器将在系统的标准头文件目录中查找文件",{"2":{"69":1}}],["编译器",{"2":{"21":1,"25":3}}],["编译器如下",{"2":{"21":1}}],["编译器和汇编器等系统软件",{"2":{"19":1}}],["编译时",{"2":{"7":1}}],["当时的高级语言无法满足他们的要求",{"2":{"18":1}}],["当时的程序员",{"2":{"13":1}}],["当开发者在",{"2":{"7":1}}],["当用户程序需要进行文件读写",{"2":{"6":1}}],["f的圆的面积是",{"2":{"93":1}}],["float",{"2":{"93":1,"97":1}}],["function",{"2":{"77":1}}],["female",{"2":{"103":3}}],["featurename",{"2":{"73":2}}],["feature",{"2":{"73":2}}],["fetch",{"2":{"7":1}}],["false",{"2":{"68":1,"78":6}}],["free",{"2":{"68":1}}],["fputs",{"2":{"68":1}}],["fprintf",{"2":{"68":1}}],["fgets",{"2":{"68":1}}],["fclose",{"2":{"68":1}}],["foot",{"2":{"96":1}}],["football",{"2":{"96":2}}],["fopen",{"2":{"68":1}}],["fortran",{"2":{"83":1}}],["foreach",{"2":{"77":1}}],["for",{"2":{"25":1,"72":1,"97":1}}],["fork",{"2":{"8":1}}],["formatted",{"2":{"92":1}}],["format",{"0":{"78":1},"2":{"7":1,"64":2,"78":2,"92":1,"93":1}}],["fscanf",{"2":{"68":1}}],["f",{"2":{"45":1,"64":1,"93":1,"100":1,"108":6}}],["filename",{"2":{"69":1,"77":1}}],["filename>",{"2":{"69":1}}],["filepath",{"2":{"6":4}}],["files",{"0":{"68":1},"2":{"6":2}}],["file",{"2":{"6":3,"7":1,"77":2}}],["d的绝对值是",{"2":{"93":1}}],["d岁",{"2":{"92":1}}],["directory",{"2":{"77":1}}],["directories",{"2":{"77":3}}],["dir",{"2":{"77":10}}],["difftime",{"2":{"68":1}}],["dnf",{"2":{"74":6}}],["do",{"2":{"97":1}}],["don",{"2":{"96":1}}],["double",{"2":{"93":1,"97":1,"101":2,"102":2}}],["docker",{"2":{"72":1}}],["dos",{"2":{"18":1}}],["dconsole",{"2":{"52":1}}],["dfile",{"2":{"52":1}}],["d",{"2":{"27":1,"28":2,"33":1,"59":1,"91":5,"92":2,"93":16,"100":1,"103":4,"108":3,"109":4,"110":8}}],["dec",{"2":{"92":1}}],["decimal",{"2":{"92":4}}],["defind",{"0":{"104":1}}],["define定义宏常量相比",{"2":{"102":1}}],["define",{"0":{"101":1},"2":{"82":1,"100":2,"101":4,"104":2}}],["define等",{"2":{"82":1}}],["default",{"2":{"73":1,"97":1}}],["devel",{"2":{"33":1}}],["development",{"2":{"74":1}}],["develop",{"2":{"27":1,"28":2}}],["dennis",{"2":{"18":2,"21":1}}],["demo",{"2":{"6":2}}],["dynamic",{"2":{"7":1}}],["dll",{"2":{"7":1,"25":2}}],["格式是",{"2":{"101":1,"102":1}}],["格式声明符",{"2":{"92":1}}],["格式占位符",{"2":{"92":1}}],["格式化字符串",{"2":{"92":1}}],["格式化打印",{"2":{"92":1}}],["格式化文件",{"2":{"78":1}}],["格式化",{"2":{"64":1}}],["格式和",{"2":{"7":2}}],["格式",{"2":{"7":5,"103":1}}],["while",{"2":{"97":1}}],["wsl",{"2":{"72":19}}],["wsl2",{"0":{"71":1,"73":1,"74":1,"75":1},"1":{"72":1,"73":1,"74":1,"75":1},"2":{"25":1,"72":1,"73":2}}],["w64",{"0":{"26":1},"1":{"27":1,"28":1},"2":{"25":8,"28":1,"33":1}}],["world",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"49":1,"50":1,"51":1,"52":1,"64":2}}],["win11",{"2":{"25":1}}],["win10",{"2":{"25":1}}],["windows",{"2":{"7":2,"18":1,"19":1,"25":12,"41":1,"72":6,"73":2,"83":1,"86":3,"92":1}}],["wikipedia",{"2":{"20":1}}],["web",{"2":{"7":1,"19":1}}],["write",{"2":{"6":1,"8":1}}],["writefile",{"2":{"6":2}}],["返回值如何处理等",{"2":{"7":1}}],["库或应用程序的不同部分之间的接口",{"2":{"7":1}}],["并不一定全部使用到",{"2":{"97":1}}],["并直接赋值",{"2":{"91":1}}],["并生成新的",{"2":{"82":1}}],["并以文件的形式存储在磁盘中",{"2":{"82":1}}],["并添加为包含目录",{"2":{"77":1}}],["并运行",{"2":{"73":2}}],["并保存",{"2":{"49":1,"50":1,"51":1,"52":1}}],["并于次年被国际标准化组织",{"2":{"21":1}}],["并且可以得到正确的计算结果",{"2":{"124":1}}],["并且它们是有类型",{"2":{"90":1}}],["并且我们需要给盒子取一个特别的名称",{"2":{"90":1}}],["并且变量中的数据在程序运行的时候可以动态改变",{"2":{"90":1}}],["并且支持更多的系统调用",{"2":{"72":1}}],["并且在",{"2":{"62":1}}],["并且",{"2":{"8":1}}],["并使用特定的编译器",{"2":{"7":1}}],["并定义了可执行程序的格式",{"2":{"7":1}}],["并按照存储在其内部的程序对海量的数据进行自动",{"2":{"1":1}}],["将该数不断除以",{"2":{"115":1}}],["将这种计算规则",{"2":{"114":1,"115":1}}],["将每个位上的数提取出来",{"2":{"114":1}}],["将所有宏常量替换完毕",{"2":{"101":1}}],["将变量",{"2":{"91":1,"92":1}}],["将编译形成的目标文件",{"2":{"82":1}}],["将其转换为目标机器的汇编语言",{"2":{"82":1}}],["将头文件的内容插入到源文件中",{"2":{"82":1}}],["将路径中的斜杠替换为下划线",{"2":{"77":1}}],["将",{"2":{"73":1,"82":1}}],["将字符串输出到控制台",{"2":{"64":1}}],["将如下图中的除了第一个选项",{"2":{"46":1}}],["将源程序编译为计算机能够识别的二进制指令",{"2":{"11":1}}],["将操作系统层与由操作系统管理的应用程序和库分开",{"2":{"7":1}}],["将计算机世界的时间和人类世界的时间进行对比",{"2":{"3":1}}],["等待",{"2":{"46":1}}],["等多种程序语言的开发和测试",{"2":{"45":1}}],["等相关开发包",{"2":{"33":1}}],["等助记符",{"2":{"16":1}}],["等函数",{"2":{"8":2}}],["等",{"2":{"7":2,"8":1,"10":1,"13":1,"15":1,"16":1,"18":1,"19":1,"25":1,"45":1,"82":1,"83":2,"96":3}}],["例如",{"2":{"7":2,"10":1,"19":4,"82":3}}],["不进行类型检查",{"2":{"104":1}}],["不需要声明或定义",{"2":{"100":1}}],["不需要操作系统介入",{"2":{"8":1}}],["不能改变的量就是常量",{"2":{"99":1}}],["不能以数字开头",{"2":{"96":1}}],["不要以",{"2":{"101":1}}],["不要死记硬背这些关键字",{"2":{"97":1}}],["不要出现仅靠大小写区分不同的标识符",{"2":{"96":1}}],["不一定建议",{"2":{"96":1}}],["不可以是关键字",{"2":{"96":1}}],["不建议省略",{"2":{"62":1}}],["不支持企业使用",{"2":{"45":1}}],["不够抽象",{"2":{"16":1}}],["不同进制的转换",{"2":{"112":1}}],["不同编译器和平台会有所不同",{"2":{"96":1}}],["不同的编译器产商",{"2":{"21":1}}],["不同的处理器可能有不同的",{"2":{"7":1}}],["不同类型",{"2":{"13":1}}],["不涉及到用户态与内核态之间的切换",{"2":{"8":1}}],["不显示工作很重复吗",{"2":{"5":1}}],["它包含了一个完整的",{"2":{"72":1}}],["它包括了整个软件生命周期中所需要的大部分工具",{"2":{"45":1}}],["它引入了一个真正的",{"2":{"72":1}}],["它可以是任何操作",{"2":{"63":1}}],["它是",{"2":{"62":1}}],["它不会被编译器执行",{"2":{"54":1}}],["它支持语法高亮",{"2":{"41":1}}],["它具有智能编辑器",{"2":{"37":1}}],["它被称为",{"2":{"21":1}}],["它允许程序员使用接近日常英语的指令来编写程序",{"2":{"15":1}}],["它定义了软件组件之间如何相互通信",{"2":{"7":1}}],["它定义了数据类型的大小",{"2":{"7":1}}],["它将应用程序连接到库或底层操作系统",{"2":{"7":1}}],["它规定了处理器能够执行的操作",{"2":{"7":1}}],["它们有特定的含义和用途",{"2":{"97":1}}],["它们决定了变量在内存中如何表示和存储",{"2":{"90":1}}],["它们决定使用高级语言重写",{"2":{"18":1}}],["它们设置堆栈后",{"2":{"82":1}}],["它们之间的区别",{"2":{"25":1}}],["它们直接使用操作系统通过系统调用提供的服务",{"2":{"8":1}}],["它们直接与硬件交互",{"2":{"5":1}}],["它们对系统资源的访问权限有着本质的区别",{"2":{"6":1}}],["of",{"2":{"96":1}}],["oct",{"2":{"92":1}}],["octal",{"2":{"92":1}}],["o和库函数以及其他目录文件链接",{"2":{"82":1}}],["o或",{"2":{"82":1}}],["obj",{"2":{"82":1,"86":1}}],["obj的目标文件",{"2":{"82":1}}],["obj或",{"2":{"82":1}}],["object",{"2":{"7":1,"83":2}}],["online",{"2":{"73":3}}],["o",{"2":{"49":1,"50":1,"72":1,"82":1,"84":1,"86":7,"87":6,"110":4}}],["org",{"2":{"33":1}}],["oracle",{"2":{"19":1}}],["open",{"2":{"8":1}}],["os",{"2":{"7":1,"83":1}}],["out",{"2":{"6":3,"86":1}}],["表示负数",{"2":{"119":1}}],["表示正数",{"2":{"119":1}}],["表示女性",{"2":{"103":1}}],["表示男性",{"2":{"103":1}}],["表示变量",{"2":{"93":1}}],["表示输出的是整数",{"2":{"92":1}}],["表示整数",{"2":{"92":1}}],["表示可以指定输出文本的格式",{"2":{"64":1}}],["表示",{"2":{"7":2,"64":1}}],["+0",{"2":{"120":2,"121":1,"122":2}}],["+1",{"2":{"120":2,"121":2,"122":2}}],["+",{"2":{"6":3,"55":1,"56":2,"59":5,"122":1,"123":1,"124":1}}],["baii",{"2":{"96":1}}],["base",{"2":{"33":1}}],["b=",{"2":{"91":1}}],["buff",{"2":{"89":1}}],["build",{"2":{"75":1,"79":2}}],["bsd",{"2":{"83":1}}],["break",{"2":{"97":1}}],["breakbeforebraces",{"2":{"78":1}}],["brian",{"2":{"21":1}}],["bios",{"2":{"73":1}}],["binary",{"2":{"92":1}}],["binutils",{"2":{"30":1}}],["bing",{"2":{"20":1}}],["bin",{"2":{"7":1,"28":1,"92":1}}],["book",{"2":{"96":2}}],["bool",{"2":{"68":1,"96":1,"97":1}}],["borland",{"2":{"21":1}}],["bcpl",{"2":{"18":1}}],["b",{"2":{"6":4,"13":2,"18":3,"59":2,"60":4,"91":6,"93":5,"96":1,"108":4}}],["auto",{"2":{"97":1}}],["ab",{"2":{"96":1}}],["absnum",{"2":{"93":4}}],["abi",{"0":{"7":1},"2":{"7":10}}],["age",{"2":{"93":3}}],["asm",{"2":{"86":1}}],["assert",{"2":{"21":1,"68":2,"97":1}}],["ada",{"2":{"83":1}}],["add",{"2":{"14":1,"16":1,"77":1,"96":1}}],["attach",{"2":{"78":1}}],["atomic",{"2":{"97":1}}],["atof",{"2":{"68":1}}],["atoi",{"2":{"68":1}}],["append",{"2":{"77":1}}],["apt",{"2":{"75":6}}],["api",{"0":{"7":1},"2":{"7":7}}],["alignof",{"2":{"97":1}}],["alignas",{"2":{"97":1}}],["alignconsecutivedeclarations",{"2":{"78":1}}],["alignconsecutiveassignments",{"2":{"78":1}}],["almalinux9",{"2":{"74":1}}],["allowshortloopsonasingleline",{"2":{"78":1}}],["allowshortifstatementsonasingleline",{"2":{"78":1}}],["allowshortfunctionsonasingleline",{"2":{"78":1}}],["all",{"2":{"73":2}}],["alt",{"2":{"56":1,"59":1}}],["azure",{"2":{"41":1}}],["amazon",{"2":{"20":1}}],["amp",{"0":{"14":1},"2":{"21":2,"93":4}}],["ansi",{"2":{"18":1,"21":3,"67":1,"97":1}}],["and",{"2":{"7":1}}],["area",{"2":{"93":2,"101":2,"102":2}}],["arm",{"2":{"7":3,"13":1}}],["args",{"2":{"6":1}}],["a",{"2":{"6":5,"7":1,"13":1,"59":2,"60":4,"91":6,"93":5,"100":2,"108":5}}],["empty",{"2":{"78":1}}],["emptylinebeforeaccessmodifier",{"2":{"78":1}}],["essential",{"2":{"75":1}}],["extern",{"2":{"97":1}}],["exists",{"2":{"77":2}}],["exit",{"2":{"68":1}}],["exp",{"2":{"68":1}}],["exe文件",{"2":{"82":2}}],["exe",{"2":{"49":2,"50":2,"73":2,"82":2,"84":1,"86":2,"87":1}}],["exec",{"2":{"8":1,"77":1}}],["executable",{"2":{"7":2,"77":17}}],["else",{"2":{"60":1,"93":1,"97":1}}],["elf",{"2":{"7":1}}],["enum",{"2":{"97":1,"103":3}}],["endforeach",{"2":{"77":1}}],["endfunction",{"2":{"77":1}}],["endif",{"2":{"77":4}}],["enable",{"2":{"73":2}}],["encoding=utf",{"2":{"52":2}}],["enterprise",{"2":{"47":1}}],["eniac",{"2":{"13":1}}],["etc",{"2":{"33":1}}],["edu",{"2":{"33":1}}],["e",{"2":{"6":2,"86":1,"87":1,"108":3}}],["typedef",{"2":{"97":1}}],["t",{"2":{"96":1}}],["true",{"2":{"68":1,"77":1,"78":4}}],["try",{"2":{"6":1}}],["tools",{"2":{"74":1}}],["toolchain",{"2":{"33":1}}],["toupper",{"2":{"68":1}}],["tolower",{"2":{"68":1}}],["time",{"2":{"68":2}}],["tiobe",{"2":{"20":1}}],["tax",{"2":{"96":1}}],["target",{"2":{"77":2}}],["tan",{"2":{"68":1}}],["tab",{"2":{"59":2,"93":1}}],["td244",{"2":{"47":1}}],["tsinghua",{"2":{"33":1}}],["tuna",{"2":{"33":1}}],["thread",{"2":{"97":1}}],["the",{"2":{"21":1}}],["thompson",{"2":{"18":1}}],["txt$zj",{"2":{"96":1}}],["txta",{"2":{"96":1}}],["txtbasedonstyle",{"2":{"78":1}}],["txtcmake",{"2":{"77":1}}],["txt0000",{"2":{"13":1}}],["txt",{"0":{"77":1},"2":{"6":2,"52":1,"77":4,"79":1}}],["txt鹤寿千岁",{"2":{"3":1}}],["txt如果",{"2":{"3":1}}],["txt1",{"2":{"3":1}}],["git",{"2":{"79":1}}],["gitignore",{"0":{"79":1},"2":{"79":2}}],["github",{"2":{"73":4}}],["glob",{"2":{"77":1}}],["groupinstall",{"2":{"74":1}}],["gmtime",{"2":{"68":1}}],["gt",{"2":{"68":1,"82":2,"116":1,"117":1}}],["g",{"2":{"33":1}}],["gdb",{"2":{"30":1,"74":2,"75":3}}],["gygwin",{"2":{"25":1}}],["gnu",{"2":{"25":2,"83":4}}],["g++",{"2":{"21":1,"30":1,"75":1}}],["generic",{"2":{"21":1,"97":1}}],["getbytes",{"2":{"6":1}}],["get",{"2":{"6":1,"77":1}}],["goto",{"2":{"97":1}}],["google",{"2":{"20":1,"78":1}}],["go",{"2":{"10":1,"15":1,"83":1}}],["gcc",{"0":{"83":1,"84":1,"85":1},"1":{"86":1,"87":1},"2":{"7":2,"21":3,"25":4,"28":1,"30":3,"33":2,"39":1,"49":1,"50":1,"74":2,"75":2,"83":5}}],["gui",{"2":{"5":1}}],["volatile",{"2":{"97":1}}],["void",{"2":{"6":2,"97":1}}],["vim",{"2":{"83":1}}],["virtualmachineplatform",{"2":{"73":1}}],["visual",{"0":{"44":1},"1":{"45":1,"46":1,"47":1},"2":{"25":1,"41":2,"45":5}}],["vhf9h",{"2":{"47":1}}],["vb",{"2":{"45":1}}],["version",{"2":{"28":1,"73":1,"77":2}}],["vscode",{"2":{"50":3,"79":1,"83":1}}],["vs",{"0":{"40":1,"50":1,"51":1,"104":1},"1":{"41":1,"42":1,"43":1},"2":{"6":1,"41":2,"45":1,"47":2}}],["p",{"2":{"96":1}}],["pi",{"2":{"82":1,"101":2,"102":2}}],["p4nb7",{"2":{"47":1}}],["parent",{"2":{"77":1}}],["pacman",{"2":{"33":1}}],["paths",{"2":{"6":2}}],["path",{"0":{"28":1,"31":1,"34":1},"2":{"6":4,"28":1,"31":1,"34":1,"77":3}}],["private",{"2":{"77":2}}],["print",{"2":{"92":1}}],["printf",{"0":{"64":1},"2":{"8":1,"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":3,"59":1,"64":2,"66":1,"67":2,"68":1,"82":1,"91":5,"92":4,"93":6,"100":4,"101":1,"102":1,"103":4,"109":4,"110":6}}],["println",{"2":{"6":3}}],["printstacktrace",{"2":{"6":1}}],["project",{"2":{"77":1}}],["pro",{"2":{"47":1}}],["programming",{"2":{"21":1}}],["powershellwsl",{"2":{"73":5}}],["powershell",{"2":{"73":2}}],["powershelldism",{"2":{"73":2}}],["pow",{"2":{"68":1}}],["posix",{"2":{"25":5}}],["postgresql",{"2":{"19":1}}],["portable",{"2":{"7":1}}],["python",{"2":{"10":1,"11":3,"15":1,"16":1}}],["per",{"2":{"96":1}}],["pe",{"2":{"7":1}}],["public",{"2":{"6":3}}],["union",{"2":{"97":1}}],["unix",{"2":{"8":1,"18":5,"19":2,"25":3,"83":1}}],["unsigned",{"2":{"97":1}}],["upgrade",{"2":{"75":1}}],["update",{"2":{"73":1,"74":1,"75":1}}],["ubuntu",{"2":{"73":1,"75":1}}],["uefi",{"2":{"73":1}}],["uml工具",{"2":{"45":1}}],["utf",{"2":{"39":2}}],["util",{"2":{"6":1}}],["ui",{"2":{"39":2}}],["usetab",{"2":{"78":1}}],["user",{"2":{"6":3,"7":1}}],["us",{"2":{"3":3}}],["imaginary",{"2":{"97":2}}],["import",{"2":{"6":4}}],["important",{"2":{"2":1,"13":1,"21":1,"82":4,"91":1,"92":1,"97":1,"120":1,"121":1,"122":1}}],["i的中间文件",{"2":{"82":1}}],["ifndef",{"2":{"82":1}}],["ifdef",{"2":{"82":1}}],["if",{"2":{"60":2,"77":4,"78":1,"93":1,"97":1}}],["idea",{"2":{"79":1}}],["ide",{"0":{"35":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1},"2":{"37":1,"45":2,"59":1}}],["i",{"2":{"33":1,"72":1,"86":3,"87":2}}],["isupper",{"2":{"68":1}}],["islower",{"2":{"68":1}}],["isdigit",{"2":{"68":1}}],["iso",{"2":{"21":1}}],["isalpha",{"2":{"68":1}}],["isalnum",{"2":{"68":1}}],["isa",{"0":{"7":1},"2":{"7":10,"13":1}}],["inline",{"2":{"97":1}}],["indentwidth",{"2":{"78":1}}],["in",{"2":{"77":1}}],["install",{"2":{"73":1,"74":4,"75":4}}],["includeblocks",{"2":{"78":1}}],["include指令显式包含",{"2":{"68":1}}],["include",{"2":{"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":1,"59":1,"66":1,"68":1,"69":3,"77":9,"82":2,"91":3,"92":1,"93":3,"100":2,"101":1,"102":1,"103":2,"109":1,"110":1}}],["integer",{"2":{"92":1}}],["intellisense",{"2":{"41":1}}],["intel",{"2":{"21":1}}],["int",{"2":{"6":3,"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":1,"59":4,"62":1,"91":6,"92":2,"93":7,"97":1,"100":2,"101":1,"102":2,"103":2,"109":5,"110":2}}],["ioexception",{"2":{"6":2}}],["io",{"2":{"6":1}}],["示例",{"2":{"6":1,"8":1,"16":1,"55":1,"56":1,"59":1,"60":2,"84":1,"87":4,"91":3,"92":1,"93":3,"96":2,"100":2,"101":1,"102":1,"103":2,"109":1,"110":1,"114":2,"115":2,"116":1,"117":1}}],["稳定运行的关键机制之一",{"2":{"6":1}}],["实际开发中最为常用",{"2":{"91":1}}],["实际的",{"2":{"67":1}}],["实现缩进",{"2":{"59":1}}],["实现右键直接编译执行",{"2":{"50":1}}],["实现",{"2":{"6":1}}],["实现了对系统资源的保护和控制",{"2":{"6":1}}],["实在是太浪费了",{"2":{"5":1}}],["避免相互干扰",{"2":{"6":1}}],["功能说明",{"2":{"68":1}}],["功能十分强大",{"2":{"45":1}}],["功能相对有限",{"2":{"22":1}}],["功能",{"2":{"6":1,"97":3}}],["功能也越来越强大",{"2":{"5":1}}],["防止重复",{"2":{"77":1}}],["防止系统崩溃和数据泄露",{"2":{"6":1}}],["防止用户程序直接操作硬件设备和关键的系统资源",{"2":{"6":1}}],["经过严格审查的操作系统核心组件才被允许在此模式下运行",{"2":{"6":1}}],["经济学等领域都有杰出的贡献",{"2":{"2":1}}],["来分隔",{"2":{"101":1}}],["来分别编译成符合自己平台的",{"2":{"7":1}}],["来定义常量",{"2":{"101":1}}],["来源于",{"2":{"92":1}}],["来与服务器进行通信",{"2":{"7":1}}],["来请求服务",{"2":{"6":1}}],["来说",{"2":{"3":1}}],["程序中变化的数据",{"0":{"89":1}}],["程序中的函数体指的是作为该函数一部分的语句",{"2":{"63":1}}],["程序中的符号和算式也和日常使用的数学公式差不多",{"2":{"15":1}}],["程序库中提供的",{"2":{"82":1}}],["程序库中的内容",{"2":{"82":1}}],["程序会使用",{"2":{"82":1}}],["程序的编译过程",{"2":{"82":1}}],["程序代码",{"2":{"78":1}}],["程序控制",{"2":{"68":1}}],["程序员可以将自己的思路通过注释整理出来",{"2":{"54":1}}],["程序员可以在自己的程序中直接调用这些函数",{"2":{"8":1}}],["程序",{"2":{"25":2}}],["程序不具备跨平台的可移植性",{"2":{"14":1}}],["程序不能直接执行硬件操作",{"2":{"6":1}}],["程序编译为计算机能够识别的二进制指令",{"2":{"11":2}}],["程序指令和数据都存储在计算机的内存中",{"2":{"2":1,"106":1}}],["管理内存以及和操作系统对话",{"2":{"19":1}}],["管理文件系统和网络通信等",{"2":{"6":1}}],["管理计算机的硬件资源",{"2":{"5":1}}],["权限",{"2":{"6":1,"8":1}}],["内核包托管在",{"2":{"73":1}}],["内核包",{"2":{"73":1}}],["内核来代替",{"2":{"72":1}}],["内核",{"2":{"72":3}}],["内核态提供了系统调用的接口",{"2":{"6":1}}],["内核态是操作系统代码运行的模式",{"2":{"6":1}}],["内核态",{"2":{"6":1}}],["内容如下所示",{"2":{"52":1}}],["内置调试工具和git集成",{"2":{"41":1}}],["内联函数和指定的初始值设定项",{"2":{"21":1}}],["内存管理等多种功能",{"2":{"22":1}}],["内存管理等",{"2":{"5":1,"6":1}}],["内存管理",{"2":{"5":1,"67":1}}],["内存访问模式等",{"2":{"7":1}}],["内存访问就需要",{"2":{"3":1}}],["内存访问需要",{"2":{"3":1}}],["内存",{"2":{"3":1}}],["核态",{"2":{"6":1}}],["mktime",{"2":{"68":1}}],["memcpy",{"2":{"68":1}}],["memset",{"2":{"68":1}}],["male",{"2":{"103":3}}],["malloc",{"2":{"68":1}}],["max",{"2":{"96":4}}],["mac",{"2":{"83":1}}],["macos",{"2":{"25":1,"41":1}}],["math",{"2":{"68":1}}],["make",{"2":{"30":1,"74":2}}],["main",{"0":{"62":1},"2":{"6":1,"11":1,"49":1,"50":1,"51":1,"52":2,"55":1,"56":1,"59":1,"60":2,"62":10,"77":2,"82":1,"91":3,"92":1,"93":3,"100":2,"101":2,"102":1,"103":2,"109":1,"110":1}}],["mysql",{"2":{"19":1}}],["mirrorlist",{"2":{"33":1}}],["mirrors",{"2":{"33":1}}],["mirror",{"2":{"33":1}}],["minimum",{"2":{"77":1}}],["minimalist",{"2":{"25":1}}],["mingw64",{"2":{"27":1,"28":2}}],["mingw",{"0":{"26":1},"1":{"27":1,"28":1},"2":{"25":9,"28":1,"33":1}}],["microsoft",{"0":{"44":1},"1":{"45":1,"46":1,"47":1},"2":{"18":1,"25":1,"73":3}}],["mips",{"2":{"7":1}}],["mouse",{"2":{"96":1}}],["mov",{"2":{"14":1,"16":1}}],["mode",{"2":{"6":6}}],["msys2",{"0":{"32":1},"1":{"33":1,"34":1},"2":{"25":3,"33":2}}],["msvc",{"2":{"21":1,"25":1}}],["ms",{"2":{"3":4,"18":1}}],["降低了计算机操作的门槛",{"2":{"5":1}}],["拖拽等简单操作完成复杂任务",{"2":{"5":1}}],["使得程序员不必编写常用的功能",{"2":{"67":1}}],["使得语言本身比较容易学习和掌握",{"2":{"22":1}}],["使得计算机能够执行各种复杂的任务",{"2":{"2":1}}],["使",{"2":{"21":1}}],["使程序更易于人类编写和理解",{"2":{"14":1}}],["使用下划线连接多个单词组成的标识符",{"2":{"96":1}}],["使用有意义的单词",{"2":{"96":1}}],["使用输出语句",{"2":{"92":1}}],["使用轻量级虚拟机",{"2":{"72":1}}],["使用了微软开发的轻量级虚拟机",{"2":{"72":1}}],["使用一次",{"2":{"59":1}}],["使用",{"0":{"101":1},"2":{"46":1,"101":1,"120":2,"121":2,"122":2}}],["使用的是最原始的穿透卡片",{"2":{"13":1}}],["使用目的",{"2":{"8":1}}],["使用户能够通过鼠标点击",{"2":{"5":1}}],["供直观",{"2":{"5":1}}],["按位取反",{"2":{"123":1}}],["按照",{"2":{"122":2}}],["按照反码的规则",{"2":{"121":1}}],["按照原码的规则",{"2":{"120":1}}],["按照上图",{"2":{"3":1}}],["按钮等",{"2":{"5":1}}],["图片",{"2":{"106":1}}],["图标",{"2":{"5":1}}],["图形用户界面",{"2":{"5":1}}],["窗口",{"2":{"5":1}}],["提高了运算效率",{"2":{"122":1}}],["提高了用户体验和工作效率",{"2":{"5":1}}],["提高工作效率",{"2":{"5":1,"72":1}}],["提供内存分配",{"2":{"68":1}}],["提供",{"2":{"25":3}}],["提供了",{"2":{"92":1,"93":1}}],["提供了更好的网络集成",{"2":{"72":1}}],["提供了更高层次的抽象",{"2":{"16":1}}],["提供了大量常用的函数",{"2":{"22":1}}],["提供了一种标准化的方式来发送",{"2":{"7":1}}],["提供底层功能支持",{"2":{"5":1}}],["提供使用计算机资源的操作方式",{"2":{"5":1}}],["精确地完成各种操作",{"2":{"5":1}}],["他们通过命令行可以快速",{"2":{"5":1}}],["他在数学",{"2":{"2":1}}],["通过将减法运算转换为加法运算",{"2":{"122":1}}],["通过变量名",{"2":{"90":1}}],["通过这个特别的名称",{"2":{"90":1}}],["通过记事本等软件打开该文件",{"2":{"49":1}}],["通过",{"0":{"84":1,"85":1},"1":{"86":1,"87":1},"2":{"21":1,"49":1,"50":2}}],["通过命令行输入各种指令来控制操作系统和软件的行为",{"2":{"5":1}}],["通常是键盘",{"2":{"93":1}}],["通常以",{"2":{"86":7}}],["通常以蜉蝣来表示时间的短暂",{"2":{"3":1}}],["通常使用系统调用来实现其功能",{"2":{"8":1}}],["通信和内存管理等",{"2":{"8":1}}],["终端命令可以执行文件操作",{"2":{"5":1}}],["终端命令",{"2":{"5":1}}],["确保编译时的正确性",{"2":{"68":1}}],["确保了编译后的二进制文件能够在特定的操作系统和硬件平台上正确地运行",{"2":{"7":1}}],["确保用户程序不能直接访问关键的系统资源",{"2":{"6":1}}],["确保用户能够输入信息并接收计算机的处理结果",{"2":{"2":1}}],["确保程序能够高效",{"2":{"5":1}}],["文件同名的问题",{"2":{"77":1}}],["文件的内容",{"2":{"77":1,"79":1}}],["文件系统性能提升",{"2":{"72":1}}],["文件",{"0":{"77":1,"78":1,"79":1},"2":{"25":1,"50":1,"51":1,"79":1,"82":1}}],["文件操作",{"2":{"5":1,"6":1}}],["文件管理",{"2":{"5":1}}],["网络功能改进",{"2":{"72":1}}],["网络协议和网络驱动程序",{"2":{"19":1}}],["网络",{"2":{"19":1}}],["网络通信或其他需要操作系统介入的操作时",{"2":{"6":1}}],["网络通信",{"2":{"6":1}}],["网络管理等各种任务",{"2":{"5":1}}],["网络管理",{"2":{"5":1}}],["网络访问就需要",{"2":{"3":1}}],["于是",{"2":{"5":1}}],["底层硬件不断丰富",{"2":{"5":1}}],["硬件模型以指令集架构",{"2":{"7":1}}],["硬件设备控制",{"2":{"6":1}}],["硬件驱动",{"2":{"5":1}}],["硬件越来越丰富",{"2":{"5":1}}],["硬件资源不够丰富",{"2":{"5":1}}],["硬盘的读写速率已经成为影响系统性能进一",{"2":{"3":1}}],["在补码表示法中",{"2":{"122":1}}],["在学术界",{"2":{"114":1,"115":1}}],["在学到后面的时候",{"2":{"97":1}}],["在二进制中表示为",{"2":{"108":2}}],["在十六进制中",{"2":{"108":1}}],["在编译过程中执行",{"2":{"104":1}}],["在编译之前执行",{"2":{"104":1}}],["在运行时才完成替换",{"2":{"102":1}}],["在数学中的",{"2":{"99":1}}],["在程序运行过程中",{"2":{"99":1}}],["在内存中的地址",{"2":{"93":1}}],["在生活中的",{"2":{"92":1}}],["在生活中",{"2":{"89":1,"90":1,"99":1,"108":1}}],["在链接过程中",{"2":{"82":1}}],["在这个阶段",{"2":{"82":3}}],["在这种模式下",{"2":{"6":1}}],["在一个",{"2":{"77":1}}],["在windows上学习和实验",{"2":{"72":1}}],["在实际开发中",{"2":{"54":1,"89":1,"91":1,"97":1}}],["在实际项目开发中",{"2":{"21":1}}],["在开始菜单处",{"2":{"47":1}}],["在另外的编辑器下却没有实现",{"2":{"21":1}}],["在上世纪",{"2":{"95":1}}],["在上文的图示中",{"2":{"8":1}}],["在上古时期",{"2":{"5":1}}],["在不同平台",{"2":{"7":1}}],["在",{"2":{"7":5,"18":1,"19":1,"25":1,"50":1,"55":1,"56":1,"60":1,"62":3,"67":1,"73":1,"86":6,"92":2,"93":1,"95":1,"100":1,"109":4,"110":1}}],["在设计一个新的操作系统时",{"2":{"7":1}}],["在底层",{"2":{"7":1}}],["在用户态",{"2":{"6":1}}],["在现代操作系统中",{"2":{"6":1,"8":1}}],["在计算机中",{"2":{"92":2,"108":1,"112":1}}],["在计算机科学中",{"2":{"90":1}}],["在计算机科学领域的最著名贡献是提出了冯",{"2":{"2":1}}],["在计算机系统当中",{"2":{"3":1}}],["操作",{"2":{"59":1}}],["操作系统上运行",{"2":{"72":1}}],["操作系统移植到其他的计算机架构上",{"2":{"19":1}}],["操作系统",{"2":{"7":2,"18":1,"19":1,"21":1,"83":1}}],["操作系统通过用户态和内核态的分离",{"2":{"6":1}}],["操作系统的官方编译器",{"2":{"83":1}}],["操作系统的核心部分可以直接访问内存",{"2":{"6":1}}],["操作系统的作用",{"2":{"5":1}}],["操作系统的功能",{"2":{"5":1}}],["操作系统的来源",{"0":{"5":1}}],["操作系统应运而生了",{"2":{"5":1}}],["操作码指示要执行的操作",{"2":{"2":1,"106":1}}],["越往下速度越慢",{"2":{"3":1}}],["人民生活不富裕等原因",{"2":{"95":1}}],["人们约定",{"2":{"62":1}}],["人们可以使用编程语言对计算机下达命令",{"2":{"10":1}}],["人工智能",{"2":{"19":1}}],["人工智能等领域的发展产生了重要影响",{"2":{"2":1}}],["人类的性别只有男和女",{"2":{"99":1}}],["人类很难理解",{"2":{"13":1}}],["人类语言是人和人之间用于沟通的一种方式",{"2":{"10":1}}],["人都是自私的",{"2":{"3":1}}],["千万不要相信别人会有发财的机会和你共享",{"2":{"3":1}}],["揭示了一个真理",{"2":{"3":1}}],["展示了价格信息",{"2":{"3":1}}],["上文购物车中的价格等",{"2":{"90":1}}],["上",{"2":{"73":2}}],["上直接运行各种",{"2":{"72":1}}],["上开发",{"2":{"72":1}}],["上进行部署和托管",{"2":{"41":1}}],["上的其他网络资源进行交互",{"2":{"72":1}}],["上的版本有很多",{"2":{"25":1}}],["上的应用程序的运行格式是",{"2":{"7":2}}],["上使用特定平台的编译器",{"2":{"7":1}}],["上运行不了",{"2":{"7":1}}],["上可以运行的程序",{"2":{"7":1}}],["上图以层次化的方式",{"2":{"3":1}}],["上述的组件协同工作",{"2":{"2":1}}],["和使用",{"2":{"102":1}}],["和格式字符组成",{"2":{"92":1}}],["和内存",{"2":{"92":1}}],["和内核态",{"2":{"6":1}}],["和系统相关",{"2":{"82":1}}],["和企业版",{"2":{"45":1}}],["和现代编程语言相对",{"2":{"22":1}}],["和原子类型限定符",{"2":{"21":1}}],["和百度这些主流的搜索引擎",{"2":{"20":1}}],["和丹尼斯",{"2":{"18":1,"21":1}}],["和人类语言差别极大",{"2":{"13":1}}],["和函数库",{"0":{"8":1},"2":{"8":2}}],["和直接管理底层硬件的应用程序",{"2":{"7":1}}],["和",{"0":{"7":1},"2":{"3":1,"7":1,"19":2,"25":3,"31":1,"34":1,"41":1,"72":1,"93":1,"97":1,"108":1,"120":1,"122":1}}],["和其他生物的寿命比",{"2":{"3":1}}],["lf的圆的面积是",{"2":{"101":1,"102":1}}],["local",{"2":{"97":1}}],["localtime",{"2":{"68":1}}],["long",{"2":{"97":1}}],["log",{"2":{"68":1}}],["load",{"2":{"13":2}}],["lt",{"2":{"68":1,"82":2}}],["l",{"2":{"59":1}}],["languages",{"2":{"77":1}}],["language",{"2":{"21":1}}],["ls",{"2":{"7":1}}],["linux",{"2":{"7":6,"8":1,"18":1,"19":1,"21":1,"25":5,"41":1,"67":1,"72":12,"73":8,"82":1,"83":1,"86":3}}],["linking",{"2":{"7":1}}],["link",{"2":{"7":1}}],["lib",{"2":{"7":1}}],["library",{"0":{"8":1,"67":1},"2":{"7":1,"8":3,"22":1}}],["list",{"2":{"6":1,"73":2,"77":2}}],["l3",{"2":{"3":1}}],["l2",{"2":{"3":1}}],["l1",{"2":{"3":1}}],["寄存器的使用",{"2":{"7":1}}],["寄存器",{"2":{"3":1,"7":1}}],["却仅仅只是一天",{"2":{"3":1}}],["从最低位开始",{"2":{"114":1}}],["从计算机向外部输出设备",{"2":{"92":1}}],["从输入设备",{"2":{"92":1}}],["从微处理器到超级计算机",{"2":{"22":1}}],["从而提供更高的性能和更广泛的系统调用支持",{"2":{"72":1}}],["从而也可以论证",{"2":{"7":1}}],["从而可能引起系统的不稳定或安全问题",{"2":{"6":1}}],["从内核态切换回用户态",{"2":{"6":1}}],["从用户态切换到内核态完成文件写入",{"2":{"6":1}}],["从早到晚就是一生",{"2":{"3":1}}],["从上图中",{"2":{"3":1}}],["赤壁赋",{"2":{"3":1}}],["苏轼",{"2":{"3":1}}],["知不可乎骤得",{"2":{"3":1}}],["抱明月而长终",{"2":{"3":1}}],["挟飞仙以遨游",{"2":{"3":1}}],["羡长江之无穷",{"2":{"3":1}}],["哀吾生之须臾",{"2":{"3":1}}],["渺沧海之一粟",{"2":{"3":1}}],["淮南子",{"2":{"3":1}}],["西汉淮南王刘安",{"2":{"3":1}}],["\\telse",{"2":{"60":1}}],["\\treturn",{"2":{"60":2}}],["\\t\\treturn",{"2":{"60":4}}],["\\t",{"2":{"3":2,"56":1,"60":6}}],["远不过三日尔",{"2":{"3":1}}],["盖其旦暮为期",{"2":{"3":1}}],["尽其乐",{"2":{"3":1}}],["蜉蝣朝生而暮死",{"2":{"3":1}}],["以简化硬件设计和提高计算效率",{"2":{"124":1}}],["以机器数",{"2":{"119":1}}],["以此类推",{"2":{"108":1}}],["以管理员身份打开",{"2":{"73":2}}],["以便表示超过",{"2":{"108":1}}],["以便和变量区分",{"2":{"101":1}}],["以便在提交代码到",{"2":{"79":1}}],["以便在特定的硬件上运行",{"2":{"7":1}}],["以便写代码的时候",{"2":{"78":1}}],["以便其支持在一个",{"2":{"77":1}}],["以便支持不同平台的",{"2":{"76":1}}],["以便安装",{"2":{"74":1,"75":1}}],["以便使用头文件中声明的函数",{"2":{"69":1}}],["以便编译器能够正确解析和链接函数调用",{"2":{"68":1}}],["以便任意目录都可以执行",{"2":{"28":1}}],["以两位作者的姓氏首字母作为版本简称",{"2":{"21":1}}],["以及变量可以执行哪些操作",{"2":{"90":1}}],["以及",{"2":{"18":1,"25":1,"108":1}}],["以及函数调用的约定",{"2":{"7":1}}],["以满足不同的编程需求和场景",{"2":{"16":1}}],["以极其游",{"2":{"3":1}}],["以上",{"2":{"3":1}}],["中读取数据并根据变量的地址赋值给变量",{"2":{"93":1}}],["中配置保存的时候自动格式化",{"2":{"78":1}}],["中切换",{"2":{"76":1}}],["中搜索并安装",{"2":{"73":2}}],["中使用的兼容层",{"2":{"72":1}}],["中定义的",{"2":{"66":1}}],["中",{"2":{"50":1,"73":1,"86":6}}],["中新建",{"2":{"50":1}}],["中的标准库libc",{"2":{"67":1}}],["中的快捷键是",{"2":{"55":1,"56":1}}],["中的",{"0":{"76":1},"2":{"25":1,"82":1,"93":1}}],["中国人和中国人之间使用普通话沟通",{"2":{"10":1}}],["中国古代中的文人",{"2":{"3":1}}],["中可以通过",{"2":{"7":1}}],["中也有存储器",{"2":{"3":1}}],["中心化控制",{"2":{"2":1,"106":1}}],["对应的原码是",{"2":{"121":2}}],["对应的二进制数的范围是",{"2":{"108":2}}],["对应十进制的",{"2":{"108":3}}],["对",{"2":{"21":1,"72":1}}],["对很多情况的描述非常模糊",{"2":{"21":1}}],["对齐方式",{"2":{"7":1}}],["对齐方式和调用约定等详细信息",{"2":{"7":1}}],["对上",{"2":{"5":1}}],["对下",{"2":{"5":1}}],["对于跨平台开发者来说",{"2":{"72":1}}],["对于需要高性能和底层控制的应用",{"2":{"22":1}}],["对于操作系统",{"2":{"7":1}}],["对于蜉蝣来说",{"2":{"3":1}}],["对于",{"2":{"3":1,"72":1}}],["对核武器设计",{"2":{"2":1}}],["所谓的标识符常量",{"2":{"100":1}}],["所谓的字面量常量",{"2":{"100":1}}],["所谓的输入和输出都是以计算机",{"2":{"92":1}}],["所有函数都必须以大括号开头和结尾",{"2":{"63":1}}],["所有数据和指令都以二进制形式表示",{"2":{"2":1,"106":1}}],["所没有的",{"2":{"45":1}}],["所以机器数的形式值不等于其真实表示的值",{"2":{"119":1}}],["所以会更加安全和方便",{"2":{"102":1}}],["所以需要执行如下命令",{"2":{"74":1,"75":1}}],["所以配置",{"2":{"28":1}}],["所以",{"2":{"3":1,"21":1,"106":1,"120":1,"121":1}}],["44914",{"2":{"109":1}}],["4",{"0":{"4":1,"5":1,"6":1,"7":1,"8":2,"16":1,"21":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":2,"33":2,"34":2,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":2,"65":1,"66":1,"67":1,"68":1,"69":2,"75":1,"78":1,"85":1,"87":1,"92":1,"102":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":2,"123":1},"1":{"5":1,"6":1,"7":1,"8":1,"25":1,"26":1,"27":2,"28":2,"29":1,"30":2,"31":2,"32":1,"33":3,"34":3,"36":1,"37":2,"38":2,"39":2,"40":1,"41":2,"42":2,"43":2,"44":1,"45":2,"46":2,"47":2,"49":1,"50":1,"51":1,"52":1,"66":1,"67":1,"68":1,"69":1,"86":1,"87":1,"119":1,"120":1,"121":1,"122":1,"123":1},"2":{"3":1,"21":1,"59":1,"78":1,"108":8,"117":1}}],["40",{"2":{"3":1}}],["传统硬盘就需要",{"2":{"3":1}}],["传统的硬盘访问需要",{"2":{"3":1}}],["天下没有免费的午餐",{"2":{"3":1}}],["天",{"2":{"3":1}}],["63",{"2":{"96":1}}],["638p6",{"2":{"47":1}}],["60",{"2":{"95":1}}],["6jhcy",{"2":{"47":1}}],["64",{"2":{"13":1,"33":1,"110":1}}],["6",{"0":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"80":1,"94":1,"95":1,"96":1,"97":1,"104":1},"1":{"59":1,"60":1,"62":1,"63":1,"64":1,"65":1,"66":2,"67":2,"68":2,"69":2,"95":1,"96":1,"97":1},"2":{"3":2,"21":1,"59":1,"67":1,"108":5}}],["那就重启计算机",{"2":{"73":2}}],["那个时候",{"2":{"5":1}}],["那么可以转换为",{"2":{"124":1}}],["那么编译时就全部替换成指定的常量值",{"2":{"101":1}}],["那么编写的程序也是不能直接运行的",{"2":{"11":2}}],["那么在输入数据的时候",{"2":{"93":1}}],["那么就需要手动下载源码",{"2":{"75":1}}],["那么就需要手动下载",{"2":{"73":1}}],["那么请做如下步骤",{"2":{"52":1}}],["那么它必须能够理解和执行",{"2":{"7":1}}],["那么",{"2":{"3":4,"5":1,"11":1,"89":1,"121":1}}],["那这台服务器得处理能力只能是",{"2":{"3":1}}],["的问题",{"2":{"122":1}}],["的补码是",{"2":{"123":1}}],["的补码",{"2":{"122":2}}],["的反码",{"2":{"121":2}}],["的情况进行处理",{"2":{"122":2}}],["的情况",{"2":{"120":1}}],["的原码",{"2":{"120":2}}],["的八进制",{"2":{"110":2}}],["的八进制整数",{"2":{"110":3}}],["的十六进制",{"2":{"110":4}}],["的十六进制整数",{"2":{"110":4}}],["的十进制整数",{"2":{"110":2}}],["的标识符",{"2":{"96":1}}],["的标准含义是格式化输出文本",{"2":{"92":1}}],["的完整含义是",{"2":{"92":1}}],["的缩写",{"2":{"92":1}}],["的值输出",{"2":{"92":1}}],["的值赋值给变量",{"2":{"91":1}}],["的值",{"2":{"91":1,"93":1,"108":1}}],["的过程",{"2":{"82":1}}],["的二进制文件",{"2":{"82":1}}],["的内容",{"2":{"77":1,"78":1}}],["的工具链",{"0":{"76":1},"2":{"76":1}}],["的工具集",{"2":{"25":1}}],["的版本会很高",{"2":{"75":1}}],["的域名",{"2":{"73":1}}],["的最新",{"2":{"73":1}}],["的安装",{"0":{"73":1}}],["的安装和配置",{"0":{"26":1,"29":1,"35":1},"1":{"27":1,"28":1,"30":1,"31":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["的用途",{"2":{"72":1}}],["的功能",{"2":{"72":1}}],["的升级版",{"2":{"72":1}}],["的格式化快捷键是",{"2":{"59":1}}],["的规范",{"0":{"57":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1}}],["的代码格式为行尾风格",{"2":{"50":1}}],["的文件系统性能比",{"2":{"72":1}}],["的文件",{"2":{"49":1}}],["的桌面开发",{"2":{"46":1}}],["的目录是",{"2":{"28":1}}],["的子系统",{"2":{"25":1}}],["的一些缺陷",{"2":{"21":1}}],["的注释语法",{"2":{"21":1}}],["的流程语言",{"2":{"19":1}}],["的处理器有不同的机器语言指令集",{"2":{"13":1}}],["的处理器计算能力浪费了",{"2":{"3":1}}],["的区别如下",{"2":{"8":1}}],["的身影",{"2":{"8":1}}],["的",{"2":{"7":1,"73":1,"114":1}}],["的操作系统之间移植",{"2":{"7":1}}],["的开发人员来说非常重要",{"2":{"7":1}}],["的参考模型如下",{"2":{"7":1}}],["的时钟周期按照",{"2":{"3":1}}],["纳秒",{"2":{"3":1}}],["毫秒",{"2":{"3":2}}],["=",{"2":{"3":6,"6":6,"59":5,"91":10,"92":1,"93":5,"100":4,"101":2,"102":4,"103":5,"109":12,"110":1}}],["需要和格式占位符一一对应",{"2":{"92":1}}],["需要存储的数据",{"2":{"90":1}}],["需要在变量的数据类型前加上",{"2":{"102":1}}],["需要在项目中",{"2":{"79":1}}],["需要在操作系统上安装对应编程语言的编译器程序",{"2":{"11":1}}],["需要选择",{"2":{"30":1}}],["需要安装对应的插件",{"2":{"41":1}}],["需要安装",{"2":{"25":1}}],["需要注意的是",{"2":{"21":1}}],["需要强调的是",{"2":{"21":1}}],["需要使用编译器或解释器转换为机器语言",{"2":{"15":1}}],["需要通过编译器或解释器转换为机器语言",{"2":{"16":1}}],["需要通过",{"2":{"11":2}}],["需要",{"2":{"3":1}}],["而形式值却是",{"2":{"119":1}}],["而无需设置双重引导系统或安装虚拟机",{"2":{"72":1}}],["而无需离开",{"2":{"72":1}}],["而无需重新实现它们",{"2":{"8":1}}],["而仅用于代码的解释和文档说明",{"2":{"54":1}}],["而是会变化的数据",{"2":{"89":1}}],["而是",{"2":{"82":1}}],["而是需要跟进新的技术",{"2":{"21":1}}],["而是运行在操作系统之上",{"2":{"8":1}}],["而我们写的代码语句",{"2":{"83":1}}],["而我们编写的程序叫做源代码",{"2":{"11":1}}],["而我们学习编程语言",{"2":{"11":1}}],["而中国人和美国人交流",{"2":{"10":1}}],["而函数库调用运行在用户空间",{"2":{"8":1}}],["而不需要开发者关心底层的网络协议细节",{"2":{"7":1}}],["而在",{"2":{"7":1}}],["而且会在编译阶段进行安全检查",{"2":{"102":1}}],["而且",{"2":{"5":1,"97":1}}],["而对于我们人类而言",{"2":{"3":1}}],["而网络访问是最慢",{"2":{"3":1}}],["而硬盘只能负担",{"2":{"3":1}}],["num4",{"2":{"109":4}}],["num3",{"2":{"109":4}}],["num2",{"2":{"109":4}}],["num1",{"2":{"109":4}}],["numbers",{"2":{"96":1}}],["num",{"2":{"92":3,"93":7,"96":1,"110":13}}],["never",{"2":{"78":2}}],["new",{"2":{"77":2}}],["name",{"2":{"77":13,"96":4}}],["names",{"2":{"77":3}}],["n",{"2":{"64":2,"91":5,"92":1,"100":4,"103":3,"109":4,"110":6}}],["nxbbb",{"2":{"47":1}}],["noreturn",{"2":{"97":1}}],["norestart",{"2":{"73":2}}],["not",{"2":{"77":1}}],["note",{"2":{"2":1,"3":1,"6":1,"7":3,"8":1,"10":1,"11":1,"14":1,"15":1,"16":1,"18":1,"19":1,"21":2,"25":1,"27":2,"28":1,"30":2,"33":1,"41":1,"47":1,"52":1,"54":1,"59":1,"60":1,"62":1,"67":1,"75":1,"80":1,"90":2,"92":2,"93":1,"95":1,"99":1,"100":1,"108":5,"114":1,"115":1}}],["noconfirm",{"2":{"33":3}}],["nio",{"2":{"6":3}}],["ns",{"2":{"3":3}}],["0xe9",{"2":{"117":1}}],["0x64",{"2":{"110":2}}],["0x",{"2":{"110":2}}],["0xaf72",{"2":{"109":1}}],["0x或0x",{"2":{"109":1}}],["0717563",{"2":{"109":1}}],["0b10100110",{"2":{"109":1}}],["0b",{"2":{"109":2}}],["0144",{"2":{"110":1}}],["011",{"2":{"108":1,"116":1}}],["0111",{"2":{"108":1}}],["0110",{"2":{"108":1}}],["010",{"2":{"108":1}}],["0101",{"2":{"108":1}}],["0100",{"2":{"108":1}}],["001",{"2":{"108":1,"116":1}}],["0011",{"2":{"108":1}}],["0010",{"2":{"108":1}}],["000",{"2":{"108":2}}],["0001",{"2":{"13":3,"108":1,"119":1,"120":2,"121":3,"122":4}}],["000000000001",{"2":{"13":1}}],["000000010000",{"2":{"13":2}}],["0000",{"2":{"13":2,"108":2,"120":4,"121":7,"122":5}}],["04",{"2":{"73":1,"75":1}}],["0",{"2":{"3":1,"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":1,"59":1,"60":2,"62":3,"77":1,"78":1,"91":3,"92":1,"93":4,"96":1,"100":2,"101":1,"102":1,"103":3,"108":14,"109":2,"110":2,"115":2,"119":1,"120":3,"121":1,"122":4,"123":4}}],["sex",{"2":{"103":6}}],["set",{"2":{"73":1,"77":6}}],["switch",{"2":{"97":1}}],["signed",{"2":{"97":1}}],["sizeof",{"2":{"97":1}}],["size",{"2":{"96":1}}],["sin",{"2":{"8":1,"68":1}}],["s的汇编文件",{"2":{"82":1}}],["spacesincstylecastparentheses",{"2":{"78":1}}],["spacesincontainerliterals",{"2":{"78":1}}],["spacesinangles",{"2":{"78":1}}],["spacesinparentheses",{"2":{"78":1}}],["spacebeforeparens",{"2":{"78":1}}],["scope",{"2":{"77":1}}],["scanf",{"2":{"68":1,"93":6,"103":1}}],["scala",{"2":{"10":1}}],["sun",{"2":{"96":1}}],["sum",{"2":{"96":2}}],["sudo",{"2":{"74":5,"75":5}}],["subsystem",{"2":{"72":1,"73":1}}],["sub",{"2":{"14":1,"25":1}}],["sqrt",{"2":{"68":1}}],["sql",{"2":{"15":1}}],["srand",{"2":{"68":1}}],["sdk不可以修改",{"2":{"46":1}}],["sku",{"2":{"45":1}}],["sy",{"2":{"33":2}}],["syu",{"2":{"33":1}}],["system",{"0":{"8":1},"2":{"6":4,"7":1,"8":3}}],["short",{"2":{"97":1}}],["shift",{"2":{"59":1}}],["shellsudo",{"2":{"74":1,"75":1}}],["shellsed",{"2":{"33":1}}],["shell",{"2":{"49":1,"50":1}}],["shellpacman",{"2":{"33":1}}],["shellgcc",{"2":{"28":1,"49":1,"50":1,"84":1,"86":4,"87":4}}],["shared",{"2":{"7":1}}],["sortincludes",{"2":{"78":1}}],["source",{"2":{"77":8}}],["sources",{"2":{"77":7}}],["so",{"2":{"7":1,"67":1}}],["software",{"2":{"1":1}}],["student23",{"2":{"96":1}}],["studentid",{"2":{"96":1}}],["student",{"2":{"96":2}}],["study",{"2":{"77":1}}],["studio",{"0":{"44":1},"1":{"45":1,"46":1,"47":1},"2":{"41":2,"45":5}}],["struct",{"2":{"97":1}}],["strequal",{"2":{"77":1}}],["strftime",{"2":{"68":1}}],["strstr",{"2":{"68":1}}],["strcmp",{"2":{"68":1}}],["strcat",{"2":{"68":1}}],["strcpy",{"2":{"68":1}}],["strncpy",{"2":{"68":1}}],["strlen",{"2":{"68":1}}],["string",{"2":{"6":5,"68":1,"77":3}}],["stdbool",{"2":{"68":1}}],["stdlib",{"2":{"68":1}}],["stdio",{"2":{"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":1,"59":1,"66":2,"68":2,"82":2,"91":3,"92":1,"93":3,"100":2,"101":1,"102":1,"103":2,"109":1,"110":1}}],["standard",{"0":{"67":1},"2":{"22":1,"77":2}}],["static",{"2":{"6":2,"21":1,"97":2}}],["store",{"2":{"13":1,"73":2}}],["s",{"2":{"3":1,"33":1,"86":4,"87":3,"96":1,"100":1}}],["ssd",{"2":{"3":1}}],["固态硬盘就需要",{"2":{"3":1}}],["固态硬盘访问需要",{"2":{"3":1}}],["固态硬盘",{"2":{"3":1}}],["h文件的内容",{"2":{"82":1}}],["h作为文件扩展名",{"2":{"68":1}}],["hex",{"2":{"92":1}}],["hexadecimal",{"2":{"92":1}}],["header",{"0":{"68":1}}],["helloworld",{"0":{"48":1,"57":1},"1":{"49":1,"50":1,"51":1,"52":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"49":4,"50":4,"51":1,"84":2,"87":8}}],["hello",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"49":1,"50":1,"51":1,"52":1,"64":2,"96":2}}],["h",{"2":{"66":1,"68":9,"82":2}}],["h>",{"2":{"11":1,"49":1,"50":1,"51":1,"52":1,"55":1,"56":1,"59":1,"66":1,"91":3,"92":1,"93":3,"100":2,"101":1,"102":1,"103":2,"109":1,"110":1}}],["https",{"2":{"33":2}}],["http",{"2":{"7":1}}],["hdd",{"2":{"3":1}}],["hardware",{"2":{"1":1}}],["有了可执行的",{"2":{"82":1}}],["有选择地编译代码",{"2":{"82":1}}],["有显著提升",{"2":{"72":1}}],["有两种代码风格",{"2":{"60":1}}],["有中文乱码问题",{"2":{"52":1}}],["有微软账号就注册",{"2":{"47":1}}],["有三种版本",{"2":{"45":1}}],["有依赖",{"2":{"25":1}}],["有极高性能要求的程序",{"2":{"19":1}}],["有一定的通用性",{"2":{"15":1}}],["有",{"2":{"3":1,"5":1,"15":1}}],["有每秒处理",{"2":{"3":1}}],["秒计算",{"2":{"3":1}}],["秒",{"2":{"3":2}}],["但显然不是反码",{"2":{"121":1}}],["但显然不是原码",{"2":{"120":1}}],["但不包含函数的实现",{"2":{"68":1}}],["但下载和安装很可能耗时数小时",{"2":{"45":1}}],["但其缺乏高级特性和内存管理上的挑战也使得开发过程可能更加复杂和容易出错",{"2":{"22":1}}],["但相比现代编程语言的标准库",{"2":{"22":1}}],["但发布是在",{"2":{"21":1}}],["但是符号位是",{"2":{"120":1}}],["但是不会进行语法检查",{"2":{"82":1}}],["但是有且只有一个",{"2":{"62":1}}],["但是",{"2":{"11":1,"14":1,"18":1,"21":1,"52":1,"62":1,"77":1,"92":1,"95":1}}],["但是价格越来越便宜",{"2":{"3":1}}],["但是价格越来越贵",{"2":{"3":1}}],["但网卡只能接受",{"2":{"3":1}}],["但可以有条件地改变执行顺序",{"2":{"2":1,"106":1}}],["个二进制位",{"2":{"108":1}}],["个字符内",{"2":{"96":1}}],["个月",{"2":{"3":1}}],["个请求",{"2":{"3":1}}],["个的话",{"2":{"3":1}}],["个",{"2":{"3":1}}],["个服务请求的能力",{"2":{"3":1}}],["各种",{"2":{"59":1}}],["各种总线的负载能力能达到",{"2":{"3":1}}],["各种硬件处理速度和性能优化",{"0":{"3":1}}],["351",{"2":{"116":1}}],["3sum",{"2":{"96":1}}],["30",{"2":{"91":1}}],["300",{"2":{"91":1}}],["3",{"0":{"3":1,"7":1,"12":1,"13":1,"14":1,"15":2,"16":1,"18":1,"19":1,"20":2,"21":1,"22":1,"29":1,"30":1,"31":1,"39":1,"43":1,"44":1,"45":1,"46":1,"47":2,"48":1,"49":1,"50":1,"51":2,"52":1,"56":1,"64":1,"68":1,"74":1,"77":1,"84":1,"86":1,"91":1,"97":1,"101":1,"106":1,"107":1,"108":1,"109":1,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":3,"117":2,"118":1,"119":1,"120":1,"121":2,"122":1,"123":1,"124":1},"1":{"13":1,"14":1,"15":1,"16":1,"30":1,"31":1,"45":1,"46":1,"47":1,"49":1,"50":1,"51":1,"52":1,"108":1,"109":1,"110":1,"112":2,"113":2,"114":4,"115":4,"116":2,"117":2,"119":1,"120":1,"121":1,"122":1,"123":1},"2":{"3":1,"21":1,"31":1,"34":1,"77":1,"82":1,"93":2,"99":1,"100":2,"101":1,"102":1,"108":8,"116":1}}],["是关键字",{"2":{"104":1}}],["是预处理指令",{"2":{"104":1}}],["是不同的标识符",{"2":{"96":1}}],["是寻址操作符",{"2":{"93":1}}],["是小数的意思",{"2":{"92":1}}],["是程序要输出的一些数据",{"2":{"92":1}}],["是使用双引号括起来的字符串",{"2":{"92":1}}],["是由",{"2":{"83":1}}],["是由微软公司发布的集成开发环境",{"2":{"45":1}}],["是指我们用它来编写源程序的",{"2":{"83":1}}],["是指在二进制级别上",{"2":{"7":1}}],["是",{"2":{"72":1}}],["是微软提供的一种技术",{"2":{"72":1}}],["是目前最流行的",{"2":{"21":1}}],["是人类能看懂",{"2":{"11":1}}],["是计算机体系结构中定义的一组指令",{"2":{"7":1}}],["是计算机运作的基础",{"2":{"2":1}}],["是硬件和软件之间的接口",{"2":{"7":1}}],["是两种不同的执行模式",{"2":{"6":1}}],["是通过图形元素",{"2":{"5":1}}],["是一个免费的开源代码编辑器",{"2":{"41":1}}],["是一个流行编程语言排行",{"2":{"20":1}}],["是一款由",{"2":{"37":1}}],["是一组预定义的函数",{"2":{"7":1}}],["是一种用于开发嵌入式系统",{"2":{"19":1}}],["是一种文本命令接口",{"2":{"5":1}}],["是一种能够接收和存储信息",{"2":{"1":1}}],["是一套已经写好的代码接口",{"2":{"5":1}}],["是最快的",{"2":{"3":1}}],["控制语句关键字",{"2":{"97":1}}],["控制包含指令的格式化",{"2":{"78":1}}],["控制注释的格式化",{"2":{"78":1}}],["控制其他格式选项",{"2":{"78":1}}],["控制短函数",{"2":{"78":1}}],["控制空行的使用",{"2":{"78":1}}],["控制大括号的位置",{"2":{"78":1}}],["控制数据流",{"2":{"2":1,"106":1}}],["控制器",{"2":{"2":1,"106":1}}],["cenum",{"2":{"103":1}}],["cconst",{"2":{"102":1}}],["c80",{"2":{"97":1}}],["c89",{"2":{"21":2,"67":1}}],["cd",{"2":{"96":1}}],["c3",{"2":{"91":3}}],["c2",{"2":{"91":3}}],["c23",{"2":{"21":1}}],["crti",{"2":{"82":1}}],["crt0",{"2":{"82":1}}],["ctype",{"2":{"68":1}}],["ctrl",{"2":{"55":1,"56":1,"59":1}}],["char",{"2":{"64":1,"92":1,"93":1,"97":1}}],["cprintf",{"2":{"64":3}}],["cpu",{"2":{"2":2,"3":6,"11":1,"13":1,"92":1,"106":1}}],["cint",{"2":{"60":2,"62":1,"92":1,"93":1}}],["cmakelists",{"0":{"77":1},"2":{"77":4}}],["cmake",{"0":{"76":1},"2":{"37":1,"74":3,"75":3,"76":2,"77":6,"79":1,"80":1}}],["clang",{"0":{"78":1},"2":{"78":2}}],["classes",{"2":{"96":1}}],["class",{"2":{"6":1}}],["cloin",{"2":{"76":1}}],["clock",{"2":{"68":1}}],["clion",{"0":{"36":1,"52":1,"70":1,"76":1},"1":{"37":1,"38":1,"39":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1},"2":{"37":1,"39":1,"52":1,"55":1,"56":1,"59":1,"74":1,"75":2,"78":1}}],["cn",{"2":{"33":1}}],["cygwin",{"0":{"29":1},"1":{"30":1,"31":1},"2":{"25":8}}],["c1",{"2":{"91":3}}],["c17",{"2":{"21":2}}],["c11等",{"2":{"67":1}}],["c11",{"2":{"21":4,"97":1}}],["c99",{"2":{"21":2,"67":1,"96":1,"97":1,"102":1}}],["c90",{"2":{"21":2,"67":1,"97":1}}],["c++",{"2":{"7":1,"10":1,"15":1,"19":1,"21":3,"25":3,"37":2,"41":1,"43":1,"45":1,"46":1,"50":1,"74":1,"83":2}}],["c",{"0":{"17":1,"18":1,"19":1,"21":1,"22":1,"23":1,"81":1,"109":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"2":{"6":4,"7":2,"8":1,"10":1,"11":1,"15":2,"16":1,"18":5,"19":22,"21":23,"22":15,"25":2,"37":2,"41":1,"43":1,"45":2,"49":3,"50":4,"51":2,"52":2,"55":3,"56":3,"59":4,"60":1,"62":2,"63":1,"66":1,"67":4,"68":1,"69":1,"77":8,"78":1,"82":10,"83":3,"84":1,"86":2,"87":2,"91":3,"92":3,"93":9,"95":1,"96":1,"97":2,"100":4,"101":2,"102":1,"103":2,"108":3,"109":5,"110":3}}],["case",{"2":{"97":1}}],["caseinsensitive",{"2":{"78":1}}],["caution",{"2":{"93":1,"110":1}}],["catch",{"2":{"6":1}}],["call",{"0":{"8":2},"2":{"6":1,"8":6}}],["com",{"2":{"96":1}}],["complex",{"2":{"97":2}}],["component",{"2":{"77":1}}],["compiler",{"2":{"25":1,"83":1}}],["computer",{"2":{"1":1}}],["columnlimit",{"2":{"78":1}}],["collect",{"2":{"77":2}}],["collection",{"2":{"25":1,"83":1}}],["continue",{"2":{"97":1}}],["controlstatements",{"2":{"78":1}}],["content",{"2":{"6":2}}],["const",{"0":{"102":1,"104":1},"2":{"64":1,"92":1,"93":1,"97":1,"100":2,"102":3,"104":2}}],["code",{"0":{"40":1,"50":1},"1":{"41":1,"42":1,"43":1},"2":{"41":4,"50":1}}],["core",{"2":{"30":1}}],["cos",{"2":{"8":1,"68":1}}],["⑥",{"2":{"2":1,"50":1,"73":1,"106":1}}],["地址码指示操作数的位置",{"2":{"2":1,"106":1}}],["⑤",{"2":{"2":1,"7":1,"19":1,"22":2,"50":1,"51":1,"52":1,"72":1,"73":1,"96":2,"106":1}}],["存储类说明符关键字",{"2":{"97":3}}],["存储器和中断管理的指令集",{"2":{"7":1}}],["存储器越往上速度越快",{"2":{"3":1}}],["存储器的层次结构",{"2":{"3":1}}],["存储器保存数据和程序",{"2":{"2":1}}],["存储器",{"2":{"2":1,"106":1}}],["存储程序",{"2":{"2":1,"106":1}}],["五大部件",{"2":{"2":1,"106":1}}],["④",{"2":{"2":1,"6":1,"7":1,"19":1,"22":2,"49":1,"50":1,"51":1,"52":1,"63":1,"72":2,"73":1,"82":2,"89":1,"90":1,"96":2,"101":1,"106":1}}],["顺序执行",{"2":{"2":1,"106":1}}],["③",{"2":{"2":1,"6":1,"7":1,"8":1,"19":1,"22":2,"49":1,"50":1,"51":1,"52":1,"63":1,"72":2,"73":1,"82":2,"89":1,"90":1,"91":1,"93":1,"96":2,"99":1,"101":1,"106":1,"115":1,"122":1,"123":1}}],["②",{"2":{"2":1,"3":1,"6":1,"7":3,"8":1,"11":1,"16":1,"19":1,"22":2,"25":1,"47":1,"49":1,"50":1,"51":1,"52":1,"54":1,"56":1,"59":1,"62":1,"63":1,"72":2,"73":1,"82":2,"89":1,"90":1,"91":1,"93":1,"96":2,"97":1,"99":1,"100":1,"101":1,"103":1,"104":1,"106":1,"114":1,"115":1,"122":1,"123":1}}],["这不就是二进制",{"2":{"115":1}}],["这十个数字之外",{"2":{"108":1}}],["这里的",{"2":{"92":1}}],["这被称为初始化",{"2":{"91":1}}],["这双鞋子的价格是",{"2":{"90":1}}],["这件衣服的价格是",{"2":{"90":1}}],["这对于需要在",{"2":{"72":1}}],["这意味着",{"2":{"72":1}}],["这意味着有许多资源和库可供开发人员使用",{"2":{"19":1}}],["这通常用于包含头文件",{"2":{"69":1}}],["这通过系统调用",{"2":{"6":1}}],["这增加了内存泄露和悬空指针等问题的风险",{"2":{"22":1}}],["这本书就成了公认标准",{"2":{"21":1}}],["这使得某些类型的应用程序开发可能会更加复杂",{"2":{"22":1}}],["这使得其非常适合用于操作系统",{"2":{"22":1}}],["这使得它是一种非常接近底层的语言",{"2":{"19":1}}],["这使得它从一开始就非常注重可移植性",{"2":{"19":1}}],["这使得程序可以在运行时修改",{"2":{"2":1,"106":1}}],["这三种编程语言类型从低级到高级提供了不同层次的抽象",{"2":{"16":1}}],["这是第三行注释",{"2":{"56":1}}],["这是第二行注释",{"2":{"56":1}}],["这是第一行注释",{"2":{"56":1}}],["这是编译预处理指令",{"2":{"11":1,"55":1}}],["这是因为系统调用涉及到访问受保护的系统资源",{"2":{"8":1}}],["这是现代计算机设计的基础",{"2":{"2":1}}],["这些都是数据",{"2":{"90":1}}],["这些代码在编译的时候被链接到我们的程序中",{"2":{"67":1}}],["这些函数不是程序员自己写的",{"2":{"82":1}}],["这些函数提供了许多常用的操作和功能",{"2":{"67":1}}],["这些函数实现了一些常用的功能",{"2":{"8":1}}],["这些功能是另两种",{"2":{"45":1}}],["这些语言都继承或深受",{"2":{"19":1}}],["这些操作必须由操作系统控制以确保系统的稳定性和安全性",{"2":{"8":1}}],["这些接口允许用户空间的程序请求操作系统内核提供的服务",{"2":{"8":1}}],["这个特别的名称就是变量名",{"2":{"90":1}}],["这个启动代码",{"2":{"82":1}}],["这个版本称为",{"2":{"21":3}}],["这个",{"2":{"7":1}}],["这个世界真的是太慢了",{"2":{"3":1}}],["这样计算机内部在处理减法计算的时候",{"2":{"124":1}}],["这样",{"2":{"7":1}}],["这样可以保护系统不被恶意软件破坏",{"2":{"6":1}}],["这种方式跟定义一个变量是类似的",{"2":{"102":1}}],["这种新语言取代了",{"2":{"18":1}}],["这种语言快速流传",{"2":{"18":1}}],["这种语言本质上是计算机能识别的唯一语言",{"2":{"13":1}}],["这种语言就称为机器语言",{"2":{"13":1}}],["这种卡片使用的是用二进制代码表示的语言",{"2":{"13":1}}],["这种区分是为了提供一个稳定和安全的运行环境",{"2":{"6":1}}],["这种情况下",{"2":{"5":1}}],["①",{"2":{"2":1,"3":1,"6":1,"7":3,"8":1,"11":1,"16":1,"19":1,"22":2,"25":1,"47":1,"49":1,"50":1,"51":1,"52":1,"54":1,"56":1,"59":1,"62":1,"63":1,"72":2,"73":1,"82":2,"89":1,"90":1,"91":1,"93":1,"96":2,"97":1,"99":1,"100":1,"101":1,"103":1,"104":1,"106":1,"114":1,"115":1,"122":1,"123":1}}],["量子计算机除外",{"2":{"2":1,"106":1}}],["促进了计算机的可编程性和通用性",{"2":{"2":1}}],["年代的时候",{"2":{"95":1}}],["年发布",{"2":{"21":1}}],["年进行了修补",{"2":{"21":1}}],["年以上",{"2":{"3":1}}],["年",{"2":{"2":1,"13":1,"18":4,"21":4}}],["物理学",{"2":{"2":1}}],["诺依曼的主要成就",{"2":{"2":1}}],["诺依曼是一位多才多艺的科学家",{"2":{"2":1}}],["诺依曼体系结构的理论要点如下",{"2":{"2":1}}],["诺依曼体系结构是现代计算机",{"2":{"2":1}}],["诺依曼体系结构",{"0":{"2":1},"2":{"2":1,"106":1}}],["冯",{"0":{"2":1},"2":{"2":4}}],["237427",{"2":{"109":1}}],["23student",{"2":{"96":1}}],["2^3",{"2":{"108":1}}],["2^4",{"2":{"108":1}}],["2lf",{"2":{"93":1,"101":1,"102":1}}],["2空格3",{"2":{"93":1}}],["2空格3tab或2tab3回车等",{"2":{"93":1}}],["250",{"2":{"90":1}}],["2569",{"2":{"45":1}}],["24",{"2":{"73":1,"75":1}}],["2上直接运行",{"2":{"72":1}}],["200",{"2":{"91":1}}],["200个请求",{"2":{"3":1}}],["2022",{"2":{"45":2}}],["2023",{"2":{"21":1}}],["2018",{"2":{"21":1}}],["2017",{"2":{"21":1}}],["2011",{"2":{"21":1}}],["20",{"2":{"6":1,"91":1,"108":1}}],["2",{"0":{"2":1,"6":1,"10":1,"11":2,"12":1,"13":1,"14":2,"15":1,"16":1,"19":1,"26":1,"27":1,"28":2,"31":1,"34":1,"35":1,"36":1,"37":1,"38":2,"39":1,"40":2,"41":2,"42":3,"43":2,"44":1,"45":1,"46":2,"47":1,"50":1,"55":1,"60":1,"61":1,"62":1,"63":2,"64":1,"65":1,"66":1,"67":2,"68":1,"69":1,"73":1,"76":1,"83":1,"87":1,"90":1,"96":1,"99":1,"100":2,"101":1,"102":1,"103":1,"104":1,"107":1,"108":1,"109":2,"110":1,"113":1,"114":1,"115":2,"120":1},"1":{"13":1,"14":1,"15":1,"16":1,"27":1,"28":1,"36":1,"37":2,"38":2,"39":2,"40":1,"41":3,"42":3,"43":3,"44":1,"45":2,"46":2,"47":2,"62":1,"63":1,"64":1,"65":1,"66":2,"67":2,"68":2,"69":2,"108":1,"109":1,"110":1,"114":1,"115":1},"2":{"3":1,"13":1,"21":1,"25":1,"31":2,"34":2,"56":1,"59":2,"72":14,"73":1,"93":1,"101":1,"102":1,"103":3,"108":6,"114":1,"115":3,"124":4}}],["即用第一位表示符号",{"2":{"120":1}}],["即用宏体替换所有宏名",{"2":{"101":1}}],["即计算机中运算和存储的所有数据都需要转换为二进制",{"2":{"106":1}}],["即十进制整数",{"2":{"92":1}}],["即函数值",{"2":{"62":1}}],["即在执行",{"2":{"62":1}}],["即表示",{"2":{"62":1}}],["即支持",{"2":{"25":1}}],["即系统调用",{"2":{"6":1}}],["即",{"2":{"1":1,"3":7,"5":2,"7":1,"11":1,"18":1,"22":1,"25":2,"27":1,"28":1,"46":2,"62":1,"64":2,"66":1,"76":1,"78":1,"80":1,"82":4,"89":1,"90":1,"92":2,"93":4,"108":6,"112":1,"120":1,"122":4,"124":2}}],["系统内部使用了一些下划线开头的标识符",{"2":{"96":1}}],["系统中的计算器中来看到",{"2":{"92":1}}],["系统",{"2":{"25":1}}],["系统软件",{"2":{"19":1}}],["系统的开发工具而发明的",{"2":{"18":1}}],["系统都使用",{"2":{"18":1}}],["系统上安装一个",{"2":{"25":1}}],["系统上运行",{"2":{"7":1}}],["系统上编写",{"2":{"7":1}}],["系统从内核态返回用户态",{"2":{"6":1}}],["系统配置",{"2":{"5":1}}],["系统调用提供了访问操作系统资源和服务的能力",{"2":{"8":1}}],["系统调用由于涉及到用户态与内核态的切换",{"2":{"8":1}}],["系统调用直接与操作系统内核交互",{"2":{"8":1}}],["系统调用的执行成本相对较高",{"2":{"8":1}}],["系统调用是操作系统提供给程序员的一组接口",{"2":{"8":1}}],["系统调用是用户程序与操作系统内核通信的桥梁",{"2":{"6":1}}],["系统调用在此级别定义",{"2":{"7":1}}],["系统调用",{"0":{"8":1},"2":{"5":1,"8":3}}],["系统两大部分组成",{"2":{"1":1}}],["系统和软件",{"2":{"1":1}}],["笔记本电脑",{"2":{"1":1}}],["台式电脑",{"2":{"1":1}}],["如下",{"2":{"8":1,"52":1}}],["如下所示",{"2":{"3":1,"16":1,"25":1,"55":1,"56":1,"64":1,"68":1,"72":3,"77":2,"78":2,"79":2,"82":1,"92":2,"93":1,"97":3,"100":1,"108":1,"110":1,"112":1}}],["如参数如何传递",{"2":{"7":1}}],["如果计算是",{"2":{"124":1}}],["如果多个单词",{"2":{"101":1}}],["如果有",{"2":{"101":1}}],["如果在后面的代码中出现了该标识符",{"2":{"101":1}}],["如果是十六进制",{"2":{"109":1}}],["如果是十进制",{"2":{"109":1}}],["如果是八进制",{"2":{"109":1}}],["如果是二进制",{"2":{"109":1}}],["如果是",{"2":{"93":2,"121":2}}],["如果是连着写",{"2":{"93":1}}],["如果是复制并粘贴一个文件到项目中",{"2":{"80":1}}],["如果修改了源代码",{"2":{"82":1}}],["如果程序没有错误",{"2":{"82":1}}],["如果存在",{"2":{"77":2}}],["如果提示需要重启计算机",{"2":{"73":2}}],["如果未找到",{"2":{"69":1}}],["如果想让光标移动到下一行的开头",{"2":{"64":1}}],["如果返回其它非零整数",{"2":{"62":1}}],["如果使用原码来计算",{"2":{"124":1}}],["如果使用",{"2":{"59":1}}],["如果之后",{"2":{"52":1}}],["如果不是第一次安装",{"2":{"46":1}}],["如果不小心处理",{"2":{"22":1}}],["如果我们用",{"2":{"11":2}}],["如果一个应用程序需要跨平台",{"2":{"7":1}}],["如果一台计算机只能跑一个程序",{"2":{"5":1}}],["如果操作系统旨在运行在",{"2":{"7":1}}],["如果每个应用程序都这么干",{"2":{"5":1}}],["如果",{"2":{"3":1,"62":3,"122":2}}],["如",{"2":{"1":1,"5":2,"7":2,"10":1,"11":1,"13":2,"14":1,"18":1,"19":3,"22":1,"25":1,"41":1,"45":1,"59":2,"67":3,"68":1,"72":2,"82":2,"83":2,"90":2,"96":6,"97":1}}],["电脑是不懂的",{"2":{"83":1}}],["电脑",{"2":{"1":1}}],["quot",{"2":{"1":2}}],["俗称",{"2":{"1":1}}],["17",{"2":{"108":1}}],["13",{"2":{"108":2}}],["15",{"2":{"108":5}}],["150",{"2":{"3":3}}],["1caution",{"2":{"101":1}}],["18",{"2":{"92":1}}],["1111",{"2":{"108":3,"121":3,"122":3}}],["1110",{"2":{"108":2,"117":1,"121":1,"122":1}}],["111",{"2":{"108":3}}],["1101",{"2":{"108":2}}],["1100",{"2":{"108":2}}],["110",{"2":{"108":2}}],["11",{"2":{"77":1,"108":4}}],["1199",{"2":{"45":1}}],["1important",{"2":{"73":2}}],["1上不能运行或需要调整的应用程序",{"2":{"72":1}}],["1note",{"2":{"55":1,"73":2}}],["1shellpacman",{"2":{"33":2}}],["1999",{"2":{"21":1}}],["1989",{"2":{"21":1}}],["1988",{"2":{"18":1}}],["1978年",{"2":{"21":1}}],["1973",{"2":{"18":1}}],["1972",{"2":{"18":1}}],["1969",{"2":{"18":1}}],["1946",{"2":{"2":1,"13":1}}],["166",{"2":{"109":1}}],["16",{"2":{"13":2,"108":5}}],["144",{"2":{"110":1}}],["1415926",{"2":{"93":1,"99":1,"101":1,"102":1}}],["14会将代码中的pi替换为3",{"2":{"82":1}}],["14",{"2":{"13":1,"82":1,"108":2}}],["129",{"2":{"119":1}}],["12txt寄蜉蝣于天地",{"2":{"3":1}}],["12",{"2":{"3":1,"52":1,"100":2,"108":2}}],["1234",{"2":{"79":1}}],["12345note",{"2":{"56":1,"103":1}}],["123456",{"2":{"49":1,"50":1,"51":1,"52":1,"74":1}}],["1234567891011",{"2":{"100":2}}],["12345678910111213141516",{"2":{"103":1,"109":1}}],["123456789101112131415161718192021",{"2":{"93":1}}],["123456789101112131415161718192021222324252627282930313233",{"2":{"78":1}}],["12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758",{"2":{"77":1}}],["1234567891011121314151617181920212223242526272829",{"2":{"6":1}}],["123456789101112131415",{"2":{"93":1,"110":1}}],["1234567891011121314",{"2":{"91":2,"93":1,"101":1,"102":1,"103":1}}],["123456789101112",{"2":{"56":1,"59":1,"60":1,"91":1,"92":1}}],["12345678",{"2":{"11":1,"55":1,"60":1}}],["12345",{"2":{"3":1,"75":1}}],["123c",{"2":{"69":1}}],["123note",{"2":{"3":1}}],["123",{"2":{"3":1,"13":1,"62":1,"69":1,"92":1,"93":1}}],["120",{"2":{"3":1}}],["1011",{"2":{"108":2}}],["1010",{"2":{"108":2}}],["101",{"2":{"108":2,"116":1}}],["1001",{"2":{"108":2,"117":1}}],["100",{"2":{"90":1,"108":2,"110":8}}],["10000",{"2":{"108":1}}],["1000",{"2":{"3":7,"108":2,"109":2,"119":1,"120":2,"121":2,"122":1}}],["10",{"2":{"3":1,"6":1,"77":1,"91":2,"108":6}}],["1",{"0":{"1":2,"2":1,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"10":1,"13":1,"18":1,"24":1,"25":2,"26":1,"27":2,"28":1,"29":1,"30":2,"31":1,"32":1,"33":2,"34":1,"36":1,"37":2,"38":1,"39":1,"41":1,"45":1,"49":1,"54":1,"58":1,"59":2,"60":1,"62":1,"66":1,"71":1,"72":2,"73":1,"74":1,"75":1,"82":1,"86":1,"89":2,"90":1,"91":1,"92":1,"93":1,"94":1,"95":2,"96":1,"97":1,"99":1,"106":1,"108":1,"112":1,"114":1,"119":1},"1":{"5":1,"6":1,"7":1,"8":1,"25":1,"26":1,"27":2,"28":2,"29":1,"30":2,"31":2,"32":1,"33":2,"34":2,"37":1,"38":1,"39":1,"59":1,"60":1,"72":1,"73":1,"74":1,"75":1,"95":1,"96":1,"97":1},"2":{"3":8,"13":1,"21":1,"28":1,"31":1,"33":2,"34":1,"49":2,"50":2,"56":1,"59":1,"64":3,"66":1,"72":2,"73":3,"77":1,"84":1,"86":4,"87":4,"96":4,"100":2,"102":1,"103":4,"108":11,"114":1,"115":1,"119":2,"120":3,"121":2,"122":3,"123":3}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.Bt_ZNxRf.js b/assets/chunks/VPLocalSearchBox.Bt_ZNxRf.js new file mode 100644 index 0000000..1d7b0f2 --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.Bt_ZNxRf.js @@ -0,0 +1,7 @@ +var Ct=Object.defineProperty;var It=(o,e,t)=>e in o?Ct(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>It(o,typeof e!="symbol"?e+"":e,t);import{X as Dt,s as oe,v as $e,aj as kt,ak as Ot,d as Rt,G as xe,al as tt,h as Fe,am as _t,an as Mt,x as Lt,ao as Pt,y as Re,R as de,Q as Ee,ap as zt,aq as Bt,Y as Vt,U as $t,ar as Wt,o as ee,b as Kt,j as k,a1 as Jt,k as j,as as Ut,at as jt,au as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,av as Qt,p as qt,l as Ht,aw as it,a3 as Yt,a9 as Zt,af as Xt,ax as er,_ as tr}from"./framework.D1oHBMsh.js";import{u as rr,c as ar}from"./theme.DstJSxiY.js";const nr={root:()=>Dt(()=>import("./@localSearchIndexroot.C5vPI6F-.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var yt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=yt.join(","),mt=typeof Element>"u",ue=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!mt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},bt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!wt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!wt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ur=function(e){return xt(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=gt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ne)===!1?!1:We(t,e)},xr=yt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function st(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ut(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Ar=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Tr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Nr=function(e){return ge(e)&&!e.shiftKey},Cr=function(e){return ge(e)&&e.shiftKey},ct=function(e){return setTimeout(e,0)},ft=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},ye=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=br(c,a.tabbableOptions),p=wr(c,a.tabbableOptions),C=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(m){return le(m)}),P=p.slice().reverse().find(function(m){return le(m)}),z=!!f.find(function(m){return se(m)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:z,firstTabbableNode:C,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:P,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(x);return K<0?$?p.slice(p.indexOf(x)+1).find(function(Q){return le(Q)}):p.slice(0,p.indexOf(x)).reverse().find(function(Q){return le(Q)}):f[K+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==y(document)){if(!c||!c.focus){w(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Ar(c)&&c.select()}},E=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,C=c.isBackward,I=C===void 0?!1:C;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var P=l(f,p),z=P>=0?i.containerGroups[P]:void 0;if(P<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var m=ft(i.tabbableGroups,function(B){var U=B.firstTabbableNode;return f===U});if(m<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f,!1))&&(m=P),m>=0){var x=m===0?i.tabbableGroups.length-1:m-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f,!1))}else{var K=ft(i.tabbableGroups,function(B){var U=B.lastTabbableNode;return f===U});if(K<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f))&&(K=P),K>=0){var Q=K===i.tabbableGroups.length-1?0:K+1,q=i.tabbableGroups[Q];M=se(f)>=0?q.firstTabbableNode:q.firstDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f))}}else M=h("fallbackFocus");return M},S=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(ye(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ye(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var C,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),P=i.containerGroups[M].tabbableNodes;if(P.length>0){var z=P.findIndex(function(m){return m===i.mostRecentlyFocusedNode});z>=0&&(a.isKeyForward(i.recentNavEvent)?z+1=0&&(C=P[z-1],I=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(C=g({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(C||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Tr(c)&&ye(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},_=function(c){var f=Ae(c);l(f,c)>=0||ye(a.clickOutsideDeactivates,c)||ye(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},V=function(){if(i.active)return lt.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ct(function(){b(d())}):b(d()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",S,{capture:!0,passive:!1}),r.addEventListener("touchstart",S,{capture:!0,passive:!1}),r.addEventListener("click",_,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},N=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",S,!0),r.removeEventListener("touchstart",S,!0),r.removeEventListener("click",_,!0),r.removeEventListener("keydown",L,!0),s},R=function(c){var f=c.some(function(p){var C=Array.from(p.removedNodes);return C.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(d())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(R):void 0,O=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){A.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),C=u(c,"checkCanFocusTrap");C||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){C&&v(),V(),O(),p==null||p()};return C?(C(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=ut({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,N(),i.active=!1,i.paused=!1,O(),lt.deactivateTrap(n,s);var p=u(f,"onDeactivate"),C=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var P=function(){ct(function(){M&&b(E(i.nodeFocusedBeforeActivation)),C==null||C()})};return M&&I?(I(E(i.nodeFocusedBeforeActivation)).then(P,P),this):(P(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),N(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),V(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function kr(o,e={}){let t;const{immediate:r,...n}=e,a=oe(!1),i=oe(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return $e(()=>kt(o),d=>{d&&(t=Dr(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Ot(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class fe{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Or=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((y,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=fe.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Rr(o){const e=new Or(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function J(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Lr="ENTRIES",Ft="KEYS",Et="VALUES",G="",Me=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===G)return{done:!1,value:this.result()};var n=t.get(ce(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==G}).join("")},o.prototype.value=function(){return ce(this._path).node.get(G)},o.prototype.result=function(){switch(this._type){case Et:return this.value();case Ft:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},Pr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}St(o.get(y),e,t,r,n,E,i,s+y)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Le=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=J(ke(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=J(je(i),2),u=s[0],l=s[1];try{for(var h=D(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==G&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(b){t={error:b}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,zr(this._tree,e)},o.prototype.entries=function(){return new Me(this,Lr)},o.prototype.forEach=function(e){var t,r;try{for(var n=D(this),a=n.next();!a.done;a=n.next()){var i=J(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Pr(this._tree,e,t)},o.prototype.get=function(e){var t=Ke(this._tree,e);return t!==void 0?t.get(G):void 0},o.prototype.has=function(e){var t=Ke(this._tree,e);return t!==void 0&&t.has(G)},o.prototype.keys=function(){return new Me(this,Ft)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t(r.get(G))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e),n=r.get(G);return n===void 0&&r.set(G,n=t()),n},o.prototype.values=function(){return new Me(this,Et)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=J(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),ke=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=D(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==G&&e.startsWith(s))return t.push([o,s]),ke(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),ke(void 0,"",t)},Ke=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=D(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==G&&e.startsWith(i))return Ke(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Pe=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Le,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ue,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return _r(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,y,b,E,g,S,T,F,L,_,V,N,R,A,O,w;return Mr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||Je.batchSize,a=e.batchWait||Je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=J(u.value,2),h=l[0],d=l[1];try{for(v=(R=void 0,D(d)),y=v.next();!y.done;y=v.next()){b=J(y.value,2),E=b[0],g=b[1];try{for(S=(O=void 0,D(g)),T=S.next();!T.done;T=S.next())F=J(T.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?d.delete(E):g.delete(L))}catch(f){O={error:f}}finally{try{T&&!T.done&&(w=S.return)&&w.call(S)}finally{if(O)throw O.error}}}}catch(f){R={error:f}}finally{try{y&&!y.done&&(A=v.return)&&A.call(v)}finally{if(R)throw R.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return _=c.sent(),V={error:_},[3,9];case 8:try{u&&!u.done&&(N=s.return)&&N.call(s)}finally{if(V)throw V.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Ve.minDirtCount,r=r||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=D(a),u=s.next();!u.done;u=s.next()){var l=J(u.value,2),h=l[0],d=l[1],v=d.score,y=d.terms,b=d.match,E=y.length||1,g={id:this._documentIds.get(h),score:v*E,terms:Object.keys(b),queryTerms:y,match:b};Object.assign(g,this._storedFields.get(h)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(S){r={error:S}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(vt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,y=v.join(" "),b=s.get(y);b!=null?(b.score+=d,b.count+=1):s.set(y,{score:d,terms:v,count:1})}}catch(_){r={error:_}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var g=D(s),S=g.next();!S.done;S=g.next()){var T=J(S.value,2),b=T[0],F=T[1],d=F.score,v=F.terms,L=F.count;E.push({suggestion:b,terms:v,score:d/L})}}catch(_){a={error:_}}finally{try{S&&!S.done&&(i=g.return)&&i.call(g)}finally{if(a)throw a.error}}return E.sort(vt),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Be.hasOwnProperty(e))return ze(Be,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,b=e.fieldLength,E=e.averageFieldLength,g=e.storedFields,S=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=h,F._nextId=d,F._documentIds=Te(v),F._idToShortId=new Map,F._fieldIds=y,F._fieldLength=Te(b),F._avgFieldLength=E,F._storedFields=Te(g),F._dirtCount=S||0,F._index=new Le;try{for(var L=D(F._documentIds),_=L.next();!_.done;_=L.next()){var V=J(_.value,2),N=V[0],R=V[1];F._idToShortId.set(R,N)}}catch(z){r={error:z}}finally{try{_&&!_.done&&(n=L.return)&&n.call(L)}finally{if(r)throw r.error}}try{for(var A=D(l),O=A.next();!O.done;O=A.next()){var w=J(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var C=(s=void 0,D(Object.keys(f))),I=C.next();!I.done;I=C.next()){var M=I.value,P=f[M];T===1&&(P=P.ds),p.set(parseInt(M,10),Te(P))}}catch(z){s={error:z}}finally{try{I&&!I.done&&(u=C.return)&&u.call(C)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(z){a={error:z}}finally{try{O&&!O.done&&(i=A.return)&&i.call(A)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=W(W(W({},t),e),{queries:void 0}),a=e.queries.map(function(g){return r.executeQuery(g,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=W(W({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,y=d(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=y.map(Jr(h)),E=b.map(function(g){return r.executeQuerySpec(g,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,P){var z;return W(W({},M),(z={},z[P]=ze(s.boost,P)||1,z))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,y=W(W({},ht.weights),h),b=y.fuzzy,E=y.prefix,g=this._index.get(e.term),S=this.termResults(e.term,e.term,1,g,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,_=L<1?Math.min(d,Math.round(e.term.length*L)):L;_&&(F=this._index.fuzzyGet(e.term,_))}if(T)try{for(var V=D(T),N=V.next();!N.done;N=V.next()){var R=J(N.value,2),A=R[0],O=R[1],w=A.length-e.term.length;if(w){F==null||F.delete(A);var c=E*A.length/(A.length+.3*w);this.termResults(e.term,A,c,O,u,l,v,S)}}}catch(M){r={error:M}}finally{try{N&&!N.done&&(n=V.return)&&n.call(V)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var A=p.value,C=J(F.get(A),2),I=C[0],w=C[1];if(w){var c=b*A.length/(A.length+w);this.termResults(e.term,A,c,I,u,l,v,S)}}}catch(M){a={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return S},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d=a.boostDocument?a.boostDocument(h,"",this._storedFields.get(l)):1;n.set(l,{score:d,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ge),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce($r[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,D(h)),y=v.next();!y.done;y=v.next()){var b=J(y.value,2),E=b[0],g=b[1];d[E]=Object.fromEntries(g)}}catch(S){r={error:S}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(S){e={error:S}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=D(Object.keys(a)),E=b.next();!E.done;E=b.next()){var g=E.value,S=a[g],T=this._fieldIds[g],F=n.get(T);if(F!=null){var L=F.size,_=this._avgFieldLength[T];try{for(var V=(d=void 0,D(F.keys())),N=V.next();!N.done;N=V.next()){var R=N.value;if(!this._documentIds.has(R)){this.removeTerm(T,R,t),L-=1;continue}var A=i?i(this._documentIds.get(R),t,this._storedFields.get(R)):1;if(A){var O=F.get(R),w=this._fieldLength.get(R)[T],c=Kr(O,L,this._documentCount,w,_,s),f=r*S*A*c,p=u.get(R);if(p){p.score+=f,jr(p.terms,e);var C=ze(p.match,t);C?C.push(g):p.match[t]=[g]}else u.set(R,{score:f,terms:[e],match:(y={},y[t]=[g],y)})}}}catch(I){d={error:I}}finally{try{N&&!N.done&&(v=V.return)&&v.call(V)}finally{if(d)throw d.error}}}}}catch(I){l={error:I}}finally{try{E&&!E.done&&(h=b.return)&&h.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,pt),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,pt),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(qt("data-v-639d7ab9"),o=o(),Ht(),o),qr=["aria-owns"],Hr={class:"shell"},Yr=["title"],Zr=Y(()=>k("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Xr=[Zr],ea={class:"search-actions before"},ta=["title"],ra=Y(()=>k("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),aa=[ra],na=["placeholder"],ia={class:"search-actions"},oa=["title"],sa=Y(()=>k("span",{class:"vpi-layout-list local-search-icon"},null,-1)),ua=[sa],la=["disabled","title"],ca=Y(()=>k("span",{class:"vpi-delete local-search-icon"},null,-1)),fa=[ca],ha=["id","role","aria-labelledby"],da=["aria-selected"],va=["href","aria-label","onMouseenter","onFocusin"],pa={class:"titles"},ya=Y(()=>k("span",{class:"title-icon"},"#",-1)),ma=["innerHTML"],ga=Y(()=>k("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),ba={class:"title main"},wa=["innerHTML"],xa={key:0,class:"excerpt-wrapper"},Fa={key:0,class:"excerpt",inert:""},Ea=["innerHTML"],Sa=Y(()=>k("div",{class:"excerpt-gradient-bottom"},null,-1)),Aa=Y(()=>k("div",{class:"excerpt-gradient-top"},null,-1)),Ta={key:0,class:"no-results"},Na={class:"search-keyboard-shortcuts"},Ca=["aria-label"],Ia=Y(()=>k("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),Da=[Ia],ka=["aria-label"],Oa=Y(()=>k("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Ra=[Oa],_a=["aria-label"],Ma=Y(()=>k("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),La=[Ma],Pa=["aria-label"],za=Rt({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var P,z;const t=e,r=xe(),n=xe(),a=xe(nr),i=rr(),{activate:s}=kr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,h=tt(async()=>{var m,x,$,K,Q,q,B,U,Z;return it(Vr.loadJSON(($=await((x=(m=a.value)[u.value])==null?void 0:x.call(m)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((K=l.value.search)==null?void 0:K.provider)==="local"&&((q=(Q=l.value.search.options)==null?void 0:Q.miniSearch)==null?void 0:q.searchOptions)},...((B=l.value.search)==null?void 0:B.provider)==="local"&&((Z=(U=l.value.search.options)==null?void 0:U.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var m,x;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):_t("vitepress:local-search-filter",""),y=Mt("vitepress:local-search-detailed-list",((P=l.value.search)==null?void 0:P.provider)==="local"&&((z=l.value.search.options)==null?void 0:z.detailedView)===!0),b=Fe(()=>{var m,x,$;return((m=l.value.search)==null?void 0:m.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),E=Fe(()=>{var x,$,K,Q,q,B,U;const m=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((q=(Q=(K=($=m==null?void 0:m.locales)==null?void 0:$[u.value])==null?void 0:K.translations)==null?void 0:Q.button)==null?void 0:q.buttonText)||((U=(B=m==null?void 0:m.translations)==null?void 0:B.button)==null?void 0:U.buttonText)||"Search"});Lt(()=>{b.value&&(y.value=!1)});const g=xe([]),S=oe(!1);$e(v,()=>{S.value=!1});const T=tt(async()=>{if(n.value)return it(new Rr(n.value))},null),F=new Qr(16);Pt(()=>[h.value,v.value,y.value],async([m,x,$],K,Q)=>{var be,Qe,qe,He;(K==null?void 0:K[0])!==m&&F.clear();let q=!1;if(Q(()=>{q=!0}),!m)return;g.value=m.search(x).slice(0,16),S.value=!0;const B=$?await Promise.all(g.value.map(H=>L(H.id))):[];if(q)return;for(const{id:H,mod:ae}of B){const ne=H.slice(0,H.indexOf("#"));let te=F.get(ne);if(te)continue;te=new Map,F.set(ne,te);const X=ae.default??ae;if(X!=null&&X.render||X!=null&&X.setup){const ie=Yt(X);ie.config.warnHandler=()=>{},ie.provide(Zt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ie.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(he=>{var et;const we=(et=he.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(he=he.nextElementSibling)&&!/^h[1-6]$/i.test(he.tagName);)Xe+=he.outerHTML;te.set(Ze,Xe)}),ie.unmount()}if(q)return}const U=new Set;if(g.value=g.value.map(H=>{const[ae,ne]=H.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in H.match)U.add(ie);return{...H,text:X}}),await de(),q)return;await new Promise(H=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(U),{done:H})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const H of Z)(Qe=H.querySelector('mark[data-markjs="true"]'))==null||Qe.scrollIntoView({block:"center"});(He=(qe=n.value)==null?void 0:qe.firstElementChild)==null||He.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(m){const x=Xt(m.slice(0,m.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(x)}}catch($){return console.error($),{id:m,mod:{}}}}const _=oe(),V=Fe(()=>{var m;return((m=v.value)==null?void 0:m.length)<=0});function N(m=!0){var x,$;(x=_.value)==null||x.focus(),m&&(($=_.value)==null||$.select())}Re(()=>{N()});function R(m){m.pointerType==="mouse"&&N()}const A=oe(-1),O=oe(!1);$e(g,m=>{A.value=m.length?0:-1,w()});function w(){de(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",m=>{m.preventDefault(),A.value--,A.value<0&&(A.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",m=>{m.preventDefault(),A.value++,A.value>=g.value.length&&(A.value=0),O.value=!0,w()});const c=zt();Ee("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const x=g.value[A.value];if(m.target instanceof HTMLInputElement&&!x){m.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const p=ar({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Re(()=>{window.history.pushState(null,"",null)}),Bt("popstate",m=>{m.preventDefault(),t("close")});const C=Vt($t?document.body:null);Re(()=>{de(()=>{C.value=!0,de().then(()=>s())})}),Wt(()=>{C.value=!1});function I(){v.value="",de().then(()=>N(!1))}function M(m){return new RegExp([...m].sort((x,$)=>$.length-x.length).map(x=>`(${er(x)})`).join("|"),"gi")}return(m,x)=>{var $,K,Q,q;return ee(),Kt(Qt,{to:"body"},[k("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[k("div",{class:"backdrop",onClick:x[0]||(x[0]=B=>m.$emit("close"))}),k("div",Hr,[k("form",{class:"search-bar",onPointerup:x[4]||(x[4]=B=>R(B)),onSubmit:x[5]||(x[5]=Jt(()=>{},["prevent"]))},[k("label",{title:E.value,id:"localsearch-label",for:"localsearch-input"},Xr,8,Yr),k("div",ea,[k("button",{class:"back-button",title:j(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=B=>m.$emit("close"))},aa,8,ta)]),Ut(k("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":x[2]||(x[2]=B=>Gt(v)?v.value=B:null),placeholder:E.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,na),[[jt,j(v)]]),k("div",ia,[b.value?Se("",!0):(ee(),re("button",{key:0,class:rt(["toggle-layout-button",{"detailed-list":j(y)}]),type:"button",title:j(p)("modal.displayDetails"),onClick:x[3]||(x[3]=B=>A.value>-1&&(y.value=!j(y)))},ua,10,oa)),k("button",{class:"clear-button",type:"reset",disabled:V.value,title:j(p)("modal.resetButtonTitle"),onClick:I},fa,8,la)])],32),k("ul",{ref_key:"resultsEl",ref:n,id:(K=g.value)!=null&&K.length?"localsearch-list":void 0,role:(Q=g.value)!=null&&Q.length?"listbox":void 0,"aria-labelledby":(q=g.value)!=null&&q.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=B=>O.value=!1)},[(ee(!0),re(nt,null,at(g.value,(B,U)=>(ee(),re("li",{key:B.id,role:"option","aria-selected":A.value===U?"true":"false"},[k("a",{href:B.id,class:rt(["result",{selected:A.value===U}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:Z=>!O.value&&(A.value=U),onFocusin:Z=>A.value=U,onClick:x[6]||(x[6]=Z=>m.$emit("close"))},[k("div",null,[k("div",pa,[ya,(ee(!0),re(nt,null,at(B.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[k("span",{class:"text",innerHTML:Z},null,8,ma),ga]))),128)),k("span",ba,[k("span",{class:"text",innerHTML:B.title},null,8,wa)])]),j(y)?(ee(),re("div",xa,[B.text?(ee(),re("div",Fa,[k("div",{class:"vp-doc",innerHTML:B.text},null,8,Ea)])):Se("",!0),Sa,Aa])):Se("",!0)])],42,va)],8,da))),128)),j(v)&&!g.value.length&&S.value?(ee(),re("li",Ta,[ve(pe(j(p)("modal.noResultsText"))+' "',1),k("strong",null,pe(j(v)),1),ve('" ')])):Se("",!0)],40,ha),k("div",Na,[k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.navigateUpKeyAriaLabel")},Da,8,Ca),k("kbd",{"aria-label":j(p)("modal.footer.navigateDownKeyAriaLabel")},Ra,8,ka),ve(" "+pe(j(p)("modal.footer.navigateText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.selectKeyAriaLabel")},La,8,_a),ve(" "+pe(j(p)("modal.footer.selectText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.closeKeyAriaLabel")},"esc",8,Pa),ve(" "+pe(j(p)("modal.footer.closeText")),1)])])])],8,qr)])}}}),Ja=tr(za,[["__scopeId","data-v-639d7ab9"]]);export{Ja as default}; diff --git a/assets/chunks/framework.D1oHBMsh.js b/assets/chunks/framework.D1oHBMsh.js new file mode 100644 index 0000000..05346ca --- /dev/null +++ b/assets/chunks/framework.D1oHBMsh.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const te={},mt=[],xe=()=>{},Li=()=>!1,kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),le=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ii=Object.prototype.hasOwnProperty,z=(e,t)=>Ii.call(e,t),k=Array.isArray,yt=e=>Sn(e)==="[object Map]",zs=e=>Sn(e)==="[object Set]",K=e=>typeof e=="function",oe=e=>typeof e=="string",et=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Js=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),Qs=Object.prototype.toString,Sn=e=>Qs.call(e),Mi=e=>Sn(e).slice(8,-1),Zs=e=>Sn(e)==="[object Object]",xr=e=>oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Pi=/-(\w)/g,$e=Tn(e=>e.replace(Pi,(t,n)=>n?n.toUpperCase():"")),Ni=/\B([A-Z])/g,ft=Tn(e=>e.replace(Ni,"-$1").toLowerCase()),An=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),un=Tn(e=>e?`on${An(e)}`:""),Qe=(e,t)=>!Object.is(e,t),fn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Fi=e=>{const t=oe(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const to=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Sr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(Hi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Tr(e){let t="";if(oe(e))t=e;else if(k(e))for(let n=0;noe(e)?e:e==null?"":k(e)||Z(e)&&(e.toString===Qs||!K(e.toString))?JSON.stringify(e,ro,2):String(e),ro=(e,t)=>t&&t.__v_isRef?ro(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[kn(r,o)+" =>"]=s,n),{})}:zs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>kn(n))}:et(t)?kn(t):Z(t)&&!k(t)&&!Zs(t)?String(t):t,kn=(e,t="")=>{var n;return et(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class Bi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=5)break}}this._dirtyLevel===1&&(this._dirtyLevel=0),Ue()}return this._dirtyLevel>=5}set dirty(t){this._dirtyLevel=t?5:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ze,n=ct;try{return ze=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,ze=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Wi(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t0&&(s??(s=e.get(r)===r._trackId))){r._dirtyLevel=2;continue}r._dirtyLevel{const n=new Map;return n.cleanup=e,n.computed=t,n},mn=new WeakMap,at=Symbol(""),fr=Symbol("");function ve(e,t,n){if(ze&&ct){let r=mn.get(e);r||mn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ao(()=>r.delete(n))),lo(ct,s)}}function De(e,t,n,r,s,o){const i=mn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&k(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!et(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?xr(n)&&l.push(i.get("length")):(l.push(i.get(at)),yt(e)&&l.push(i.get(fr)));break;case"delete":k(e)||(l.push(i.get(at)),yt(e)&&l.push(i.get(fr)));break;case"set":yt(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&co(c,5);Or()}function qi(e,t){const n=mn.get(e);return n&&n.get(t)}const Gi=wr("__proto__,__v_isRef,__isVue"),uo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(et)),es=Xi();function Xi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){tt(),Rr();const r=J(this)[t].apply(this,n);return Or(),Ue(),r}}),e}function Yi(e){et(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class fo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?cl:mo:o?go:po).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=k(t);if(!s){if(i&&z(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Yi}const l=Reflect.get(t,n,r);return(et(n)?uo.has(n):Gi(n))||(s||ve(t,"get",n),o)?l:de(l)?i&&xr(n)?l:l.value:Z(l)?s?Ln(l):On(l):l}}class ho extends fo{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=$t(o);if(!yn(r)&&!$t(r)&&(o=J(o),r=J(r)),!k(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=k(t)&&xr(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function zt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Qe(t,o)&&ve(s,"get",t),ve(s,"get",o));const{has:i}=Rn(s),l=r?Lr:n?Pr:Ht;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Jt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Qe(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Qt(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e){e=J(e);const t=J(this);return Rn(t).has.call(t,e)||(t.add(e),De(t,"add",e,e)),this}function ns(e,t){t=J(t);const n=J(this),{has:r,get:s}=Rn(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Qe(t,i)&&De(n,"set",e,t):De(n,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=Rn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&De(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&De(e,"clear",void 0,void 0),n}function Zt(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:Ht;return!e&&ve(l,"iterate",at),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function en(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=yt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Lr:t?Pr:Ht;return!t&&ve(o,"iterate",c?fr:at),{next(){const{value:h,done:m}=a.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function ke(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function el(){const e={get(o){return zt(this,o)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!1)},t={get(o){return zt(this,o,!1,!0)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!0)},n={get(o){return zt(this,o,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:Zt(!0,!1)},r={get(o){return zt(this,o,!0,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:Zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=en(o,!1,!1),n[o]=en(o,!0,!1),t[o]=en(o,!1,!0),r[o]=en(o,!0,!0)}),[e,n,t,r]}const[tl,nl,rl,sl]=el();function Ir(e,t){const n=t?e?sl:rl:e?nl:tl;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const ol={get:Ir(!1,!1)},il={get:Ir(!1,!0)},ll={get:Ir(!0,!1)};const po=new WeakMap,go=new WeakMap,mo=new WeakMap,cl=new WeakMap;function al(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ul(e){return e.__v_skip||!Object.isExtensible(e)?0:al(Mi(e))}function On(e){return $t(e)?e:Mr(e,!1,Ji,ol,po)}function fl(e){return Mr(e,!1,Zi,il,go)}function Ln(e){return Mr(e,!0,Qi,ll,mo)}function Mr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=ul(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Rt(e){return $t(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)}function $t(e){return!!(e&&e.__v_isReadonly)}function yn(e){return!!(e&&e.__v_isShallow)}function yo(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function dn(e){return Object.isExtensible(e)&&eo(e,"__v_skip",!0),e}const Ht=e=>Z(e)?On(e):e,Pr=e=>Z(e)?Ln(e):e;class _o{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>Ot(this,this.effect._dirtyLevel===3?3:4)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this),n=t.effect._dirtyLevel;return(!t._cacheable||t.effect.dirty)&&Qe(t._value,t._value=t.effect.run())&&n!==3&&Ot(t,5),Nr(t),t.effect._dirtyLevel>=2&&Ot(t,3),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function dl(e,t,n=!1){let r,s;const o=K(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new _o(r,s,o||!s,n)}function Nr(e){var t;ze&&ct&&(e=J(e),lo(ct,(t=e.dep)!=null?t:e.dep=ao(()=>e.dep=void 0,e instanceof _o?e:void 0)))}function Ot(e,t=5,n,r){e=J(e);const s=e.dep;s&&co(s,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function se(e){return vo(e,!1)}function Fr(e){return vo(e,!0)}function vo(e,t){return de(e)?e:new hl(e,t)}class hl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ht(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||yn(t)||$t(t);t=n?t:J(t),Qe(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:Ht(t),Ot(this,5))}}function bo(e){return de(e)?e.value:e}const pl={get:(e,t,n)=>bo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function wo(e){return Rt(e)?e:new Proxy(e,pl)}class gl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>Ot(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function ml(e){return new gl(e)}class yl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return qi(J(this._object),this._key)}}class _l{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function vl(e,t,n){return de(e)?e:K(e)?new _l(e):Z(e)&&arguments.length>1?bl(e,t,n):se(e)}function bl(e,t,n){const r=e[t];return de(r)?r:new yl(e,t,n)}/** +* @vue/runtime-core v3.4.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Je(e,t,n,r){try{return r?e(...r):e()}catch(s){Kt(s,t,n)}}function Se(e,t,n,r){if(K(e)){const s=Je(e,t,n,r);return s&&Js(s)&&s.catch(o=>{Kt(o,t,n)}),s}if(k(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=Vt(s);oPe&&pe.splice(t,1)}function xl(e){k(e)?vt.push(...e):(!qe||!qe.includes(e,e.allowRecurse?it+1:it))&&vt.push(e),Co()}function os(e,t,n=jt?Pe+1:0){for(;nVt(n)-Vt(r));if(vt.length=0,qe){qe.push(...t);return}for(qe=t,it=0;ite.id==null?1/0:e.id,Sl=(e,t)=>{const n=Vt(e)-Vt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function xo(e){dr=!1,jt=!0,pe.sort(Sl);try{for(Pe=0;Peoe(_)?_.trim():_)),h&&(s=n.map(cr))}let l,c=r[l=un(t)]||r[l=un($e(t))];!c&&o&&(c=r[l=un(ft(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function So(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!K(e)){const c=a=>{const f=So(a,t,!0);f&&(l=!0,le(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(k(o)?o.forEach(c=>i[c]=null):le(i,o),Z(e)&&r.set(e,i),i)}function Pn(e,t){return!e||!kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,ft(t))||z(e,t))}let fe=null,Nn=null;function vn(e){const t=fe;return fe=e,Nn=e&&e.type.__scopeId||null,t}function ru(e){Nn=e}function su(){Nn=null}function Al(e,t=fe,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&ws(-1);const o=vn(t);let i;try{i=e(...s)}finally{vn(o),r._d&&ws(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Kn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:f,props:h,data:m,setupState:_,ctx:C,inheritAttrs:I}=e,H=vn(e);let W,D;try{if(n.shapeFlag&4){const y=s||r,M=y;W=Ae(a.call(M,y,f,h,_,m,C)),D=l}else{const y=t;W=Ae(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),D=t.props?l:Rl(l)}}catch(y){Nt.length=0,Kt(y,e,1),W=ie(me)}let p=W;if(D&&I!==!1){const y=Object.keys(D),{shapeFlag:M}=p;y.length&&M&7&&(o&&y.some(Er)&&(D=Ol(D,o)),p=Ze(p,D,!1,!0))}return n.dirs&&(p=Ze(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),W=p,vn(H),W}const Rl=e=>{let t;for(const n in e)(n==="class"||n==="style"||kt(n))&&((t||(t={}))[n]=e[n]);return t},Ol=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ll(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?is(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Oo(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):xl(e)}function Fn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{tt();const l=qt(n),c=Se(t,n,e,i);return l(),Ue(),c});return r?s.unshift(o):s.push(o),o}}const Be=e=>(t,n=ue)=>{(!Gt||e==="sp")&&Fn(e,(...r)=>t(...r),n)},Pl=Be("bm"),xt=Be("m"),Nl=Be("bu"),Fl=Be("u"),Lo=Be("bum"),$n=Be("um"),$l=Be("sp"),Hl=Be("rtg"),jl=Be("rtc");function Vl(e,t=ue){Fn("ec",e,t)}function lu(e,t){if(fe===null)return e;const n=Vn(fe),r=e.dirs||(e.dirs=[]);for(let s=0;st(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;l!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function au(e){K(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,m()),m=()=>{let _;return c||(_=c=t().catch(C=>{if(C=C instanceof Error?C:new Error(String(C)),l)return new Promise((I,H)=>{l(C,()=>I(h()),()=>H(C),f+1)});throw C}).then(C=>_!==c&&c?c:(C&&(C.__esModule||C[Symbol.toStringTag]==="Module")&&(C=C.default),a=C,C)))};return Hr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return a},setup(){const _=ue;if(a)return()=>Wn(a,_);const C=D=>{c=null,Kt(D,_,13,!r)};if(i&&_.suspense||Gt)return m().then(D=>()=>Wn(D,_)).catch(D=>(C(D),()=>r?ie(r,{error:D}):null));const I=se(!1),H=se(),W=se(!!s);return s&&setTimeout(()=>{W.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!H.value){const D=new Error(`Async component timed out after ${o}ms.`);C(D),H.value=D}},o),m().then(()=>{I.value=!0,_.parent&&Wt(_.parent.vnode)&&(_.parent.effect.dirty=!0,Mn(_.parent.update))}).catch(D=>{C(D),H.value=D}),()=>{if(I.value&&a)return Wn(a,_);if(H.value&&r)return ie(r,{error:H.value});if(n&&!W.value)return ie(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=ie(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}function uu(e,t,n={},r,s){if(fe.isCE||fe.parent&&bt(fe.parent)&&fe.parent.isCE)return t!=="default"&&(n.name=t),ie("slot",n,r&&r());let o=e[t];o&&o._c&&(o._d=!1),Qo();const i=o&&Io(o(n)),l=ei(_e,{key:n.key||i&&i.key||`_${t}`},i||(r?r():[]),i&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function Io(e){return e.some(t=>Cn(t)?!(t.type===me||t.type===_e&&!Io(t.children)):!0)?e:null}function fu(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:un(r)]=e[r];return n}const hr=e=>e?si(e)?Vn(e):hr(e.parent):null,Lt=le(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>hr(e.parent),$root:e=>hr(e.root),$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Mn(e.update)}),$nextTick:e=>e.n||(e.n=In.bind(e.proxy)),$watch:e=>ac.bind(e)}),qn=(e,t)=>e!==te&&!e.__isScriptSetup&&z(e,t),Dl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==te&&z(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&z(a,t))return i[t]=3,o[t];if(n!==te&&z(n,t))return i[t]=4,n[t];pr&&(i[t]=0)}}const f=Lt[t];let h,m;if(f)return t==="$attrs"&&ve(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&z(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==te&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==te&&z(e,i)||qn(t,i)||(l=o[0])&&z(l,i)||z(r,i)||z(Lt,i)||z(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function du(){return Ul().slots}function Ul(){const e=jn();return e.setupContext||(e.setupContext=ii(e))}function cs(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let pr=!0;function Bl(e){const t=jr(e),n=e.proxy,r=e.ctx;pr=!1,t.beforeCreate&&as(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:m,beforeUpdate:_,updated:C,activated:I,deactivated:H,beforeDestroy:W,beforeUnmount:D,destroyed:p,unmounted:y,render:M,renderTracked:A,renderTriggered:F,errorCaptured:$,serverPrefetch:L,expose:w,inheritAttrs:N,components:T,directives:G,filters:ne}=t;if(a&&kl(a,r,null),i)for(const Y in i){const V=i[Y];K(V)&&(r[Y]=V.bind(n))}if(s){const Y=s.call(n,n);Z(Y)&&(e.data=On(Y))}if(pr=!0,o)for(const Y in o){const V=o[Y],He=K(V)?V.bind(n,n):K(V.get)?V.get.bind(n,n):xe,Xt=!K(V)&&K(V.set)?V.set.bind(n):xe,nt=re({get:He,set:Xt});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Le=>nt.value=Le})}if(l)for(const Y in l)Mo(l[Y],r,n,Y);if(c){const Y=K(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(V=>{Yl(V,Y[V])})}f&&as(f,e,"c");function U(Y,V){k(V)?V.forEach(He=>Y(He.bind(n))):V&&Y(V.bind(n))}if(U(Pl,h),U(xt,m),U(Nl,_),U(Fl,C),U(uc,I),U(fc,H),U(Vl,$),U(jl,A),U(Hl,F),U(Lo,D),U($n,y),U($l,L),k(w))if(w.length){const Y=e.exposed||(e.exposed={});w.forEach(V=>{Object.defineProperty(Y,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),N!=null&&(e.inheritAttrs=N),T&&(e.components=T),G&&(e.directives=G)}function kl(e,t,n=xe){k(e)&&(e=gr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=wt(s.from||r,s.default,!0):o=wt(s.from||r):o=wt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function as(e,t,n){Se(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Mo(e,t,n,r){const s=r.includes(".")?Wo(n,r):()=>n[r];if(oe(e)){const o=t[e];K(o)&&Ne(s,o)}else if(K(e))Ne(s,e.bind(n));else if(Z(e))if(k(e))e.forEach(o=>Mo(o,t,n,r));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ne(s,o,e)}}function jr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>bn(c,a,i,!0)),bn(c,t,i)),Z(t)&&o.set(t,c),c}function bn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&bn(e,o,n,!0),s&&s.forEach(i=>bn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Kl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Kl={data:us,props:fs,emits:fs,methods:At,computed:At,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:At,directives:At,watch:ql,provide:us,inject:Wl};function us(e,t){return t?e?function(){return le(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Wl(e,t){return At(gr(e),gr(t))}function gr(e){if(k(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(r&&r.proxy):t}}const No={},Fo=()=>Object.create(No),$o=e=>Object.getPrototypeOf(e)===No;function zl(e,t,n,r=!1){const s={},o=Fo();e.propsDefaults=Object.create(null),Ho(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:fl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Jl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,_]=jo(h,t,!0);le(i,m),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,mt),mt;if(k(o))for(let f=0;f-1,_[1]=I<0||C-1||z(_,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function ds(e){return e[0]!=="$"&&!_t(e)}function hs(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ps(e,t){return hs(e)===hs(t)}function gs(e,t){return k(t)?t.findIndex(n=>ps(n,e)):K(t)&&ps(t,e)?0:-1}const Vo=e=>e[0]==="_"||e==="$stable",Vr=e=>k(e)?e.map(Ae):[Ae(e)],Ql=(e,t,n)=>{if(t._n)return t;const r=Al((...s)=>Vr(t(...s)),n);return r._c=!1,r},Do=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Vo(s))continue;const o=e[s];if(K(o))t[s]=Ql(s,o,r);else if(o!=null){const i=Vr(o);t[s]=()=>i}}},Uo=(e,t)=>{const n=Vr(t);e.slots.default=()=>n},Zl=(e,t)=>{const n=e.slots=Fo();if(e.vnode.shapeFlag&32){const r=t._;r?(le(n,t),eo(n,"_",r,!0)):Do(t,n)}else t&&Uo(e,t)},ec=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=te;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(le(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Do(t,s)),i=t}else t&&(Uo(e,t),i={default:1});if(o)for(const l in s)!Vo(l)&&i[l]==null&&delete s[l]};function wn(e,t,n,r,s=!1){if(k(e)){e.forEach((m,_)=>wn(m,t&&(k(t)?t[_]:t),n,r,s));return}if(bt(r)&&!s)return;const o=r.shapeFlag&4?Vn(r.component):r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(oe(a)?(f[a]=null,z(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),K(c))Je(c,l,12,[i,f]);else{const m=oe(c),_=de(c);if(m||_){const C=()=>{if(e.f){const I=m?z(h,c)?h[c]:f[c]:c.value;s?k(I)&&Cr(I,o):k(I)?I.includes(o)||I.push(o):m?(f[c]=[o],z(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,z(h,c)&&(h[c]=i)):_&&(c.value=i,e.k&&(f[e.k]=i))};i?(C.id=-1,ye(C,n)):C()}}}let ms=!1;const pt=()=>{ms||(console.error("Hydration completed but contains mismatches."),ms=!0)},tc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",nc=e=>e.namespaceURI.includes("MathML"),tn=e=>{if(tc(e))return"svg";if(nc(e))return"mathml"},nn=e=>e.nodeType===8;function rc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}h(y.firstChild,p,null,null,null),_n(),y._vnode=p},h=(p,y,M,A,F,$=!1)=>{$=$||!!y.dynamicChildren;const L=nn(p)&&p.data==="[",w=()=>I(p,y,M,A,F,L),{type:N,ref:T,shapeFlag:G,patchFlag:ne}=y;let ce=p.nodeType;y.el=p,ne===-2&&($=!1,y.dynamicChildren=null);let U=null;switch(N){case Et:ce!==3?y.children===""?(c(y.el=s(""),i(p),p),U=p):U=w():(p.data!==y.children&&(pt(),p.data=y.children),U=o(p));break;case me:D(p)?(U=o(p),W(y.el=p.content.firstChild,p,M)):ce!==8||L?U=w():U=o(p);break;case Pt:if(L&&(p=o(p),ce=p.nodeType),ce===1||ce===3){U=p;const Y=!y.children.length;for(let V=0;V{$=$||!!y.dynamicChildren;const{type:L,props:w,patchFlag:N,shapeFlag:T,dirs:G,transition:ne}=y,ce=L==="input"||L==="option";if(ce||N!==-1){G&&Me(y,null,M,"created");let U=!1;if(D(p)){U=ko(A,ne)&&M&&M.vnode.props&&M.vnode.props.appear;const V=p.content.firstChild;U&&ne.beforeEnter(V),W(V,p,M),y.el=p=V}if(T&16&&!(w&&(w.innerHTML||w.textContent))){let V=_(p.firstChild,y,p,M,A,F,$);for(;V;){pt();const He=V;V=V.nextSibling,l(He)}}else T&8&&p.textContent!==y.children&&(pt(),p.textContent=y.children);if(w)if(ce||!$||N&48)for(const V in w)(ce&&(V.endsWith("value")||V==="indeterminate")||kt(V)&&!_t(V)||V[0]===".")&&r(p,V,null,w[V],void 0,void 0,M);else w.onClick&&r(p,"onClick",null,w.onClick,void 0,void 0,M);let Y;(Y=w&&w.onVnodeBeforeMount)&&Ce(Y,M,y),G&&Me(y,null,M,"beforeMount"),((Y=w&&w.onVnodeMounted)||G||U)&&Oo(()=>{Y&&Ce(Y,M,y),U&&ne.enter(p),G&&Me(y,null,M,"mounted")},A)}return p.nextSibling},_=(p,y,M,A,F,$,L)=>{L=L||!!y.dynamicChildren;const w=y.children,N=w.length;for(let T=0;T{const{slotScopeIds:L}=y;L&&(F=F?F.concat(L):L);const w=i(p),N=_(o(p),y,w,M,A,F,$);return N&&nn(N)&&N.data==="]"?o(y.anchor=N):(pt(),c(y.anchor=a("]"),w,N),N)},I=(p,y,M,A,F,$)=>{if(pt(),y.el=null,$){const N=H(p);for(;;){const T=o(p);if(T&&T!==N)l(T);else break}}const L=o(p),w=i(p);return l(p),n(null,y,w,L,M,A,tn(w),F),L},H=(p,y="[",M="]")=>{let A=0;for(;p;)if(p=o(p),p&&nn(p)&&(p.data===y&&A++,p.data===M)){if(A===0)return o(p);A--}return p},W=(p,y,M)=>{const A=y.parentNode;A&&A.replaceChild(p,y);let F=M;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},D=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const ye=Oo;function sc(e){return Bo(e)}function oc(e){return Bo(e,rc)}function Bo(e,t){const n=to();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:m,setScopeId:_=xe,insertStaticContent:C}=e,I=(u,d,g,v=null,b=null,S=null,O=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!lt(u,d)&&(v=Yt(u),Le(u,b,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:P,shapeFlag:B}=d;switch(E){case Et:H(u,d,g,v);break;case me:W(u,d,g,v);break;case Pt:u==null&&D(d,g,v,O);break;case _e:T(u,d,g,v,b,S,O,x,R);break;default:B&1?M(u,d,g,v,b,S,O,x,R):B&6?G(u,d,g,v,b,S,O,x,R):(B&64||B&128)&&E.process(u,d,g,v,b,S,O,x,R,dt)}P!=null&&b&&wn(P,u&&u.ref,S,d||u,!d)},H=(u,d,g,v)=>{if(u==null)r(d.el=l(d.children),g,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},W=(u,d,g,v)=>{u==null?r(d.el=c(d.children||""),g,v):d.el=u.el},D=(u,d,g,v)=>{[u.el,u.anchor]=C(u.children,d,g,v,u.el,u.anchor)},p=({el:u,anchor:d},g,v)=>{let b;for(;u&&u!==d;)b=m(u),r(u,g,v),u=b;r(d,g,v)},y=({el:u,anchor:d})=>{let g;for(;u&&u!==d;)g=m(u),s(u),u=g;s(d)},M=(u,d,g,v,b,S,O,x,R)=>{d.type==="svg"?O="svg":d.type==="math"&&(O="mathml"),u==null?A(d,g,v,b,S,O,x,R):L(u,d,b,S,O,x,R)},A=(u,d,g,v,b,S,O,x)=>{let R,E;const{props:P,shapeFlag:B,transition:j,dirs:q}=u;if(R=u.el=i(u.type,S,P&&P.is,P),B&8?f(R,u.children):B&16&&$(u.children,R,null,v,b,Gn(u,S),O,x),q&&Me(u,null,v,"created"),F(R,u,u.scopeId,O,v),P){for(const ee in P)ee!=="value"&&!_t(ee)&&o(R,ee,null,P[ee],S,u.children,v,b,je);"value"in P&&o(R,"value",null,P.value,S),(E=P.onVnodeBeforeMount)&&Ce(E,v,u)}q&&Me(u,null,v,"beforeMount");const X=ko(b,j);X&&j.beforeEnter(R),r(R,d,g),((E=P&&P.onVnodeMounted)||X||q)&&ye(()=>{E&&Ce(E,v,u),X&&j.enter(R),q&&Me(u,null,v,"mounted")},b)},F=(u,d,g,v,b)=>{if(g&&_(u,g),v)for(let S=0;S{for(let E=R;E{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:E,dirs:P}=d;R|=u.patchFlag&16;const B=u.props||te,j=d.props||te;let q;if(g&&rt(g,!1),(q=j.onVnodeBeforeUpdate)&&Ce(q,g,d,u),P&&Me(d,u,g,"beforeUpdate"),g&&rt(g,!0),E?w(u.dynamicChildren,E,x,g,v,Gn(d,b),S):O||V(u,d,x,null,g,v,Gn(d,b),S,!1),R>0){if(R&16)N(x,d,B,j,g,v,b);else if(R&2&&B.class!==j.class&&o(x,"class",null,j.class,b),R&4&&o(x,"style",B.style,j.style,b),R&8){const X=d.dynamicProps;for(let ee=0;ee{q&&Ce(q,g,d,u),P&&Me(d,u,g,"updated")},v)},w=(u,d,g,v,b,S,O)=>{for(let x=0;x{if(g!==v){if(g!==te)for(const x in g)!_t(x)&&!(x in v)&&o(u,x,g[x],null,O,d.children,b,S,je);for(const x in v){if(_t(x))continue;const R=v[x],E=g[x];R!==E&&x!=="value"&&o(u,x,E,R,O,d.children,b,S,je)}"value"in v&&o(u,"value",g.value,v.value,O)}},T=(u,d,g,v,b,S,O,x,R)=>{const E=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:B,dynamicChildren:j,slotScopeIds:q}=d;q&&(x=x?x.concat(q):q),u==null?(r(E,g,v),r(P,g,v),$(d.children||[],g,P,b,S,O,x,R)):B>0&&B&64&&j&&u.dynamicChildren?(w(u.dynamicChildren,j,g,b,S,O,x),(d.key!=null||b&&d===b.subTree)&&Dr(u,d,!0)):V(u,d,g,P,b,S,O,x,R)},G=(u,d,g,v,b,S,O,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,g,v,O,R):ne(d,g,v,b,S,O,R):ce(u,d,R)},ne=(u,d,g,v,b,S,O)=>{const x=u.component=Sc(u,v,b);if(Wt(u)&&(x.ctx.renderer=dt),Tc(x),x.asyncDep){if(b&&b.registerDep(x,U,O),!u.el){const R=x.subTree=ie(me);W(null,R,d,g)}}else U(x,u,d,g,b,S,O)},ce=(u,d,g)=>{const v=d.component=u.component;if(Ll(u,d,g))if(v.asyncDep&&!v.asyncResolved){Y(v,d,g);return}else v.next=d,Cl(v.update),v.effect.dirty=!0,v.update();else d.el=u.el,v.vnode=d},U=(u,d,g,v,b,S,O)=>{const x=()=>{if(u.isMounted){let{next:P,bu:B,u:j,parent:q,vnode:X}=u;{const ht=Ko(u);if(ht){P&&(P.el=X.el,Y(u,P,O)),ht.asyncDep.then(()=>{u.isUnmounted||x()});return}}let ee=P,Q;rt(u,!1),P?(P.el=X.el,Y(u,P,O)):P=X,B&&fn(B),(Q=P.props&&P.props.onVnodeBeforeUpdate)&&Ce(Q,q,P,X),rt(u,!0);const ae=Kn(u),Te=u.subTree;u.subTree=ae,I(Te,ae,h(Te.el),Yt(Te),u,b,S),P.el=ae.el,ee===null&&Il(u,ae.el),j&&ye(j,b),(Q=P.props&&P.props.onVnodeUpdated)&&ye(()=>Ce(Q,q,P,X),b)}else{let P;const{el:B,props:j}=d,{bm:q,m:X,parent:ee}=u,Q=bt(d);if(rt(u,!1),q&&fn(q),!Q&&(P=j&&j.onVnodeBeforeMount)&&Ce(P,ee,d),rt(u,!0),B&&Bn){const ae=()=>{u.subTree=Kn(u),Bn(B,u.subTree,u,b,null)};Q?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=Kn(u);I(null,ae,g,v,u,b,S),d.el=ae.el}if(X&&ye(X,b),!Q&&(P=j&&j.onVnodeMounted)){const ae=d;ye(()=>Ce(P,ee,ae),b)}(d.shapeFlag&256||ee&&bt(ee.vnode)&&ee.vnode.shapeFlag&256)&&u.a&&ye(u.a,b),u.isMounted=!0,d=g=v=null}},R=u.effect=new Ar(x,xe,()=>Mn(E),u.scope),E=u.update=()=>{R.dirty&&R.run()};E.id=u.uid,rt(u,!0),E()},Y=(u,d,g)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,Jl(u,d.props,v,g),ec(u,d.children,g),tt(),os(u),Ue()},V=(u,d,g,v,b,S,O,x,R=!1)=>{const E=u&&u.children,P=u?u.shapeFlag:0,B=d.children,{patchFlag:j,shapeFlag:q}=d;if(j>0){if(j&128){Xt(E,B,g,v,b,S,O,x,R);return}else if(j&256){He(E,B,g,v,b,S,O,x,R);return}}q&8?(P&16&&je(E,b,S),B!==E&&f(g,B)):P&16?q&16?Xt(E,B,g,v,b,S,O,x,R):je(E,b,S,!0):(P&8&&f(g,""),q&16&&$(B,g,v,b,S,O,x,R))},He=(u,d,g,v,b,S,O,x,R)=>{u=u||mt,d=d||mt;const E=u.length,P=d.length,B=Math.min(E,P);let j;for(j=0;jP?je(u,b,S,!0,!1,B):$(d,g,v,b,S,O,x,R,B)},Xt=(u,d,g,v,b,S,O,x,R)=>{let E=0;const P=d.length;let B=u.length-1,j=P-1;for(;E<=B&&E<=j;){const q=u[E],X=d[E]=R?Xe(d[E]):Ae(d[E]);if(lt(q,X))I(q,X,g,null,b,S,O,x,R);else break;E++}for(;E<=B&&E<=j;){const q=u[B],X=d[j]=R?Xe(d[j]):Ae(d[j]);if(lt(q,X))I(q,X,g,null,b,S,O,x,R);else break;B--,j--}if(E>B){if(E<=j){const q=j+1,X=qj)for(;E<=B;)Le(u[E],b,S,!0),E++;else{const q=E,X=E,ee=new Map;for(E=X;E<=j;E++){const be=d[E]=R?Xe(d[E]):Ae(d[E]);be.key!=null&&ee.set(be.key,E)}let Q,ae=0;const Te=j-X+1;let ht=!1,Xr=0;const St=new Array(Te);for(E=0;E=Te){Le(be,b,S,!0);continue}let Ie;if(be.key!=null)Ie=ee.get(be.key);else for(Q=X;Q<=j;Q++)if(St[Q-X]===0&<(be,d[Q])){Ie=Q;break}Ie===void 0?Le(be,b,S,!0):(St[Ie-X]=E+1,Ie>=Xr?Xr=Ie:ht=!0,I(be,d[Ie],g,null,b,S,O,x,R),ae++)}const Yr=ht?ic(St):mt;for(Q=Yr.length-1,E=Te-1;E>=0;E--){const be=X+E,Ie=d[be],zr=be+1{const{el:S,type:O,transition:x,children:R,shapeFlag:E}=u;if(E&6){nt(u.component.subTree,d,g,v);return}if(E&128){u.suspense.move(d,g,v);return}if(E&64){O.move(u,d,g,dt);return}if(O===_e){r(S,d,g);for(let B=0;Bx.enter(S),b);else{const{leave:B,delayLeave:j,afterLeave:q}=x,X=()=>r(S,d,g),ee=()=>{B(S,()=>{X(),q&&q()})};j?j(S,X,ee):ee()}else r(S,d,g)},Le=(u,d,g,v=!1,b=!1)=>{const{type:S,props:O,ref:x,children:R,dynamicChildren:E,shapeFlag:P,patchFlag:B,dirs:j,memoIndex:q}=u;if(B===-2&&(b=!1),x!=null&&wn(x,null,g,u,!0),q!=null&&(d.renderCache[q]=void 0),P&256){d.ctx.deactivate(u);return}const X=P&1&&j,ee=!bt(u);let Q;if(ee&&(Q=O&&O.onVnodeBeforeUnmount)&&Ce(Q,d,u),P&6)Oi(u.component,g,v);else{if(P&128){u.suspense.unmount(g,v);return}X&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,g,dt,v):E&&(S!==_e||B>0&&B&64)?je(E,d,g,!1,!0):(S===_e&&B&384||!b&&P&16)&&je(R,d,g),v&&qr(u)}(ee&&(Q=O&&O.onVnodeUnmounted)||X)&&ye(()=>{Q&&Ce(Q,d,u),X&&Me(u,null,d,"unmounted")},g)},qr=u=>{const{type:d,el:g,anchor:v,transition:b}=u;if(d===_e){Ri(g,v);return}if(d===Pt){y(u);return}const S=()=>{s(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:O,delayLeave:x}=b,R=()=>O(g,S);x?x(u.el,S,R):R()}else S()},Ri=(u,d)=>{let g;for(;u!==d;)g=m(u),s(u),u=g;s(d)},Oi=(u,d,g)=>{const{bum:v,scope:b,update:S,subTree:O,um:x,m:R,a:E}=u;ys(R),ys(E),v&&fn(v),b.stop(),S&&(S.active=!1,Le(O,u,d,g)),x&&ye(x,d),ye(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(u,d,g,v=!1,b=!1,S=0)=>{for(let O=S;Ou.shapeFlag&6?Yt(u.component.subTree):u.shapeFlag&128?u.suspense.next():m(u.anchor||u.el);let Dn=!1;const Gr=(u,d,g)=>{u==null?d._vnode&&Le(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,g),Dn||(Dn=!0,os(),_n(),Dn=!1),d._vnode=u},dt={p:I,um:Le,m:nt,r:qr,mt:ne,mc:$,pc:V,pbc:w,n:Yt,o:e};let Un,Bn;return t&&([Un,Bn]=t(dt)),{render:Gr,hydrate:Un,createApp:Xl(Gr,Un)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ko(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,n=!1){const r=e.children,s=t.children;if(k(r)&&k(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Ko(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ko(t)}function ys(e){if(e)for(let t=0;twt(lc);function Ur(e,t){return Hn(e,null,t)}function hu(e,t){return Hn(e,null,{flush:"post"})}const rn={};function Ne(e,t,n){return Hn(e,t,n)}function Hn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=te){if(t&&o){const A=t;t=(...F)=>{A(...F),M()}}const c=ue,a=A=>r===!0?A:Ye(A,r===!1?1:void 0);let f,h=!1,m=!1;if(de(e)?(f=()=>e.value,h=yn(e)):Rt(e)?(f=()=>a(e),h=!0):k(e)?(m=!0,h=e.some(A=>Rt(A)||yn(A)),f=()=>e.map(A=>{if(de(A))return A.value;if(Rt(A))return a(A);if(K(A))return Je(A,c,2)})):K(e)?t?f=()=>Je(e,c,2):f=()=>(_&&_(),Se(e,c,3,[C])):f=xe,t&&r){const A=f;f=()=>Ye(A())}let _,C=A=>{_=p.onStop=()=>{Je(A,c,4),_=p.onStop=void 0}},I;if(Gt)if(C=xe,t?n&&Se(t,c,3,[f(),m?[]:void 0,C]):f(),s==="sync"){const A=cc();I=A.__watcherHandles||(A.__watcherHandles=[])}else return xe;let H=m?new Array(e.length).fill(rn):rn;const W=()=>{if(!(!p.active||!p.dirty))if(t){const A=p.run();(r||h||(m?A.some((F,$)=>Qe(F,H[$])):Qe(A,H)))&&(_&&_(),Se(t,c,3,[A,H===rn?void 0:m&&H[0]===rn?[]:H,C]),H=A)}else p.run()};W.allowRecurse=!!t;let D;s==="sync"?D=W:s==="post"?D=()=>ye(W,c&&c.suspense):(W.pre=!0,c&&(W.id=c.uid),D=()=>Mn(W));const p=new Ar(f,xe,D),y=so(),M=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?W():H=p.run():s==="post"?ye(p.run.bind(p),c&&c.suspense):p.run(),I&&I.push(M),M}function ac(e,t,n){const r=this.proxy,s=oe(e)?e.includes(".")?Wo(r,e):()=>r[e]:e.bind(r,r);let o;K(t)?o=t:(o=t.handler,n=t);const i=qt(this),l=Hn(s,o.bind(r),n);return i(),l}function Wo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Ye(r,t,n)});else if(Zs(e)){for(const r in e)Ye(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Ye(e[r],t,n)}return e}const Wt=e=>e.type.__isKeepAlive;function uc(e,t){qo(e,"a",t)}function fc(e,t){qo(e,"da",t)}function qo(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Fn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Wt(s.parent.vnode)&&dc(r,t,n,s),s=s.parent}}function dc(e,t,n,r){const s=Fn(t,e,r,!0);$n(()=>{Cr(r[t],s)},n)}const Ge=Symbol("_leaveCb"),sn=Symbol("_enterCb");function hc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xt(()=>{e.isMounted=!0}),Lo(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],Go={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},Xo=e=>{const t=e.subTree;return t.component?Xo(t.component):t},pc={name:"BaseTransition",props:Go,setup(e,{slots:t}){const n=jn(),r=hc();return()=>{const s=t.default&&zo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==me){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Xn(o);const c=_s(o);if(!c)return Xn(o);let a=yr(c,i,r,n,m=>a=m);En(c,a);const f=n.subTree,h=f&&_s(f);if(h&&h.type!==me&&!lt(c,h)&&Xo(n).type!==me){const m=yr(h,i,r,n);if(En(h,m),l==="out-in"&&c.type!==me)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Xn(o);l==="in-out"&&c.type!==me&&(m.delayLeave=(_,C,I)=>{const H=Yo(r,h);H[String(h.key)]=h,_[Ge]=()=>{C(),_[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},gc=pc;function Yo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function yr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:m,onLeave:_,onAfterLeave:C,onLeaveCancelled:I,onBeforeAppear:H,onAppear:W,onAfterAppear:D,onAppearCancelled:p}=t,y=String(e.key),M=Yo(n,e),A=(L,w)=>{L&&Se(L,r,9,w)},F=(L,w)=>{const N=w[1];A(L,w),k(L)?L.every(T=>T.length<=1)&&N():L.length<=1&&N()},$={mode:i,persisted:l,beforeEnter(L){let w=c;if(!n.isMounted)if(o)w=H||c;else return;L[Ge]&&L[Ge](!0);const N=M[y];N&<(e,N)&&N.el[Ge]&&N.el[Ge](),A(w,[L])},enter(L){let w=a,N=f,T=h;if(!n.isMounted)if(o)w=W||a,N=D||f,T=p||h;else return;let G=!1;const ne=L[sn]=ce=>{G||(G=!0,ce?A(T,[L]):A(N,[L]),$.delayedLeave&&$.delayedLeave(),L[sn]=void 0)};w?F(w,[L,ne]):ne()},leave(L,w){const N=String(e.key);if(L[sn]&&L[sn](!0),n.isUnmounting)return w();A(m,[L]);let T=!1;const G=L[Ge]=ne=>{T||(T=!0,w(),ne?A(I,[L]):A(C,[L]),L[Ge]=void 0,M[N]===e&&delete M[N])};M[N]=e,_?F(_,[L,G]):G()},clone(L){const w=yr(L,t,n,r,s);return s&&s(w),w}};return $}function Xn(e){if(Wt(e))return e=Ze(e),e.children=null,e}function _s(e){if(!Wt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function En(e,t){e.shapeFlag&6&&e.component?En(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function zo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oe.__isTeleport,Mt=e=>e&&(e.disabled||e.disabled===""),vs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,bs=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return oe(n)?t?t(n):null:n},yc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:m,o:{insert:_,querySelector:C,createText:I,createComment:H}}=a,W=Mt(t.props);let{shapeFlag:D,children:p,dynamicChildren:y}=t;if(e==null){const M=t.el=I(""),A=t.anchor=I("");_(M,n,r),_(A,n,r);const F=t.target=_r(t.props,C),$=t.targetAnchor=I("");F&&(_($,F),i==="svg"||vs(F)?i="svg":(i==="mathml"||bs(F))&&(i="mathml"));const L=(w,N)=>{D&16&&f(p,w,N,s,o,i,l,c)};W?L(n,A):F&&L(F,$)}else{t.el=e.el;const M=t.anchor=e.anchor,A=t.target=e.target,F=t.targetAnchor=e.targetAnchor,$=Mt(e.props),L=$?n:A,w=$?M:F;if(i==="svg"||vs(A)?i="svg":(i==="mathml"||bs(A))&&(i="mathml"),y?(m(e.dynamicChildren,y,L,s,o,i,l),Dr(e,t,!0)):c||h(e,t,L,w,s,o,i,l,!1),W)$?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):on(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const N=t.target=_r(t.props,C);N&&on(t,N,null,a,0)}else $&&on(t,A,F,a,1)}Jo(t)},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:c,targetAnchor:a,target:f,props:h}=e;if(f&&s(a),o&&s(c),i&16){const m=o||!Mt(h);for(let _=0;_0?Re||mt:null,vc(),Dt>0&&Re&&Re.push(e),e}function gu(e,t,n,r,s,o){return Zo(ni(e,t,n,r,s,o,!0))}function ei(e,t,n,r,s){return Zo(ie(e,t,n,r,s,!0))}function Cn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const ti=({key:e})=>e??null,hn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?oe(e)||de(e)||K(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function ni(e,t=null,n=null,r=0,s=null,o=e===_e?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ti(t),ref:t&&hn(t),scopeId:Nn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:fe};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=oe(n)?8:16),Dt>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const ie=bc;function bc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ao)&&(e=me),Cn(e)){const l=Ze(e,t,!0);return n&&Br(l,n),Dt>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag=-2,l}if(Lc(e)&&(e=e.__vccOpts),t){t=wc(t);let{class:l,style:c}=t;l&&!oe(l)&&(t.class=Tr(l)),Z(c)&&(yo(c)&&!k(c)&&(c=le({},c)),t.style=Sr(c))}const i=oe(e)?1:Ml(e)?128:mc(e)?64:Z(e)?4:K(e)?2:0;return ni(e,t,n,r,s,i,o,!0)}function wc(e){return e?yo(e)||$o(e)?le({},e):e:null}function Ze(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Ec(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ti(a),ref:t&&t.ref?n&&o?k(o)?o.concat(hn(t)):[o,hn(t)]:hn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ze(e.ssContent),ssFallback:e.ssFallback&&Ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&En(f,c.clone(f)),f}function ri(e=" ",t=0){return ie(Et,null,e,t)}function mu(e,t){const n=ie(Pt,null,e);return n.staticCount=t,n}function yu(e="",t=!1){return t?(Qo(),ei(me,null,e)):ie(me,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ie(me):k(e)?ie(_e,null,e.slice()):typeof e=="object"?Xe(e):ie(Et,null,String(e))}function Xe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ze(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!$o(t)?t._ctx=fe:s===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),r&64?(n=16,t=[ri(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ec(...e){const t={};for(let n=0;nue||fe;let xn,vr;{const e=to(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};xn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),vr=t("__VUE_SSR_SETTERS__",n=>Gt=n)}const qt=e=>{const t=ue;return xn(e),e.scope.on(),()=>{e.scope.off(),xn(t)}},Es=()=>{ue&&ue.scope.off(),xn(null)};function si(e){return e.vnode.shapeFlag&4}let Gt=!1;function Tc(e,t=!1){t&&vr(t);const{props:n,children:r}=e.vnode,s=si(e);zl(e,n,s,t),Zl(e,r);const o=s?Ac(e,t):void 0;return t&&vr(!1),o}function Ac(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Dl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?ii(e):null,o=qt(e);tt();const i=Je(r,e,0,[e.props,s]);if(Ue(),o(),Js(i)){if(i.then(Es,Es),t)return i.then(l=>{Cs(e,l,t)}).catch(l=>{Kt(l,e,0)});e.asyncDep=i}else Cs(e,i,t)}else oi(e,t)}function Cs(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=wo(t)),oi(e,n)}let xs;function oi(e,t,n){const r=e.type;if(!e.render){if(!t&&xs&&!r.render){const s=r.template||jr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=le(le({isCustomElement:o,delimiters:l},i),c);r.render=xs(s,a)}}e.render=r.render||xe}{const s=qt(e);tt();try{Bl(e)}finally{Ue(),s()}}}const Rc={get(e,t){return ve(e,"get",""),e[t]}};function ii(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Rc),slots:e.slots,emit:e.emit,expose:t}}function Vn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(wo(dn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Lt)return Lt[n](e)},has(t,n){return n in t||n in Lt}})):e.proxy}function Oc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function Lc(e){return K(e)&&"__vccOpts"in e}const re=(e,t)=>dl(e,t,Gt);function br(e,t,n){const r=arguments.length;return r===2?Z(t)&&!k(t)?Cn(t)?ie(e,null,[t]):ie(e,t):ie(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Cn(n)&&(n=[n]),ie(e,t,n))}const Ic="3.4.30";/** +* @vue/runtime-dom v3.4.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Mc="http://www.w3.org/2000/svg",Pc="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,Ss=Ve&&Ve.createElement("template"),Nc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ve.createElementNS(Mc,e):t==="mathml"?Ve.createElementNS(Pc,e):n?Ve.createElement(e,{is:n}):Ve.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ss.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ss.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Tt="animation",Ut=Symbol("_vtc"),li=(e,{slots:t})=>br(gc,Fc(e),t);li.displayName="Transition";const ci={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};li.props=le({},Go,ci);const st=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ts=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Fc(e){const t={};for(const T in e)T in ci||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,C=$c(s),I=C&&C[0],H=C&&C[1],{onBeforeEnter:W,onEnter:D,onEnterCancelled:p,onLeave:y,onLeaveCancelled:M,onBeforeAppear:A=W,onAppear:F=D,onAppearCancelled:$=p}=t,L=(T,G,ne)=>{ot(T,G?f:l),ot(T,G?a:i),ne&&ne()},w=(T,G)=>{T._isLeaving=!1,ot(T,h),ot(T,_),ot(T,m),G&&G()},N=T=>(G,ne)=>{const ce=T?F:D,U=()=>L(G,T,ne);st(ce,[G,U]),As(()=>{ot(G,T?c:o),We(G,T?f:l),Ts(ce)||Rs(G,r,I,U)})};return le(t,{onBeforeEnter(T){st(W,[T]),We(T,o),We(T,i)},onBeforeAppear(T){st(A,[T]),We(T,c),We(T,a)},onEnter:N(!1),onAppear:N(!0),onLeave(T,G){T._isLeaving=!0;const ne=()=>w(T,G);We(T,h),We(T,m),Vc(),As(()=>{T._isLeaving&&(ot(T,h),We(T,_),Ts(y)||Rs(T,r,H,ne))}),st(y,[T,ne])},onEnterCancelled(T){L(T,!1),st(p,[T])},onAppearCancelled(T){L(T,!0),st($,[T])},onLeaveCancelled(T){w(T),st(M,[T])}})}function $c(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return Fi(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function As(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Hc=0;function Rs(e,t,n,r){const s=e._endId=++Hc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=jc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,m),o()},m=_=>{_.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[C]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Os(s,o),l=r(`${Tt}Delay`),c=r(`${Tt}Duration`),a=Os(l,c);let f=null,h=0,m=0;t===Ke?i>0&&(f=Ke,h=i,m=o.length):t===Tt?a>0&&(f=Tt,h=a,m=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Tt:null,m=f?f===Ke?o.length:c.length:0);const _=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:_}}function Os(e,t){for(;e.lengthLs(n)+Ls(e[r])))}function Ls(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Vc(){return document.body.offsetHeight}function Dc(e,t,n){const r=e[Ut];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Is=Symbol("_vod"),Uc=Symbol("_vsh"),Bc=Symbol(""),kc=/(^|;)\s*display\s*:/;function Kc(e,t,n){const r=e.style,s=oe(n);let o=!1;if(n&&!s){if(t)if(oe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&pn(r,l,"")}else for(const i in t)n[i]==null&&pn(r,i,"");for(const i in n)i==="display"&&(o=!0),pn(r,i,n[i])}else if(s){if(t!==n){const i=r[Bc];i&&(n+=";"+i),r.cssText=n,o=kc.test(n)}}else t&&e.removeAttribute("style");Is in e&&(e[Is]=o?r.display:"",e[Uc]&&(r.display="none"))}const Ms=/\s*!important$/;function pn(e,t,n){if(k(n))n.forEach(r=>pn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Wc(e,t);Ms.test(n)?e.setProperty(ft(r),n.replace(Ms,""),"important"):e[r]=n}}const Ps=["Webkit","Moz","ms"],zn={};function Wc(e,t){const n=zn[t];if(n)return n;let r=$e(t);if(r!=="filter"&&r in e)return zn[t]=r;r=An(r);for(let s=0;sJn||(zc.then(()=>Jn=0),Jn=Date.now());function Qc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(Zc(r,n.value),t,5,[r])};return n.value=e,n.attached=Jc(),n}function Zc(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const js=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ea=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Dc(e,r,a):t==="style"?Kc(e,n,r):kt(t)?Er(t)||Xc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ta(e,t,r,a))?(qc(e,t,r,o,i,l,c),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fs(e,t,r,a,i,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Fs(e,t,r,a))};function ta(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&js(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return js(t)&&oe(n)?!1:t in e}const Vs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>fn(t,n):t};function na(e){e.target.composing=!0}function Ds(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Qn=Symbol("_assign"),_u={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Qn]=Vs(s);const o=r||s.props&&s.props.type==="number";gt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Qn](l)}),n&>(e,"change",()=>{e.value=e.value.trim()}),t||(gt(e,"compositionstart",na),gt(e,"compositionend",Ds),gt(e,"change",Ds))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Qn]=Vs(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},ra=["ctrl","shift","alt","meta"],sa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ra.some(n=>e[`${n}Key`]&&!t.includes(n))},vu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=ft(s.key);if(t.some(i=>i===o||oa[i]===o))return e(s)})},ai=le({patchProp:ea},Nc);let Ft,Us=!1;function ia(){return Ft||(Ft=sc(ai))}function la(){return Ft=Us?Ft:oc(ai),Us=!0,Ft}const wu=(...e)=>{const t=ia().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=fi(r);if(!s)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,ui(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},Eu=(...e)=>{const t=la().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=fi(r);if(s)return n(s,!0,ui(s))},t};function ui(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function fi(e){return oe(e)?document.querySelector(e):e}const Cu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},ca="modulepreload",aa=function(e){return"/coa6/"+e},Bs={},xu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=aa(l),l in Bs)return;Bs[l]=!0;const c=l.endsWith(".css"),a=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${a}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":ca,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},ua=window.__VP_SITE_DATA__;function kr(e){return so()?(Ki(e),!0):!1}function Fe(e){return typeof e=="function"?e():bo(e)}const di=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const fa=Object.prototype.toString,da=e=>fa.call(e)==="[object Object]",Bt=()=>{},ks=ha();function ha(){var e,t;return di&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function pa(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const hi=e=>e();function ga(e,t={}){let n,r,s=Bt;const o=l=>{clearTimeout(l),s(),s=Bt};return l=>{const c=Fe(e),a=Fe(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function ma(e=hi){const t=se(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function ya(e){return jn()}function pi(...e){if(e.length!==1)return vl(...e);const t=e[0];return typeof t=="function"?Ln(ml(()=>({get:t,set:Bt}))):se(t)}function gi(e,t,n={}){const{eventFilter:r=hi,...s}=n;return Ne(e,pa(r,t),s)}function _a(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=ma(r);return{stop:gi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Kr(e,t=!0,n){ya()?xt(e,n):t?e():In(e)}function Su(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return gi(e,t,{...o,eventFilter:ga(r,{maxWait:s})})}function Tu(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Bt}=r,c=se(!s),a=i?Fr(t):se(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const m=f;let _=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const C=await e(I=>{h(()=>{o&&(o.value=!1),_||I()})});m===f&&(a.value=C)}catch(C){l(C)}finally{o&&m===f&&(o.value=!1),_=!0}}),s?re(()=>(c.value=!0,a.value)):a}function mi(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Oe=di?window:void 0;function Ct(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Oe):[t,n,r,s]=e,!t)return Bt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,_)=>(f.addEventListener(h,m,_),()=>f.removeEventListener(h,m,_)),c=Ne(()=>[mi(t),Fe(s)],([f,h])=>{if(i(),!f)return;const m=da(h)?{...h}:h;o.push(...n.flatMap(_=>r.map(C=>l(f,_,C,m))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return kr(a),a}function va(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Au(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Oe,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=va(t);return Ct(s,o,f=>{f.repeat&&Fe(l)||c(f)&&n(f)},i)}function ba(){const e=se(!1),t=jn();return t&&xt(()=>{e.value=!0},t),e}function wa(e){const t=ba();return re(()=>(t.value,!!e()))}function yi(e,t={}){const{window:n=Oe}=t,r=wa(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=se(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia(Fe(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return kr(()=>{c(),l(),s=void 0}),o}const ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cn="__vueuse_ssr_handlers__",Ea=Ca();function Ca(){return cn in ln||(ln[cn]=ln[cn]||{}),ln[cn]}function _i(e,t){return Ea[e]||t}function xa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Sa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ks="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Oe,eventFilter:m,onError:_=w=>{console.error(w)},initOnMounted:C}=r,I=(f?Fr:se)(typeof t=="function"?t():t);if(!n)try{n=_i("getDefaultStorage",()=>{var w;return(w=Oe)==null?void 0:w.localStorage})()}catch(w){_(w)}if(!n)return I;const H=Fe(t),W=xa(H),D=(s=r.serializer)!=null?s:Sa[W],{pause:p,resume:y}=_a(I,()=>A(I.value),{flush:o,deep:i,eventFilter:m});h&&l&&Kr(()=>{Ct(h,"storage",$),Ct(h,Ks,L),C&&$()}),C||$();function M(w,N){h&&h.dispatchEvent(new CustomEvent(Ks,{detail:{key:e,oldValue:w,newValue:N,storageArea:n}}))}function A(w){try{const N=n.getItem(e);if(w==null)M(N,null),n.removeItem(e);else{const T=D.write(w);N!==T&&(n.setItem(e,T),M(N,T))}}catch(N){_(N)}}function F(w){const N=w?w.newValue:n.getItem(e);if(N==null)return c&&H!=null&&n.setItem(e,D.write(H)),H;if(!w&&a){const T=D.read(N);return typeof a=="function"?a(T,H):W==="object"&&!Array.isArray(T)?{...H,...T}:T}else return typeof N!="string"?N:D.read(N)}function $(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){I.value=H;return}if(!(w&&w.key!==e)){p();try{(w==null?void 0:w.newValue)!==D.write(I.value)&&(I.value=F(w))}catch(N){_(N)}finally{w?In(y):y()}}}}function L(w){$(w.detail)}return I}function vi(e){return yi("(prefers-color-scheme: dark)",e)}function Ta(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Oe,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=vi({window:s}),_=re(()=>m.value?"dark":"light"),C=c||(i==null?pi(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),I=re(()=>C.value==="auto"?_.value:C.value),H=_i("updateHTMLAttrs",(y,M,A)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):mi(y);if(!F)return;let $;if(f&&($=s.document.createElement("style"),$.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild($)),M==="class"){const L=A.split(/\s/g);Object.values(h).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{L.includes(w)?F.classList.add(w):F.classList.remove(w)})}else F.setAttribute(M,A);f&&(s.getComputedStyle($).opacity,document.head.removeChild($))});function W(y){var M;H(t,n,(M=h[y])!=null?M:y)}function D(y){e.onChanged?e.onChanged(y,W):W(y)}Ne(I,D,{flush:"post",immediate:!0}),Kr(()=>D(I.value));const p=re({get(){return a?C.value:I.value},set(y){C.value=y}});try{return Object.assign(p,{store:C,system:_,state:I})}catch{return p}}function Aa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Oe}=e,s=Ta({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=re(()=>s.system?s.system.value:vi({window:r}).value?"dark":"light");return re({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Ru(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function bi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const er=new WeakMap;function Ou(e,t=!1){const n=se(t);let r=null,s="";Ne(pi(e),l=>{const c=Zn(Fe(l));if(c){const a=c;if(er.get(a)||er.set(a,a.style.overflow),a.style.overflow!=="hidden"&&(s=a.style.overflow),a.style.overflow==="hidden")return n.value=!0;if(n.value)return a.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Zn(Fe(e));!l||n.value||(ks&&(r=Ct(l,"touchmove",c=>{Ra(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Zn(Fe(e));!l||!n.value||(ks&&(r==null||r()),l.style.overflow=s,er.delete(l),n.value=!1)};return kr(i),re({get(){return n.value},set(l){l?o():i()}})}function Lu(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function Iu(e={}){const{window:t=Oe,behavior:n="auto"}=e;if(!t)return{x:se(0),y:se(0)};const r=se(t.scrollX),s=se(t.scrollY),o=re({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=re({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Ct(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Mu(e={}){const{window:t=Oe,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=se(n),l=se(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Kr(c),Ct("resize",c,{passive:!0}),s){const a=yi("(orientation: portrait)");Ne(a,()=>c())}return{width:i,height:l}}var tr={BASE_URL:"/coa6/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},nr={};const wi=/^(?:[a-z]+:|\/\/)/i,Oa="vitepress-theme-appearance",La=/#.*$/,Ia=/[?#].*$/,Ma=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",Ei={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Pa(e,t,n=!1){if(t===void 0)return!1;if(e=Ws(`/${e}`),n)return new RegExp(t).test(e);if(Ws(t)!==e)return!1;const r=t.match(La);return r?(he?location.hash:"")===r[0]:!0}function Ws(e){return decodeURI(e).replace(Ia,"").replace(Ma,"$1")}function Na(e){return wi.test(e)}function Fa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Na(n)&&Pa(t,`/${n}/`,!0))||"root"}function $a(e,t){var r,s,o,i,l,c,a;const n=Fa(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:xi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function Ci(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Ha(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Ha(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ja(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function xi(e,t){return[...e.filter(n=>!ja(t,n)),...t]}const Va=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Da=/^[a-z]:/i;function qs(e){const t=Da.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Va,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function Ua(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function Pu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Ba=Symbol(),ut=Fr(ua);function Nu(e){const t=re(()=>$a(ut.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?se(!0):n?Aa({storageKey:Oa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):se(!1),s=se(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Ne(()=>e.data,()=>{s.value=he?location.hash:""}),{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>Ci(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:r,hash:re(()=>s.value)}}function ka(){const e=wt(Ba);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ka(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Gs(e){return wi.test(e)||!e.startsWith("/")?e:Ka(ut.value.base,e)}function Wa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){const n="/coa6/";t=qs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${qs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let gn=[];function Fu(e){gn.push(e),$n(()=>{gn=gn.filter(t=>t!==e)})}function qa(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Xs(e,n);else if(Array.isArray(e))for(const r of e){const s=Xs(r,n);if(s){t=s;break}}return t}function Xs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ga=Symbol(),Si="http://a.com",Xa=()=>({path:"/",component:null,data:Ei});function $u(e,t){const n=On(Xa()),r={route:n,go:s};async function s(l=he?location.href:"/"){var c,a;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(he&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,Si),h=o=f.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:C,__pageData:I}=_;if(!C)throw new Error(`Invalid route component: ${C}`);n.path=he?h:Gs(h),n.component=dn(C),n.data=dn(I),he&&In(()=>{let H=ut.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!H.endsWith("/")&&(H+=".html"),H!==f.pathname&&(f.pathname=H,l=H+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(D){console.warn(D)}if(W){Ys(W,f.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!a)try{const C=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await C.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=he?h:Gs(h),n.component=t?dn(t):null;const C=he?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ei,relativePath:C}}}}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:m,pathname:_,hash:C,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),H=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&m===H.origin&&Ua(_)&&(l.preventDefault(),_===H.pathname&&I===H.search?(C!==H.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:H.href,newURL:h}))),C?Ys(a,C,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Ya(){const e=wt(Ga);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ti(){return Ya().route}function Ys(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-qa()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Si);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>gn.forEach(e=>e()),Hu=Hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ti(),{site:n}=ka();return()=>br(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?br(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),ju=Hr({setup(e,{slots:t}){const n=se(!1);return xt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Vu(){he&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Du(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),za(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function za(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Uu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=Ci(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(xi(i.head,Qa(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function Ja(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Qa(e){return e.filter(t=>!Ja(t))}const lr=new Set,Ai=()=>document.createElement("link"),Za=e=>{const t=Ai();t.rel="prefetch",t.href=e,document.head.appendChild(t)},eu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let an;const tu=he&&(an=Ai())&&an.relList&&an.relList.supports&&an.relList.supports("prefetch")?Za:eu;function Bu(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const a=Wa(c);a&&tu(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};xt(r);const s=Ti();Ne(()=>s.path,r),$n(()=>{n&&n.disconnect()})}export{bu as $,hu as A,Fl as B,qa as C,ou as D,cu as E,_e as F,Fr as G,Fu as H,ie as I,iu as J,wi as K,Ti as L,Ec as M,wt as N,Mu as O,Sr as P,Au as Q,In as R,Iu as S,li as T,he as U,Ln as V,au as W,xu as X,Ou as Y,Yl as Z,Cu as _,ri as a,fu as a0,vu as a1,du as a2,wu as a3,br as a4,mu as a5,Uu as a6,Ga as a7,Nu as a8,Ba as a9,Hu as aa,ju as ab,ut as ac,Eu as ad,$u as ae,Wa as af,Bu as ag,Du as ah,Vu as ai,mi as aj,kr as ak,Tu as al,Lu as am,Ru as an,Su as ao,Ya as ap,Ct as aq,Lo as ar,lu as as,_u as at,de as au,pu as av,dn as aw,Pu as ax,ei as b,gu as c,Hr as d,yu as e,Ua as f,Gs as g,re as h,Na as i,ni as j,bo as k,su as l,Pa as m,Tr as n,Qo as o,ru as p,yi as q,uu as r,se as s,nu as t,ka as u,Ne as v,Al as w,Ur as x,xt as y,$n as z}; diff --git a/assets/chunks/giscus-aTimukGI.CKTvSCx2.js b/assets/chunks/giscus-aTimukGI.CKTvSCx2.js new file mode 100644 index 0000000..901e31a --- /dev/null +++ b/assets/chunks/giscus-aTimukGI.CKTvSCx2.js @@ -0,0 +1,66 @@ +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const x=globalThis,j=x.ShadowRoot&&(x.ShadyCSS===void 0||x.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,W=Symbol(),q=new WeakMap;let ot=class{constructor(s,t,e){if(this._$cssResult$=!0,e!==W)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=s,this.t=t}get styleSheet(){let s=this.o;const t=this.t;if(j&&s===void 0){const e=t!==void 0&&t.length===1;e&&(s=q.get(t)),s===void 0&&((this.o=s=new CSSStyleSheet).replaceSync(this.cssText),e&&q.set(t,s))}return s}toString(){return this.cssText}};const pt=s=>new ot(typeof s=="string"?s:s+"",void 0,W),_t=(s,...t)=>{const e=s.length===1?s[0]:t.reduce((i,r,o)=>i+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+s[o+1],s[0]);return new ot(e,s,W)},gt=(s,t)=>{if(j)s.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const e of t){const i=document.createElement("style"),r=x.litNonce;r!==void 0&&i.setAttribute("nonce",r),i.textContent=e.cssText,s.appendChild(i)}},K=j?s=>s:s=>s instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return pt(e)})(s):s;/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const{is:$t,defineProperty:ft,getOwnPropertyDescriptor:mt,getOwnPropertyNames:vt,getOwnPropertySymbols:At,getPrototypeOf:yt}=Object,E=globalThis,Y=E.trustedTypes,St=Y?Y.emptyScript:"",J=E.reactiveElementPolyfillSupport,U=(s,t)=>s,H={toAttribute(s,t){switch(t){case Boolean:s=s?St:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,t){let e=s;switch(t){case Boolean:e=s!==null;break;case Number:e=s===null?null:Number(s);break;case Object:case Array:try{e=JSON.parse(s)}catch{e=null}}return e}},V=(s,t)=>!$t(s,t),F={attribute:!0,type:String,converter:H,reflect:!1,hasChanged:V};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),E.litPropertyMetadata??(E.litPropertyMetadata=new WeakMap);class S extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=F){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,e);r!==void 0&&ft(this.prototype,t,r)}}static getPropertyDescriptor(t,e,i){const{get:r,set:o}=mt(this.prototype,t)??{get(){return this[e]},set(n){this[e]=n}};return{get(){return r==null?void 0:r.call(this)},set(n){const a=r==null?void 0:r.call(this);o.call(this,n),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??F}static _$Ei(){if(this.hasOwnProperty(U("elementProperties")))return;const t=yt(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(U("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(U("properties"))){const e=this.properties,i=[...vt(e),...At(e)];for(const r of i)this.createProperty(r,e[r])}const t=this[Symbol.metadata];if(t!==null){const e=litPropertyMetadata.get(t);if(e!==void 0)for(const[i,r]of e)this.elementProperties.set(i,r)}this._$Eh=new Map;for(const[e,i]of this.elementProperties){const r=this._$Eu(e,i);r!==void 0&&this._$Eh.set(r,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const r of i)e.unshift(K(r))}else t!==void 0&&e.push(K(t));return e}static _$Eu(t,e){const i=e.attribute;return i===!1?void 0:typeof i=="string"?i:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$Eg=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$ES(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e;(this._$E_??(this._$E_=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((e=t.hostConnected)==null||e.call(t))}removeController(t){var e;(e=this._$E_)==null||e.delete(t)}_$ES(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return gt(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$E_)==null||t.forEach(e=>{var i;return(i=e.hostConnected)==null?void 0:i.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$E_)==null||t.forEach(e=>{var i;return(i=e.hostDisconnected)==null?void 0:i.call(e)})}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e){var i;const r=this.constructor.elementProperties.get(t),o=this.constructor._$Eu(t,r);if(o!==void 0&&r.reflect===!0){const n=(((i=r.converter)==null?void 0:i.toAttribute)!==void 0?r.converter:H).toAttribute(e,r.type);this._$Em=t,n==null?this.removeAttribute(o):this.setAttribute(o,n),this._$Em=null}}_$AK(t,e){var i;const r=this.constructor,o=r._$Eh.get(t);if(o!==void 0&&this._$Em!==o){const n=r.getPropertyOptions(o),a=typeof n.converter=="function"?{fromAttribute:n.converter}:((i=n.converter)==null?void 0:i.fromAttribute)!==void 0?n.converter:H;this._$Em=o,this[o]=a.fromAttribute(e,n.type),this._$Em=null}}requestUpdate(t,e,i,r=!1,o){if(t!==void 0){if(i??(i=this.constructor.getPropertyOptions(t)),!(i.hasChanged??V)(r?o:this[t],e))return;this.C(t,e,i)}this.isUpdatePending===!1&&(this._$Eg=this._$EP())}C(t,e,i){this._$AL.has(t)||this._$AL.set(t,e),i.reflect===!0&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$EP(){this.isUpdatePending=!0;try{await this._$Eg}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[o,n]of this._$Ep)this[o]=n;this._$Ep=void 0}const r=this.constructor.elementProperties;if(r.size>0)for(const[o,n]of r)n.wrapped!==!0||this._$AL.has(o)||this[o]===void 0||this.C(o,this[o],n)}let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),(t=this._$E_)==null||t.forEach(r=>{var o;return(o=r.hostUpdate)==null?void 0:o.call(r)}),this.update(i)):this._$ET()}catch(r){throw e=!1,this._$ET(),r}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;(e=this._$E_)==null||e.forEach(i=>{var r;return(r=i.hostUpdated)==null?void 0:r.call(i)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$ET(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Eg}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EO(e,this[e]))),this._$ET()}updated(t){}firstUpdated(t){}}S.elementStyles=[],S.shadowRootOptions={mode:"open"},S[U("elementProperties")]=new Map,S[U("finalized")]=new Map,J==null||J({ReactiveElement:S}),(E.reactiveElementVersions??(E.reactiveElementVersions=[])).push("2.0.2");/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const L=globalThis,k=L.trustedTypes,Q=k?k.createPolicy("lit-html",{createHTML:s=>s}):void 0,at="$lit$",m=`lit$${(Math.random()+"").slice(9)}$`,ht="?"+m,Et=`<${ht}>`,y=document,O=()=>y.createComment(""),R=s=>s===null||typeof s!="object"&&typeof s!="function",lt=Array.isArray,bt=s=>lt(s)||typeof(s==null?void 0:s[Symbol.iterator])=="function",z=`[ +\f\r]`,w=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Z=/-->/g,X=/>/g,v=RegExp(`>|${z}(?:([^\\s"'>=/]+)(${z}*=${z}*(?:[^ +\f\r"'\`<>=]|("|')|))|$)`,"g"),tt=/'/g,et=/"/g,ct=/^(?:script|style|textarea|title)$/i,Ct=s=>(t,...e)=>({_$litType$:s,strings:t,values:e}),wt=Ct(1),b=Symbol.for("lit-noChange"),c=Symbol.for("lit-nothing"),st=new WeakMap,A=y.createTreeWalker(y,129);function dt(s,t){if(!Array.isArray(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return Q!==void 0?Q.createHTML(t):t}const Ut=(s,t)=>{const e=s.length-1,i=[];let r,o=t===2?"":"",n=w;for(let a=0;a"?(n=r??w,l=-1):u[1]===void 0?l=-2:(l=n.lastIndex-u[2].length,g=u[1],n=u[3]===void 0?v:u[3]==='"'?et:tt):n===et||n===tt?n=v:n===Z||n===X?n=w:(n=v,r=void 0);const f=n===v&&s[a+1].startsWith("/>")?" ":"";o+=n===w?h+Et:l>=0?(i.push(g),h.slice(0,l)+at+h.slice(l)+m+f):h+m+(l===-2?a:f)}return[dt(s,o+(s[e]||"")+(t===2?"":"")),i]};class N{constructor({strings:t,_$litType$:e},i){let r;this.parts=[];let o=0,n=0;const a=t.length-1,h=this.parts,[g,u]=Ut(t,e);if(this.el=N.createElement(g,i),A.currentNode=this.el.content,e===2){const l=this.el.content.firstChild;l.replaceWith(...l.childNodes)}for(;(r=A.nextNode())!==null&&h.length0){r.textContent=k?k.emptyScript:"";for(let f=0;f<$;f++)r.append(l[f],O()),A.nextNode(),h.push({type:2,index:++o});r.append(l[$],O())}}}else if(r.nodeType===8)if(r.data===ht)h.push({type:2,index:o});else{let l=-1;for(;(l=r.data.indexOf(m,l+1))!==-1;)h.push({type:7,index:o}),l+=m.length-1}o++}}static createElement(t,e){const i=y.createElement("template");return i.innerHTML=t,i}}function C(s,t,e=s,i){var r,o;if(t===b)return t;let n=i!==void 0?(r=e._$Co)==null?void 0:r[i]:e._$Cl;const a=R(t)?void 0:t._$litDirective$;return(n==null?void 0:n.constructor)!==a&&((o=n==null?void 0:n._$AO)==null||o.call(n,!1),a===void 0?n=void 0:(n=new a(s),n._$AT(s,e,i)),i!==void 0?(e._$Co??(e._$Co=[]))[i]=n:e._$Cl=n),n!==void 0&&(t=C(s,n._$AS(s,t.values),n,i)),t}let Pt=class{constructor(s,t){this._$AV=[],this._$AN=void 0,this._$AD=s,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(s){const{el:{content:t},parts:e}=this._$AD,i=((s==null?void 0:s.creationScope)??y).importNode(t,!0);A.currentNode=i;let r=A.nextNode(),o=0,n=0,a=e[0];for(;a!==void 0;){if(o===a.index){let h;a.type===2?h=new M(r,r.nextSibling,this,s):a.type===1?h=new a.ctor(r,a.name,a.strings,this,s):a.type===6&&(h=new Nt(r,this,s)),this._$AV.push(h),a=e[++n]}o!==(a==null?void 0:a.index)&&(r=A.nextNode(),o++)}return A.currentNode=y,i}p(s){let t=0;for(const e of this._$AV)e!==void 0&&(e.strings!==void 0?(e._$AI(s,e,t),t+=e.strings.length-2):e._$AI(s[t])),t++}};class M{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,e,i,r){this.type=2,this._$AH=c,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=i,this.options=r,this._$Cv=(r==null?void 0:r.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=C(this,t,e),R(t)?t===c||t==null||t===""?(this._$AH!==c&&this._$AR(),this._$AH=c):t!==this._$AH&&t!==b&&this._(t):t._$litType$!==void 0?this.g(t):t.nodeType!==void 0?this.$(t):bt(t)?this.T(t):this._(t)}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t))}_(t){this._$AH!==c&&R(this._$AH)?this._$AA.nextSibling.data=t:this.$(y.createTextNode(t)),this._$AH=t}g(t){var e;const{values:i,_$litType$:r}=t,o=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=N.createElement(dt(r.h,r.h[0]),this.options)),r);if(((e=this._$AH)==null?void 0:e._$AD)===o)this._$AH.p(i);else{const n=new Pt(o,this),a=n.u(this.options);n.p(i),this.$(a),this._$AH=n}}_$AC(t){let e=st.get(t.strings);return e===void 0&&st.set(t.strings,e=new N(t)),e}T(t){lt(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,r=0;for(const o of t)r===e.length?e.push(i=new M(this.k(O()),this.k(O()),this,this.options)):i=e[r],i._$AI(o),r++;r2||i[0]!==""||i[1]!==""?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=c}_$AI(t,e=this,i,r){const o=this.strings;let n=!1;if(o===void 0)t=C(this,t,e,0),n=!R(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const a=t;let h,g;for(t=o[0],h=0;h{const i=(e==null?void 0:e.renderBefore)??t;let r=i._$litPart$;if(r===void 0){const o=(e==null?void 0:e.renderBefore)??null;i._$litPart$=r=new M(t.insertBefore(O(),o),o,void 0,e??{})}return r._$AI(s),r};/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */let P=class extends S{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var s;const t=super.createRenderRoot();return(s=this.renderOptions).renderBefore??(s.renderBefore=t.firstChild),t}update(s){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(s),this._$Do=Mt(t,this.renderRoot,this.renderOptions)}connectedCallback(){var s;super.connectedCallback(),(s=this._$Do)==null||s.setConnected(!0)}disconnectedCallback(){var s;super.disconnectedCallback(),(s=this._$Do)==null||s.setConnected(!1)}render(){return b}};var rt;P._$litElement$=!0,P.finalized=!0,(rt=globalThis.litElementHydrateSupport)==null||rt.call(globalThis,{LitElement:P});const nt=globalThis.litElementPolyfillSupport;nt==null||nt({LitElement:P});(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.0.2");/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const It=s=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(s,t)}):customElements.define(s,t)};/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const xt={attribute:!0,type:String,converter:H,reflect:!1,hasChanged:V},Ht=(s=xt,t,e)=>{const{kind:i,metadata:r}=e;let o=globalThis.litPropertyMetadata.get(r);if(o===void 0&&globalThis.litPropertyMetadata.set(r,o=new Map),o.set(e.name,s),i==="accessor"){const{name:n}=e;return{set(a){const h=t.get.call(this);t.set.call(this,a),this.requestUpdate(n,h,s)},init(a){return a!==void 0&&this.C(n,void 0,s),a}}}if(i==="setter"){const{name:n}=e;return function(a){const h=this[n];t.call(this,a),this.requestUpdate(n,h,s)}}throw Error("Unsupported decorator location: "+i)};function _(s){return(t,e)=>typeof e=="object"?Ht(s,t,e):((i,r,o)=>{const n=r.hasOwnProperty(o);return r.constructor.createProperty(o,n?{...i,wrapped:!0}:i),n?Object.getOwnPropertyDescriptor(r,o):void 0})(s,t,e)}/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const Lt=s=>s.strings===void 0;/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const kt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Gt=s=>(...t)=>({_$litDirective$:s,values:t});let Dt=class{constructor(s){}get _$AU(){return this._$AM._$AU}_$AT(s,t,e){this._$Ct=s,this._$AM=t,this._$Ci=e}_$AS(s,t){return this.update(s,t)}update(s,t){return this.render(...t)}};/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const T=(s,t)=>{var e;const i=s._$AN;if(i===void 0)return!1;for(const r of i)(e=r._$AO)==null||e.call(r,t,!1),T(r,t);return!0},G=s=>{let t,e;do{if((t=s._$AM)===void 0)break;e=t._$AN,e.delete(s),s=t}while((e==null?void 0:e.size)===0)},ut=s=>{for(let t;t=s._$AM;s=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(s))break;e.add(s),jt(t)}};function zt(s){this._$AN!==void 0?(G(this),this._$AM=s,ut(this)):this._$AM=s}function Bt(s,t=!1,e=0){const i=this._$AH,r=this._$AN;if(r!==void 0&&r.size!==0)if(t)if(Array.isArray(i))for(let o=e;o{s.type==kt.CHILD&&(s._$AP??(s._$AP=Bt),s._$AQ??(s._$AQ=zt))};class Wt extends Dt{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,i){super._$AT(t,e,i),ut(this),this.isConnected=t._$AU}_$AO(t,e=!0){var i,r;t!==this.isConnected&&(this.isConnected=t,t?(i=this.reconnected)==null||i.call(this):(r=this.disconnected)==null||r.call(this)),e&&(T(this,t),G(this))}setValue(t){if(Lt(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const Vt=()=>new qt;class qt{}const B=new WeakMap,Kt=Gt(class extends Wt{render(s){return c}update(s,[t]){var e;const i=t!==this.G;return i&&this.G!==void 0&&this.ot(void 0),(i||this.rt!==this.lt)&&(this.G=t,this.ct=(e=s.options)==null?void 0:e.host,this.ot(this.lt=s.element)),c}ot(s){if(typeof this.G=="function"){const t=this.ct??globalThis;let e=B.get(t);e===void 0&&(e=new WeakMap,B.set(t,e)),e.get(this.G)!==void 0&&this.G.call(this.ct,void 0),e.set(this.G,s),s!==void 0&&this.G.call(this.ct,s)}else this.G.value=s}get rt(){var s,t;return typeof this.G=="function"?(s=B.get(this.ct??globalThis))==null?void 0:s.get(this.G):(t=this.G)==null?void 0:t.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});var Yt=Object.defineProperty,Jt=Object.getOwnPropertyDescriptor,p=(s,t,e,i)=>{for(var r=i>1?void 0:i?Jt(t,e):t,o=s.length-1,n;o>=0;o--)(n=s[o])&&(r=(i?n(t,e,r):n(r))||r);return i&&r&&Yt(t,e,r),r};function Ft(s){return customElements.get(s)?t=>t:It(s)}let d=class extends P{constructor(){super(),this.GISCUS_SESSION_KEY="giscus-session",this.GISCUS_DEFAULT_HOST="https://giscus.app",this.ERROR_SUGGESTION="Please consider reporting this error at https://github.com/giscus/giscus/issues/new.",this.__session="",this._iframeRef=Vt(),this.messageEventHandler=this.handleMessageEvent.bind(this),this.hasLoaded=!1,this.host=this.GISCUS_DEFAULT_HOST,this.strict="0",this.reactionsEnabled="1",this.emitMetadata="0",this.inputPosition="bottom",this.theme="light",this.lang="en",this.loading="eager",this.setupSession(),window.addEventListener("message",this.messageEventHandler)}get iframeRef(){var s;return(s=this._iframeRef)==null?void 0:s.value}get _host(){try{return new URL(this.host),this.host}catch{return this.GISCUS_DEFAULT_HOST}}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.messageEventHandler)}_formatError(s){return`[giscus] An error occurred. Error message: "${s}".`}setupSession(){const s=location.href,t=new URL(s),e=localStorage.getItem(this.GISCUS_SESSION_KEY),i=t.searchParams.get("giscus")??"";if(this.__session="",i){localStorage.setItem(this.GISCUS_SESSION_KEY,JSON.stringify(i)),this.__session=i,t.searchParams.delete("giscus"),t.hash="",history.replaceState(void 0,document.title,t.toString());return}if(e)try{this.__session=JSON.parse(e)}catch(r){localStorage.removeItem(this.GISCUS_SESSION_KEY),console.warn(`${this._formatError(r==null?void 0:r.message)} Session has been cleared.`)}}signOut(){localStorage.removeItem(this.GISCUS_SESSION_KEY),this.__session="",this.update(new Map)}handleMessageEvent(s){if(s.origin!==this._host)return;const{data:t}=s;if(!(typeof t=="object"&&t.giscus))return;if(this.iframeRef&&t.giscus.resizeHeight&&(this.iframeRef.style.height=`${t.giscus.resizeHeight}px`),t.giscus.signOut){console.info("[giscus] User has logged out. Session has been cleared."),this.signOut();return}if(!t.giscus.error)return;const e=t.giscus.error;if(e.includes("Bad credentials")||e.includes("Invalid state value")||e.includes("State has expired")){if(localStorage.getItem(this.GISCUS_SESSION_KEY)!==null){console.warn(`${this._formatError(e)} Session has been cleared.`),this.signOut();return}console.error(`${this._formatError(e)} No session is stored initially. ${this.ERROR_SUGGESTION}`)}if(e.includes("Discussion not found")){console.warn(`[giscus] ${e}. A new discussion will be created if a comment/reaction is submitted.`);return}console.error(`${this._formatError(e)} ${this.ERROR_SUGGESTION}`)}sendMessage(s){var t;!((t=this.iframeRef)!=null&&t.contentWindow)||!this.hasLoaded||this.iframeRef.contentWindow.postMessage({giscus:s},this._host)}updateConfig(){const s={setConfig:{repo:this.repo,repoId:this.repoId,category:this.category,categoryId:this.categoryId,term:this.getTerm(),number:+this.getNumber(),strict:this.strict==="1",reactionsEnabled:this.reactionsEnabled==="1",emitMetadata:this.emitMetadata==="1",inputPosition:this.inputPosition,theme:this.theme,lang:this.lang}};this.sendMessage(s)}firstUpdated(){var s;(s=this.iframeRef)==null||s.addEventListener("load",()=>{var t;(t=this.iframeRef)==null||t.classList.remove("loading"),this.hasLoaded=!0,this.updateConfig()})}requestUpdate(s,t,e){if(!this.hasUpdated||s==="host"){super.requestUpdate(s,t,e);return}this.updateConfig()}getMetaContent(s,t=!1){const e=t?`meta[property='og:${s}'],`:"",i=document.querySelector(e+`meta[name='${s}']`);return i?i.content:""}_getCleanedUrl(){const s=new URL(location.href);return s.searchParams.delete("giscus"),s.hash="",s}getTerm(){switch(this.mapping){case"url":return this._getCleanedUrl().toString();case"title":return document.title;case"og:title":return this.getMetaContent("title",!0);case"specific":return this.term??"";case"number":return"";case"pathname":default:return location.pathname.length<2?"index":location.pathname.substring(1).replace(/\.\w+$/,"")}}getNumber(){return this.mapping==="number"?this.term??"":""}getIframeSrc(){const s=this._getCleanedUrl().toString(),t=`${s}${this.id?"#"+this.id:""}`,e=this.getMetaContent("description",!0),i=this.getMetaContent("giscus:backlink")||s,r={origin:t,session:this.__session,repo:this.repo,repoId:this.repoId??"",category:this.category??"",categoryId:this.categoryId??"",term:this.getTerm(),number:this.getNumber(),strict:this.strict,reactionsEnabled:this.reactionsEnabled,emitMetadata:this.emitMetadata,inputPosition:this.inputPosition,theme:this.theme,description:e,backLink:i},o=this._host,n=this.lang?`/${this.lang}`:"",a=new URLSearchParams(r);return`${o}${n}/widget?${a.toString()}`}render(){return wt` + + `}};d.styles=_t` + :host, + iframe { + width: 100%; + border: none; + min-height: 150px; + color-scheme: light dark; + } + + iframe.loading { + opacity: 0; + } + `;p([_({reflect:!0})],d.prototype,"host",2);p([_({reflect:!0})],d.prototype,"repo",2);p([_({reflect:!0})],d.prototype,"repoId",2);p([_({reflect:!0})],d.prototype,"category",2);p([_({reflect:!0})],d.prototype,"categoryId",2);p([_({reflect:!0})],d.prototype,"mapping",2);p([_({reflect:!0})],d.prototype,"term",2);p([_({reflect:!0})],d.prototype,"strict",2);p([_({reflect:!0})],d.prototype,"reactionsEnabled",2);p([_({reflect:!0})],d.prototype,"emitMetadata",2);p([_({reflect:!0})],d.prototype,"inputPosition",2);p([_({reflect:!0})],d.prototype,"theme",2);p([_({reflect:!0})],d.prototype,"lang",2);p([_({reflect:!0})],d.prototype,"loading",2);d=p([Ft("giscus-widget")],d);export{d as GiscusWidget}; diff --git a/assets/chunks/theme.DstJSxiY.js b/assets/chunks/theme.DstJSxiY.js new file mode 100644 index 0000000..69f8421 --- /dev/null +++ b/assets/chunks/theme.DstJSxiY.js @@ -0,0 +1,4 @@ +const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.Bt_ZNxRf.js","assets/chunks/framework.D1oHBMsh.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import{d as _,o as s,c as u,r as c,n as H,a as ee,t as z,b as y,w as v,e as f,T as He,_ as $,u as Qe,i as It,f as Et,g as Be,h as P,j as p,k as i,p as j,l as q,m as re,q as Ne,s as A,v as x,x as $e,y as te,z as Oe,A as xe,B as Nt,C as Ct,D as ie,F as B,E as K,G as et,H as ye,I as k,J as ue,K as tt,L as me,M as _e,N as Le,O as zt,P as ot,Q as Ce,R as De,S as nt,U as Pe,V as At,W as Mt,X as at,Y as st,Z as rt,$ as Ht,a0 as Bt,a1 as Ot,a2 as Dt,a3 as Ft,a4 as Ut}from"./framework.D1oHBMsh.js";const Gt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(s(),u("span",{class:H(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[ee(z(e.text),1)])],2))}}),jt={key:0,class:"VPBackdrop"},qt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(s(),y(He,{name:"fade"},{default:v(()=>[e.show?(s(),u("div",jt)):f("",!0)]),_:1}))}}),Rt=$(qt,[["__scopeId","data-v-c79a1216"]]),w=Qe;function Wt(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ze(o){return/^\//.test(o)?o:`/${o}`}function Fe(o){const{pathname:e,search:t,hash:n,protocol:a}=new URL(o,"http://a.com");if(It(o)||o.startsWith("#")||!a.startsWith("http")||!Et(e))return o;const{site:r}=w(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return Be(l)}function ve({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:a,hash:r}=w(),l=P(()=>{var d,b;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:P(()=>Object.entries(e.value.locales).flatMap(([d,b])=>l.value.label===b.label?[]:{text:b.label,link:Kt(b.link||(d==="root"?"/":`/${d}/`),a.value.i18nRouting!==!1&&o,n.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function Kt(o,e,t,n){return e?o.replace(/\/$/,"")+ze(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const Yt=o=>(j("data-v-d6be1790"),o=o(),q(),o),Xt={class:"NotFound"},Zt={class:"code"},Jt={class:"title"},Qt=Yt(()=>p("div",{class:"divider"},null,-1)),xt={class:"quote"},eo={class:"action"},to=["href","aria-label"],oo=_({__name:"NotFound",setup(o){const{theme:e}=w(),{currentLang:t}=ve();return(n,a)=>{var r,l,m,d,b;return s(),u("div",Xt,[p("p",Zt,z(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",Jt,z(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),Qt,p("blockquote",xt,z(((m=i(e).notFound)==null?void 0:m.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",eo,[p("a",{class:"link",href:i(Be)(i(t).link),"aria-label":((d=i(e).notFound)==null?void 0:d.linkLabel)??"go to home"},z(((b=i(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,to)])])}}}),no=$(oo,[["__scopeId","data-v-d6be1790"]]);function it(o,e){if(Array.isArray(o))return ge(o);if(o==null)return[];e=ze(e);const t=Object.keys(o).sort((a,r)=>r.split("/").length-a.split("/").length).find(a=>e.startsWith(ze(a))),n=t?o[t]:[];return Array.isArray(n)?ge(n):ge(n.items,n.base)}function ao(o){const e=[];let t=0;for(const n in o){const a=o[n];if(a.items){t=e.push(a);continue}e[t]||e.push({items:[]}),e[t].items.push(a)}return e}function so(o){const e=[];function t(n){for(const a of n)a.text&&a.link&&e.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&t(a.items)}return t(o),e}function Ae(o,e){return Array.isArray(e)?e.some(t=>Ae(o,t)):re(o,e.link)?!0:e.items?Ae(o,e.items):!1}function ge(o,e){return[...o].map(t=>{const n={...t},a=n.base||e;return a&&n.link&&(n.link=a+n.link),n.items&&(n.items=ge(n.items,a)),n})}function oe(){const{frontmatter:o,page:e,theme:t}=w(),n=Ne("(min-width: 960px)"),a=A(!1),r=P(()=>{const D=t.value.sidebar,C=e.value.relativePath;return D?it(D,C):[]}),l=A(r.value);x(r,(D,C)=>{JSON.stringify(D)!==JSON.stringify(C)&&(l.value=r.value)});const m=P(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),d=P(()=>b?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),b=P(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=P(()=>m.value&&n.value),g=P(()=>m.value?ao(l.value):[]);function V(){a.value=!0}function N(){a.value=!1}function E(){a.value?N():V()}return{isOpen:a,sidebar:l,sidebarGroups:g,hasSidebar:m,hasAside:b,leftAside:d,isSidebarEnabled:L,open:V,close:N,toggle:E}}function ro(o,e){let t;$e(()=>{t=o.value?document.activeElement:void 0}),te(()=>{window.addEventListener("keyup",n)}),Oe(()=>{window.removeEventListener("keyup",n)});function n(a){a.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function io(o){const{page:e,hash:t}=w(),n=A(!1),a=P(()=>o.value.collapsed!=null),r=P(()=>!!o.value.link),l=A(!1),m=()=>{l.value=re(e.value.relativePath,o.value.link)};x([e,o,t],m),te(m);const d=P(()=>l.value?!0:o.value.items?Ae(e.value.relativePath,o.value.items):!1),b=P(()=>!!(o.value.items&&o.value.items.length));$e(()=>{n.value=!!(a.value&&o.value.collapsed)}),xe(()=>{(l.value||d.value)&&(n.value=!1)});function L(){a.value&&(n.value=!n.value)}return{collapsed:n,collapsible:a,isLink:r,isActiveLink:l,hasActiveLink:d,hasChildren:b,toggle:L}}function lo(){const{hasSidebar:o}=oe(),e=Ne("(min-width: 960px)"),t=Ne("(min-width: 1280px)");return{isAsideEnabled:P(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const Me=[];function lt(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function Ue(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:co(t),link:"#"+t.id,level:n}});return uo(e,o)}function co(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function uo(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,a]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(l=>l.level>=n&&l.level<=a),Me.length=0;for(const{element:l,link:m}of o)Me.push({element:l,link:m});const r=[];e:for(let l=0;l=0;d--){const b=o[d];if(b.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Nt(()=>{l(location.hash)}),Oe(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const m=window.scrollY,d=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(m+d-b)<1,g=Me.map(({element:N,link:E})=>({link:E,top:vo(N)})).filter(({top:N})=>!Number.isNaN(N)).sort((N,E)=>N.top-E.top);if(!g.length){l(null);return}if(m<1){l(null);return}if(L){l(g[g.length-1].link);return}let V=null;for(const{link:N,top:E}of g){if(E>m+Ct()+4)break;V=N}l(V)}function l(m){a&&a.classList.remove("active"),m==null?a=null:a=o.value.querySelector(`a[href="${decodeURIComponent(m)}"]`);const d=a;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function vo(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const po=["href","title"],ho=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const n=t.href.split("#")[1],a=document.getElementById(decodeURIComponent(n));a==null||a.focus({preventScroll:!0})}return(t,n)=>{const a=ie("VPDocOutlineItem",!0);return s(),u("ul",{class:H(["VPDocOutlineItem",t.root?"root":"nested"])},[(s(!0),u(B,null,K(t.headers,({children:r,link:l,title:m})=>(s(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:m},z(m),9,po),r!=null&&r.length?(s(),y(a,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}}),ct=$(ho,[["__scopeId","data-v-b933a997"]]),fo={class:"content"},_o={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},go=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=w(),n=et([]);ye(()=>{n.value=Ue(e.value.outline??t.value.outline)});const a=A(),r=A();return mo(a,r),(l,m)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:H(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:a},[p("div",fo,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",_o,z(i(lt)(i(t))),1),k(ct,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),bo=$(go,[["__scopeId","data-v-a5bbad30"]]),ko={class:"VPDocAsideCarbonAds"},$o=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(s(),u("div",ko,[k(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),yo=o=>(j("data-v-3f215769"),o=o(),q(),o),Lo={class:"VPDocAside"},Po=yo(()=>p("div",{class:"spacer"},null,-1)),So=_({__name:"VPDocAside",setup(o){const{theme:e}=w();return(t,n)=>(s(),u("div",Lo,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(bo),c(t.$slots,"aside-outline-after",{},void 0,!0),Po,c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(s(),y($o,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):f("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Vo=$(So,[["__scopeId","data-v-3f215769"]]);function wo(){const{theme:o,page:e}=w();return P(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let a;return typeof n=="function"?a=n(e.value):a=n.replace(/:path/g,e.value.filePath),{url:a,text:t}})}function To(){const{page:o,theme:e,frontmatter:t}=w();return P(()=>{var b,L,g,V,N,E,D,C;const n=it(e.value.sidebar,o.value.relativePath),a=so(n),r=Io(a,X=>X.link.replace(/[?#].*$/,"")),l=r.findIndex(X=>re(o.value.relativePath,X.link)),m=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:m?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((g=r[l-1])==null?void 0:g.docFooterText)??((V=r[l-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((N=r[l-1])==null?void 0:N.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((E=r[l+1])==null?void 0:E.docFooterText)??((D=r[l+1])==null?void 0:D.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((C=r[l+1])==null?void 0:C.link)}}})}function Io(o,e){const t=new Set;return o.filter(n=>{const a=e(n);return t.has(a)?!1:t.add(a)})}const Q=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=P(()=>e.tag??(e.href?"a":"span")),n=P(()=>e.href&&tt.test(e.href)||e.target==="_blank");return(a,r)=>(s(),y(ue(t.value),{class:H(["VPLink",{link:a.href,"vp-external-link-icon":n.value,"no-icon":a.noIcon}]),href:a.href?i(Fe)(a.href):void 0,target:a.target??(n.value?"_blank":void 0),rel:a.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[c(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Eo={class:"VPLastUpdated"},No=["datetime"],Co=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:n,lang:a}=w(),r=P(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),l=P(()=>r.value.toISOString()),m=A("");return te(()=>{$e(()=>{var d,b,L;m.value=new Intl.DateTimeFormat((b=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&b.forceLocale?a.value:void 0,((L=e.value.lastUpdated)==null?void 0:L.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(d,b)=>{var L;return s(),u("p",Eo,[ee(z(((L=i(e).lastUpdated)==null?void 0:L.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:l.value},z(m.value),9,No)])}}}),zo=$(Co,[["__scopeId","data-v-7e05ebdb"]]),ut=o=>(j("data-v-d4a0bba5"),o=o(),q(),o),Ao={key:0,class:"VPDocFooter"},Mo={key:0,class:"edit-info"},Ho={key:0,class:"edit-link"},Bo=ut(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Oo={key:1,class:"last-updated"},Do={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Fo=ut(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Uo={class:"pager"},Go=["innerHTML"],jo=["innerHTML"],qo={class:"pager"},Ro=["innerHTML"],Wo=["innerHTML"],Ko=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=w(),a=wo(),r=To(),l=P(()=>e.value.editLink&&n.value.editLink!==!1),m=P(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),d=P(()=>l.value||m.value||r.value.prev||r.value.next);return(b,L)=>{var g,V,N,E;return d.value?(s(),u("footer",Ao,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||m.value?(s(),u("div",Mo,[l.value?(s(),u("div",Ho,[k(Q,{class:"edit-link-button",href:i(a).url,"no-icon":!0},{default:v(()=>[Bo,ee(" "+z(i(a).text),1)]),_:1},8,["href"])])):f("",!0),m.value?(s(),u("div",Oo,[k(zo)])):f("",!0)])):f("",!0),(g=i(r).prev)!=null&&g.link||(V=i(r).next)!=null&&V.link?(s(),u("nav",Do,[Fo,p("div",Uo,[(N=i(r).prev)!=null&&N.link?(s(),y(Q,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:v(()=>{var D;return[p("span",{class:"desc",innerHTML:((D=i(e).docFooter)==null?void 0:D.prev)||"Previous page"},null,8,Go),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,jo)]}),_:1},8,["href"])):f("",!0)]),p("div",qo,[(E=i(r).next)!=null&&E.link?(s(),y(Q,{key:0,class:"pager-link next",href:i(r).next.link},{default:v(()=>{var D;return[p("span",{class:"desc",innerHTML:((D=i(e).docFooter)==null?void 0:D.next)||"Next page"},null,8,Ro),p("span",{class:"title",innerHTML:i(r).next.text},null,8,Wo)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),Yo=$(Ko,[["__scopeId","data-v-d4a0bba5"]]),Xo=o=>(j("data-v-39a288b8"),o=o(),q(),o),Zo={class:"container"},Jo=Xo(()=>p("div",{class:"aside-curtain"},null,-1)),Qo={class:"aside-container"},xo={class:"aside-content"},en={class:"content"},tn={class:"content-container"},on={class:"main"},nn=_({__name:"VPDoc",setup(o){const{theme:e}=w(),t=me(),{hasSidebar:n,hasAside:a,leftAside:r}=oe(),l=P(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(m,d)=>{const b=ie("Content");return s(),u("div",{class:H(["VPDoc",{"has-sidebar":i(n),"has-aside":i(a)}])},[c(m.$slots,"doc-top",{},void 0,!0),p("div",Zo,[i(a)?(s(),u("div",{key:0,class:H(["aside",{"left-aside":i(r)}])},[Jo,p("div",Qo,[p("div",xo,[k(Vo,null,{"aside-top":v(()=>[c(m.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(m.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(m.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(m.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(m.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(m.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),p("div",en,[p("div",tn,[c(m.$slots,"doc-before",{},void 0,!0),p("main",on,[k(b,{class:H(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Yo,null,{"doc-footer-before":v(()=>[c(m.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(m.$slots,"doc-after",{},void 0,!0)])])]),c(m.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=$(nn,[["__scopeId","data-v-39a288b8"]]),sn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=P(()=>e.href&&tt.test(e.href)),n=P(()=>e.tag||e.href?"a":"button");return(a,r)=>(s(),y(ue(n.value),{class:H(["VPButton",[a.size,a.theme]]),href:a.href?i(Fe)(a.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[ee(z(a.text),1)]),_:1},8,["class","href","target","rel"]))}}),rn=$(sn,[["__scopeId","data-v-cad61b99"]]),ln=["src","alt"],cn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=ie("VPImage",!0);return e.image?(s(),u(B,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",_e({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(Be)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,ln)):(s(),u(B,{key:1},[k(n,_e({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(n,_e({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),ke=$(cn,[["__scopeId","data-v-8426fc1a"]]),un=o=>(j("data-v-303bb580"),o=o(),q(),o),dn={class:"container"},mn={class:"main"},vn={key:0,class:"name"},pn=["innerHTML"],hn=["innerHTML"],fn=["innerHTML"],_n={key:0,class:"actions"},gn={key:0,class:"image"},bn={class:"image-container"},kn=un(()=>p("div",{class:"image-bg"},null,-1)),$n=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=Le("hero-image-slot-exists");return(t,n)=>(s(),u("div",{class:H(["VPHero",{"has-image":t.image||i(e)}])},[p("div",dn,[p("div",mn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(s(),u("h1",vn,[p("span",{innerHTML:t.name,class:"clip"},null,8,pn)])):f("",!0),t.text?(s(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,hn)):f("",!0),t.tagline?(s(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,fn)):f("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(s(),u("div",_n,[(s(!0),u(B,null,K(t.actions,a=>(s(),u("div",{key:a.link,class:"action"},[k(rn,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link,target:a.target,rel:a.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(s(),u("div",gn,[p("div",bn,[kn,c(t.$slots,"home-hero-image",{},()=>[t.image?(s(),y(ke,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),yn=$($n,[["__scopeId","data-v-303bb580"]]),Ln=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=w();return(t,n)=>i(e).hero?(s(),y(yn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Pn=o=>(j("data-v-a3976bdc"),o=o(),q(),o),Sn={class:"box"},Vn={key:0,class:"icon"},wn=["innerHTML"],Tn=["innerHTML"],In=["innerHTML"],En={key:4,class:"link-text"},Nn={class:"link-text-value"},Cn=Pn(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),zn=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(s(),y(Q,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[p("article",Sn,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",Vn,[k(ke,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),y(ke,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,wn)):f("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Tn),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,In)):f("",!0),e.linkText?(s(),u("div",En,[p("p",Nn,[ee(z(e.linkText)+" ",1),Cn])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),An=$(zn,[["__scopeId","data-v-a3976bdc"]]),Mn={key:0,class:"VPFeatures"},Hn={class:"container"},Bn={class:"items"},On=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=P(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,a)=>n.features?(s(),u("div",Mn,[p("div",Hn,[p("div",Bn,[(s(!0),u(B,null,K(n.features,r=>(s(),u("div",{key:r.title,class:H(["item",[t.value]])},[k(An,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Dn=$(On,[["__scopeId","data-v-a6181336"]]),Fn=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=w();return(t,n)=>i(e).features?(s(),y(Dn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):f("",!0)}}),Un=_({__name:"VPHomeContent",setup(o){const{width:e}=zt({initialWidth:0,includeScrollbar:!1});return(t,n)=>(s(),u("div",{class:"vp-doc container",style:ot(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Gn=$(Un,[["__scopeId","data-v-8e2d4988"]]),jn={class:"VPHome"},qn=_({__name:"VPHome",setup(o){const{frontmatter:e}=w();return(t,n)=>{const a=ie("Content");return s(),u("div",jn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Ln,null,{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(Fn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(s(),y(Gn,{key:0},{default:v(()=>[k(a)]),_:1})):(s(),y(a,{key:1}))])}}}),Rn=$(qn,[["__scopeId","data-v-686f80a6"]]),Wn={},Kn={class:"VPPage"};function Yn(o,e){const t=ie("Content");return s(),u("div",Kn,[c(o.$slots,"page-top"),k(t),c(o.$slots,"page-bottom")])}const Xn=$(Wn,[["render",Yn]]),Zn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=w(),{hasSidebar:n}=oe();return(a,r)=>(s(),u("div",{class:H(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(a.$slots,"not-found",{key:0},()=>[k(no)],!0):i(t).layout==="page"?(s(),y(Xn,{key:1},{"page-top":v(()=>[c(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(s(),y(Rn,{key:2},{"home-hero-before":v(()=>[c(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(s(),y(ue(i(t).layout),{key:3})):(s(),y(an,{key:4},{"doc-top":v(()=>[c(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[c(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[c(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[c(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[c(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Jn=$(Zn,[["__scopeId","data-v-1428d186"]]),Qn={class:"container"},xn=["innerHTML"],ea=["innerHTML"],ta=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=w(),{hasSidebar:n}=oe();return(a,r)=>i(e).footer&&i(t).footer!==!1?(s(),u("footer",{key:0,class:H(["VPFooter",{"has-sidebar":i(n)}])},[p("div",Qn,[i(e).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,xn)):f("",!0),i(e).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,ea)):f("",!0)])],2)):f("",!0)}}),oa=$(ta,[["__scopeId","data-v-e315a0ad"]]);function na(){const{theme:o,frontmatter:e}=w(),t=et([]),n=P(()=>t.value.length>0);return ye(()=>{t.value=Ue(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const aa=o=>(j("data-v-17a5e62e"),o=o(),q(),o),sa={class:"menu-text"},ra=aa(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),ia={class:"header"},la={class:"outline"},ca=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=w(),n=A(!1),a=A(0),r=A(),l=A();function m(g){var V;(V=r.value)!=null&&V.contains(g.target)||(n.value=!1)}x(n,g=>{if(g){document.addEventListener("click",m);return}document.removeEventListener("click",m)}),Ce("Escape",()=>{n.value=!1}),ye(()=>{n.value=!1});function d(){n.value=!n.value,a.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(g){g.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),De(()=>{n.value=!1}))}function L(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(g,V)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:ot({"--vp-vh":a.value+"px"}),ref_key:"main",ref:r},[g.headers.length>0?(s(),u("button",{key:0,onClick:d,class:H({open:n.value})},[p("span",sa,z(i(lt)(i(t))),1),ra],2)):(s(),u("button",{key:1,onClick:L},z(i(t).returnToTopLabel||"Return to top"),1)),k(He,{name:"flyout"},{default:v(()=>[n.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",ia,[p("a",{class:"top-link",href:"#",onClick:L},z(i(t).returnToTopLabel||"Return to top"),1)]),p("div",la,[k(ct,{headers:g.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),ua=$(ca,[["__scopeId","data-v-17a5e62e"]]),da=o=>(j("data-v-a6f0e41e"),o=o(),q(),o),ma={class:"container"},va=["aria-expanded"],pa=da(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),ha={class:"menu-text"},fa=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=w(),{hasSidebar:n}=oe(),{headers:a}=na(),{y:r}=nt(),l=A(0);te(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ye(()=>{a.value=Ue(t.value.outline??e.value.outline)});const m=P(()=>a.value.length===0),d=P(()=>m.value&&!n.value),b=P(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:m.value,fixed:d.value}));return(L,g)=>i(t).layout!=="home"&&(!d.value||i(r)>=l.value)?(s(),u("div",{key:0,class:H(b.value)},[p("div",ma,[i(n)?(s(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:g[0]||(g[0]=V=>L.$emit("open-menu"))},[pa,p("span",ha,z(i(e).sidebarMenuLabel||"Menu"),1)],8,va)):f("",!0),k(ua,{headers:i(a),navHeight:l.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),_a=$(fa,[["__scopeId","data-v-a6f0e41e"]]);function ga(){const o=A(!1);function e(){o.value=!0,window.addEventListener("resize",a)}function t(){o.value=!1,window.removeEventListener("resize",a)}function n(){o.value?t():e()}function a(){window.outerWidth>=768&&t()}const r=me();return x(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const ba={},ka={class:"VPSwitch",type:"button",role:"switch"},$a={class:"check"},ya={key:0,class:"icon"};function La(o,e){return s(),u("button",ka,[p("span",$a,[o.$slots.default?(s(),u("span",ya,[c(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Pa=$(ba,[["render",La],["__scopeId","data-v-1d5665e3"]]),dt=o=>(j("data-v-d1f28634"),o=o(),q(),o),Sa=dt(()=>p("span",{class:"vpi-sun sun"},null,-1)),Va=dt(()=>p("span",{class:"vpi-moon moon"},null,-1)),wa=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=w(),n=Le("toggle-appearance",()=>{e.value=!e.value}),a=P(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(r,l)=>(s(),y(Pa,{title:a.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(n)},{default:v(()=>[Sa,Va]),_:1},8,["title","aria-checked","onClick"]))}}),Ge=$(wa,[["__scopeId","data-v-d1f28634"]]),Ta={key:0,class:"VPNavBarAppearance"},Ia=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=w();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"?(s(),u("div",Ta,[k(Ge)])):f("",!0)}}),Ea=$(Ia,[["__scopeId","data-v-e6aabb21"]]),je=A();let mt=!1,Ee=0;function Na(o){const e=A(!1);if(Pe){!mt&&Ca(),Ee++;const t=x(je,n=>{var a,r,l;n===o.el.value||(a=o.el.value)!=null&&a.contains(n)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});Oe(()=>{t(),Ee--,Ee||za()})}return At(e)}function Ca(){document.addEventListener("focusin",vt),mt=!0,je.value=document.activeElement}function za(){document.removeEventListener("focusin",vt)}function vt(){je.value=document.activeElement}const Aa={class:"VPMenuLink"},Ma=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=w();return(t,n)=>(s(),u("div",Aa,[k(Q,{class:H({active:i(re)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[ee(z(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),Se=$(Ma,[["__scopeId","data-v-43f1e123"]]),Ha={class:"VPMenuGroup"},Ba={key:0,class:"title"},Oa=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",Ha,[e.text?(s(),u("p",Ba,z(e.text),1)):f("",!0),(s(!0),u(B,null,K(e.items,n=>(s(),u(B,null,["link"in n?(s(),y(Se,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),Da=$(Oa,[["__scopeId","data-v-69e747b5"]]),Fa={class:"VPMenu"},Ua={key:0,class:"items"},Ga=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(s(),u("div",Fa,[e.items?(s(),u("div",Ua,[(s(!0),u(B,null,K(e.items,n=>(s(),u(B,{key:n.text},["link"in n?(s(),y(Se,{key:0,item:n},null,8,["item"])):(s(),y(Da,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),ja=$(Ga,[["__scopeId","data-v-e7ea1737"]]),qa=o=>(j("data-v-b6c34ac9"),o=o(),q(),o),Ra=["aria-expanded","aria-label"],Wa={key:0,class:"text"},Ka=["innerHTML"],Ya=qa(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),Xa={key:1,class:"vpi-more-horizontal icon"},Za={class:"menu"},Ja=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=A(!1),t=A();Na({el:t,onBlur:n});function n(){e.value=!1}return(a,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":a.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[a.button||a.icon?(s(),u("span",Wa,[a.icon?(s(),u("span",{key:0,class:H([a.icon,"option-icon"])},null,2)):f("",!0),a.button?(s(),u("span",{key:1,innerHTML:a.button},null,8,Ka)):f("",!0),Ya])):(s(),u("span",Xa))],8,Ra),p("div",Za,[k(ja,{items:a.items},{default:v(()=>[c(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),qe=$(Ja,[["__scopeId","data-v-b6c34ac9"]]),Qa=["href","aria-label","innerHTML"],xa=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=P(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,a)=>(s(),u("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Qa))}}),es=$(xa,[["__scopeId","data-v-eee4e7cb"]]),ts={class:"VPSocialLinks"},os=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(s(),u("div",ts,[(s(!0),u(B,null,K(e.links,({link:n,icon:a,ariaLabel:r})=>(s(),y(es,{key:n,icon:a,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),Re=$(os,[["__scopeId","data-v-7bc22406"]]),ns={key:0,class:"group translations"},as={class:"trans-title"},ss={key:1,class:"group"},rs={class:"item appearance"},is={class:"label"},ls={class:"appearance-action"},cs={key:2,class:"group"},us={class:"item social-links"},ds=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=w(),{localeLinks:n,currentLang:a}=ve({correspondingLink:!0}),r=P(()=>n.value.length&&a.value.label||e.value.appearance||t.value.socialLinks);return(l,m)=>r.value?(s(),y(qe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[i(n).length&&i(a).label?(s(),u("div",ns,[p("p",as,z(i(a).label),1),(s(!0),u(B,null,K(i(n),d=>(s(),y(Se,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),i(e).appearance&&i(e).appearance!=="force-dark"?(s(),u("div",ss,[p("div",rs,[p("p",is,z(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",ls,[k(Ge)])])])):f("",!0),i(t).socialLinks?(s(),u("div",cs,[p("div",us,[k(Re,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),ms=$(ds,[["__scopeId","data-v-d0bd9dde"]]),vs=o=>(j("data-v-e5dd9c1c"),o=o(),q(),o),ps=["aria-expanded"],hs=vs(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),fs=[hs],_s=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(s(),u("button",{type:"button",class:H(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},fs,10,ps))}}),gs=$(_s,[["__scopeId","data-v-e5dd9c1c"]]),bs=["innerHTML"],ks=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=w();return(t,n)=>(s(),y(Q,{class:H({VPNavBarMenuLink:!0,active:i(re)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,bs)]),_:1},8,["class","href","noIcon","target","rel"]))}}),$s=$(ks,[["__scopeId","data-v-9c663999"]]),ys=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=w(),n=r=>"link"in r?re(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),a=P(()=>n(e.item));return(r,l)=>(s(),y(qe,{class:H({VPNavBarMenuGroup:!0,active:i(re)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||a.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Ls=o=>(j("data-v-7f418b0f"),o=o(),q(),o),Ps={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ss=Ls(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Vs=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=w();return(t,n)=>i(e).nav?(s(),u("nav",Ps,[Ss,(s(!0),u(B,null,K(i(e).nav,a=>(s(),u(B,{key:a.text},["link"in a?(s(),y($s,{key:0,item:a},null,8,["item"])):(s(),y(ys,{key:1,item:a},null,8,["item"]))],64))),128))])):f("",!0)}}),ws=$(Vs,[["__scopeId","data-v-7f418b0f"]]);function Ts(o){const{localeIndex:e,theme:t}=w();function n(a){var E,D,C;const r=a.split("."),l=(E=t.value.search)==null?void 0:E.options,m=l&&typeof l=="object",d=m&&((C=(D=l.locales)==null?void 0:D[e.value])==null?void 0:C.translations)||null,b=m&&l.translations||null;let L=d,g=b,V=o;const N=r.pop();for(const X of r){let Z=null;const F=V==null?void 0:V[X];F&&(Z=V=F);const ne=g==null?void 0:g[X];ne&&(Z=g=ne);const J=L==null?void 0:L[X];J&&(Z=L=J),F||(V=Z),ne||(g=Z),J||(L=Z)}return(L==null?void 0:L[N])??(g==null?void 0:g[N])??(V==null?void 0:V[N])??""}return n}const Is=["aria-label"],Es={class:"DocSearch-Button-Container"},Ns=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Cs={class:"DocSearch-Button-Placeholder"},zs=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ye=_({__name:"VPNavBarSearchButton",setup(o){const t=Ts({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,a)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",Es,[Ns,p("span",Cs,z(i(t)("button.buttonText")),1)]),zs],8,Is))}}),As={class:"VPNavBarSearch"},Ms={id:"local-search"},Hs={key:1,id:"docsearch"},Bs=_({__name:"VPNavBarSearch",setup(o){const e=Mt(()=>at(()=>import("./VPLocalSearchBox.Bt_ZNxRf.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=w(),a=A(!1),r=A(!1);te(()=>{});function l(){a.value||(a.value=!0,setTimeout(m,16))}function m(){const g=new Event("keydown");g.key="k",g.metaKey=!0,window.dispatchEvent(g),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||m()},16)}function d(g){const V=g.target,N=V.tagName;return V.isContentEditable||N==="INPUT"||N==="SELECT"||N==="TEXTAREA"}const b=A(!1);Ce("k",g=>{(g.ctrlKey||g.metaKey)&&(g.preventDefault(),b.value=!0)}),Ce("/",g=>{d(g)||(g.preventDefault(),b.value=!0)});const L="local";return(g,V)=>{var N;return s(),u("div",As,[i(L)==="local"?(s(),u(B,{key:0},[b.value?(s(),y(i(e),{key:0,onClose:V[0]||(V[0]=E=>b.value=!1)})):f("",!0),p("div",Ms,[k(Ye,{onClick:V[1]||(V[1]=E=>b.value=!0)})])],64)):i(L)==="algolia"?(s(),u(B,{key:1},[a.value?(s(),y(i(t),{key:0,algolia:((N=i(n).search)==null?void 0:N.options)??i(n).algolia,onVnodeBeforeMount:V[2]||(V[2]=E=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(s(),u("div",Hs,[k(Ye,{onClick:l})]))],64)):f("",!0)])}}}),Os=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=w();return(t,n)=>i(e).socialLinks?(s(),y(Re,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),Ds=$(Os,[["__scopeId","data-v-0394ad82"]]),Fs=["href","rel","target"],Us={key:1},Gs={key:2},js=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=w(),{hasSidebar:n}=oe(),{currentLang:a}=ve(),r=P(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),l=P(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),m=P(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,b)=>(s(),u("div",{class:H(["VPNavBarTitle",{"has-sidebar":i(n)}])},[p("a",{class:"title",href:r.value??i(Fe)(i(a).link),rel:l.value,target:m.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(s(),y(ke,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):f("",!0),i(t).siteTitle?(s(),u("span",Us,z(i(t).siteTitle),1)):i(t).siteTitle===void 0?(s(),u("span",Gs,z(i(e).title),1)):f("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Fs)],2))}}),qs=$(js,[["__scopeId","data-v-ab179fa1"]]),Rs={class:"items"},Ws={class:"title"},Ks=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=w(),{localeLinks:t,currentLang:n}=ve({correspondingLink:!0});return(a,r)=>i(t).length&&i(n).label?(s(),y(qe,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",Rs,[p("p",Ws,z(i(n).label),1),(s(!0),u(B,null,K(i(t),l=>(s(),y(Se,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),Ys=$(Ks,[["__scopeId","data-v-88af2de4"]]),Xs=o=>(j("data-v-ccf7ddec"),o=o(),q(),o),Zs={class:"wrapper"},Js={class:"container"},Qs={class:"title"},xs={class:"content"},er={class:"content-body"},tr=Xs(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),or=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=nt(),{hasSidebar:t}=oe(),{frontmatter:n}=w(),a=A({});return xe(()=>{a.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(r,l)=>(s(),u("div",{class:H(["VPNavBar",a.value])},[p("div",Zs,[p("div",Js,[p("div",Qs,[k(qs,null,{"nav-bar-title-before":v(()=>[c(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",xs,[p("div",er,[c(r.$slots,"nav-bar-content-before",{},void 0,!0),k(Bs,{class:"search"}),k(ws,{class:"menu"}),k(Ys,{class:"translations"}),k(Ea,{class:"appearance"}),k(Ds,{class:"social-links"}),k(ms,{class:"extra"}),c(r.$slots,"nav-bar-content-after",{},void 0,!0),k(gs,{class:"hamburger",active:r.isScreenOpen,onClick:l[0]||(l[0]=m=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),tr],2))}}),nr=$(or,[["__scopeId","data-v-ccf7ddec"]]),ar={key:0,class:"VPNavScreenAppearance"},sr={class:"text"},rr=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=w();return(n,a)=>i(e).appearance&&i(e).appearance!=="force-dark"?(s(),u("div",ar,[p("p",sr,z(i(t).darkModeSwitchLabel||"Appearance"),1),k(Ge)])):f("",!0)}}),ir=$(rr,[["__scopeId","data-v-2d7af913"]]),lr=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),y(Q,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),cr=$(lr,[["__scopeId","data-v-7f31e1f6"]]),ur=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),y(Q,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:v(()=>[ee(z(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),pt=$(ur,[["__scopeId","data-v-19976ae1"]]),dr={class:"VPNavScreenMenuGroupSection"},mr={key:0,class:"title"},vr=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",dr,[e.text?(s(),u("p",mr,z(e.text),1)):f("",!0),(s(!0),u(B,null,K(e.items,n=>(s(),y(pt,{key:n.text,item:n},null,8,["item"]))),128))]))}}),pr=$(vr,[["__scopeId","data-v-8133b170"]]),hr=o=>(j("data-v-ff6087d4"),o=o(),q(),o),fr=["aria-controls","aria-expanded"],_r=["innerHTML"],gr=hr(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),br=["id"],kr={key:1,class:"group"},$r=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=A(!1),n=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function a(){t.value=!t.value}return(r,l)=>(s(),u("div",{class:H(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:a},[p("span",{class:"button-text",innerHTML:r.text},null,8,_r),gr],8,fr),p("div",{id:n.value,class:"items"},[(s(!0),u(B,null,K(r.items,m=>(s(),u(B,{key:m.text},["link"in m?(s(),u("div",{key:m.text,class:"item"},[k(pt,{item:m},null,8,["item"])])):(s(),u("div",kr,[k(pr,{text:m.text,items:m.items},null,8,["text","items"])]))],64))),128))],8,br)],2))}}),yr=$($r,[["__scopeId","data-v-ff6087d4"]]),Lr={key:0,class:"VPNavScreenMenu"},Pr=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=w();return(t,n)=>i(e).nav?(s(),u("nav",Lr,[(s(!0),u(B,null,K(i(e).nav,a=>(s(),u(B,{key:a.text},["link"in a?(s(),y(cr,{key:0,item:a},null,8,["item"])):(s(),y(yr,{key:1,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Sr=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=w();return(t,n)=>i(e).socialLinks?(s(),y(Re,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),ht=o=>(j("data-v-858fe1a4"),o=o(),q(),o),Vr=ht(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),wr=ht(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Tr={class:"list"},Ir=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=ve({correspondingLink:!0}),n=A(!1);function a(){n.value=!n.value}return(r,l)=>i(e).length&&i(t).label?(s(),u("div",{key:0,class:H(["VPNavScreenTranslations",{open:n.value}])},[p("button",{class:"title",onClick:a},[Vr,ee(" "+z(i(t).label)+" ",1),wr]),p("ul",Tr,[(s(!0),u(B,null,K(i(e),m=>(s(),u("li",{key:m.link,class:"item"},[k(Q,{class:"link",href:m.link},{default:v(()=>[ee(z(m.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Er=$(Ir,[["__scopeId","data-v-858fe1a4"]]),Nr={class:"container"},Cr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=A(null),t=st(Pe?document.body:null);return(n,a)=>(s(),y(He,{name:"fade",onEnter:a[0]||(a[0]=r=>t.value=!0),onAfterLeave:a[1]||(a[1]=r=>t.value=!1)},{default:v(()=>[n.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",Nr,[c(n.$slots,"nav-screen-content-before",{},void 0,!0),k(Pr,{class:"menu"}),k(Er,{class:"translations"}),k(ir,{class:"appearance"}),k(Sr,{class:"social-links"}),c(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),zr=$(Cr,[["__scopeId","data-v-cc5739dd"]]),Ar={key:0,class:"VPNav"},Mr=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=ga(),{frontmatter:a}=w(),r=P(()=>a.value.navbar!==!1);return rt("close-screen",t),$e(()=>{Pe&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,m)=>r.value?(s(),u("header",Ar,[k(nr,{"is-screen-open":i(e),onToggleScreen:i(n)},{"nav-bar-title-before":v(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(zr,{open:i(e)},{"nav-screen-content-before":v(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Hr=$(Mr,[["__scopeId","data-v-ae24b3ad"]]),ft=o=>(j("data-v-b8d55f3b"),o=o(),q(),o),Br=["role","tabindex"],Or=ft(()=>p("div",{class:"indicator"},null,-1)),Dr=ft(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Fr=[Dr],Ur={key:1,class:"items"},Gr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:a,isActiveLink:r,hasActiveLink:l,hasChildren:m,toggle:d}=io(P(()=>e.item)),b=P(()=>m.value?"section":"div"),L=P(()=>a.value?"a":"div"),g=P(()=>m.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=P(()=>a.value?void 0:"button"),N=P(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":a.value},{"is-active":r.value},{"has-active":l.value}]);function E(C){"key"in C&&C.key!=="Enter"||!e.item.link&&d()}function D(){e.item.link&&d()}return(C,X)=>{const Z=ie("VPSidebarItem",!0);return s(),y(ue(b.value),{class:H(["VPSidebarItem",N.value])},{default:v(()=>[C.item.text?(s(),u("div",_e({key:0,class:"item",role:V.value},Bt(C.item.items?{click:E,keydown:E}:{},!0),{tabindex:C.item.items&&0}),[Or,C.item.link?(s(),y(Q,{key:0,tag:L.value,class:"link",href:C.item.link,rel:C.item.rel,target:C.item.target},{default:v(()=>[(s(),y(ue(g.value),{class:"text",innerHTML:C.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),y(ue(g.value),{key:1,class:"text",innerHTML:C.item.text},null,8,["innerHTML"])),C.item.collapsed!=null&&C.item.items&&C.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:D,onKeydown:Ht(D,["enter"]),tabindex:"0"},Fr,32)):f("",!0)],16,Br)):f("",!0),C.item.items&&C.item.items.length?(s(),u("div",Ur,[C.depth<5?(s(!0),u(B,{key:0},K(C.item.items,F=>(s(),y(Z,{key:F.text,item:F,depth:C.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),jr=$(Gr,[["__scopeId","data-v-b8d55f3b"]]),_t=o=>(j("data-v-575e6a36"),o=o(),q(),o),qr=_t(()=>p("div",{class:"curtain"},null,-1)),Rr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Wr=_t(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Kr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=oe(),n=o,a=A(null),r=st(Pe?document.body:null);return x([n,a],()=>{var l;n.open?(r.value=!0,(l=a.value)==null||l.focus()):r.value=!1},{immediate:!0,flush:"post"}),(l,m)=>i(t)?(s(),u("aside",{key:0,class:H(["VPSidebar",{open:l.open}]),ref_key:"navEl",ref:a,onClick:m[0]||(m[0]=Ot(()=>{},["stop"]))},[qr,p("nav",Rr,[Wr,c(l.$slots,"sidebar-nav-before",{},void 0,!0),(s(!0),u(B,null,K(i(e),d=>(s(),u("div",{key:d.text,class:"group"},[k(jr,{item:d,depth:0},null,8,["item"])]))),128)),c(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),Yr=$(Kr,[["__scopeId","data-v-575e6a36"]]),Xr=_({__name:"VPSkipLink",setup(o){const e=me(),t=A();x(()=>e.path,()=>t.value.focus());function n({target:a}){const r=document.getElementById(decodeURIComponent(a.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(a,r)=>(s(),u(B,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),Zr=$(Xr,[["__scopeId","data-v-0f60ec36"]]),Jr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=oe(),a=me();x(()=>a.path,n),ro(e,n);const{frontmatter:r}=w(),l=Dt(),m=P(()=>!!l["home-hero-image"]);return rt("hero-image-slot-exists",m),(d,b)=>{const L=ie("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:H(["Layout",i(r).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),k(Zr),k(Rt,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),k(Hr,null,{"nav-bar-title-before":v(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(_a,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),k(Yr,{open:i(e)},{"sidebar-nav-before":v(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Jn,null,{"page-top":v(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(oa),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),y(L,{key:1}))}}}),Qr=$(Jr,[["__scopeId","data-v-5d98c3a5"]]),xr={Layout:Qr,enhanceApp:({app:o})=>{o.component("Badge",Gt)}};/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var se=Object.assign||function(o){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},n=window.Promise||function(S){function T(){}S(T,T)},a=function(S){var T=S.target;if(T===pe){E();return}F.indexOf(T)!==-1&&D({target:T})},r=function(){if(!(J||!h.original)){var S=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(We-S)>M.scrollOffset&&setTimeout(E,150)}},l=function(S){var T=S.key||S.keyCode;(T==="Escape"||T==="Esc"||T===27)&&E()},m=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=S;if(S.background&&(pe.style.background=S.background),S.container&&S.container instanceof Object&&(T.container=se({},M.container,S.container)),S.template){var O=be(S.template)?S.template:document.querySelector(S.template);T.template=O}return M=se({},M,T),F.forEach(function(U){U.dispatchEvent(ce("medium-zoom:update",{detail:{zoom:G}}))}),G},d=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return o(se({},M,S))},b=function(){for(var S=arguments.length,T=Array(S),O=0;O0?T.reduce(function(I,W){return[].concat(I,Ze(W))},[]):F;return U.forEach(function(I){I.classList.remove("medium-zoom-image"),I.dispatchEvent(ce("medium-zoom:detach",{detail:{zoom:G}}))}),F=F.filter(function(I){return U.indexOf(I)===-1}),G},g=function(S,T){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return F.forEach(function(U){U.addEventListener("medium-zoom:"+S,T,O)}),ne.push({type:"medium-zoom:"+S,listener:T,options:O}),G},V=function(S,T){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return F.forEach(function(U){U.removeEventListener("medium-zoom:"+S,T,O)}),ne=ne.filter(function(U){return!(U.type==="medium-zoom:"+S&&U.listener.toString()===T.toString())}),G},N=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=S.target,O=function(){var I={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},W=void 0,Y=void 0;if(M.container)if(M.container instanceof Object)I=se({},I,M.container),W=I.width-I.left-I.right-M.margin*2,Y=I.height-I.top-I.bottom-M.margin*2;else{var le=be(M.container)?M.container:document.querySelector(M.container),ae=le.getBoundingClientRect(),Ve=ae.width,gt=ae.height,bt=ae.left,kt=ae.top;I=se({},I,{width:Ve,height:gt,left:bt,top:kt})}W=W||I.width-M.margin*2,Y=Y||I.height-M.margin*2;var de=h.zoomedHd||h.original,$t=Xe(de)?W:de.naturalWidth||W,yt=Xe(de)?Y:de.naturalHeight||Y,he=de.getBoundingClientRect(),Lt=he.top,Pt=he.left,we=he.width,Te=he.height,St=Math.min(Math.max(we,$t),W)/we,Vt=Math.min(Math.max(Te,yt),Y)/Te,Ie=Math.min(St,Vt),wt=(-Pt+(W-we)/2+M.margin+I.left)/Ie,Tt=(-Lt+(Y-Te)/2+M.margin+I.top)/Ie,Ke="scale("+Ie+") translate3d("+wt+"px, "+Tt+"px, 0)";h.zoomed.style.transform=Ke,h.zoomedHd&&(h.zoomedHd.style.transform=Ke)};return new n(function(U){if(T&&F.indexOf(T)===-1){U(G);return}var I=function Ve(){J=!1,h.zoomed.removeEventListener("transitionend",Ve),h.original.dispatchEvent(ce("medium-zoom:opened",{detail:{zoom:G}})),U(G)};if(h.zoomed){U(G);return}if(T)h.original=T;else if(F.length>0){var W=F;h.original=W[0]}else{U(G);return}if(h.original.dispatchEvent(ce("medium-zoom:open",{detail:{zoom:G}})),We=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,J=!0,h.zoomed=oi(h.original),document.body.appendChild(pe),M.template){var Y=be(M.template)?M.template:document.querySelector(M.template);h.template=document.createElement("div"),h.template.appendChild(Y.content.cloneNode(!0)),document.body.appendChild(h.template)}if(h.original.parentElement&&h.original.parentElement.tagName==="PICTURE"&&h.original.currentSrc&&(h.zoomed.src=h.original.currentSrc),document.body.appendChild(h.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),h.original.classList.add("medium-zoom-image--hidden"),h.zoomed.classList.add("medium-zoom-image--opened"),h.zoomed.addEventListener("click",E),h.zoomed.addEventListener("transitionend",I),h.original.getAttribute("data-zoom-src")){h.zoomedHd=h.zoomed.cloneNode(),h.zoomedHd.removeAttribute("srcset"),h.zoomedHd.removeAttribute("sizes"),h.zoomedHd.removeAttribute("loading"),h.zoomedHd.src=h.zoomed.getAttribute("data-zoom-src"),h.zoomedHd.onerror=function(){clearInterval(le),console.warn("Unable to reach the zoom image target "+h.zoomedHd.src),h.zoomedHd=null,O()};var le=setInterval(function(){h.zoomedHd.complete&&(clearInterval(le),h.zoomedHd.classList.add("medium-zoom-image--opened"),h.zoomedHd.addEventListener("click",E),document.body.appendChild(h.zoomedHd),O())},10)}else if(h.original.hasAttribute("srcset")){h.zoomedHd=h.zoomed.cloneNode(),h.zoomedHd.removeAttribute("sizes"),h.zoomedHd.removeAttribute("loading");var ae=h.zoomedHd.addEventListener("load",function(){h.zoomedHd.removeEventListener("load",ae),h.zoomedHd.classList.add("medium-zoom-image--opened"),h.zoomedHd.addEventListener("click",E),document.body.appendChild(h.zoomedHd),O()})}else O()})},E=function(){return new n(function(S){if(J||!h.original){S(G);return}var T=function O(){h.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(h.zoomed),h.zoomedHd&&document.body.removeChild(h.zoomedHd),document.body.removeChild(pe),h.zoomed.classList.remove("medium-zoom-image--opened"),h.template&&document.body.removeChild(h.template),J=!1,h.zoomed.removeEventListener("transitionend",O),h.original.dispatchEvent(ce("medium-zoom:closed",{detail:{zoom:G}})),h.original=null,h.zoomed=null,h.zoomedHd=null,h.template=null,S(G)};J=!0,document.body.classList.remove("medium-zoom--opened"),h.zoomed.style.transform="",h.zoomedHd&&(h.zoomedHd.style.transform=""),h.template&&(h.template.style.transition="opacity 150ms",h.template.style.opacity=0),h.original.dispatchEvent(ce("medium-zoom:close",{detail:{zoom:G}})),h.zoomed.addEventListener("transitionend",T)})},D=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=S.target;return h.original?E():N({target:T})},C=function(){return M},X=function(){return F},Z=function(){return h.original},F=[],ne=[],J=!1,We=0,M=t,h={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(e)==="[object Object]"?M=e:(e||typeof e=="string")&&b(e),M=se({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},M);var pe=ti(M.background);document.addEventListener("click",a),document.addEventListener("keyup",l),document.addEventListener("scroll",r),window.addEventListener("resize",E);var G={open:N,close:E,toggle:D,update:m,clone:d,attach:b,detach:L,on:g,off:V,getOptions:C,getImages:X,getZoomedImage:Z};return G};function ai(o,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",t==="top"&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=o:a.appendChild(document.createTextNode(o))}}var si=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";ai(si);const ri=["id","host","repo","repoid","category","categoryid","mapping","term","strict","reactionsenabled","emitmetadata","inputposition","theme","lang","loading"],ii=_({__name:"Giscus",props:{id:{},host:{},repo:{},repoId:{},category:{},categoryId:{},mapping:{},term:{},theme:{},strict:{},reactionsEnabled:{},emitMetadata:{},inputPosition:{},lang:{},loading:{}},setup(o){const e=A(!1);return te(()=>{e.value=!0,at(()=>import("./giscus-aTimukGI.CKTvSCx2.js"),[])}),(t,n)=>e.value?(s(),u("giscus-widget",{key:0,id:t.id,host:t.host,repo:t.repo,repoid:t.repoId,category:t.category,categoryid:t.categoryId,mapping:t.mapping,term:t.term,strict:t.strict,reactionsenabled:t.reactionsEnabled,emitmetadata:t.emitMetadata,inputposition:t.inputPosition,theme:t.theme,lang:t.lang,loading:t.loading},null,8,ri)):f("",!0)}}),Je=(o,e,t=!0)=>{var b;const n={id:"comment",host:"https://giscus.app",category:"General",mapping:"pathname",term:"Welcome to giscus!",reactionsEnabled:"1",inputPosition:"top",lang:"zh-CN",loading:"lazy",repo:"xxx/xxx",repoId:"",homePageShowComment:!1};if(o.locales){const g=document.querySelector("html").getAttribute("lang");g&&o.locales[g]&&(o.lang=o.locales[g])}const a=o.lightTheme||"light",r=o.darkTheme||"transparent_dark";let l=document.getElementById("giscus");if(l&&l.parentNode.removeChild(l),(e==null?void 0:e.value.comment)!==void 0){if(!(e!=null&&e.value.comment))return}else if(!t)return;if(!o.homePageShowComment&&(!location.pathname||location.pathname==="/"))return;const m=((b=document.querySelector("html"))==null?void 0:b.className.indexOf("dark"))!==-1,d=document.getElementsByClassName("content-container")[0];if(d){const L=document.createElement("div");L.setAttribute("id","giscus"),L.style.height="auto",L.style.marginTop="40px",L.style.borderTop="1px solid var(--vp-c-divider)",L.style.paddingTop="20px",d.append(L),Ft({render:()=>Ut(ii,{...n,theme:m?r:a,...o})}).mount("#giscus")}},li=o=>{const e=document.querySelector("html"),t=o.lightTheme||"light",n=o.darkTheme||"transparent_dark";new MutationObserver(r=>{r.forEach(l=>{if(l.type=="attributes"){let m=document.getElementById("comment");m==null||m.setAttribute("theme",e.className.indexOf("dark")!==-1?n:t)}})}).observe(e,{attributeFilter:["class"]})},ci=(o,e,t=!0)=>{te(()=>{Je(o,e.frontmatter,t),li(o)}),x(()=>e.route.path,()=>De(()=>{Je(o,e.frontmatter,t)}))},di={extends:xr,setup(){const{frontmatter:o}=Qe(),e=me(),t=()=>{ni(".main img",{background:"var(--vp-c-bg)"})};te(()=>{t(),document.addEventListener("gesturestart",function(a){a.preventDefault()});let n=0;document.addEventListener("touchstart",function(a){a.touches.length>1&&a.preventDefault()}),document.addEventListener("touchend",function(a){const r=new Date;r.getTime()-n<=300&&a.preventDefault(),n=r.getTime()},!1)}),x(()=>e.path,()=>De(()=>t())),ci({repo:"Aexiar/Aexiar.github.io",repoId:"R_kgDOK820xg",category:"Announcements",categoryId:"DIC_kwDOK820xs4Cb8sS",mapping:"pathname",inputPosition:"bottom",lang:"zh-CN"},{frontmatter:o,route:e},!0)}};export{di as R,Ts as c,w as u}; diff --git a/assets/index.md.LKQAh9T8.js b/assets/index.md.LKQAh9T8.js new file mode 100644 index 0000000..4b555a9 --- /dev/null +++ b/assets/index.md.LKQAh9T8.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a}from"./chunks/framework.D1oHBMsh.js";const c=JSON.parse('{"title":"许大仙的博客","titleTemplate":"Hi,终于等到你","description":"许大仙前端、Java、大数据、云原生","frontmatter":{"layout":"home","home":true,"title":"许大仙的博客","titleTemplate":"Hi,终于等到你","editLink":true,"lastUpdated":true,"head":[["meta",{"name":"description","content":"许大仙前端、Java、大数据、云原生"}],["meta",{"name":"keywords","content":"许大仙,许大仙的博客"}]],"hero":{"name":"许大仙同学","text":"","tagline":"『这个世纪疯狂,没人性,腐败;你却一直清醒,温柔,一尘不染。』","actions":[{"theme":"brand","text":"首页","link":"https://aexiar.github.io"},{"theme":"alt","text":"c/c++","link":"/notes/"},{"theme":"alt","text":"计组6件套","link":"https://aexiar.github.io/coa6/notes/"},{"theme":"alt","text":"前端","link":"https://aexiar.github.io/web-design/notes/"},{"theme":"alt","text":"Java","link":"https://aexiar.github.io/java/notes/"},{"theme":"alt","text":"大数据","link":"https://aexiar.github.io/big-data/notes/"},{"theme":"alt","text":"云原生","link":"https://aexiar.github.io/linux/notes/"}]},"features":[{"title":"学习思路","details":"学习思路就这么几条:模仿、遍历、分治、动态规划、……"},{"title":"学习手法","details":"学习手法就这么几种:缓存、索引、信号/事件、回调/消息循环/dispatcher、……"},{"title":"注意事项","details":"注意事项就这么几点:边界值、等价类、数据完整性原子性、死锁、空转、……"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1720685105000}'),i={name:"index.md"};function n(o,s,l,r,d,h){return a(),e("div")}const p=t(i,[["render",n]]);export{c as __pageData,p as default}; diff --git a/assets/index.md.LKQAh9T8.lean.js b/assets/index.md.LKQAh9T8.lean.js new file mode 100644 index 0000000..4b555a9 --- /dev/null +++ b/assets/index.md.LKQAh9T8.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a}from"./chunks/framework.D1oHBMsh.js";const c=JSON.parse('{"title":"许大仙的博客","titleTemplate":"Hi,终于等到你","description":"许大仙前端、Java、大数据、云原生","frontmatter":{"layout":"home","home":true,"title":"许大仙的博客","titleTemplate":"Hi,终于等到你","editLink":true,"lastUpdated":true,"head":[["meta",{"name":"description","content":"许大仙前端、Java、大数据、云原生"}],["meta",{"name":"keywords","content":"许大仙,许大仙的博客"}]],"hero":{"name":"许大仙同学","text":"","tagline":"『这个世纪疯狂,没人性,腐败;你却一直清醒,温柔,一尘不染。』","actions":[{"theme":"brand","text":"首页","link":"https://aexiar.github.io"},{"theme":"alt","text":"c/c++","link":"/notes/"},{"theme":"alt","text":"计组6件套","link":"https://aexiar.github.io/coa6/notes/"},{"theme":"alt","text":"前端","link":"https://aexiar.github.io/web-design/notes/"},{"theme":"alt","text":"Java","link":"https://aexiar.github.io/java/notes/"},{"theme":"alt","text":"大数据","link":"https://aexiar.github.io/big-data/notes/"},{"theme":"alt","text":"云原生","link":"https://aexiar.github.io/linux/notes/"}]},"features":[{"title":"学习思路","details":"学习思路就这么几条:模仿、遍历、分治、动态规划、……"},{"title":"学习手法","details":"学习手法就这么几种:缓存、索引、信号/事件、回调/消息循环/dispatcher、……"},{"title":"注意事项","details":"注意事项就这么几点:边界值、等价类、数据完整性原子性、死锁、空转、……"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1720685105000}'),i={name:"index.md"};function n(o,s,l,r,d,h){return a(),e("div")}const p=t(i,[["render",n]]);export{c as __pageData,p as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000..b6b603d Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000..def40a4 Binary files /dev/null and b/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 0000000..e070c3d Binary files /dev/null and b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000..a3c16ca Binary files /dev/null and b/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000..2210a89 Binary files /dev/null and b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/assets/inter-italic-latin.C2AdPX0b.woff2 b/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 0000000..790d62d Binary files /dev/null and b/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 0000000..1eec077 Binary files /dev/null and b/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 0000000..2cfe615 Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 0000000..e3886dd Binary files /dev/null and b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000..36d6748 Binary files /dev/null and b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000..2bed1e8 Binary files /dev/null and b/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000..9a8d1e2 Binary files /dev/null and b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000..07d3c53 Binary files /dev/null and b/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000..57bdc22 Binary files /dev/null and b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/assets/notes_01_c-basic_01_xdx_index.md.D1hb9NAd.js b/assets/notes_01_c-basic_01_xdx_index.md.D1hb9NAd.js new file mode 100644 index 0000000..4e185cf --- /dev/null +++ b/assets/notes_01_c-basic_01_xdx_index.md.D1hb9NAd.js @@ -0,0 +1,226 @@ +import{_ as s,c as a,o as i,a5 as n}from"./chunks/framework.D1oHBMsh.js";const l="/coa6/assets/1.D4a42fT1.jpg",e="/coa6/assets/2.D2wnxl5F.png",t="/coa6/assets/3.Dq625oo9.jpg",p="/coa6/assets/4.uqu1DEK4.png",r="/coa6/assets/5.C6Q0Q8kf.jpg",c="/coa6/assets/6.B4Srsb-0.png",o="/coa6/assets/7._D_c8Lrn.png",h="/coa6/assets/8.DlIyFGDg.png",d="/coa6/assets/9.7zkUmpQw.png",k="/coa6/assets/10.h1ugtjyX.png",u="/coa6/assets/11.D5PWTabw.png",g="/coa6/assets/12.Bvs6QYjl.jpg",b="/coa6/assets/9.7zkUmpQw.png",m="/coa6/assets/14.CsR5exrN.png",E="/coa6/assets/15.BRG9GQdT.png",y="/coa6/assets/16.C2sciGZn.png",C="/coa6/assets/17.DdyXXyxJ.png",F="/coa6/assets/18.DIeb_KXW.png",_="/coa6/assets/19.C-kvMz2p.png",v="/coa6/assets/20.CQqFxmDa.png",A="/coa6/assets/21.CjMWyIiX.png",f="/coa6/assets/22.DFQhcDgs.png",x="/coa6/assets/23.Cco1vsW8.png",B="/coa6/assets/24.D60Zf6_d.png",D="/coa6/assets/25.D2-G6nV2.png",q="/coa6/assets/26.DpzkVk5V.png",w="/coa6/assets/27.BXk95GIP.png",S="/coa6/assets/28.CbWTB08W.png",P="/coa6/assets/29.twO9TCIg.png",L="/coa6/assets/30.CKOjeIvS.png",W="/coa6/assets/31.DKmR0CxE.png",T="/coa6/assets/32.Cudf77_s.gif",I="/coa6/assets/33.BBUUlhRC.png",O="/coa6/assets/34.iLABkB7O.png",M="/coa6/assets/35.BQuYWOU9.png",N="/coa6/assets/36.CslpH6j0.png",U="/coa6/assets/37.BAyvZdKq.png",R="/coa6/assets/38.C3oC1iUd.png",G="/coa6/assets/39.Ds-jsEZn.png",H="/coa6/assets/40.Cd37gMYs.png",V="/coa6/assets/41.CAw2z3gc.png",X="/coa6/assets/42.DdPThnr-.png",K="/coa6/assets/43.q_rvlDnY.png",Q="/coa6/assets/44.JRHg9RZA.png",j="/coa6/assets/45.Baq-Hb06.png",J="/coa6/assets/46.c1ht53mu.png",$="/coa6/assets/47.CAZmH5Py.png",Y="/coa6/assets/48.DWeCYBe9.png",z="/coa6/assets/49.2XM8pYni.png",Z="/coa6/assets/50.CN0t-fuo.png",ss="/coa6/assets/51.AcDh3LXQ.png",as="/coa6/assets/52.CUkDFAc6.png",is="/coa6/assets/53.picNTNaJ.png",ns="/coa6/assets/54.DKX92RgJ.png",ls="/coa6/assets/55.Bxr7QKI3.png",es="/coa6/assets/56.DuFWsOgW.png",ts="/coa6/assets/57.Da9qUcfr.png",ps="/coa6/assets/58.7_gEABSX.gif",rs="/coa6/assets/59.C2KQYoVC.gif",cs="/coa6/assets/60.RTUP8Vtx.png",os="/coa6/assets/61.Dq21DxwL.png",hs="/coa6/assets/62.QmpUaNxU.png",ds="/coa6/assets/63.DP0C29gZ.png",ks="/coa6/assets/64.DwzHokd4.png",us="/coa6/assets/65.Bi6K26yA.png",gs="/coa6/assets/66.Bw8DcEQ_.png",bs="/coa6/assets/67.DPc8Z9rS.png",ms="/coa6/assets/68.S84xHMTl.png",Es="/coa6/assets/69.iw3JQUkn.png",ys="/coa6/assets/70.ILeJt-HK.png",Cs="/coa6/assets/71.CHgm7khh.png",Fs="/coa6/assets/72.N1nqJaEg.png",_s="/coa6/assets/73.DHsnibMi.png",vs="/coa6/assets/74.BQr6Q0uV.png",As="/coa6/assets/75.BVemi2Lh.png",fs="/coa6/assets/76.BHR69UXx.png",xs="/coa6/assets/77.CPSU5SJI.png",Bs="/coa6/assets/78.CaQLoDlw.png",Ds="/coa6/assets/79.aRGy4XbL.png",qs="/coa6/assets/80.kNO9fmPR.png",ws="/coa6/assets/81.D4EkoC4o.png",Ss="/coa6/assets/82.V23Lo9e_.png",Ps="/coa6/assets/83.Du9LVeMB.png",Ls="/coa6/assets/84.DdFg75U9.png",Ws="/coa6/assets/85.C6bz6KtT.png",Ts="/coa6/assets/86.CB6LAhB5.png",Is="/coa6/assets/87.Bip8bkua.png",Os="/coa6/assets/88.DRNHRduW.png",Ms="/coa6/assets/89.Cth4qqEn.png",Ns="/coa6/assets/90.DWGWZ64P.png",Us="/coa6/assets/91.3hDIDdvx.png",Rs="/coa6/assets/92.Bw_dQ4ap.png",Gs="/coa6/assets/93.Cn_ubTyA.png",Hs="/coa6/assets/94.C84EBqwB.png",Vs="/coa6/assets/95.dZfJY4eR.png",Xs="/coa6/assets/96.B0zm0Z79.png",Ks="/coa6/assets/97.CaTcEy1Q.png",Qs="/coa6/assets/98.iEc8mo9g.png",js="/coa6/assets/99.Co2KxM6t.png",Js="/coa6/assets/100.CaUm8Qhc.png",$s="/coa6/assets/101.kOkqIKG6.png",Ys="/coa6/assets/102.CyeASH-c.png",zs="/coa6/assets/103.CFdk60La.png",Zs="/coa6/assets/104.Bhl-0uK_.png",sa="/coa6/assets/105.Dni9KbXV.png",aa="/coa6/assets/106.BXx10MCV.png",ia="/coa6/assets/107.CXcIKX1T.png",na="/coa6/assets/108.CQ3_QCQT.png",la="/coa6/assets/109.CQoDRJM5.gif",ea="/coa6/assets/110.CPfwZvD9.gif",ta="/coa6/assets/111.bxEomEjU.gif",pa="/coa6/assets/112.C_onhf2k.png",ra="/coa6/assets/113.Budj3s38.gif",ca="/coa6/assets/114.CH8koQdu.gif",oa="/coa6/assets/115.kUJhxMtg.png",ha="/coa6/assets/116.BJeJJW4_.png",da="/coa6/assets/117.BCuK6eJL.gif",ka="/coa6/assets/118.rKC-z4z-.gif",ua="/coa6/assets/119.BJE3xxuT.gif",ga="/coa6/assets/120.DJOq__O0.gif",ba="/coa6/assets/121.BDt_0fRR.png",ma="/coa6/assets/122.Bo5OawW8.png",Ea="/coa6/assets/123.sUWUfl5e.png",ya="/coa6/assets/124.BK4jpnB8.png",Ca="/coa6/assets/125.EF8vdbSq.png",Fa="/coa6/assets/126.DjxdA_Co.png",_a="/coa6/assets/127.sp68q1hh.gif",va="/coa6/assets/128.DhMRyxNN.gif",Aa="/coa6/assets/129.CdcLZM0R.gif",fa="/coa6/assets/130.D-5AsTTr.png",xa="/coa6/assets/131.2RQKmAUa.png",Ba="/coa6/assets/132.CI4xX8SM.png",Da="/coa6/assets/133.C8QUZ9v3.gif",qa="/coa6/assets/134.g5tQfhWz.gif",wa="/coa6/assets/135.CX0_1NsE.gif",Sa="/coa6/assets/136.BrFJeoK6.png",Pa="/coa6/assets/137.58TjSSjH.gif",La="/coa6/assets/138.CgqNV2hL.png",Wa="/coa6/assets/139.BasYWvkM.png",Ta="/coa6/assets/140.CjFxJpBr.png",Ia="/coa6/assets/141.Dm5Jspvp.gif",Oa="/coa6/assets/142.1krCh8cy.gif",Ma="/coa6/assets/143.DOSyahv7.gif",Na="/coa6/assets/144.BHEvX_FI.gif",Ua="/coa6/assets/145.DFA0g1_d.gif",Ra="/coa6/assets/146.D50nO5eA.gif",Ga="/coa6/assets/147.cAvG1Qfq.png",Ha="/coa6/assets/148.DpakQFWz.gif",Va="/coa6/assets/149.Bg61j9QI.gif",Xa="/coa6/assets/150.DPvD9UCw.gif",Ka="/coa6/assets/151.Ceu65U_n.gif",Qa="/coa6/assets/152.BWPFRK_8.gif",ja="/coa6/assets/153.Ct4TfxPf.gif",Ja="/coa6/assets/154.zsKtx_jV.png",$a="/coa6/assets/155.3oqDAW0w.png",Ya="/coa6/assets/156.D9TSeAa9.gif",za="/coa6/assets/157.CCRgYIVq.png",Za="/coa6/assets/158.C1t2T6FV.gif",si="/coa6/assets/159.Rqa4uHq6.png",ai="/coa6/assets/160.6yQYnjOa.gif",ii="/coa6/assets/161.hYR9GiiD.gif",ni="/coa6/assets/162.D3b-QIrA.gif",li="/coa6/assets/163.DGbA6qsW.gif",ei="/coa6/assets/164.BToOkxf2.gif",mi=JSON.parse('{"title":"第一章:计算机组成原理","description":"","frontmatter":{},"headers":[],"relativePath":"notes/01_c-basic/01_xdx/index.md","filePath":"notes/01_c-basic/01_xdx/index.md","lastUpdated":1720685105000}'),ti={name:"notes/01_c-basic/01_xdx/index.md"},pi=n('

第一章:计算机组成原理

1.1 计算机系统

  • 计算机(Computer),俗称"电脑",是一种能够接收和存储信息,并按照存储在其内部的程序对海量的数据进行自动、高速的处理,然后将处理结果输出的现代化智能电子设备。
  • 计算机有很多形式,如:台式电脑、笔记本电脑、智能手机、平板电脑等,还有生产环境中提供重要业务支撑的各种服务器。

  • 一个完整的计算机系统硬件(Hardware)系统软件(Software)系统两大部分组成,即:

1.2 冯·诺依曼体系结构

  • 冯·诺依曼是一位多才多艺的科学家,他在数学、物理学、计算机科学、经济学等领域都有杰出的贡献。

  • 冯·诺依曼的主要成就:
    • 在计算机科学领域的最著名贡献是提出了冯·诺依曼体系结构(1946 年),这是现代计算机设计的基础
    • 促进了计算机的可编程性和通用性,使得计算机能够执行各种复杂的任务。
    • 对核武器设计、自动化控制系统、人工智能等领域的发展产生了重要影响。
    • ……

IMPORTANT

冯·诺依曼体系结构是现代计算机(量子计算机除外)设计的基础

  • 冯·诺依曼体系结构的理论要点如下:

    • 存储程序程序指令数据都存储在计算机的内存中,这使得程序可以在运行时修改。

    • 二进制逻辑:所有数据指令都以二进制形式表示。

    • 顺序执行:指令按照它们在内存中的顺序执行,但可以有条件地改变执行顺序。

    • 五大部件:计算机由运算器控制器存储器输入设备输出设备组成。

    • 指令结构:指令由操作码和地址码组成,操作码指示要执行的操作,地址码指示操作数的位置。

    • 中心化控制:计算机的控制单元(CPU)负责解释和执行指令,控制数据流。

NOTE

上述的组件协同工作,构成了一个完整的计算机系统:

  • 运算器控制器通常被集成在一起,组成中央处理器(CPU),负责数据处理和指令执行。
  • 存储器保存数据和程序,是计算机运作的基础。
  • 输入设备输出设备负责与外界的交互,确保用户能够输入信息并接收计算机的处理结果。

1.3 各种硬件处理速度和性能优化

  • 计算机的性能短板:如果 CPU 有每秒处理 1000 个服务请求的能力,各种总线的负载能力能达到 500 个, 但网卡只能接受 200个请求,而硬盘只能负担 150 个的话,那这台服务器得处理能力只能是 150 个请求/ 秒,有 85% 的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一 步提高的瓶颈。

img

  • 计算机的各个设备部件的延迟从高到低的排列,依次是机械硬盘(HDD)、固态硬盘(SSD)、内存、CPU 。

img

  • 从上图中,我们可以知道,CPU 是最快的,一个时钟周期是 0.3 ns ,内存访问需要 120 ns ,固态硬盘访问需要 50-150 us,传统的硬盘访问需要 1-10 ms,而网络访问是最慢,需要 40 ms 以上。
  • 时间的单位换算如下:
txt
1 秒 = 1000 毫秒,即 1 s = 1000 ms。
+1 毫秒 = 1000 微妙,即 1 ms = 1000 us 。
+1 微妙 = 1000 纳秒,即 1 us = 1000 ns。
  • 按照上图,将计算机世界的时间和人类世界的时间进行对比,即:
txt
如果 CPU 的时钟周期按照 1 秒计算,
+那么,内存访问就需要 6 分钟;
+那么,固态硬盘就需要 2-6 天;
+那么,传统硬盘就需要 1-12 个月;
+那么,网络访问就需要 4 年以上。
  • 所以,对于 CPU 来说,这个世界真的是太慢了!!!
  • 其实,中国古代中的文人,通常以蜉蝣来表示时间的短暂(和其他生物的寿命比),也是类似的道理,即:
txt
鹤寿千岁,以极其游,蜉蝣朝生而暮死,尽其乐,盖其旦暮为期,远不过三日尔。
+	                                        --- 出自 西汉淮南王刘安《淮南子》
txt
寄蜉蝣于天地,渺沧海之一粟。 哀吾生之须臾,羡长江之无穷。 
+挟飞仙以遨游,抱明月而长终。 知不可乎骤得,托遗响于悲风。
+	                                        --- 出自 苏轼《赤壁赋》

NOTE

对于蜉蝣来说,从早到晚就是一生;而对于我们人类而言,却仅仅只是一天。

  • 存储器的层次结构(CPU 中也有存储器,即:寄存器、高速缓存 L1、L2 和 L3),如下所示:

img

NOTE

上图以层次化的方式,展示了价格信息,揭示了一个真理,即:天下没有免费的午餐(千万不要相信别人会有发财的机会和你共享,人都是自私的,你算个啥?为什么要找你?)

  • ① 存储器越往上速度越快,但是价格越来越贵, 越往下速度越慢,但是价格越来越便宜。
  • ② 正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案

1.4 计算机软件

1.4.1 操作系统的来源

  • 在上古时期,硬件资源不够丰富,计算机设计的也非常简陋。那个时候,很多应用程序都是直接跑在硬件上的,即:一个计算机只能跑一个应用程序。

  • 随着技术的发展,硬件越来越丰富,功能也越来越强大,性能也越来越好。这种情况下,如果一台计算机只能跑一个程序,实在是太浪费了。而且,底层硬件不断丰富,应用程序需要对接的硬件也将越来越多,如果每个应用程序都这么干,不显示工作很重复吗?于是,操作系统应运而生了。

  • 操作系统的功能:
    • 硬件驱动。
    • 进程管理。
    • 内存管理。
    • 网络管理。
    • 安全管理。
    • 文件管理。
  • 那么,操作系统的作用,就是这样的,即:
    • 对下,管理计算机的硬件资源。
    • 对上,提供使用计算机资源的操作方式,有:
      • 系统调用:是一套已经写好的代码接口,应用程序通过调用这些接口来请求操作系统执行特定的硬件操作。它们直接与硬件交互,提供底层功能支持,如:文件操作、进程管理、内存管理等。开发者通过系统调用可以实现对底层资源的直接控制,确保程序能够高效、安全地运行。
      • 终端命令:是一种文本命令接口,通过命令行输入各种指令来控制操作系统和软件的行为。终端命令可以执行文件操作、系统配置、网络管理等各种任务。主要针对开发人员高级用户,他们通过命令行可以快速、精确地完成各种操作,提高工作效率。
      • 图形用户界面(GUI)是通过图形元素(如:窗口、图标、按钮等)与用户进行交互的界面。供直观、易用的操作方式,使用户能够通过鼠标点击、拖拽等简单操作完成复杂任务。主要面向普通用户,降低了计算机操作的门槛,提高了用户体验和工作效率。

1.4.2 用户态和内核态

  • 在现代操作系统中,用户态(User Mode)内核态(Kernel Mode)是两种不同的执行模式,它们对系统资源的访问权限有着本质的区别。这种区分是为了提供一个稳定和安全的运行环境,防止用户程序直接操作硬件设备和关键的系统资源,从而可能引起系统的不稳定或安全问题。

  • 核态(Kernel Mode) VS 用户态(User Mode):
类型内核态(Kernel Mode)用户态(User Mode)
权限内核态是操作系统代码运行的模式,拥有访问系统全部资源和执行硬件操作的最高权限。在这种模式下,操作系统的核心部分可以直接访问内存、硬件设备控制、管理文件系统和网络通信等。用户态是普通应用程序运行的模式,具有较低的系统资源访问权限。在用户态,程序不能直接执行硬件操作,必须通过操作系统提供的接口(即系统调用)来请求服务。
安全性由于内核态具有如此高的权限,因此只有可信的、经过严格审查的操作系统核心组件才被允许在此模式下运行。这样可以保护系统不被恶意软件破坏。用户态为系统提供了一层保护,确保用户程序不能直接访问关键的系统资源,防止系统崩溃和数据泄露。
功能内核态提供了系统调用的接口,允许用户态程序安全地请求使用操作系统提供的服务,比如:文件操作、网络通信、内存管理等。用户态保证了操作系统的稳定性和安全性,同时也使得多个程序可以在相互隔离的环境中同时运行,避免相互干扰。

NOTE

  • ① 操作系统通过用户态和内核态的分离,实现了对系统资源的保护和控制。
  • ② 当用户程序需要进行文件读写、网络通信或其他需要操作系统介入的操作时,会发生从用户态到内核态的切换。这通过系统调用(System Call)实现,系统调用是用户程序与操作系统内核通信的桥梁。
  • ③ 执行完毕后,系统从内核态返回用户态,继续执行用户程序。
  • ④ 用户态和内核态的这种分离设计是现代操作系统中实现安全、稳定运行的关键机制之一。
  • 示例:
java
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+public class Demo {
+    public static void writeFile(String filePath, String content) {
+        Path path = Paths.get(filePath);
+        try {
+            Files.write(path, content.getBytes());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+    public static void main(String[] args){
+        int a = 10;                                 // 用户态
+        int b = 20;                                 // 用户态
+        int c = a + b;                              // 用户态
+        string filePath = "c:/demo.txt";            // 用户态
+        string txt = a + b + c;                     // 用户态
+        
+        writeFile(filePath, a);                     // 从用户态切换到内核态完成文件写入
+        
+        System.out.println(a);                      // 从内核态切换回用户态
+        System.out.println(b);                      // 用户态
+        System.out.println(c);                      // 用户态
+    }
+}

1.4.3 ISA、ABI 和 API

  • ISA 、ABI 和 API 的参考模型如下:

  • 在底层,硬件模型以指令集架构 (ISA) 表示,该架构定义了处理器、寄存器、存储器和中断管理的指令集。ISA 是硬件和软件之间的接口,对于操作系统 (OS) 开发人员 (System ISA) 和直接管理底层硬件的应用程序 (User ISA) 的开发人员来说非常重要。

NOTE

  • ① ISA 是计算机体系结构中定义的一组指令,它规定了处理器能够执行的操作。ISA 包括指令的编码、寄存器的使用、内存访问模式等。不同的处理器可能有不同的 ISA,例如:x86、ARM、MIPS 等。
  • ② 在设计一个新的操作系统时,开发者需要确保操作系统能够支持特定的 ISA ,以便在特定的硬件上运行。例如:如果操作系统旨在运行在 ARM 架构的处理器上,那么它必须能够理解和执行 ARM ISA 定义的指令集。
  • 应用程序二进制接口 (ABI) 将操作系统层与由操作系统管理的应用程序分开。ABI 涵盖了低级数据类型、对齐方式和调用约定等详细信息,并定义了可执行程序的格式。系统调用在此级别定义。此接口允许应用程序和库在实现相同 ABI 的操作系统之间移植。

NOTE

  • ① ABI 是指在二进制级别上,应用程序与操作系统、库或应用程序的不同部分之间的接口。它定义了数据类型的大小、布局、对齐方式,以及函数调用的约定(如参数如何传递、返回值如何处理等)。ABI 确保了编译后的二进制文件能够在特定的操作系统和硬件平台上正确地运行。
  • ② 在 windows 上的应用程序的运行格式是:PE(portable executable)格式、.dll (dynamic link library)格式和 .lib 格式;而在 Linux 上的应用程序的运行格式是:ELF(executable and linking format)格式、.so (shared object)格式和 .a 格式。
  • ③ 在 Linux 中可以通过 file /bin/ls 命令查看指定可执行应用程序的 ABI 格式;从而也可以论证,在 Windows 上可以运行的程序,在 Linux 上运行不了。
  • ④ 当开发者在 Linux 系统上编写 C 语言程序,并使用特定的编译器(如:GCC)编译时,编译器会遵循 Linux 平台的 ABI 规范来生成二进制文件。这样,生成的可执行文件就可以在任何遵循相同 ABI 规范的 Linux 系统上运行。
  • ⑤ 如果一个应用程序需要跨平台(操作系统)运行,就需要使用一套代码,多平台编译的方式(针对 C 或 C++ 等),即:相同的源代码,在不同平台(操作系统)上使用特定平台的编译器(如:GCC)来分别编译成符合自己平台的 ABI 规范的二进制文件。
  • 最高级别的抽象由应用程序编程接口 (API) 表示,它将应用程序连接到底层操作系统

NOTE

  • ① API 是一组预定义的函数、协议和工具,用于构建软件和应用程序。API 允许不同的软件系统相互交互,它定义了软件组件之间如何相互通信。API 可以是库、框架、协议或服务。
  • ② 在 Web 开发中,开发者可能会使用 JavaScript 的 Fetch API 来与服务器进行通信,获取数据或提交表单。这个 API 提供了一种标准化的方式来发送 HTTP 请求和处理响应,而不需要开发者关心底层的网络协议细节。

1.4.4 系统调用(System Call)和函数库(Library Call)

  • 在现代操作系统中,应用程序都不能直接作用于硬件,而是运行在操作系统之上。

  • 并且,在上文的图示中,我们也会看到系统调用(System Call)函数库(Library Call)的身影,如下:

  • 其实,系统调用(System Call)函数库(Library Call)的区别如下:
类型系统调用(System Call)函数库(Library Call)
定义系统调用是操作系统提供给程序员的一组接口,这些接口允许用户空间的程序请求操作系统内核提供的服务,比如文件操作、进程控制、通信和内存管理等。函数库调用是指使用高级语言编写的一组预先编译好的函数,这些函数实现了一些常用的功能,比如:字符串处理、数学计算等。程序员可以在自己的程序中直接调用这些函数,而无需重新实现它们。
权限执行系统调用时,会从用户态切换到内核态。这是因为系统调用涉及到访问受保护的系统资源,这些操作必须由操作系统控制以确保系统的稳定性和安全性。函数库调用通常在用户态执行,不涉及到用户态与内核态之间的切换。它们直接使用操作系统通过系统调用提供的服务,或者完全在用户空间内完成计算,不需要操作系统介入。
性能开销由于涉及到用户态与内核态之间的切换,系统调用的执行成本相对较高。因此,频繁的系统调用可能会影响程序的性能。相对于系统调用,函数库调用的性能开销较小。因为它们通常不涉及到模式切换,且执行的操作多在用户空间完成。
示例open(),read(),write(),fork(),exec() 等 UNIX/Linux 系统调用。C 标准库中的 printf() 等函数;数学库中的 sin(),cos() 等函数。

NOTE

  • 执行层级:系统调用直接与操作系统内核交互,执行更底层的操作;而函数库调用运行在用户空间,通常使用系统调用来实现其功能。
  • 性能开销:系统调用由于涉及到用户态与内核态的切换,性能开销相对较大;函数库调用则因为主要在用户态执行,性能开销较小。
  • 使用目的:系统调用提供了访问操作系统资源和服务的能力;函数库调用则提供了方便、高效执行常见任务的手段。

第二章:初识计算机语言

2.1 计算机语言是什么?

  • 人类语言是人和人之间用于沟通的一种方式,例如:中国人和中国人之间使用普通话沟通,而中国人和美国人交流,则可以使用英语。
  • 计算机编程语言是人和计算机交流的方式。人们可以使用编程语言对计算机下达命令(指令),让计算机完成人们需要的功能。

NOTE

计算机语言有很多种,如:C、C++、Java、Go、JavaScript、Python、Scala 等。

2.2 为什么要学习计算机语言?

  • 编程语言到底是什么?编程语言就是由文字和符号组成的,如:
c
#include <stdio.h> // 这是编译预处理指令
+
+int main() { // 定义主函数
+
+    printf("你好,世界!!!"); // 输出所指定的一行信息
+
+    return 0;  // 函数执行完毕时返回函数值0
+}
  • 编程语言就是用于控制计算机,让其完成我们需要的功能。而我们学习编程语言,其实就是学习这些文字和符号编写的规则。
  • 因为 CPU 只能识别二进制的指令,而我们编写的程序叫做源代码,是人类能看懂;但是,计算机却不能识别。那么,我们就需要让计算机能识别我们编写的源程序,就需要将我们编写的源代码交给编译器程序,其会帮助我们将所编写的源代码转换为计算机能够识别的二进制指令。

NOTE

编译器就是运行在操作系统之上的程序,其作用就是用来将程序员编写的源代码转换为计算机能够识别的二进制指令。

  • 如果我们用 Java 语言编写了程序(源代码),那么编写的程序也是不能直接运行的,需要通过 Java 语言的编译器将 Java 程序编译为计算机能够识别的二进制指令。
  • 如果我们用 Python 语言编写了程序(源代码),那么编写的程序也是不能直接运行的,需要通过 Python 语言的编译器将 Python 程序编译为计算机能够识别的二进制指令。
  • ……
  • 总而言之,无论我们学习任何一门编程语言,想要将程序运行起来,都必须做如下的两件事情:
    • ① 学习该语言的文字和符号编写的规则,即:语法规则
    • ② 需要在操作系统上安装对应编程语言的编译器程序,将源程序编译为计算机能够识别的二进制指令。

2.3 计算机语言简史

2.3.1 机器语言(相当于人类的石器时代)

  • 1946 年 2 月 14 日,世界上第一台计算机 ENIAC 诞生,使用的是最原始的穿透卡片

  • 这种卡片使用的是用二进制代码表示的语言,和人类语言差别极大,这种语言就称为机器语言,如:
txt
0000,0000,000000010000 代表 LOAD A, 16
+0000,0001,000000000001 代表 LOAD B, 1
+0001,0001,000000010000 代表 STORE B, 16
  • 这种语言本质上是计算机能识别的唯一语言,人类很难理解;换言之,当时的程序员 99.9% 都是异类!!!

IMPORTANT

不同类型(CPU 架构,如:x86_64、arm 等)的处理器有不同的机器语言指令集,指令集架构(ISA)决定了机器语言的具体形式;换言之,机器语言与特定硬件架构紧密相关,机器语言程序几乎没有可移植性。

2.3.2 汇编语言(相当于人类的青铜&铁器时代)

  • 汇编语言使用助记符(如:MOV、ADD、SUB)代替二进制操作码,使程序更易于人类编写和理解;因此,汇编语言也被称为符号语言

  • 汇编语言的优点是能编写高效率的程序;但是,缺点和机器语言没什么不同,汇编语言同样依赖于具体的计算机架构(面向机器),程序不具备跨平台的可移植性。

NOTE

汇编语言,目前仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。

2.3.3 高级语言(相当于人类的信息时代)

  • 高级语言是一种接近于人们使用习惯的程序设计语言。它允许程序员使用接近日常英语的指令来编写程序,程序中的符号和算式也和日常使用的数学公式差不多,接近于自然语言和数学语言,容易被人们掌握。

  • 高级语言独立于计算机硬件,有一定的通用性;计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器解释器转换为机器语言,才能被计算机识别和执行。

NOTE

普遍使用的高级编程语言,有:C、C++、Java、Python、C#、JavaScript、Go、SQL 等。

2.3.4 总结

  • 编写语言的对比,如下所示:
类别特征优点缺点示例
机器语言直接由计算机执行的二进制代码执行速度快编写困难,可读性差,与具体硬件强绑定二进制代码
汇编语言用助记符代替二进制代码的低级语言相对机器语言更易编写和理解,允许直接控制硬件资源依然需要了解硬件,不够抽象,与具体硬件或平台相关MOV,ADD 等助记符
高级语言接近人类语言,提供了更高层次的抽象易于编写和维护,可移植性好,支持多种编程范式需要通过编译器或解释器转换为机器语言,可能存在一定的性能损失C,Java, Python 等

NOTE

  • ① 这三种编程语言类型从低级到高级提供了不同层次的抽象,以满足不同的编程需求和场景。
  • ② 随着计算机科学的发展,高级语言因其强大的表达能力、良好的可移植性和易用性,成为了日常软件开发的主流选择。

第三章:初识 C 语言

3.1 C 语言的由来

  • 1969 年,美国贝尔实验室的肯·汤姆森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)一起开发了 Unix 操作系统。Unix 最初是使用汇编语言编写的,依赖于计算机硬件。为了程序的可读性可移植性,它们决定使用高级语言重写。但是。当时的高级语言无法满足他们的要求,肯·汤姆森就在 BCPL 语言的基础上发明了 B 语言。
  • 1972 年,丹尼斯·里奇(Dennis Ritchie)在 B 语言的基础上重新设计了一种新的语言,这种新语言取代了 B 语言,即 C 语言。

  • 1973 年,整个 Unix 系统都使用 C 语言重写

NOTE

C 语言最初是作为 Unix 系统的开发工具而发明的。

  • 此后,这种语言快速流传,广泛用于各种操作系统和系统软件的开发,如:Unix、MS-DOS、Microsoft Windows 以及 Linux 等。

  • 1988 年,美国国家标准协会(ANSI)正式将 C 语言标准化,标志着 C 语言开始稳定和规范化。

3.2 为什么要学习 C 语言?

  • C 语言具有可移植好、跨平台的特点:用 C 语言编写的代码可以在不同的操作系统和硬件平台上编译和运行。

NOTE

C 语言的最原始的设计目的,就是为了将 Unix 操作系统移植到其他的计算机架构上,这使得它从一开始就非常注重可移植性。

  • C 语言在许多领域应用广泛
    • 操作系统:C 广泛用于开发操作系统,如:Unix、Linux 和 Windows。
    • 嵌入式系统:C 是一种用于开发嵌入式系统(如:微控制器、微处理器和其它电子设备)的流程语言。
    • 系统软件:C 用于开发设备驱动程序、编译器和汇编器等系统软件。
    • 网络:C 语言广泛用于开发网络应用程序,例如:Web 服务器、网络协议和网络驱动程序。
    • 数据库系统:C 用于开发数据库系统,例如:Oracle、MySQL 和 PostgreSQL 。
    • 游戏:由于 C 能够处理低级硬件交互,因此经常用于开发计算机游戏。
    • 人工智能:C 用于开发人工智能和机器学习的应用程序,例如:神经网络和深度学习算法。
    • 科学应用:C 用于开发科学应用程序,例如:仿真软件和数值分析工具。
    • 金融应用:C 用于开发股票市场分析和交易系统等金融应用。
  • ③ C 语言能够直接对硬件进行操作、管理内存以及和操作系统对话,这使得它是一种非常接近底层的语言,非常适合写需要和硬件交互、有极高性能要求的程序。
  • 学习 C 语言有助于快速上手其他编程语言,如:C++(原先是 C 语言的一个扩展,在 C 语言的基础上嫁接了面向对象编程思想)、C#、Java 等,这些语言都继承或深受 C 语言的影响和启发。
  • ⑤ C 语言长盛不衰。C 语言至今,依然是最广泛使用、最流行的编程语言之一,包括很多大学将 C 语言作为计算机教学的入门语言,拥有庞大而活跃的用户社区,这意味着有许多资源和库可供开发人员使用。

3.3 计算机语言排行榜

  • TIOBE 是一个流行编程语言排行,每月更新。排名权重基于世界范围内工程师数量,Google、Bing、Yahoo! 、Wikipedia、Amazon、Youtube 和百度这些主流的搜索引擎,也将作为排名权重的参考指标。

  • 计算机语言走势图:

3.4 C 语言的版本选择

  • 随着微型计算机的日益普及,出现了许多 C 语言版本(标准)。

    • 版本 1(K&R C):K&R C 指的是 C 语言的原始版本。1978年,C 语言的发明者布莱恩·柯林(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合写了一本著名的教材《C 编程语言》(The C programming language)。

    NOTE

    由于 C 语言还没有成文的语法标准,这本书就成了公认标准,以两位作者的姓氏首字母作为版本简称 “K&R C”。

    • 版本 2(ANSI C,又称 C89 或 C90):C 语言的原始版本非常简单,对很多情况的描述非常模糊,加上 C 语法依然在快速发展,要求将 C 语言标准化的呼声越来越高。1989 年,美国国家标准协会(ANSI)制定了一套 C 语言标准,并于次年被国际标准化组织(ISO)通过。它被称为 “ANSI C”,也可以按照发布年份,称为 “C89 或 C90”。

    • 版本 3(C99):C 语言标准的第一次大型修订,发生在 1999 年,增加了许多语言特性,比如:双斜杠( // )的注释语法,可变长度数组、灵活的数组成员、复数、内联函数和指定的初始值设定项,这个版本称为 C99,是目前最流行的 C 版本

    • 版本 4(C11):2011 年,标准化组织再一次对 C 语言进行修订,增加了_Generic、static_assert 和原子类型限定符。这个版本称为 C11。

    NOTE

    需要强调的是,修订标准的原因并不是因为原标准不能用,而是需要跟进新的技术。

    • 版本 5(C17):C11 标准在 2017 年进行了修补,但发布是在 2018 年。新版本只是解决了 C11 的一些缺陷,没有引入任何新功能。这个版本称为 C17。
    • 版本 6(C23):2023 年发布,计划进一步增强安全性,消除实现定义的行为,引入模块化语言概念等新特性,使 C 语言在安全和可靠性方面有重大提高。
    • ……
  • 需要注意的是,C 语言的标准并没有强制性的约束,只是个说明文档而已。不同的编译器产商,对 C 语言的标准有不同的实现,甚至会出现某些 C 语言的标准在这个编译器下实现了;但是,在另外的编辑器下却没有实现,导致编译程序错误的现象。常见的 C/C++ 编译器如下:

    • Borland C++ 宝蓝公司。
    • Intel C++ 英特尔编译器。
    • MSVC 微软公司。
    • g++ 编译器(GCC,编译套件), Linux 操作系统。

IMPORTANT

GCC 编译套件对标准的支持是最好的;所以,在实际项目开发中,我们首先会选用 GCC 编译套件来进行开发。

3.5 C 语言的优缺点

  • C 语言的优点:

    • ① 高效:C 语言生成的代码非常高效,执行速度快,这使得其非常适合用于操作系统、嵌入式系统等需要高性能的场景。
    • ② 灵活性和低级控制:C 语言允许直接操作内存和硬件,可以进行位操作、指针运算等底层编程,非常适合开发需要直接硬件控制的应用。
    • ③ 广泛的硬件和平台支持:C 语言几乎可以在所有的计算机平台上运行,从微处理器到超级计算机,几乎所有的硬件平台都支持 C 语言。
    • ④ 标准库丰富:C 语言有一个标准库(C Standard Library),提供了大量常用的函数,涵盖了文件操作、字符串处理、内存管理等多种功能。
    • ⑤ 语言简洁:语法规则相对简单,没有过多的复杂特性,使得语言本身比较容易学习和掌握。
  • C 语言的缺点:

    • ① 缺乏高级特性:和现代编程语言相对,C 语言缺乏一些高级特性,如:面向对象编程、垃圾回收机制等,这使得某些类型的应用程序开发可能会更加复杂。
    • ② 安全性问题:C 语言允许直接操作内存,可能会导致缓冲区溢出、空指针引用等安全漏洞。如果不小心处理,容易产生难以调试的错误和安全隐患。
    • ③ 手动管理内存:C 语言需要程序员手动管理内存,即:分配内存和释放内存,这增加了内存泄露和悬空指针等问题的风险。
    • ④ 错误调试困难:由于 C 语言的底层操作特点,调试和排查错误可能比较困难,尤其是在处理复杂指针和内存操作的时候。
    • ⑤ 标准库有限:虽然 C 语言的标准库涵盖了很多基本功能,但相比现代编程语言的标准库,功能相对有限,尤其是在网络编程、多线程编程等方面。
  • 总而言之,C 语言的高效性和灵活性使其在系统级编程和嵌入式系统中占据重要地位,但其缺乏高级特性和内存管理上的挑战也使得开发过程可能更加复杂和容易出错。对于需要高性能和底层控制的应用,C 语言依然是不可替代的选择。

第四章:C 语言入门(Hello World,⭐)

4.1 环境的安装和配置

4.1.1 概述

  • 要开发 C/C++ 程序,需要安装 C/C++ 编译器,目前有两种主流实现,即:

    • GCC(GNU Compiler Collection):全平台实现,即支持 Windows、MacOS、Linux 等。
    • MSVC(Microsoft Visual C++):只支持 Windows 系统。
  • GCC 在 Windows 上的版本有很多,如:MinGW-w64GygwinMSYS2。它们之间的区别,如下所示:

特性MinGW-w64CygwinMSYS2
简介Minimalist GNU for WindowsPOSIX 兼容环境和工具集结合了 MinGW 和 Cygwin 的工具集
编译器提供 GCC 编译器提供 POSIX 兼容环境,包含大量工具提供 MinGW-w64 工具链和 Cygwin 环境
生成文件Windows 原生可执行文件POSIX 兼容的可执行文件可以生成 Windows 原生可执行文件或 POSIX 文件
依赖无需额外依赖依赖 Cygwin DLL根据使用工具链决定(MinGW-w64 无依赖,Cygwin 有依赖)
工具和库基本的编译工具丰富的 Unix 工具和库丰富的工具和库,强大的包管理系统
性能性能较好可能较低,因为通过兼容层调用系统取决于使用的工具链(MinGW-w64 性能较好)
复杂度简单易用设置和使用相对复杂较为灵活,复杂度介于 MinGW-w64 和 Cygwin 之间
适用场景开发 Windows 原生应用运行和开发 Unix 程序混合使用 Unix 工具和开发 Windows 原生应用
优点轻量级,直接生成 Windows 应用完整的 POSIX 兼容环境,丰富的工具灵活的环境,强大的包管理系统
缺点工具和库较少生成文件依赖 Cygwin DLL,性能可能较低环境较大,占用更多空间,复杂性比 MinGW-w64 高

NOTE

  • ① MinGW-w64 、Cygwin 以及 MSYS2 任选其一安装即可。
  • ② 目前的 Win10 和 Win11 版本支持 WSL2 (Windows Sub Linux 2 ,即 Windows 的子系统 Linux),可以实现在 Windows 系统上安装一个 Linux ,然后再运行 Linux 中的 GCC 工具链。

4.1.2 MinGW-w64 的安装和配置

4.1.2.1 安装

  • 下载到本地:略。

NOTE

下载地址在这里

  • 解压到指定的目录,即:

NOTE

本人的解压目录是:D:\\develop\\mingw64

4.1.2.2 配置 path 环境变量

  • 配置环境变量,以便任意目录都可以执行 gcc 命令,即:

NOTE

因为,本人安装 MinGW-w64 的目录是 D:\\develop\\mingw64,所以配置 path 环境变量就需要 D:\\develop\\mingw64\\bin

  • 测试是否安装成功:
shell
gcc --version

4.1.3 Cygwin 的安装和配置

4.1.3.1 安装

  • 下载到本地:略。

NOTE

下载地址在这里

  • 点击安装:

NOTE

默认是最小化安装,没有 GCC,需要选择 gcc-core、gcc-g++、make、gdb、binutils 。

4.1.3.2 配置 path 环境变量

  • 3.1.2.2 配置 path 环境变量 步骤相同:略。

4.1.4 MSYS2(推荐)

4.1.4.1 安装

  • 下载到本地:略。

NOTE

下载地址在这里

  • 点击安装:

  • 出现命令终端:

  • 替换清华镜像源(可选):
shell
sed -i "s#https\\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

  • 安装 gcc 等相关开发包:
shell
pacman -Syu --noconfirm # 更新包管理器
shell
pacman -Sy base-devel --noconfirm # 安装开发工具包
shell
pacman -Sy mingw-w64-x86_64-toolchain --noconfirm # 安装开发 gcc 相关工具链

4.1.4.2 配置 path 环境变量

  • 3.1.2.2 配置 path 环境变量 步骤相同:略。

4.2 IDE 的安装和配置

4.2.1 CLion

4.2.1.1 概述

  • CLion 是一款由 JetBrains 推出的跨平台 C/C++ 集成开发环境(IDE),它具有智能编辑器、CMake 构建支持、调试器、单元测试、代码分析等功能,可以极大提高 C/C++ 开发效率。

4.2.1.2 安装

  • 鼠标双击,进入安装:

  • 下一步:

  • 下一步:

  • 下一步:

  • 安装:

  • 安装完成:

4.2.1.3 配置

  • 打开 CLion :

  • 安装中文插件(可选):

  • 配置新 UI :

  • 新 UI 配置自定义字体(可选):

  • 配置自动保存功能:

  • 配置文件编码 为 UTF-8:

  • 配置控制台编码为 UTF-8:

  • 配置显示方法分隔符功能:

  • 配置编辑器的字体(可选):

  • 检测 GCC 工具链是否安装成功:

4.2.2 VS Code

4.2.2.1 概述

  • Visual Studio Code (VS Code) 是一个免费的开源代码编辑器,适用于 Windows、MacOS 和 Linux 平台。它支持语法高亮、智能代码补全(IntelliSense)、内置调试工具和Git集成。用户可以通过扩展来添加更多功能,如:支持新的编程语言、主题和调试工具。VS Code 还支持在微软 Azure 上进行部署和托管,适用于各种编程语言和框架。

NOTE

Visual Studio Code 需要安装对应的插件,才能运行 C/C++ 代码。

4.2.2.2 安装

  • 鼠标双击,进入安装:

  • 同意协议:

  • 下一步:

  • 下一步:

  • 下一步:

  • 安装:

  • 安装过程:

  • 安装完成:

4.2.2.3 配置

  • 安装中文插件:

  • 安装 C/C++ 插件:

4.2.3 Microsoft Visual Studio

4.2.3.1 概述

  • Visual Studio(简称 VS)是由微软公司发布的集成开发环境。它包括了整个软件生命周期中所需要的大部分工具,如:UML工具、代码管控工具、集成开发环境(IDE)等。

  • Visual Studio 支持 C/C++、C#、F#、VB 等多种程序语言的开发和测试,可以用于生成Web应用程序,也可以生成桌面应用程序,功能十分强大,但下载和安装很可能耗时数小时,还可能会塞满磁盘。

  • Visual Studio 2022 有三种版本:社区版(免费,不支持企业使用),专业版(第一年 1199 美元/ 799 美元续订)和企业版(第一年 5999 美元/ 2569 美元续订)。企业版拥有面向架构师的功能、高级调试和测试,这些功能是另两种 SKU 所没有的。

  • Visual Studio 旨在成为世界上最好的 IDE(集成开发环境),目前最新版本为 Visual Studio 2022。

4.2.3.2 安装

  • 鼠标双击,进入安装:

  • 继续:

  • 等待:

  • 工作负荷(使用 C++ 的桌面开发):

  • 单个组件:

  • 语言包:

  • 安装位置(修改默认的安装位置):

  • 如果不是第一次安装,可能会出现共享组件、工具和 SDK不可以修改,即:

  • 此时,就需要打开注册表编辑器,将如下图中的除了第一个选项,全部删除,然后关闭再重新安装,即:

  • 开始安装:

  • 安装中:

  • 安装完成,然后关闭:

4.2.3.3 配置

  • 在开始菜单处,启动 VS :

  • 登录或跳过该选项(有微软账号就注册,没有就暂时跳过):

  • 继续:

  • 注册 VS :

  • 填写注册码:

NOTE

  • ① Pro 版本:TD244-P4NB7-YQ6XK-Y8MMM-YWV2J
  • ② Enterprise 版本:VHF9H-NXBBB-638P6-6JHCY-88JWH

4.3 HelloWorld

4.3.1 手动版

  • ① 新建一个 HelloWorld.c 的文件:

  • ② 通过记事本等软件打开该文件,输入如下的代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ③ 通过 gcc 命令编译该文件:
shell
gcc HelloWorld.c -o HelloWorld.exe

  • ④ 执行:
shell
./HelloWorld.exe

4.3.2 VS Code 版

  • ① 新建一个文件夹(目录),用于存放代码:

  • ② 通过 vscode 打开该目录:

  • ③ 在 vscode 中新建 HelloWorld.c 文件:

  • ④ 设置 VSCode 中 C/C++ 的代码格式为行尾风格(可选):

  • ⑤ 编写如下的代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ⑥ 通过 gcc 命令编译该文件:
shell
gcc HelloWorld.c -o HelloWorld.exe

  • ⑦ 执行:
shell
./HelloWorld.exe

  • ⑧ 安装 Code Runner 插件(步骤略),实现右键直接编译执行(可选):

4.3.3 VS 版

  • ① 新建空项目:

  • ② 打开解决方案资源管理器

  • ③ 新建 HelloWorld.c 文件:

  • ④ 编写如下代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ⑤ 编译和执行:

4.3.4 CLion

  • ① 新建空项目:

  • ② 编写如下代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ③ 编译和运行:

  • ④ 默认情况下,一个项目只能有一个 c 源文件包含 main 函数,但是 CLion 可以有多个,如下:

  • ⑤ 如果之后,有中文乱码问题,那么请做如下步骤:

NOTE

内容如下所示:

txt
-Dfile.encoding=UTF-8
+-Dconsole.encoding=UTF-8

第五章:注释

5.1 概述

  • 编程语言中,注释是一种特殊的文本,它不会被编译器执行,而仅用于代码的解释和文档说明。

NOTE

  • ① 注释是一个程序员必须有具有的良好编程习惯。
  • ② 在实际开发中,程序员可以将自己的思路通过注释整理出来,然后再用代码去实现。

5.2 单行注释

  • C 语言中的单行注释的格式,如下所示:
c
// 单行注释

NOTE

在 CLion 中的快捷键是 Ctrl + /

  • 示例:
c
#include <stdio.h> // 这是编译预处理指令
+
+int main() { // 定义主函数
+
+    printf("你好,世界!!!"); // 输出所指定的一行信息
+
+    return 0;  // 函数执行完毕时返回函数值0
+}

5.3 多行注释

  • C 语言中的多行注释的格式,如下所示:
c
/*
+  这是第一行注释
+  这是第二行注释
+  这是第三行注释
+*/

NOTE

  • ① 多行注释不能嵌套使用!!!
  • ② 在 CLion 中的快捷键是 Ctrl + Alt + /
  • 示例:
c
#include <stdio.h> 
+
+int main() { 
+	
+    /*
+       printf(1);
+       printf(2);
+    */
+    printf("你好,世界!!!"); 
+
+    return 0;  
+}

第六章:HelloWorld 的规范(⭐)

6.1 规范的代码风格

6.1.1 正确的缩进和空白

  • ① 使用一次 tab 操作,实现缩进,默认整体向右边移动;如果使用 shift + tab 则整体向左移动。
  • ② 运算符两边习惯各加一个空格,如:2 + 4 = 6

NOTE

各种 IDE 都有格式化的快捷键,如:CLion 的格式化快捷键是 Ctrl + Alt + L

  • 示例:
c
#include <stdio.h>
+
+int main() {
+
+    int a = 1;
+    int b = 2;
+    int c = a + b;
+
+    printf("c = %d", c);
+
+    return 0;
+}

6.1.2 代码风格

  • 在 C 语言中,有两种代码风格:行尾风格次行风格

NOTE

看个人爱好,任选一种即可,本人喜欢行尾分格!!!

  • 示例:行尾风格
c
int main(){                                      
+    if(a > b) {
+		return a;
+	} else {
+		return b;
+	}  
+  	return 0;                   
+}
  • 示例:次行风格
c
int main()
+{                                      
+    if(a > b) 
+	{
+		return a;
+	} 
+	else 
+	{
+		return b;
+	}  
+  	return 0;                   
+}

6.2 代码细节剖析

6.2.1 main() 函数

  • 在 C 语言中,一个程序或工程可以定义很多函数,但是有且只有一个 main() 函数,作为程序执行的入口,并且在 main() 函数结尾结束整个程序的运行,即:
c
int main(){
+    return 0;
+}
  • 如果 main() 函数是空括号,即表示 main() 函数不接收任何参数。
  • 在 main() 函数之前的 int 称为关键字,代表数据类型是整型,它是 main() 函数的返回值的类型,即在执行 main() 函数之后一定会得到一个整数类型的值,即函数值。

NOTE

  • ① 在 C 语言中,人们约定,如果 return 0,就表示 main() 函数终止运行,且运行成功;如果返回其它非零整数,则表示运行失败。
  • ② 默认情况下,如果 main() 函数中省略 return 0 ,则编译器会自动加上;但是,为了保持统一的代码风格,不建议省略。

6.2.2 函数体

  • ① 一对花括号 {} 定义了函数的主体,所有函数都必须以大括号开头和结尾,成对出现。
  • ② C 程序中的函数体指的是作为该函数一部分的语句。它可以是任何操作,比如:搜索、排序、打印等。
  • ③ 每一个执行语句后面都会有一个英文分号;作为语句结束的标志。
  • ④ 一行内可写几条语句,一条语句也可写在几行上。

6.2.3 printf() 函数

  • printf() 函数的格式,如下所示:
c
printf (const char *__format, ...)
  • printf() 函数是产生格式化输出的函数,作用是将参数文本输出到屏幕,f 表示 format(格式化),表示可以指定输出文本的格式,即:
c
printf ("Hello World"); // 将字符串输出到控制台,行尾不换行
  • 如果想让光标移动到下一行的开头,可以在输出文本的结尾,可以添加一个换行符 \\n,即:
c
printf("Hello World\\n");

6.2.4 标准库和头文件

6.2.4.1 概述

  • printf() 函数是在标准库的头文件 stdio.h 中定义的,要想在程序中使用这个函数,必须在源文件的头部引入该头文件,即:
c
#include <stdio.h>

6.2.4.2 标准库(Standard Library)

  • C 语言的标准库是由一组函数组成,这些函数提供了许多常用的操作和功能,如:输入输出、字符串处理、内存管理、数学计算等。标准库中的函数由编译器提供,遵循 ANSI C 标准(如:C89/C90、C99、C11等)。
  • 换言之,C 语言的标准库就是包含函数的实际代码,这些代码在编译的时候被链接到我们的程序中,无需手动包含。C 语言的标准库提供了可重用的函数实现,使得程序员不必编写常用的功能。

NOTE

实际的 printf() 函数的实现代码通常位于标准库的实现文件中,如:在 Linux 中的标准库libc.so.6 就包含了 printf() 函数的实现。

6.2.4.3 头文件(Header Files)

  • 头文件是包含函数声明、宏定义、数据类型定义等内容的文件。头文件的作用是为源代码提供必要的声明和定义,以便编译器能够正确解析和链接函数调用。头文件通常以.h作为文件扩展名。

  • 换言之,头文件包含函数声明、宏定义和数据类型定义,但不包含函数的实现。头文件告知编译器如何使用标准库中的函数和定义,确保编译时的正确性。头文件需要在源代码文件中使用#include指令显式包含,如:#include <stdio.h>

  • 常见的 C 语言头文件及其功能和常用函数、宏等,如下所示:

头文件功能说明常用函数和宏
stdio.h标准输入输出库printfscanffprintffscanffopenfclosefgetsfputs
stdlib.h标准库,提供内存分配、程序控制、类型转换、随机数生成等功能mallocfreeexitatoiatofrandsrand
string.h字符串处理库strlenstrcpystrncpystrcatstrcmpstrstrmemsetmemcpy
math.h数学库sincostanexplogsqrtpow
time.h时间和日期库timeclockdifftimemktimestrftimelocaltimegmtime
ctype.h字符处理库isalnumisalphaisdigitislowerisuppertolowertoupper
stdbool.h布尔类型库booltruefalse
assert.h断言库assert

6.2.4.4 预处理命令

  • #include 命令的作用是将指定文件的内容插入到包含该命令的源文件中。这通常用于包含头文件,以便使用头文件中声明的函数、宏和数据类型。
  • 语法:
c
// 用于包含标准库头文件或系统头文件。
+// 编译器将在系统的标准头文件目录中查找文件。
+#include <filename>
c
// 用于包含用户自定义的头文件。
+// 编译器首先在当前目录中查找文件,如果未找到,再在标准头文件目录中查找。
+#include "filename"

第七章:CLion 高级配置(⭐)

7.1 安装和配置 WSL2

7.1.1 概述

  • WSL 2,全称为 Windows Subsystem for Linux 2,是微软提供的一种技术,允许用户在 Windows 操作系统上运行 Linux 内核。WSL 2 是 WSL 的升级版,它引入了一个真正的 Linux 内核来代替 WSL 1 中使用的兼容层,从而提供更高的性能和更广泛的系统调用支持。
  • 其架构图,如下所示:

  • WSL2 的功能,如下所示:

    • 真实的Linux内核:WSL 2 使用了微软开发的轻量级虚拟机,它包含了一个完整的 Linux 内核。这意味着 WSL 2 能够运行更多的 Linux 应用程序,并且支持更多的系统调用。
    • 文件系统性能提升:WSL 2 的文件系统性能比 WSL 1 有显著提升。对于 I/O 密集型的操作,如:编译代码或数据库操作,WSL 2 能够提供更快的速度。
    • 兼容性增强:由于使用了真实的 Linux 内核,WSL 2 对 Linux 应用程序的兼容性大幅提高。许多在 WSL 1上不能运行或需要调整的应用程序,可以在 WSL 2上直接运行。
    • 网络功能改进:WSL 2 提供了更好的网络集成,能够更容易地与 Windows 上的其他网络资源进行交互。
    • 资源使用优化:WSL 2 使用轻量级虚拟机,比传统的虚拟机占用更少的资源,同时提供了类似的隔离和安全性。
  • WSL 的用途,如下所示:

    • 开发环境:WSL 2 为开发者提供了一个原生的Linux开发环境,而无需离开 Windows 。这对于需要在 Linux 上开发、测试或运行应用程序的开发者非常有帮助。
    • 学习和实验:用户可以使用 WSL 2 在Windows上学习和实验 Linux 命令行工具和应用程序,而无需设置双重引导系统或安装虚拟机。
    • 多平台开发:对于跨平台开发者来说,WSL 2 允许他们在一个操作系统上同时进行 Windows 和 Linux 平台的开发和测试,提高工作效率。
    • 运行 Linux 工具和应用程序:WSL 2 支持在 Windows 上直接运行各种 Linux 工具和应用程序,如:Docker、数据库、编程语言环境等。

7.1.2 WSL2 的安装

  • ① BIOS 或 UEFI 中,开启虚拟化:步骤略。

  • ② 查看是否开启了虚拟化:

  • ③ 启用适用于 Linux 的 Windows 子系统:
powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

IMPORTANT

以管理员身份打开 PowerShell 并运行,执行完上述命令之后,如果提示需要重启计算机,那就重启计算机。

  • ④ 启用虚拟机功能:
powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

IMPORTANT

以管理员身份打开 PowerShell 并运行,执行完上述命令之后,如果提示需要重启计算机,那就重启计算机。

  • ⑤ 更新 Linux 内核包:
powershell
wsl --update

NOTE

wsl2 的最新 Linux 内核包托管在 GitHub 上,某些国家可能会污染 Github 相关的域名,那么就需要手动下载,然后安装即可,下载地址在这里

  • ⑥ 将 wsl2 设置为默认版本:
powershell
wsl --set-default-version 2

  • ⑦ 查看官方在线支持的 Linux 版本:
powershell
wsl --list --online

  • ⑧ 安装指定版本的 Linux :
powershell
wsl --install Ubuntu-24.04

NOTE

官方支持的 Linux 版本,托管在 Github 上,某些国家可能会污染 Github 的域名;此时,要么走科学上网,要么在 Microsoft Store 中搜索并安装。

  • ⑨ 在 Microsoft Store 中搜索并安装(可选):

  • ⑩ 查询本地安装的 Linux 版本:
powershell
wsl --list

7.1.3 配置 WSL2

  • 本人的安装的是 AlmaLinux9 ,所以需要执行如下命令,以便安装 cmake 相关工具链:
shell
sudo dnf update -y # 更新包管理器 
+sudo dnf groupinstall "Development Tools" -y # 安装开发工具包
+sudo dnf install gcc gcc-c++ -y # 安装GCC相关工具链
+sudo dnf install cmake -y # 安装 cmake
+sudo dnf install make -y # 安装 make
+sudo dnf install gdb -y # 安装 gdb

  • 可以通过 CLion 测试是否安装成功:

7.1.4 配置 WSL2

  • 本人的安装的是 Ubuntu 24.04,所以需要执行如下命令,以便安装 cmake 相关工具链:
shell
sudo apt update && sudo apt upgrade -y # 更新包管理器
+sudo apt install build-essential -y # 安装开发工具包
+sudo apt install gcc g++ -y # 安装 GCC 相关工具链
+sudo apt install cmake -y # 安装 cmake
+sudo apt install gdb -y # 安装 gdb

  • 可以通过 CLion 测试是否安装成功:

NOTE

默认仓库中的 GDB 的版本会很高,CLion 会不支持,那么就需要手动下载源码,自行编译,本次不再演示!!!

7.2 切换 CLion 中的 cmake 的工具链

  • 可以在 CLoin 中切换 cmake 的工具链,以便支持不同平台的 cmake ,即:

7.3 修改 CMakeLists.txt 文件

  • 前文也提到了,在一个 C 语言项目中,只能有一个 main() 函数;但是,我们可以修改 CMakeLists.txt 文件的内容,以便其支持在一个 C 语言项目中,可以有多个包含 main() 函数的文件,如下所示:

  • CMakeLists.txt 的内容,如下所示:
txt
cmake_minimum_required(VERSION 3.10)
+
+# 项目名称和版本号
+project(c-study VERSION 1.0 LANGUAGES C)
+
+# 设置 C 标准
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_C_STANDARD_REQUIRED True)
+
+# 辅助函数,用于递归查找所有源文件
+function(collect_sources result dir)
+    file(GLOB_RECURSE new_sources "\${dir}/*.c")
+    set(\${result} \${\${result}} \${new_sources} PARENT_SCOPE)
+endfunction()
+
+# 查找顶层 include 目录(如果存在)
+if (EXISTS "\${CMAKE_SOURCE_DIR}/include")
+    include_directories(\${CMAKE_SOURCE_DIR}/include)
+endif ()
+
+# 查找所有源文件
+set(SOURCES)
+collect_sources(SOURCES \${CMAKE_SOURCE_DIR})
+
+# 用于存储已经处理过的可执行文件名,防止重复
+set(EXECUTABLE_NAMES)
+
+# 创建可执行文件
+foreach (SOURCE \${SOURCES})
+    # 获取文件的相对路径
+    file(RELATIVE_PATH REL_PATH \${CMAKE_SOURCE_DIR} \${SOURCE})
+    # 将路径中的斜杠替换为下划线,生成唯一的可执行文件名
+    string(REPLACE "/" "_" EXECUTABLE_NAME \${REL_PATH})
+    string(REPLACE "\\\\" "_" EXECUTABLE_NAME \${EXECUTABLE_NAME})
+    string(REPLACE "." "_" EXECUTABLE_NAME \${EXECUTABLE_NAME})
+
+    # 处理与 CMakeLists.txt 文件同名的问题
+    if (\${EXECUTABLE_NAME} STREQUAL "CMakeLists_txt")
+        set(EXECUTABLE_NAME "\${EXECUTABLE_NAME}_exec")
+    endif ()
+
+    # 检查是否已经创建过同名的可执行文件
+    if (NOT EXECUTABLE_NAME IN_LIST EXECUTABLE_NAMES)
+        list(APPEND EXECUTABLE_NAMES \${EXECUTABLE_NAME})
+
+        # 创建可执行文件
+        add_executable(\${EXECUTABLE_NAME} \${SOURCE})
+
+        # 查找源文件所在的目录,并添加为包含目录(头文件可能在同一目录下)
+        get_filename_component(DIR \${SOURCE} DIRECTORY)
+        target_include_directories(\${EXECUTABLE_NAME} PRIVATE \${DIR})
+
+        # 检查并添加子目录中的 include 目录(如果存在)
+        if (EXISTS "\${DIR}/include")
+            target_include_directories(\${EXECUTABLE_NAME} PRIVATE \${DIR}/include)
+        endif ()
+    endif ()
+endforeach ()

7.4 配置 .clang-format 文件

  • 配置 .clang-format 格式化文件,以便写代码的时候,可以自动保存并格式化 C 程序代码,如下所示:

  • .clang-format 的内容,如下所示:
txt
BasedOnStyle: Google
+IndentWidth: 4
+UseTab: Never
+ColumnLimit: 0
+
+# 控制大括号的位置
+BreakBeforeBraces: Attach
+
+# 控制空行的使用
+EmptyLineBeforeAccessModifier: Never
+KeepEmptyLinesAtTheStartOfBlocks: true
+
+# 控制短函数、短 if 语句和循环的格式
+AllowShortFunctionsOnASingleLine: Empty
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+
+# 控制其他格式选项
+AlignConsecutiveAssignments: true
+AlignConsecutiveDeclarations: true
+
+# 控制注释的格式化
+ReflowComments: true
+
+# 控制包含指令的格式化
+IncludeBlocks: Regroup
+SortIncludes: CaseInsensitive
+
+SpaceBeforeParens: ControlStatements
+SpacesInParentheses: false
+SpacesInAngles: false
+SpacesInContainerLiterals: false
+SpacesInCStyleCastParentheses: false
  • CLion 中配置保存的时候自动格式化,即:

7.5 配置 .gitignore 文件

  • 需要在项目中,配置 .gitignore 文件,以便在提交代码到 Git 仓库的时候,忽略某些文件或目录,如下所示:

  • .gitignore 文件的内容,如下所示:
txt
.vscode
+.idea
+cmake-build-*
+build

7.6 演示

  • 我们可以在项目中,临时创建或复制一个文件,看上述配置是否生效,即:

NOTE

如果是复制并粘贴一个文件到项目中,请点击重新加载 CMake 项目!!!

第八章:C 语言的编译过程(⭐)

8.1 概述

  • C 程序的编译过程,如下所示:

  • 过程 ① :编写(编辑)源代码,即:编写 C 语言源程序代码,并以文件的形式存储在磁盘中。

IMPORTANT

源程序需要以 .c 作为扩展名。

  • 过程 ② :编译,即:将 C 语言源程序转换为目标程序(或目标文件)。如果程序没有错误,没有任何提示,就会生成一个扩展名为 .obj.o 的二进制文件。C 语言中的每条可执行语句经过编译之后,最终都会转换为二进制的机器指令。

IMPORTANT

  • ① 其实,编译阶段包含了预处理编译汇编

  • 预处理是编译过程的第一个阶段。在这个阶段,预处理器处理源代码中的指令(例如:#include#define等),主要任务包括:

    • 头文件包含:将头文件的内容插入到源文件中。例如:#include <stdio.h>会被替换为stdio.h文件的内容。

    • 宏展开:替换宏定义。例如:#define PI 3.14会将代码中的PI替换为3.14

    • 条件编译:根据条件指令(如:#ifdef#ifndef)有选择地编译代码。

    • 删除代码中的注释,但是不会进行语法检查

    • 预处理完成后,生成一个扩展名为.i的中间文件。

  • 编译是将预处理后的源代码转换为汇编代码的过程。在这个阶段,编译器会检查代码的语法和语义,将其转换为目标机器的汇编语言,生成一个扩展名为.s的汇编文件。

  • 汇编是将汇编代码转换为机器代码(也称为目标代码或目标文件)的过程。在这个阶段,汇编器将汇编指令转换为二进制机器指令,生成一个扩展名为.o.obj的目标文件。

  • 过程 ③ :链接(连接),即:将编译形成的目标文件 *.obj*.o和库函数以及其他目录文件链接,形成一个统一的二进制文件 *.exe

IMPORTANT

  • 为什么需要链接库文件?
  • 因为我们的 C 程序会使用 C 程序库中的内容,如:<stdio.h> 中的 printf() 函数,这些函数不是程序员自己写的,而是 C 程序库中提供的,因此需要链接。其实,在链接过程中,还会加入启动代码,这个启动代码(和系统相关,Linux 下主要有 crt0.c、crti.c 等,它们设置堆栈后,再调用 main() 函数)负责初始化程序运行时的环境。
  • 过程 ④ :执行,即:有了可执行的 *.exe文件,我们就可以在控制台上执行运行此 *.exe 文件。

IMPORTANT

如果修改了源代码,还需要重新编译链接,并生成新的 *.exe文件,再执行,方能生效。

8.2 GCC 编译器的介绍

  • 编辑器,如:vim 、vscode 等,是指我们用它来编写源程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。换言之,我们用编辑器编写程序,由编译器编译后才可以运行!
  • 编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。
  • gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。gcc 原本作为 GNU 操作系统的官方编译器,现已被大多数类 Unix 操作系统(如:Linux、BSD、Mac OS X 等)采纳为标准的编译器,gcc 同样适用于微软的 Windows 。
  • gcc 最初用于编译 C 语言,随着项目的发展, gcc 已经成为了能够编译 C、C++、Java、Ada、fortran、Object C、Object C++、Go 语言的编译器大家族。

8.3 通过 gcc 直接生成可执行文件

  • 示例:进行预处理、编译、汇编和链接
shell
gcc HelloWorld.c -o HelloWorld.exe

8.4 通过 gcc 分步编译

8.3.1 概述

  • 预处理命令:
shell
gcc -E 源文件.c -o 源文件.i # 通常以 .i 结尾表示这个文件是一个中间状态
  • 编译(预处理和编译)命令:
shell
gcc -S 源文件.i -o 源文件.s # 在 Linux 中,通常以 .s 结尾;在 Windows 中,通常以 .asm 结尾
  • 汇编(预处理、编译和汇编)命令:
shell
gcc -c 源文件.s -o 源文件.o # 在 Linux 中,通常以 .o 结尾;在 Windows 中,通常以 .obj 结尾
  • 链接(预处理、编译、汇编和链接)命令:
shell
gcc 源文件.o -o 源文件.exe # 在 Linux 中,通常以 .out 结尾;在 Windows 中,通常以 .exe 结尾

8.4.2 应用示例

  • 示例:只进行预处理
shell
gcc -E HelloWorld.c -o HelloWorld.i

  • 示例:只进行预处理和编译
shell
gcc -S HelloWorld.i -o HelloWorld.s

  • 示例:只进行预处理、编译和汇编
shell
gcc -c HelloWorld.s -o HelloWorld.o

  • 示例:进行预处理、编译、汇编和链接
shell
gcc HelloWorld.o -o HelloWorld.exe

',546),ri=[pi];function ci(oi,hi,di,ki,ui,gi){return i(),a("div",null,ri)}const Ei=s(ti,[["render",ci]]);export{mi as __pageData,Ei as default}; diff --git a/assets/notes_01_c-basic_01_xdx_index.md.D1hb9NAd.lean.js b/assets/notes_01_c-basic_01_xdx_index.md.D1hb9NAd.lean.js new file mode 100644 index 0000000..8194829 --- /dev/null +++ b/assets/notes_01_c-basic_01_xdx_index.md.D1hb9NAd.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a5 as n}from"./chunks/framework.D1oHBMsh.js";const l="/coa6/assets/1.D4a42fT1.jpg",e="/coa6/assets/2.D2wnxl5F.png",t="/coa6/assets/3.Dq625oo9.jpg",p="/coa6/assets/4.uqu1DEK4.png",r="/coa6/assets/5.C6Q0Q8kf.jpg",c="/coa6/assets/6.B4Srsb-0.png",o="/coa6/assets/7._D_c8Lrn.png",h="/coa6/assets/8.DlIyFGDg.png",d="/coa6/assets/9.7zkUmpQw.png",k="/coa6/assets/10.h1ugtjyX.png",u="/coa6/assets/11.D5PWTabw.png",g="/coa6/assets/12.Bvs6QYjl.jpg",b="/coa6/assets/9.7zkUmpQw.png",m="/coa6/assets/14.CsR5exrN.png",E="/coa6/assets/15.BRG9GQdT.png",y="/coa6/assets/16.C2sciGZn.png",C="/coa6/assets/17.DdyXXyxJ.png",F="/coa6/assets/18.DIeb_KXW.png",_="/coa6/assets/19.C-kvMz2p.png",v="/coa6/assets/20.CQqFxmDa.png",A="/coa6/assets/21.CjMWyIiX.png",f="/coa6/assets/22.DFQhcDgs.png",x="/coa6/assets/23.Cco1vsW8.png",B="/coa6/assets/24.D60Zf6_d.png",D="/coa6/assets/25.D2-G6nV2.png",q="/coa6/assets/26.DpzkVk5V.png",w="/coa6/assets/27.BXk95GIP.png",S="/coa6/assets/28.CbWTB08W.png",P="/coa6/assets/29.twO9TCIg.png",L="/coa6/assets/30.CKOjeIvS.png",W="/coa6/assets/31.DKmR0CxE.png",T="/coa6/assets/32.Cudf77_s.gif",I="/coa6/assets/33.BBUUlhRC.png",O="/coa6/assets/34.iLABkB7O.png",M="/coa6/assets/35.BQuYWOU9.png",N="/coa6/assets/36.CslpH6j0.png",U="/coa6/assets/37.BAyvZdKq.png",R="/coa6/assets/38.C3oC1iUd.png",G="/coa6/assets/39.Ds-jsEZn.png",H="/coa6/assets/40.Cd37gMYs.png",V="/coa6/assets/41.CAw2z3gc.png",X="/coa6/assets/42.DdPThnr-.png",K="/coa6/assets/43.q_rvlDnY.png",Q="/coa6/assets/44.JRHg9RZA.png",j="/coa6/assets/45.Baq-Hb06.png",J="/coa6/assets/46.c1ht53mu.png",$="/coa6/assets/47.CAZmH5Py.png",Y="/coa6/assets/48.DWeCYBe9.png",z="/coa6/assets/49.2XM8pYni.png",Z="/coa6/assets/50.CN0t-fuo.png",ss="/coa6/assets/51.AcDh3LXQ.png",as="/coa6/assets/52.CUkDFAc6.png",is="/coa6/assets/53.picNTNaJ.png",ns="/coa6/assets/54.DKX92RgJ.png",ls="/coa6/assets/55.Bxr7QKI3.png",es="/coa6/assets/56.DuFWsOgW.png",ts="/coa6/assets/57.Da9qUcfr.png",ps="/coa6/assets/58.7_gEABSX.gif",rs="/coa6/assets/59.C2KQYoVC.gif",cs="/coa6/assets/60.RTUP8Vtx.png",os="/coa6/assets/61.Dq21DxwL.png",hs="/coa6/assets/62.QmpUaNxU.png",ds="/coa6/assets/63.DP0C29gZ.png",ks="/coa6/assets/64.DwzHokd4.png",us="/coa6/assets/65.Bi6K26yA.png",gs="/coa6/assets/66.Bw8DcEQ_.png",bs="/coa6/assets/67.DPc8Z9rS.png",ms="/coa6/assets/68.S84xHMTl.png",Es="/coa6/assets/69.iw3JQUkn.png",ys="/coa6/assets/70.ILeJt-HK.png",Cs="/coa6/assets/71.CHgm7khh.png",Fs="/coa6/assets/72.N1nqJaEg.png",_s="/coa6/assets/73.DHsnibMi.png",vs="/coa6/assets/74.BQr6Q0uV.png",As="/coa6/assets/75.BVemi2Lh.png",fs="/coa6/assets/76.BHR69UXx.png",xs="/coa6/assets/77.CPSU5SJI.png",Bs="/coa6/assets/78.CaQLoDlw.png",Ds="/coa6/assets/79.aRGy4XbL.png",qs="/coa6/assets/80.kNO9fmPR.png",ws="/coa6/assets/81.D4EkoC4o.png",Ss="/coa6/assets/82.V23Lo9e_.png",Ps="/coa6/assets/83.Du9LVeMB.png",Ls="/coa6/assets/84.DdFg75U9.png",Ws="/coa6/assets/85.C6bz6KtT.png",Ts="/coa6/assets/86.CB6LAhB5.png",Is="/coa6/assets/87.Bip8bkua.png",Os="/coa6/assets/88.DRNHRduW.png",Ms="/coa6/assets/89.Cth4qqEn.png",Ns="/coa6/assets/90.DWGWZ64P.png",Us="/coa6/assets/91.3hDIDdvx.png",Rs="/coa6/assets/92.Bw_dQ4ap.png",Gs="/coa6/assets/93.Cn_ubTyA.png",Hs="/coa6/assets/94.C84EBqwB.png",Vs="/coa6/assets/95.dZfJY4eR.png",Xs="/coa6/assets/96.B0zm0Z79.png",Ks="/coa6/assets/97.CaTcEy1Q.png",Qs="/coa6/assets/98.iEc8mo9g.png",js="/coa6/assets/99.Co2KxM6t.png",Js="/coa6/assets/100.CaUm8Qhc.png",$s="/coa6/assets/101.kOkqIKG6.png",Ys="/coa6/assets/102.CyeASH-c.png",zs="/coa6/assets/103.CFdk60La.png",Zs="/coa6/assets/104.Bhl-0uK_.png",sa="/coa6/assets/105.Dni9KbXV.png",aa="/coa6/assets/106.BXx10MCV.png",ia="/coa6/assets/107.CXcIKX1T.png",na="/coa6/assets/108.CQ3_QCQT.png",la="/coa6/assets/109.CQoDRJM5.gif",ea="/coa6/assets/110.CPfwZvD9.gif",ta="/coa6/assets/111.bxEomEjU.gif",pa="/coa6/assets/112.C_onhf2k.png",ra="/coa6/assets/113.Budj3s38.gif",ca="/coa6/assets/114.CH8koQdu.gif",oa="/coa6/assets/115.kUJhxMtg.png",ha="/coa6/assets/116.BJeJJW4_.png",da="/coa6/assets/117.BCuK6eJL.gif",ka="/coa6/assets/118.rKC-z4z-.gif",ua="/coa6/assets/119.BJE3xxuT.gif",ga="/coa6/assets/120.DJOq__O0.gif",ba="/coa6/assets/121.BDt_0fRR.png",ma="/coa6/assets/122.Bo5OawW8.png",Ea="/coa6/assets/123.sUWUfl5e.png",ya="/coa6/assets/124.BK4jpnB8.png",Ca="/coa6/assets/125.EF8vdbSq.png",Fa="/coa6/assets/126.DjxdA_Co.png",_a="/coa6/assets/127.sp68q1hh.gif",va="/coa6/assets/128.DhMRyxNN.gif",Aa="/coa6/assets/129.CdcLZM0R.gif",fa="/coa6/assets/130.D-5AsTTr.png",xa="/coa6/assets/131.2RQKmAUa.png",Ba="/coa6/assets/132.CI4xX8SM.png",Da="/coa6/assets/133.C8QUZ9v3.gif",qa="/coa6/assets/134.g5tQfhWz.gif",wa="/coa6/assets/135.CX0_1NsE.gif",Sa="/coa6/assets/136.BrFJeoK6.png",Pa="/coa6/assets/137.58TjSSjH.gif",La="/coa6/assets/138.CgqNV2hL.png",Wa="/coa6/assets/139.BasYWvkM.png",Ta="/coa6/assets/140.CjFxJpBr.png",Ia="/coa6/assets/141.Dm5Jspvp.gif",Oa="/coa6/assets/142.1krCh8cy.gif",Ma="/coa6/assets/143.DOSyahv7.gif",Na="/coa6/assets/144.BHEvX_FI.gif",Ua="/coa6/assets/145.DFA0g1_d.gif",Ra="/coa6/assets/146.D50nO5eA.gif",Ga="/coa6/assets/147.cAvG1Qfq.png",Ha="/coa6/assets/148.DpakQFWz.gif",Va="/coa6/assets/149.Bg61j9QI.gif",Xa="/coa6/assets/150.DPvD9UCw.gif",Ka="/coa6/assets/151.Ceu65U_n.gif",Qa="/coa6/assets/152.BWPFRK_8.gif",ja="/coa6/assets/153.Ct4TfxPf.gif",Ja="/coa6/assets/154.zsKtx_jV.png",$a="/coa6/assets/155.3oqDAW0w.png",Ya="/coa6/assets/156.D9TSeAa9.gif",za="/coa6/assets/157.CCRgYIVq.png",Za="/coa6/assets/158.C1t2T6FV.gif",si="/coa6/assets/159.Rqa4uHq6.png",ai="/coa6/assets/160.6yQYnjOa.gif",ii="/coa6/assets/161.hYR9GiiD.gif",ni="/coa6/assets/162.D3b-QIrA.gif",li="/coa6/assets/163.DGbA6qsW.gif",ei="/coa6/assets/164.BToOkxf2.gif",mi=JSON.parse('{"title":"第一章:计算机组成原理","description":"","frontmatter":{},"headers":[],"relativePath":"notes/01_c-basic/01_xdx/index.md","filePath":"notes/01_c-basic/01_xdx/index.md","lastUpdated":1720685105000}'),ti={name:"notes/01_c-basic/01_xdx/index.md"},pi=n("",546),ri=[pi];function ci(oi,hi,di,ki,ui,gi){return i(),a("div",null,ri)}const Ei=s(ti,[["render",ci]]);export{mi as __pageData,Ei as default}; diff --git a/assets/notes_01_c-basic_02_xdx_index.md.k6oVENcd.js b/assets/notes_01_c-basic_02_xdx_index.md.k6oVENcd.js new file mode 100644 index 0000000..d5acd42 --- /dev/null +++ b/assets/notes_01_c-basic_02_xdx_index.md.k6oVENcd.js @@ -0,0 +1,207 @@ +import{_ as s,c as i,o as a,a5 as n}from"./chunks/framework.D1oHBMsh.js";const l="/coa6/assets/1.CXNJqOOc.png",e="/coa6/assets/2.E0LS08Y5.png",t="/coa6/assets/3.XcPl7d9s.png",p="/coa6/assets/4.DL02VQMp.png",h="/coa6/assets/5.Dr67r_Ws.png",d="/coa6/assets/6.C5XiXNVN.png",k="/coa6/assets/7.DO8XxSV6.jpg",r="/coa6/assets/8.CUXrdefp.jpeg",c="/coa6/assets/9.uqLiL_yu.png",o="/coa6/assets/10.CkykpHY2.png",E="/coa6/assets/11.DV1YbrOP.png",u="/coa6/assets/12.AHNJT9TV.png",b="/coa6/assets/13.Bs-MOwx2.png",g="/coa6/assets/14.StzjmBz-.png",F="/coa6/assets/15.C0wVWaxD.png",y="/coa6/assets/16.LXJMAihe.png",m="/coa6/assets/17._UTCq3PD.png",C="/coa6/assets/18.BjQ5kBL-.png",B="/coa6/assets/19.COIOzcmT.png",v="/coa6/assets/20.Cu__mjav.png",A="/coa6/assets/21.BX_KzkHt.png",_="/coa6/assets/22.COt_QxSP.png",S=JSON.parse('{"title":"第一章:变量(⭐)","description":"","frontmatter":{},"headers":[],"relativePath":"notes/01_c-basic/02_xdx/index.md","filePath":"notes/01_c-basic/02_xdx/index.md","lastUpdated":1720685105000}'),D={name:"notes/01_c-basic/02_xdx/index.md"},q=n('

第一章:变量(⭐)

1.1 程序中变化的数据

  • 在生活中,我们使用最多的不是固定的数据,而是会变化的数据:
    • ① 购物车商品的数量价格等。
    • ② 一首歌播放的时间进度条歌词的展示等。
    • ③ 微信聊天中消息条数时间语音的长度头像名称等。
    • ④ 游戏中技能的冷却时间血量蓝量buff 时间金币的数量等。
    • ……
  • 下图是一个购物车变化数据,即:

  • 那么,在实际开发中,我们就会使用变量保存操作这些变化数据

1.2 变量

  • 变量的定义:变量是程序中不可或缺的组成单位,最基本的存储单元。其实,变量就是一个存储数据的临时空间,可以向其中存储不同类型的数据,如:整数、小数、字符、字符串等,并且变量中的数据在程序运行的时候可以动态改变。

NOTE

  • 变量:用来存储数据容器
  • 数据:可以是一个用来计算的数字,如:上文购物车中的价格等;也可以是一句话中的关键词其它任意格式的数据
  • 变量的特别之处就在于它存放的数据是可以改变的。
  • 我们可以将变量想象为一个容器,盒子中装的就是我们想要的数据,并且我们需要盒子一个特别的名称;通过这个特别的名称,我们可以盒子添加数据移除数据,这个特别的名称就是变量名

NOTE

  • 变量是内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
  • ② 通过变量名,可以操作这块内存区域,向其中存储数据获取数据以及移除数据
  • ③ 变量的构成包含三个要素:数据类型变量名需要存储的数据
  • ④ 在生活中,我们会经常说:这件衣服的价格是 100(整型) 元,这双鞋子的价格是 250.5(小数,浮点类型) 元,今天天气真好(字符串类型)之类的话;在计算机科学中,这些都是数据,并且它们是有类型,即:数据类型。(数据类型用于定义变量所能存储的数据的种类以及可以对这些数据进行的操作的一种分类,每种数据类型都有特定的属性和用途,它们决定了变量在内存中如何表示和存储,以及变量可以执行哪些操作)

1.3 变量的声明和使用

  • ① 变量必须先声明,后使用。
  • ② 可以先声明变量再赋值,也可以在声明变量的同时进行赋值。
  • ③ 变量的值可以在同一类型范围内不断变化。

IMPORTANT

在实际开发中,我们通常都会在声明变量的同时,给其赋值,这被称为初始化。

  • 示例:先声明,再使用
c
#include <stdio.h>
+
+int main() {
+
+    // 声明一个整型变量,取名为 a
+    int a;
+
+    // 给变量赋值
+    a = 10;
+
+    printf("a = %d\\n", a);
+
+    return 0;
+}
  • 示例:初始化(声明变量的同时给其赋值)
c
#include <stdio.h>
+
+int main() {
+
+    // 声明一个整型变量,取名为 b ,并直接赋值(初始化,实际开发中最为常用)
+    int b = 200;
+
+    // 修改变量 b 的值,将变量 a 的值赋值给变量 b
+    b = 300;
+
+    printf("b= %d\\n", b);
+
+    return 0;
+}
  • 示例:同时声明多个变量并赋值
c
#include <stdio.h>
+
+int main() {
+
+    // 同时声明多个整型的变量并赋值
+    int c1 = 10, c2 = 20, c3 = 30;
+    printf("c1 = %d\\n", c1);
+    printf("c2 = %d\\n", c2);
+    printf("c3 = %d\\n", c3);
+
+    return 0;
+}

1.4 输出变量

  • 在计算机中,所谓的输入输出都是以计算机(CPU 和内存)为主体而言的,即:

NOTE

输入:从输入设备(键盘、鼠标、扫描仪)向计算机输入数据。

输出:从计算机向外部输出设备(显示器、打印机)输出数据。

  • 在 C 语言中,提供了 printf() 函数用于输出信息,其函数声明是:
c
int printf (const char *__format, ...) {
+    ...
+}
  • printf 的标准含义是格式化输出文本,来源于 print formatted(格式化打印)的缩写,其语法规则,如下所示:

NOTE

  • 格式化字符串:是使用双引号括起来的字符串,里面包含了普通的字符串和格式占位符。
  • 格式占位符(格式声明符):由 %格式字符组成,作用是将输出的数据转换为指定的格式后输出,这里的 %d 表示整数。
  • 输出列表:是程序要输出的一些数据,可以是常量、变量或表达式,需要和格式占位符一一对应。
  • 在计算机中,二进制、八进制、十进制以及十六进制的英文名称和缩写,如下所示:

    • 二进制(binary),缩写是 bin。
    • 八进制(octal),缩写是 oct。
    • 十进制(decimal),缩写是 dec。
    • 十六进制(Hexadecimal),缩写是 hex。
  • 其实,我们也可以在 Windows 系统中的计算器中来看到,即:

IMPORTANT

在生活中的 decimal 是小数的意思;但是,在 C 语言中,decimal 的完整含义是 decimal integer ,即十进制整数。

  • 示例:
c
#include <stdio.h>
+
+int main() {
+
+    // 声明变量并赋值
+    int num = 18;
+
+    // 使用输出语句,将变量 num 的值输出,其中 %d 表示输出的是整数
+    printf("我今年%d\\n", num);
+
+    return 0;
+}

1.5 输入数据赋值给变量

  • 在 C 语言中,提供了 scanf() 函数用于从标准输入(通常是键盘)中读取数据并根据变量的地址赋值给变量(变量需要提前声明),其函数声明是:
c
int scanf(const char *__format, ...) {
+    ...
+}
  • 其语法规则,如下所示:

NOTE

&age&num 中的 &是寻址操作符,&age 表示变量 age 在内存中的地址。

CAUTION

  • ① scanf() 函数中的 %d,如果是连着写,即:%d%d,那么在输入数据的时候,数据之间不可以使用逗号,分隔,只能使用空白字符(空格、tab 键或回车键),即:2空格3tab2tab3回车等。

  • ② 如果是 %d,%d,则输入的时候需要加上逗号,,即:2,3

  • ③ 如果是 %d %d,则输入的时候需要加上空格,即:2空格3

  • 示例:计算圆的面积,半径由用户指定
c
#include <stdio.h>
+
+int main() {
+
+    float radius;
+
+    printf("请输入一个半径:");
+    scanf("%f", &radius);
+
+    double area = 3.1415926 * radius * radius;
+
+    printf("半径是%f的圆的面积是%.2lf", radius, area);
+
+    return 0;
+}
  • 示例:输入一个整数值,求其绝对值
c
#include <stdio.h>
+
+int main() {
+
+    int num;
+
+    printf("请输入一个整数:");
+    scanf("%d", &num);
+
+    int absNum;
+
+    if (num < 0) {
+        absNum = -num;
+    } else {
+        absNum = num;
+    }
+
+    printf("%d的绝对值是:%d", num, absNum);
+
+    return 0;
+}
  • 示例:输入多个变量的值,求其乘积
c
#include <stdio.h>
+
+int main() {
+
+    int a, b, c;
+    printf("请输入整数 a 、b 和 c 的值:");
+    scanf("%d %d %d", &a, &b, &c);
+
+    int result = a * b * c;
+
+    printf("%d × %d × %d = %d", a, b, c, result);
+
+    return 0;
+}

1.6 标识符

1.6.1 概述

  • 在 C 语言中,变量、函数、数组名、结构体等要素命名的时候使用的字符序列,称为标识符。

NOTE

在上世纪 60 - 70 年代的时候,因为国家贫穷,人民生活不富裕等原因,家长虽然会给孩子取名为:张建国李华强等;但是,也会取小名为二狗子狗剩等,目的是希望孩子能健康成长(养活),像 张建国李华强二狗子狗剩都是名字(标识符),伴随人的一生。

1.6.2 标识符的命名规范

  • 强制规范:

    • ① 只能由小写大写英文字母0-9_ 组成。
    • ② 不能以数字开头。
    • ③ 不可以是关键字
    • ④ 标识符具有长度限制,不同编译器和平台会有所不同,一般限制在 63 个字符内。
    • ⑤ 严格区分大小写字母,如:Hello、hello 是不同的标识符。
  • 建议规范:

    • ① 为了提高阅读性,使用有意义的单词,见名知意,如:sum,name,max,year 等。
    • ② 使用下划线连接多个单词组成的标识符,如:max_classes_per_student 等。
    • ③ 多个单词组成的标识符,除了使用下划线连接,也可以使用小驼峰命名法,除第一个单词外,后续单词的首字母大写,如: studentId、student_name 等。
    • ④ 不要出现仅靠大小写区分不同的标识符,如:name、Name 容易混淆。
    • ⑤ 系统内部使用了一些下划线开头的标识符,如:C99 标准添加的类型 _Bool,为防止冲突,建议开发者尽量避免使用下划线开头的标识符。
  • 示例:合法(不一定建议)的标识符

txt
a、BOOK_sun、MAX_SIZE、Mouse、student23、Football、FOOTBALL、max、_add、num_1、sum_of_numbers
  • 示例:非法的标识符
txt
$zj、3sum、ab#cd、23student、Foot-baii、s.com、b&c、j**p、book-1、tax rate、don't

1.6.3 关键字

  • C 语言中的关键字是编译器预定义保留字,它们有特定含义用途,用于控制程序的结构和执行。
  • C80 和 C90 (ANSI C)定义的关键字,如下所示:
类型(功能)具体关键字
数据类型关键字chardoublefloatintlongshortsignedunsignedvoid
存储类说明符关键字autoexternregisterstatictypedefvolatileconst
控制语句关键字breakcasecontinuedefaultdoelseforgotoifreturnswitchwhile
结构体、联合体和枚举关键字enumstructunion
其他关键字sizeof
  • C99 新增的关键字,如下所示:
类型(功能)具体关键字
数据类型关键字_Bool_Complex_Imaginary
存储类说明符关键字inlinerestrict
其他关键字_Complex_Imaginary
  • C11 新增的关键字,如下所示:
类型(功能)具体关键字
存储类说明符关键字_Atomic
其他关键字_Alignas_Alignof_Generic_Noreturn_Static_assert_Thread_local

IMPORTANT

  • ① 关键字不能用作标识符(如:变量名、函数名等)。
  • ② 不要死记硬背这些关键字,在实际开发中,并不一定全部使用到;而且,在学到后面的时候,会自动记住这些关键字以及对应的含义。

第二章:常量(⭐)

2.1 概述

  • 在程序运行过程中,不能改变的量就是常量。

NOTE

  • ① 在数学中的 π,就是一个常量,其值为 3.1415926 。
  • ② 在生活中,人类的性别只有;其中,也是常量。
  • ③ ...

2.2 常量的分类

  • 在 C 语言中的变量的分类,如下所示:
    • ① 字面量常量。
    • ② 标识符常量:
      • #define 宏定义的标识符常量。
      • const 关键字修饰的标识符常量。
      • 枚举常量。

NOTE

  • 所谓的字面量常量,就是可以直接使用的常量,不需要声明或定义,包括:整数常量、浮点数常量以及字符常量。
  • 所谓的标识符常量,就是使用标识符来作为常量名,包括: #define 宏定义的标识符常量、const 关键字修饰的标识符常量、枚举常量。
  • 示例:字面量常量
c
#include <stdio.h>
+
+int main() {
+
+    1;
+    'A';
+    12.3;
+    "你好";
+
+    return 0;
+}
  • 示例:字面量常量
c
#include <stdio.h>
+
+int main() {
+
+    printf("整数常量 =》%d\\n", 1);
+    printf("字符常量 =》%c\\n", 'A');
+    printf("浮点数常量 =》%f\\n", 12.3);
+    printf("字符串常量 =》%s\\n", "你好");
+
+    return 0;
+}

2.3 使用 #define 定义常量

  • #define 来定义常量,也叫作宏定义,就是用一个标识符来表示一个常量值,如果在后面的代码中出现了该标识符,那么编译时就全部替换成指定的常量值,即用宏体替换所有宏名,简称宏替换
  • 格式是:
c
#define 常量名 常量值

CAUTION

  • ① 其实宏定义的常量的执行时机是在预处理阶段,将所有宏常量替换完毕,才会继续编译代码。
  • ② 不要以 ; 结尾,如果有 ; ,分号也会成为常量值的一部分。
  • # define 必须写在 main 函数的外面!!!
  • 常量名习惯用大写字母表示,如果多个单词,使用 _ 来分隔,以便和变量区分。
  • 示例:
c
#include <stdio.h>
+
+#define PI 3.1415926
+
+int main() {
+
+    double radius = 2.5;
+
+    double area = PI * radius * radius;
+
+    printf("半径为%lf的圆的面积是%.2lf", radius, area);
+
+    return 0;
+}

2.4 const 关键字

  • C99 标准新增,这种方式跟定义一个变量是类似的;只不过,需要在变量的数据类型前加上 const 关键字。
  • 和使用 #define定义宏常量相比,const 定义的常量有详细的数据类型,而且会在编译阶段进行安全检查,在运行时才完成替换,所以会更加安全和方便。
  • 格式是:
c
const 数据类型 常量名 = 常量值;
  • 示例:
c
#include <stdio.h>
+
+const int PI = 3.1415926;
+
+int main() {
+
+    double radius = 2.5;
+
+    double area = PI * radius * radius;
+
+    printf("半径为%lf的圆的面积是%.2lf", radius, area);
+
+    return 0;
+}

2.5 枚举常量

  • 格式:
c
enum 枚举常量 {
+    xxx = 1;
+    yyy;
+    ...
+}

NOTE

  • ① 默认情况下,枚举常量是从 0 开始递增的。
  • ② 也可以在定义枚举常量的时候,自定义它们的值。
  • 示例:
c
#include <stdio.h>
+
+enum sex {
+    MALE = 1,
+    FEMALE = 2,
+};
+
+int main() {
+
+    printf("%d\\n", MALE);
+    printf("%d\\n", FEMALE);
+
+    return 0;
+}
  • 示例:
c
#include <stdio.h>
+
+enum Sex {
+    MALE = 1,
+    FEMALE = 2,
+};
+
+int main() {
+    enum Sex sex;
+
+    printf("请输入性别(1 表示男性, 2 表示女性):");
+    scanf("%d", &sex);
+    printf("您的性别是:%d\\n", sex);
+
+    return 0;
+}

2.6 #defind 定义常量 VS const 定义常量

  • ① 执行时机:#define 是预处理指令,在编译之前执行;const 是关键字,在编译过程中执行。
  • ② 类型检查:#define 定义常量不用指定类型不进行类型检查,只是简单地文本替换;const 定义常量需要指定数据类型会进行类型检查,类型安全性更强。

第三章:二进制

3.1 概述

  • 计算机的底层只有二进制,即计算机中运算存储所有数据都需要转换为二进制,包括:数字、字符、图片、视频等。

  • 之前,我们也提到现代的计算机(量子计算机除外)几乎都遵循冯·诺依曼体系结构,其理论要点如下:
    • 存储程序程序指令数据都存储在计算机的内存中,这使得程序可以在运行时修改。
    • 二进制逻辑:所有数据和指令都以二进制形式表示。
    • 顺序执行:指令按照它们在内存中的顺序执行,但可以有条件地改变执行顺序。
    • 五大部件:计算机由运算器控制器存储器输入设备输出设备组成。
    • 指令结构:指令由操作码和地址码组成,操作码指示要执行的操作,地址码指示操作数的位置。
    • 中心化控制:计算机的控制单元(CPU)负责解释和执行指令,控制数据流。
  • 所以,再次论证了为什么计算机只能识别二进制。

3.2 进制

3.2.1 常见的进制

  • 在生活中,我们最为常用的进制就是十进制,其规则是满 10 进 1 ,即:

  • 在计算机中,常见的进制有二进制八进制十六进制,即:
    • 二进制:只能 0 和 1 ,满 2 进 1 。
    • 八进制:0 ~ 7 ,满 8 进 1 。
    • 十六进制:0 ~ 9 以及 A ~ F ,满 16 进 1 。

NOTE

在十六进制中,除了 0 到 9 这十个数字之外,还引入了字母,以便表示超过 9 的值。字母 A 对应十进制的 10 ,字母 B 对应十进制的 11 ,以此类推,字母 F 对应十进制的 15。

  • 进制的换算举例,如下所示:
十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012a 或 A
11101113b 或 B
12110014c 或 C
13110115d 或 D
14111016e 或 E
15111117f 或 F
16100002010
............
  • 二进制和十六进制的关系:十六进制是以 16 为基数的进制系统,16 在二进制中表示为 ( 2^4 ),即:一个十六进制可以表示 4 位二进制。

NOTE

十六进制的范围是:0 ~ F (0 ~ 15)对应的二进制数的范围是:0000 ~ 1111 (0 ~ 15)。

  • 每个十六进制数都可以映射到一个唯一的 4 位二进制数,即:
十六进制二进制
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
A1010
B1011
C1100
D1101
E1110
F1111

NOTE

由此可见,每个十六进制数字确实由 4 位二进制数表示。

  • 二进制和八进制的关系:八进制是以 8 为基数的进制系统,8 在二进制中表示为 ( 2^3 );即:一个八进制位可以表示 3 个二进制位。

NOTE

八进制的范围是:0 ~ 7 对应的二进制数的范围是:000 ~ 111。

  • 每个八进制数位都可以映射到一个唯一的 3 位二进制数,即:
八进制二进制
0000
1001
2010
3011
4100
5101
6110
7111

NOTE

由此可见,每个八进制数字确实由 3 位二进制数表示。

3.2.2 C 语言中如何表示不同进制的整数?

  • 规则如下:

    • 在 C 语言中,如果是二进制(字面常量),则需要在二进制整数前加上 0b0B
    • 在 C 语言中,如果是八进制(字面常量),则需要在八进制整数前加上 0
    • 在 C 语言中,如果是十进制(字面常量),正常数字表示即可。
    • 在 C 语言中,如果是十六进制(字面常量),则需要在十六进制整数前加上 0x0X
  • 示例:

c
#include <stdio.h>
+
+int main() {
+
+    int num1 = 0b10100110; // 二进制
+    int num2 = 0717563; // 八进制
+    int num3 = 1000; // 十进制
+    int num4 = 0xaf72; // 十六进制
+
+    printf("num1 = %d\\n", num1); // num1 = 166
+    printf("num2 = %d\\n", num2); // num2 = 237427
+    printf("num3 = %d\\n", num3); // num3 = 1000
+    printf("num4 = %d\\n", num4); // num4 = 44914
+
+    return 0;
+}

3.2.3 输出格式

  • 在 C 语言中,可以使用不同的格式占位符输出不同进制的整数,如下所示:
    • %d:十进制整数。
    • %o :八进制整数。
    • %x:十六进制整数。
    • %#o :显示前缀 0 的八进制整数。
    • %#x :显示前缀 0x 的十六进制整数。
    • %#X :显示前缀 0X 的十六进制整数。

CAUTION

C 语言中没有输出二进制数的格式占位符!!!

  • 示例:
c
#include <stdio.h>
+
+int main() {
+
+    int num = 100;
+
+    printf("%d 的十进制整数: %d\\n", num, num); // 100 的十进制整数: 100
+    printf("%d 的八进制整数: %o\\n", num, num); // 100 的八进制整数: 144
+    printf("%d 的十六进制整数: %x\\n", num, num); // 100 的十六进制整数: 64
+    printf("%d 的八进制(前缀)整数: %#o\\n", num, num); // 100 的八进制(前缀)整数: 0144
+    printf("%d 的十六进制(前缀)整数: %#x\\n", num, num); // 100 的十六进制(前缀)整数: 0x64
+    printf("%d 的十六进制(前缀)整数: %#X\\n", num, num); // 100 的十六进制(前缀)整数: 0X64
+
+    return 0;
+}

3.3 进制的转换

3.3.1 概述

  • 不同进制的转换,如下所示:

  • 在计算机中,数据是从右往左的方式排列的;其中,最右边的是低位,最左边的是高位,即:

3.3.2 二进制和十进制的转换

3.3.2.1 二进制转换为十进制

  • 规则:从最低位开始,将每个位上的数提取出来,乘以 2 的 (位数 - 1 )次方,然后求和。

NOTE

  • ① 在学术界,将这种计算规则,称为位权相加法
  • 八进制转换为十进制十六进制转换为十进制二进制转换为十进制的算法相同!!!
  • 示例:十进制转十进制

  • 示例:二进制转十进制

3.3.2.2 十进制转换二进制

  • 规则:将该数不断除以 2 ,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的二进制。

NOTE

  • ① 在学术界,将这种计算规则,称为短除法连续除2取余法
  • ② 很好理解,只有不断地除以 2 ,就能保证最大的数字不超过 2 ,这不就是二进制(只能有 0 或 1)吗?
  • 八进制转换为二进制十六进制转换为二进制十进制转换为二进制的算法相同!!!
  • 示例:十进制转十进制

  • 示例:十进制转二进制

3.3.3 二进制转八进制

  • 规则:每 3 位二进制就是一个八进制。

  • 示例:011 101 001 -> 351

3.3.4 二进制转十六进制

  • 规则:每 4 位二进制就是一个八进制。

  • 示例:1110 1001 -> 0xE9

3.4 原码、反码和补码

3.4.1 概述

  • 机器数:一个数在计算机的存储形式是二进制,我们称这些二进制数为机器数。机器数可以是有符号的,用机器数的最高位来存放符号位,0 表示正数,1 表示负数。

  • 真值:因为机器数带有符号位,所以机器数的形式值不等于其真实表示的值(真值),以机器数 1000 0001 为例,其真正表示的值(首位是符号位)为 -1,而形式值却是 129 ,因此将带有符号位的机器数的真正表示的值称为机器数的真值。

3.4.2 原码

  • 原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值。
  • 规则:
    • 正数的原码是它本身对应的二进制数,符号位是 0 。
    • 负数的原码是它本身绝对值对应的二进制数,但是符号位是 1 。
  • +1 的原码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)
+10000 0001
  • -1 的原码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)
-11000 0001

IMPORTANT

按照原码的规则,会出现 +0-0 的情况,即:0000 0000(+0)、1000 0000(-0),显然不符合实际情况;所以,计算机底层虽然存储和计算的都是二进数,但显然不是原码。

3.4.3 反码

  • 规则:

    • 正数的反码和它的原码相同。
    • 负数的反码是在其原码的基础上,符号位不变,其余各位取反。
  • +1 的反码,使用 8 位二进数来表示,就是:

十进制数原码(8位二进制数)反码(8位二进制数)
+10000 00010000 0001
  • -1 的反码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)反码(8位二进制数)
-11000 00011111 1110

IMPORTANT

按照反码的规则,如果是 +0,对应的原码是 0000 0000;那么,其反码还是 0000 0000 ;如果是 -0,对应的原码是 1000 0000,其反码是 1111 1111,显然不符合实际情况;所以,计算机底层虽然存储和计算的都是二进数,但显然不是反码。

3.4.4 补码

  • 规则:

    • 正数的补码和它的原码相同。
    • 负数的补码是在其反码的基础上 + 1 。
  • +1 的补码,使用 8 位二进数来表示,就是:

十进制数原码(8位二进制数)反码(8位二进制数)补码(8位二进制数)
+10000 00010000 00010000 0001
  • -1 的补码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)反码(8位二进制数)补码(8位二进制数)
-11000 00011111 11101111 1111
  • 如果 0 ,按照 +0 的情况进行处理,即:

  • 如果 0 ,按照 -0 的情况进行处理,即:

IMPORTANT

  • ① 补码表示法解决了原码反码存在的两种零(+0-0)的问题,即:在补码表示法中,只有一个零,即 0000 0000。
  • ② 补码使得加法运算减法运算可以统一处理,通过将减法运算转换为加法运算,可以简化硬件设计,提高了运算效率。
  • ③ 计算机底层存储计算的都是二进数的补码

3.4.5 总结

  • ① 正数的原码、反码和补码都是一样的,三码合一。
  • ② 负数的反码是在其原码的基础上,按位取反(0 变 1 ,1 变 0 ),符号位不变;负数的补码是其反码 + 1 。
  • ③ 0 的补码是 0 。

3.5 计算机底层为什么使用补码?

  • 如果计算是 2 - 2 ,那么可以转换为 2 + (-2),这样计算机内部在处理减法计算的时候,就会将其转换为加法计算的形式,以简化硬件设计和提高计算效率。
  • 最高位表示符号位,由于符号位的存在,如果使用原码来计算,就会导致计算结果不正确,即:

  • 补码的设计可以巧妙的让符号位也参与计算,并且可以得到正确的计算结果,即:

',190),f=[q];function x(P,T,N,O,w,I){return a(),i("div",null,f)}const L=s(D,[["render",x]]);export{S as __pageData,L as default}; diff --git a/assets/notes_01_c-basic_02_xdx_index.md.k6oVENcd.lean.js b/assets/notes_01_c-basic_02_xdx_index.md.k6oVENcd.lean.js new file mode 100644 index 0000000..bc667a2 --- /dev/null +++ b/assets/notes_01_c-basic_02_xdx_index.md.k6oVENcd.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a5 as n}from"./chunks/framework.D1oHBMsh.js";const l="/coa6/assets/1.CXNJqOOc.png",e="/coa6/assets/2.E0LS08Y5.png",t="/coa6/assets/3.XcPl7d9s.png",p="/coa6/assets/4.DL02VQMp.png",h="/coa6/assets/5.Dr67r_Ws.png",d="/coa6/assets/6.C5XiXNVN.png",k="/coa6/assets/7.DO8XxSV6.jpg",r="/coa6/assets/8.CUXrdefp.jpeg",c="/coa6/assets/9.uqLiL_yu.png",o="/coa6/assets/10.CkykpHY2.png",E="/coa6/assets/11.DV1YbrOP.png",u="/coa6/assets/12.AHNJT9TV.png",b="/coa6/assets/13.Bs-MOwx2.png",g="/coa6/assets/14.StzjmBz-.png",F="/coa6/assets/15.C0wVWaxD.png",y="/coa6/assets/16.LXJMAihe.png",m="/coa6/assets/17._UTCq3PD.png",C="/coa6/assets/18.BjQ5kBL-.png",B="/coa6/assets/19.COIOzcmT.png",v="/coa6/assets/20.Cu__mjav.png",A="/coa6/assets/21.BX_KzkHt.png",_="/coa6/assets/22.COt_QxSP.png",S=JSON.parse('{"title":"第一章:变量(⭐)","description":"","frontmatter":{},"headers":[],"relativePath":"notes/01_c-basic/02_xdx/index.md","filePath":"notes/01_c-basic/02_xdx/index.md","lastUpdated":1720685105000}'),D={name:"notes/01_c-basic/02_xdx/index.md"},q=n("",190),f=[q];function x(P,T,N,O,w,I){return a(),i("div",null,f)}const L=s(D,[["render",x]]);export{S as __pageData,L as default}; diff --git a/assets/notes_index.md.86O_Lb7b.js b/assets/notes_index.md.86O_Lb7b.js new file mode 100644 index 0000000..682f452 --- /dev/null +++ b/assets/notes_index.md.86O_Lb7b.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,j as e,a as o}from"./chunks/framework.D1oHBMsh.js";const B=JSON.parse('{"title":"计算机基础知识","description":"","frontmatter":{},"headers":[],"relativePath":"notes/index.md","filePath":"notes/index.md","lastUpdated":1720685105000}'),n={name:"notes/index.md"},r=e("h1",{id:"计算机基础知识",tabindex:"-1"},[o("计算机基础知识 "),e("a",{class:"header-anchor",href:"#计算机基础知识","aria-label":'Permalink to "计算机基础知识"'},"​")],-1),d=e("hr",null,null,-1),c=e("iframe",{src:"https://roadmap.sh/r/embed?id=668c68522c7edd3e44893630",width:"115%",height:"500px",frameBorder:"0"},null,-1),i=[r,d,c];function l(_,h,p,m,f,x){return s(),a("div",null,i)}const $=t(n,[["render",l]]);export{B as __pageData,$ as default}; diff --git a/assets/notes_index.md.86O_Lb7b.lean.js b/assets/notes_index.md.86O_Lb7b.lean.js new file mode 100644 index 0000000..682f452 --- /dev/null +++ b/assets/notes_index.md.86O_Lb7b.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,j as e,a as o}from"./chunks/framework.D1oHBMsh.js";const B=JSON.parse('{"title":"计算机基础知识","description":"","frontmatter":{},"headers":[],"relativePath":"notes/index.md","filePath":"notes/index.md","lastUpdated":1720685105000}'),n={name:"notes/index.md"},r=e("h1",{id:"计算机基础知识",tabindex:"-1"},[o("计算机基础知识 "),e("a",{class:"header-anchor",href:"#计算机基础知识","aria-label":'Permalink to "计算机基础知识"'},"​")],-1),d=e("hr",null,null,-1),c=e("iframe",{src:"https://roadmap.sh/r/embed?id=668c68522c7edd3e44893630",width:"115%",height:"500px",frameBorder:"0"},null,-1),i=[r,d,c];function l(_,h,p,m,f,x){return s(),a("div",null,i)}const $=t(n,[["render",l]]);export{B as __pageData,$ as default}; diff --git a/assets/style.93t0OQ_p.css b/assets/style.93t0OQ_p.css new file mode 100644 index 0000000..78af0f0 --- /dev/null +++ b/assets/style.93t0OQ_p.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coa6/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-d4a0bba5]{margin-top:64px}.edit-info[data-v-d4a0bba5]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-d4a0bba5]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-d4a0bba5]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-d4a0bba5]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-d4a0bba5]{margin-right:8px}.prev-next[data-v-d4a0bba5]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-d4a0bba5]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-d4a0bba5]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-d4a0bba5]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-d4a0bba5]{margin-left:auto;text-align:right}.desc[data-v-d4a0bba5]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-d4a0bba5]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-d1f28634]{opacity:1}.moon[data-v-d1f28634],.dark .sun[data-v-d1f28634]{opacity:0}.dark .moon[data-v-d1f28634]{opacity:1}.dark .VPSwitchAppearance[data-v-d1f28634] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-ccf7ddec]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:transparent}.VPNavBar[data-v-ccf7ddec]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-ccf7ddec]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-ccf7ddec]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-ccf7ddec]{padding:0}}.container[data-v-ccf7ddec]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-ccf7ddec],.container>.content[data-v-ccf7ddec]{pointer-events:none}.container[data-v-ccf7ddec] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-ccf7ddec]{max-width:100%}}.title[data-v-ccf7ddec]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-ccf7ddec]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-ccf7ddec]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-ccf7ddec]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-ccf7ddec]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-ccf7ddec]{column-gap:.5rem}}.menu+.translations[data-v-ccf7ddec]:before,.menu+.appearance[data-v-ccf7ddec]:before,.menu+.social-links[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before,.appearance+.social-links[data-v-ccf7ddec]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before{margin-right:16px}.appearance+.social-links[data-v-ccf7ddec]:before{margin-left:16px}.social-links[data-v-ccf7ddec]{margin-right:-8px}.divider[data-v-ccf7ddec]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-ccf7ddec]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2d7af913]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-ff6087d4]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-ff6087d4]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-ff6087d4]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-ff6087d4]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-ff6087d4]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-ff6087d4]{transform:rotate(45deg)}.button[data-v-ff6087d4]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-ff6087d4]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-ff6087d4]{transition:transform .25s}.group[data-v-ff6087d4]:first-child{padding-top:0}.group+.group[data-v-ff6087d4],.group+.item[data-v-ff6087d4]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b8d55f3b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b8d55f3b]{padding-bottom:10px}.item[data-v-b8d55f3b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b8d55f3b]{cursor:pointer}.indicator[data-v-b8d55f3b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b8d55f3b]{background-color:var(--vp-c-brand-1)}.link[data-v-b8d55f3b]{display:flex;align-items:center;flex-grow:1}.text[data-v-b8d55f3b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b8d55f3b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b8d55f3b],.VPSidebarItem.level-2 .text[data-v-b8d55f3b],.VPSidebarItem.level-3 .text[data-v-b8d55f3b],.VPSidebarItem.level-4 .text[data-v-b8d55f3b],.VPSidebarItem.level-5 .text[data-v-b8d55f3b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b8d55f3b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.caret[data-v-b8d55f3b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b8d55f3b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b8d55f3b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b8d55f3b]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b8d55f3b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b8d55f3b],.VPSidebarItem.level-2 .items[data-v-b8d55f3b],.VPSidebarItem.level-3 .items[data-v-b8d55f3b],.VPSidebarItem.level-4 .items[data-v-b8d55f3b],.VPSidebarItem.level-5 .items[data-v-b8d55f3b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b8d55f3b]{display:none}.VPSidebar[data-v-575e6a36]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-575e6a36]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-575e6a36]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-575e6a36]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-575e6a36]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-575e6a36]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-575e6a36]{outline:0}.group+.group[data-v-575e6a36]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-575e6a36]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.medium-zoom-overlay{z-index:20}.medium-zoom-image{z-index:9999!important}body,html{touch-action:manipulation;-webkit-touch-callout:none;-ms-touch-action:manipulation}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff)}.VPLocalSearchBox[data-v-639d7ab9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-639d7ab9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-639d7ab9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-639d7ab9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-639d7ab9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-639d7ab9]{padding:0 8px}}.search-bar[data-v-639d7ab9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-639d7ab9]{display:block;font-size:18px}.navigate-icon[data-v-639d7ab9]{display:block;font-size:14px}.search-icon[data-v-639d7ab9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-639d7ab9]{display:none}}.search-input[data-v-639d7ab9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-639d7ab9]{padding:6px 4px}}.search-actions[data-v-639d7ab9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-639d7ab9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-639d7ab9]{display:none}}.search-actions button[data-v-639d7ab9]{padding:8px}.search-actions button[data-v-639d7ab9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-639d7ab9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-639d7ab9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-639d7ab9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-639d7ab9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-639d7ab9]{display:none}}.search-keyboard-shortcuts kbd[data-v-639d7ab9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-639d7ab9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-639d7ab9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-639d7ab9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-639d7ab9]{margin:8px}}.titles[data-v-639d7ab9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-639d7ab9]{display:flex;align-items:center;gap:4px}.title.main[data-v-639d7ab9]{font-weight:500}.title-icon[data-v-639d7ab9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-639d7ab9]{opacity:.5}.result.selected[data-v-639d7ab9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-639d7ab9]{position:relative}.excerpt[data-v-639d7ab9]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-639d7ab9]{opacity:1}.excerpt[data-v-639d7ab9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-639d7ab9] mark,.excerpt[data-v-639d7ab9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-639d7ab9] .vp-code-group .tabs{display:none}.excerpt[data-v-639d7ab9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-639d7ab9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-639d7ab9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-639d7ab9],.result.selected .title-icon[data-v-639d7ab9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-639d7ab9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-639d7ab9]{flex:none} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/favicon.ico differ diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 0000000..d6abdfc --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"notes_index.md":"86O_Lb7b","index.md":"LKQAh9T8","notes_01_c-basic_02_xdx_index.md":"k6oVENcd","notes_01_c-basic_01_xdx_index.md":"D1hb9NAd"} diff --git a/index.html b/index.html new file mode 100644 index 0000000..12eb9cb --- /dev/null +++ b/index.html @@ -0,0 +1,27 @@ + + + + + + 许大仙的博客 | Hi,终于等到你 + + + + + + + + + + + + + + + + +
Skip to content

许大仙同学

『这个世纪疯狂,没人性,腐败;你却一直清醒,温柔,一尘不染。』

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/logo.svg @@ -0,0 +1 @@ + diff --git a/notes/01_c-basic/01_xdx/index.html b/notes/01_c-basic/01_xdx/index.html new file mode 100644 index 0000000..a891862 --- /dev/null +++ b/notes/01_c-basic/01_xdx/index.html @@ -0,0 +1,252 @@ + + + + + + 第一章:计算机组成原理 | Hi,终于等到你 + + + + + + + + + + + + + + + + +
Skip to content

第一章:计算机组成原理

1.1 计算机系统

  • 计算机(Computer),俗称"电脑",是一种能够接收和存储信息,并按照存储在其内部的程序对海量的数据进行自动、高速的处理,然后将处理结果输出的现代化智能电子设备。
  • 计算机有很多形式,如:台式电脑、笔记本电脑、智能手机、平板电脑等,还有生产环境中提供重要业务支撑的各种服务器。

  • 一个完整的计算机系统硬件(Hardware)系统软件(Software)系统两大部分组成,即:

1.2 冯·诺依曼体系结构

  • 冯·诺依曼是一位多才多艺的科学家,他在数学、物理学、计算机科学、经济学等领域都有杰出的贡献。

  • 冯·诺依曼的主要成就:
    • 在计算机科学领域的最著名贡献是提出了冯·诺依曼体系结构(1946 年),这是现代计算机设计的基础
    • 促进了计算机的可编程性和通用性,使得计算机能够执行各种复杂的任务。
    • 对核武器设计、自动化控制系统、人工智能等领域的发展产生了重要影响。
    • ……

IMPORTANT

冯·诺依曼体系结构是现代计算机(量子计算机除外)设计的基础

  • 冯·诺依曼体系结构的理论要点如下:

    • 存储程序程序指令数据都存储在计算机的内存中,这使得程序可以在运行时修改。

    • 二进制逻辑:所有数据指令都以二进制形式表示。

    • 顺序执行:指令按照它们在内存中的顺序执行,但可以有条件地改变执行顺序。

    • 五大部件:计算机由运算器控制器存储器输入设备输出设备组成。

    • 指令结构:指令由操作码和地址码组成,操作码指示要执行的操作,地址码指示操作数的位置。

    • 中心化控制:计算机的控制单元(CPU)负责解释和执行指令,控制数据流。

NOTE

上述的组件协同工作,构成了一个完整的计算机系统:

  • 运算器控制器通常被集成在一起,组成中央处理器(CPU),负责数据处理和指令执行。
  • 存储器保存数据和程序,是计算机运作的基础。
  • 输入设备输出设备负责与外界的交互,确保用户能够输入信息并接收计算机的处理结果。

1.3 各种硬件处理速度和性能优化

  • 计算机的性能短板:如果 CPU 有每秒处理 1000 个服务请求的能力,各种总线的负载能力能达到 500 个, 但网卡只能接受 200个请求,而硬盘只能负担 150 个的话,那这台服务器得处理能力只能是 150 个请求/ 秒,有 85% 的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一 步提高的瓶颈。

img

  • 计算机的各个设备部件的延迟从高到低的排列,依次是机械硬盘(HDD)、固态硬盘(SSD)、内存、CPU 。

img

  • 从上图中,我们可以知道,CPU 是最快的,一个时钟周期是 0.3 ns ,内存访问需要 120 ns ,固态硬盘访问需要 50-150 us,传统的硬盘访问需要 1-10 ms,而网络访问是最慢,需要 40 ms 以上。
  • 时间的单位换算如下:
txt
1 秒 = 1000 毫秒,即 1 s = 1000 ms。
+1 毫秒 = 1000 微妙,即 1 ms = 1000 us 。
+1 微妙 = 1000 纳秒,即 1 us = 1000 ns。
  • 按照上图,将计算机世界的时间和人类世界的时间进行对比,即:
txt
如果 CPU 的时钟周期按照 1 秒计算,
+那么,内存访问就需要 6 分钟;
+那么,固态硬盘就需要 2-6 天;
+那么,传统硬盘就需要 1-12 个月;
+那么,网络访问就需要 4 年以上。
  • 所以,对于 CPU 来说,这个世界真的是太慢了!!!
  • 其实,中国古代中的文人,通常以蜉蝣来表示时间的短暂(和其他生物的寿命比),也是类似的道理,即:
txt
鹤寿千岁,以极其游,蜉蝣朝生而暮死,尽其乐,盖其旦暮为期,远不过三日尔。
+	                                        --- 出自 西汉淮南王刘安《淮南子》
txt
寄蜉蝣于天地,渺沧海之一粟。 哀吾生之须臾,羡长江之无穷。 
+挟飞仙以遨游,抱明月而长终。 知不可乎骤得,托遗响于悲风。
+	                                        --- 出自 苏轼《赤壁赋》

NOTE

对于蜉蝣来说,从早到晚就是一生;而对于我们人类而言,却仅仅只是一天。

  • 存储器的层次结构(CPU 中也有存储器,即:寄存器、高速缓存 L1、L2 和 L3),如下所示:

img

NOTE

上图以层次化的方式,展示了价格信息,揭示了一个真理,即:天下没有免费的午餐(千万不要相信别人会有发财的机会和你共享,人都是自私的,你算个啥?为什么要找你?)

  • ① 存储器越往上速度越快,但是价格越来越贵, 越往下速度越慢,但是价格越来越便宜。
  • ② 正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案

1.4 计算机软件

1.4.1 操作系统的来源

  • 在上古时期,硬件资源不够丰富,计算机设计的也非常简陋。那个时候,很多应用程序都是直接跑在硬件上的,即:一个计算机只能跑一个应用程序。

  • 随着技术的发展,硬件越来越丰富,功能也越来越强大,性能也越来越好。这种情况下,如果一台计算机只能跑一个程序,实在是太浪费了。而且,底层硬件不断丰富,应用程序需要对接的硬件也将越来越多,如果每个应用程序都这么干,不显示工作很重复吗?于是,操作系统应运而生了。

  • 操作系统的功能:
    • 硬件驱动。
    • 进程管理。
    • 内存管理。
    • 网络管理。
    • 安全管理。
    • 文件管理。
  • 那么,操作系统的作用,就是这样的,即:
    • 对下,管理计算机的硬件资源。
    • 对上,提供使用计算机资源的操作方式,有:
      • 系统调用:是一套已经写好的代码接口,应用程序通过调用这些接口来请求操作系统执行特定的硬件操作。它们直接与硬件交互,提供底层功能支持,如:文件操作、进程管理、内存管理等。开发者通过系统调用可以实现对底层资源的直接控制,确保程序能够高效、安全地运行。
      • 终端命令:是一种文本命令接口,通过命令行输入各种指令来控制操作系统和软件的行为。终端命令可以执行文件操作、系统配置、网络管理等各种任务。主要针对开发人员高级用户,他们通过命令行可以快速、精确地完成各种操作,提高工作效率。
      • 图形用户界面(GUI)是通过图形元素(如:窗口、图标、按钮等)与用户进行交互的界面。供直观、易用的操作方式,使用户能够通过鼠标点击、拖拽等简单操作完成复杂任务。主要面向普通用户,降低了计算机操作的门槛,提高了用户体验和工作效率。

1.4.2 用户态和内核态

  • 在现代操作系统中,用户态(User Mode)内核态(Kernel Mode)是两种不同的执行模式,它们对系统资源的访问权限有着本质的区别。这种区分是为了提供一个稳定和安全的运行环境,防止用户程序直接操作硬件设备和关键的系统资源,从而可能引起系统的不稳定或安全问题。

  • 核态(Kernel Mode) VS 用户态(User Mode):
类型内核态(Kernel Mode)用户态(User Mode)
权限内核态是操作系统代码运行的模式,拥有访问系统全部资源和执行硬件操作的最高权限。在这种模式下,操作系统的核心部分可以直接访问内存、硬件设备控制、管理文件系统和网络通信等。用户态是普通应用程序运行的模式,具有较低的系统资源访问权限。在用户态,程序不能直接执行硬件操作,必须通过操作系统提供的接口(即系统调用)来请求服务。
安全性由于内核态具有如此高的权限,因此只有可信的、经过严格审查的操作系统核心组件才被允许在此模式下运行。这样可以保护系统不被恶意软件破坏。用户态为系统提供了一层保护,确保用户程序不能直接访问关键的系统资源,防止系统崩溃和数据泄露。
功能内核态提供了系统调用的接口,允许用户态程序安全地请求使用操作系统提供的服务,比如:文件操作、网络通信、内存管理等。用户态保证了操作系统的稳定性和安全性,同时也使得多个程序可以在相互隔离的环境中同时运行,避免相互干扰。

NOTE

  • ① 操作系统通过用户态和内核态的分离,实现了对系统资源的保护和控制。
  • ② 当用户程序需要进行文件读写、网络通信或其他需要操作系统介入的操作时,会发生从用户态到内核态的切换。这通过系统调用(System Call)实现,系统调用是用户程序与操作系统内核通信的桥梁。
  • ③ 执行完毕后,系统从内核态返回用户态,继续执行用户程序。
  • ④ 用户态和内核态的这种分离设计是现代操作系统中实现安全、稳定运行的关键机制之一。
  • 示例:
java
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+public class Demo {
+    public static void writeFile(String filePath, String content) {
+        Path path = Paths.get(filePath);
+        try {
+            Files.write(path, content.getBytes());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+    public static void main(String[] args){
+        int a = 10;                                 // 用户态
+        int b = 20;                                 // 用户态
+        int c = a + b;                              // 用户态
+        string filePath = "c:/demo.txt";            // 用户态
+        string txt = a + b + c;                     // 用户态
+        
+        writeFile(filePath, a);                     // 从用户态切换到内核态完成文件写入
+        
+        System.out.println(a);                      // 从内核态切换回用户态
+        System.out.println(b);                      // 用户态
+        System.out.println(c);                      // 用户态
+    }
+}

1.4.3 ISA、ABI 和 API

  • ISA 、ABI 和 API 的参考模型如下:

  • 在底层,硬件模型以指令集架构 (ISA) 表示,该架构定义了处理器、寄存器、存储器和中断管理的指令集。ISA 是硬件和软件之间的接口,对于操作系统 (OS) 开发人员 (System ISA) 和直接管理底层硬件的应用程序 (User ISA) 的开发人员来说非常重要。

NOTE

  • ① ISA 是计算机体系结构中定义的一组指令,它规定了处理器能够执行的操作。ISA 包括指令的编码、寄存器的使用、内存访问模式等。不同的处理器可能有不同的 ISA,例如:x86、ARM、MIPS 等。
  • ② 在设计一个新的操作系统时,开发者需要确保操作系统能够支持特定的 ISA ,以便在特定的硬件上运行。例如:如果操作系统旨在运行在 ARM 架构的处理器上,那么它必须能够理解和执行 ARM ISA 定义的指令集。
  • 应用程序二进制接口 (ABI) 将操作系统层与由操作系统管理的应用程序分开。ABI 涵盖了低级数据类型、对齐方式和调用约定等详细信息,并定义了可执行程序的格式。系统调用在此级别定义。此接口允许应用程序和库在实现相同 ABI 的操作系统之间移植。

NOTE

  • ① ABI 是指在二进制级别上,应用程序与操作系统、库或应用程序的不同部分之间的接口。它定义了数据类型的大小、布局、对齐方式,以及函数调用的约定(如参数如何传递、返回值如何处理等)。ABI 确保了编译后的二进制文件能够在特定的操作系统和硬件平台上正确地运行。
  • ② 在 windows 上的应用程序的运行格式是:PE(portable executable)格式、.dll (dynamic link library)格式和 .lib 格式;而在 Linux 上的应用程序的运行格式是:ELF(executable and linking format)格式、.so (shared object)格式和 .a 格式。
  • ③ 在 Linux 中可以通过 file /bin/ls 命令查看指定可执行应用程序的 ABI 格式;从而也可以论证,在 Windows 上可以运行的程序,在 Linux 上运行不了。
  • ④ 当开发者在 Linux 系统上编写 C 语言程序,并使用特定的编译器(如:GCC)编译时,编译器会遵循 Linux 平台的 ABI 规范来生成二进制文件。这样,生成的可执行文件就可以在任何遵循相同 ABI 规范的 Linux 系统上运行。
  • ⑤ 如果一个应用程序需要跨平台(操作系统)运行,就需要使用一套代码,多平台编译的方式(针对 C 或 C++ 等),即:相同的源代码,在不同平台(操作系统)上使用特定平台的编译器(如:GCC)来分别编译成符合自己平台的 ABI 规范的二进制文件。
  • 最高级别的抽象由应用程序编程接口 (API) 表示,它将应用程序连接到底层操作系统

NOTE

  • ① API 是一组预定义的函数、协议和工具,用于构建软件和应用程序。API 允许不同的软件系统相互交互,它定义了软件组件之间如何相互通信。API 可以是库、框架、协议或服务。
  • ② 在 Web 开发中,开发者可能会使用 JavaScript 的 Fetch API 来与服务器进行通信,获取数据或提交表单。这个 API 提供了一种标准化的方式来发送 HTTP 请求和处理响应,而不需要开发者关心底层的网络协议细节。

1.4.4 系统调用(System Call)和函数库(Library Call)

  • 在现代操作系统中,应用程序都不能直接作用于硬件,而是运行在操作系统之上。

  • 并且,在上文的图示中,我们也会看到系统调用(System Call)函数库(Library Call)的身影,如下:

  • 其实,系统调用(System Call)函数库(Library Call)的区别如下:
类型系统调用(System Call)函数库(Library Call)
定义系统调用是操作系统提供给程序员的一组接口,这些接口允许用户空间的程序请求操作系统内核提供的服务,比如文件操作、进程控制、通信和内存管理等。函数库调用是指使用高级语言编写的一组预先编译好的函数,这些函数实现了一些常用的功能,比如:字符串处理、数学计算等。程序员可以在自己的程序中直接调用这些函数,而无需重新实现它们。
权限执行系统调用时,会从用户态切换到内核态。这是因为系统调用涉及到访问受保护的系统资源,这些操作必须由操作系统控制以确保系统的稳定性和安全性。函数库调用通常在用户态执行,不涉及到用户态与内核态之间的切换。它们直接使用操作系统通过系统调用提供的服务,或者完全在用户空间内完成计算,不需要操作系统介入。
性能开销由于涉及到用户态与内核态之间的切换,系统调用的执行成本相对较高。因此,频繁的系统调用可能会影响程序的性能。相对于系统调用,函数库调用的性能开销较小。因为它们通常不涉及到模式切换,且执行的操作多在用户空间完成。
示例open(),read(),write(),fork(),exec() 等 UNIX/Linux 系统调用。C 标准库中的 printf() 等函数;数学库中的 sin(),cos() 等函数。

NOTE

  • 执行层级:系统调用直接与操作系统内核交互,执行更底层的操作;而函数库调用运行在用户空间,通常使用系统调用来实现其功能。
  • 性能开销:系统调用由于涉及到用户态与内核态的切换,性能开销相对较大;函数库调用则因为主要在用户态执行,性能开销较小。
  • 使用目的:系统调用提供了访问操作系统资源和服务的能力;函数库调用则提供了方便、高效执行常见任务的手段。

第二章:初识计算机语言

2.1 计算机语言是什么?

  • 人类语言是人和人之间用于沟通的一种方式,例如:中国人和中国人之间使用普通话沟通,而中国人和美国人交流,则可以使用英语。
  • 计算机编程语言是人和计算机交流的方式。人们可以使用编程语言对计算机下达命令(指令),让计算机完成人们需要的功能。

NOTE

计算机语言有很多种,如:C、C++、Java、Go、JavaScript、Python、Scala 等。

2.2 为什么要学习计算机语言?

  • 编程语言到底是什么?编程语言就是由文字和符号组成的,如:
c
#include <stdio.h> // 这是编译预处理指令
+
+int main() { // 定义主函数
+
+    printf("你好,世界!!!"); // 输出所指定的一行信息
+
+    return 0;  // 函数执行完毕时返回函数值0
+}
  • 编程语言就是用于控制计算机,让其完成我们需要的功能。而我们学习编程语言,其实就是学习这些文字和符号编写的规则。
  • 因为 CPU 只能识别二进制的指令,而我们编写的程序叫做源代码,是人类能看懂;但是,计算机却不能识别。那么,我们就需要让计算机能识别我们编写的源程序,就需要将我们编写的源代码交给编译器程序,其会帮助我们将所编写的源代码转换为计算机能够识别的二进制指令。

NOTE

编译器就是运行在操作系统之上的程序,其作用就是用来将程序员编写的源代码转换为计算机能够识别的二进制指令。

  • 如果我们用 Java 语言编写了程序(源代码),那么编写的程序也是不能直接运行的,需要通过 Java 语言的编译器将 Java 程序编译为计算机能够识别的二进制指令。
  • 如果我们用 Python 语言编写了程序(源代码),那么编写的程序也是不能直接运行的,需要通过 Python 语言的编译器将 Python 程序编译为计算机能够识别的二进制指令。
  • ……
  • 总而言之,无论我们学习任何一门编程语言,想要将程序运行起来,都必须做如下的两件事情:
    • ① 学习该语言的文字和符号编写的规则,即:语法规则
    • ② 需要在操作系统上安装对应编程语言的编译器程序,将源程序编译为计算机能够识别的二进制指令。

2.3 计算机语言简史

2.3.1 机器语言(相当于人类的石器时代)

  • 1946 年 2 月 14 日,世界上第一台计算机 ENIAC 诞生,使用的是最原始的穿透卡片

  • 这种卡片使用的是用二进制代码表示的语言,和人类语言差别极大,这种语言就称为机器语言,如:
txt
0000,0000,000000010000 代表 LOAD A, 16
+0000,0001,000000000001 代表 LOAD B, 1
+0001,0001,000000010000 代表 STORE B, 16
  • 这种语言本质上是计算机能识别的唯一语言,人类很难理解;换言之,当时的程序员 99.9% 都是异类!!!

IMPORTANT

不同类型(CPU 架构,如:x86_64、arm 等)的处理器有不同的机器语言指令集,指令集架构(ISA)决定了机器语言的具体形式;换言之,机器语言与特定硬件架构紧密相关,机器语言程序几乎没有可移植性。

2.3.2 汇编语言(相当于人类的青铜&铁器时代)

  • 汇编语言使用助记符(如:MOV、ADD、SUB)代替二进制操作码,使程序更易于人类编写和理解;因此,汇编语言也被称为符号语言

  • 汇编语言的优点是能编写高效率的程序;但是,缺点和机器语言没什么不同,汇编语言同样依赖于具体的计算机架构(面向机器),程序不具备跨平台的可移植性。

NOTE

汇编语言,目前仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。

2.3.3 高级语言(相当于人类的信息时代)

  • 高级语言是一种接近于人们使用习惯的程序设计语言。它允许程序员使用接近日常英语的指令来编写程序,程序中的符号和算式也和日常使用的数学公式差不多,接近于自然语言和数学语言,容易被人们掌握。

  • 高级语言独立于计算机硬件,有一定的通用性;计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器解释器转换为机器语言,才能被计算机识别和执行。

NOTE

普遍使用的高级编程语言,有:C、C++、Java、Python、C#、JavaScript、Go、SQL 等。

2.3.4 总结

  • 编写语言的对比,如下所示:
类别特征优点缺点示例
机器语言直接由计算机执行的二进制代码执行速度快编写困难,可读性差,与具体硬件强绑定二进制代码
汇编语言用助记符代替二进制代码的低级语言相对机器语言更易编写和理解,允许直接控制硬件资源依然需要了解硬件,不够抽象,与具体硬件或平台相关MOV,ADD 等助记符
高级语言接近人类语言,提供了更高层次的抽象易于编写和维护,可移植性好,支持多种编程范式需要通过编译器或解释器转换为机器语言,可能存在一定的性能损失C,Java, Python 等

NOTE

  • ① 这三种编程语言类型从低级到高级提供了不同层次的抽象,以满足不同的编程需求和场景。
  • ② 随着计算机科学的发展,高级语言因其强大的表达能力、良好的可移植性和易用性,成为了日常软件开发的主流选择。

第三章:初识 C 语言

3.1 C 语言的由来

  • 1969 年,美国贝尔实验室的肯·汤姆森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)一起开发了 Unix 操作系统。Unix 最初是使用汇编语言编写的,依赖于计算机硬件。为了程序的可读性可移植性,它们决定使用高级语言重写。但是。当时的高级语言无法满足他们的要求,肯·汤姆森就在 BCPL 语言的基础上发明了 B 语言。
  • 1972 年,丹尼斯·里奇(Dennis Ritchie)在 B 语言的基础上重新设计了一种新的语言,这种新语言取代了 B 语言,即 C 语言。

  • 1973 年,整个 Unix 系统都使用 C 语言重写

NOTE

C 语言最初是作为 Unix 系统的开发工具而发明的。

  • 此后,这种语言快速流传,广泛用于各种操作系统和系统软件的开发,如:Unix、MS-DOS、Microsoft Windows 以及 Linux 等。

  • 1988 年,美国国家标准协会(ANSI)正式将 C 语言标准化,标志着 C 语言开始稳定和规范化。

3.2 为什么要学习 C 语言?

  • C 语言具有可移植好、跨平台的特点:用 C 语言编写的代码可以在不同的操作系统和硬件平台上编译和运行。

NOTE

C 语言的最原始的设计目的,就是为了将 Unix 操作系统移植到其他的计算机架构上,这使得它从一开始就非常注重可移植性。

  • C 语言在许多领域应用广泛
    • 操作系统:C 广泛用于开发操作系统,如:Unix、Linux 和 Windows。
    • 嵌入式系统:C 是一种用于开发嵌入式系统(如:微控制器、微处理器和其它电子设备)的流程语言。
    • 系统软件:C 用于开发设备驱动程序、编译器和汇编器等系统软件。
    • 网络:C 语言广泛用于开发网络应用程序,例如:Web 服务器、网络协议和网络驱动程序。
    • 数据库系统:C 用于开发数据库系统,例如:Oracle、MySQL 和 PostgreSQL 。
    • 游戏:由于 C 能够处理低级硬件交互,因此经常用于开发计算机游戏。
    • 人工智能:C 用于开发人工智能和机器学习的应用程序,例如:神经网络和深度学习算法。
    • 科学应用:C 用于开发科学应用程序,例如:仿真软件和数值分析工具。
    • 金融应用:C 用于开发股票市场分析和交易系统等金融应用。
  • ③ C 语言能够直接对硬件进行操作、管理内存以及和操作系统对话,这使得它是一种非常接近底层的语言,非常适合写需要和硬件交互、有极高性能要求的程序。
  • 学习 C 语言有助于快速上手其他编程语言,如:C++(原先是 C 语言的一个扩展,在 C 语言的基础上嫁接了面向对象编程思想)、C#、Java 等,这些语言都继承或深受 C 语言的影响和启发。
  • ⑤ C 语言长盛不衰。C 语言至今,依然是最广泛使用、最流行的编程语言之一,包括很多大学将 C 语言作为计算机教学的入门语言,拥有庞大而活跃的用户社区,这意味着有许多资源和库可供开发人员使用。

3.3 计算机语言排行榜

  • TIOBE 是一个流行编程语言排行,每月更新。排名权重基于世界范围内工程师数量,Google、Bing、Yahoo! 、Wikipedia、Amazon、Youtube 和百度这些主流的搜索引擎,也将作为排名权重的参考指标。

  • 计算机语言走势图:

3.4 C 语言的版本选择

  • 随着微型计算机的日益普及,出现了许多 C 语言版本(标准)。

    • 版本 1(K&R C):K&R C 指的是 C 语言的原始版本。1978年,C 语言的发明者布莱恩·柯林(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合写了一本著名的教材《C 编程语言》(The C programming language)。

    NOTE

    由于 C 语言还没有成文的语法标准,这本书就成了公认标准,以两位作者的姓氏首字母作为版本简称 “K&R C”。

    • 版本 2(ANSI C,又称 C89 或 C90):C 语言的原始版本非常简单,对很多情况的描述非常模糊,加上 C 语法依然在快速发展,要求将 C 语言标准化的呼声越来越高。1989 年,美国国家标准协会(ANSI)制定了一套 C 语言标准,并于次年被国际标准化组织(ISO)通过。它被称为 “ANSI C”,也可以按照发布年份,称为 “C89 或 C90”。

    • 版本 3(C99):C 语言标准的第一次大型修订,发生在 1999 年,增加了许多语言特性,比如:双斜杠( // )的注释语法,可变长度数组、灵活的数组成员、复数、内联函数和指定的初始值设定项,这个版本称为 C99,是目前最流行的 C 版本

    • 版本 4(C11):2011 年,标准化组织再一次对 C 语言进行修订,增加了_Generic、static_assert 和原子类型限定符。这个版本称为 C11。

    NOTE

    需要强调的是,修订标准的原因并不是因为原标准不能用,而是需要跟进新的技术。

    • 版本 5(C17):C11 标准在 2017 年进行了修补,但发布是在 2018 年。新版本只是解决了 C11 的一些缺陷,没有引入任何新功能。这个版本称为 C17。
    • 版本 6(C23):2023 年发布,计划进一步增强安全性,消除实现定义的行为,引入模块化语言概念等新特性,使 C 语言在安全和可靠性方面有重大提高。
    • ……
  • 需要注意的是,C 语言的标准并没有强制性的约束,只是个说明文档而已。不同的编译器产商,对 C 语言的标准有不同的实现,甚至会出现某些 C 语言的标准在这个编译器下实现了;但是,在另外的编辑器下却没有实现,导致编译程序错误的现象。常见的 C/C++ 编译器如下:

    • Borland C++ 宝蓝公司。
    • Intel C++ 英特尔编译器。
    • MSVC 微软公司。
    • g++ 编译器(GCC,编译套件), Linux 操作系统。

IMPORTANT

GCC 编译套件对标准的支持是最好的;所以,在实际项目开发中,我们首先会选用 GCC 编译套件来进行开发。

3.5 C 语言的优缺点

  • C 语言的优点:

    • ① 高效:C 语言生成的代码非常高效,执行速度快,这使得其非常适合用于操作系统、嵌入式系统等需要高性能的场景。
    • ② 灵活性和低级控制:C 语言允许直接操作内存和硬件,可以进行位操作、指针运算等底层编程,非常适合开发需要直接硬件控制的应用。
    • ③ 广泛的硬件和平台支持:C 语言几乎可以在所有的计算机平台上运行,从微处理器到超级计算机,几乎所有的硬件平台都支持 C 语言。
    • ④ 标准库丰富:C 语言有一个标准库(C Standard Library),提供了大量常用的函数,涵盖了文件操作、字符串处理、内存管理等多种功能。
    • ⑤ 语言简洁:语法规则相对简单,没有过多的复杂特性,使得语言本身比较容易学习和掌握。
  • C 语言的缺点:

    • ① 缺乏高级特性:和现代编程语言相对,C 语言缺乏一些高级特性,如:面向对象编程、垃圾回收机制等,这使得某些类型的应用程序开发可能会更加复杂。
    • ② 安全性问题:C 语言允许直接操作内存,可能会导致缓冲区溢出、空指针引用等安全漏洞。如果不小心处理,容易产生难以调试的错误和安全隐患。
    • ③ 手动管理内存:C 语言需要程序员手动管理内存,即:分配内存和释放内存,这增加了内存泄露和悬空指针等问题的风险。
    • ④ 错误调试困难:由于 C 语言的底层操作特点,调试和排查错误可能比较困难,尤其是在处理复杂指针和内存操作的时候。
    • ⑤ 标准库有限:虽然 C 语言的标准库涵盖了很多基本功能,但相比现代编程语言的标准库,功能相对有限,尤其是在网络编程、多线程编程等方面。
  • 总而言之,C 语言的高效性和灵活性使其在系统级编程和嵌入式系统中占据重要地位,但其缺乏高级特性和内存管理上的挑战也使得开发过程可能更加复杂和容易出错。对于需要高性能和底层控制的应用,C 语言依然是不可替代的选择。

第四章:C 语言入门(Hello World,⭐)

4.1 环境的安装和配置

4.1.1 概述

  • 要开发 C/C++ 程序,需要安装 C/C++ 编译器,目前有两种主流实现,即:

    • GCC(GNU Compiler Collection):全平台实现,即支持 Windows、MacOS、Linux 等。
    • MSVC(Microsoft Visual C++):只支持 Windows 系统。
  • GCC 在 Windows 上的版本有很多,如:MinGW-w64GygwinMSYS2。它们之间的区别,如下所示:

特性MinGW-w64CygwinMSYS2
简介Minimalist GNU for WindowsPOSIX 兼容环境和工具集结合了 MinGW 和 Cygwin 的工具集
编译器提供 GCC 编译器提供 POSIX 兼容环境,包含大量工具提供 MinGW-w64 工具链和 Cygwin 环境
生成文件Windows 原生可执行文件POSIX 兼容的可执行文件可以生成 Windows 原生可执行文件或 POSIX 文件
依赖无需额外依赖依赖 Cygwin DLL根据使用工具链决定(MinGW-w64 无依赖,Cygwin 有依赖)
工具和库基本的编译工具丰富的 Unix 工具和库丰富的工具和库,强大的包管理系统
性能性能较好可能较低,因为通过兼容层调用系统取决于使用的工具链(MinGW-w64 性能较好)
复杂度简单易用设置和使用相对复杂较为灵活,复杂度介于 MinGW-w64 和 Cygwin 之间
适用场景开发 Windows 原生应用运行和开发 Unix 程序混合使用 Unix 工具和开发 Windows 原生应用
优点轻量级,直接生成 Windows 应用完整的 POSIX 兼容环境,丰富的工具灵活的环境,强大的包管理系统
缺点工具和库较少生成文件依赖 Cygwin DLL,性能可能较低环境较大,占用更多空间,复杂性比 MinGW-w64 高

NOTE

  • ① MinGW-w64 、Cygwin 以及 MSYS2 任选其一安装即可。
  • ② 目前的 Win10 和 Win11 版本支持 WSL2 (Windows Sub Linux 2 ,即 Windows 的子系统 Linux),可以实现在 Windows 系统上安装一个 Linux ,然后再运行 Linux 中的 GCC 工具链。

4.1.2 MinGW-w64 的安装和配置

4.1.2.1 安装

  • 下载到本地:略。

NOTE

下载地址在这里

  • 解压到指定的目录,即:

NOTE

本人的解压目录是:D:\develop\mingw64

4.1.2.2 配置 path 环境变量

  • 配置环境变量,以便任意目录都可以执行 gcc 命令,即:

NOTE

因为,本人安装 MinGW-w64 的目录是 D:\develop\mingw64,所以配置 path 环境变量就需要 D:\develop\mingw64\bin

  • 测试是否安装成功:
shell
gcc --version

4.1.3 Cygwin 的安装和配置

4.1.3.1 安装

  • 下载到本地:略。

NOTE

下载地址在这里

  • 点击安装:

NOTE

默认是最小化安装,没有 GCC,需要选择 gcc-core、gcc-g++、make、gdb、binutils 。

4.1.3.2 配置 path 环境变量

  • 3.1.2.2 配置 path 环境变量 步骤相同:略。

4.1.4 MSYS2(推荐)

4.1.4.1 安装

  • 下载到本地:略。

NOTE

下载地址在这里

  • 点击安装:

  • 出现命令终端:

  • 替换清华镜像源(可选):
shell
sed -i "s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

  • 安装 gcc 等相关开发包:
shell
pacman -Syu --noconfirm # 更新包管理器
shell
pacman -Sy base-devel --noconfirm # 安装开发工具包
shell
pacman -Sy mingw-w64-x86_64-toolchain --noconfirm # 安装开发 gcc 相关工具链

4.1.4.2 配置 path 环境变量

  • 3.1.2.2 配置 path 环境变量 步骤相同:略。

4.2 IDE 的安装和配置

4.2.1 CLion

4.2.1.1 概述

  • CLion 是一款由 JetBrains 推出的跨平台 C/C++ 集成开发环境(IDE),它具有智能编辑器、CMake 构建支持、调试器、单元测试、代码分析等功能,可以极大提高 C/C++ 开发效率。

4.2.1.2 安装

  • 鼠标双击,进入安装:

  • 下一步:

  • 下一步:

  • 下一步:

  • 安装:

  • 安装完成:

4.2.1.3 配置

  • 打开 CLion :

  • 安装中文插件(可选):

  • 配置新 UI :

  • 新 UI 配置自定义字体(可选):

  • 配置自动保存功能:

  • 配置文件编码 为 UTF-8:

  • 配置控制台编码为 UTF-8:

  • 配置显示方法分隔符功能:

  • 配置编辑器的字体(可选):

  • 检测 GCC 工具链是否安装成功:

4.2.2 VS Code

4.2.2.1 概述

  • Visual Studio Code (VS Code) 是一个免费的开源代码编辑器,适用于 Windows、MacOS 和 Linux 平台。它支持语法高亮、智能代码补全(IntelliSense)、内置调试工具和Git集成。用户可以通过扩展来添加更多功能,如:支持新的编程语言、主题和调试工具。VS Code 还支持在微软 Azure 上进行部署和托管,适用于各种编程语言和框架。

NOTE

Visual Studio Code 需要安装对应的插件,才能运行 C/C++ 代码。

4.2.2.2 安装

  • 鼠标双击,进入安装:

  • 同意协议:

  • 下一步:

  • 下一步:

  • 下一步:

  • 安装:

  • 安装过程:

  • 安装完成:

4.2.2.3 配置

  • 安装中文插件:

  • 安装 C/C++ 插件:

4.2.3 Microsoft Visual Studio

4.2.3.1 概述

  • Visual Studio(简称 VS)是由微软公司发布的集成开发环境。它包括了整个软件生命周期中所需要的大部分工具,如:UML工具、代码管控工具、集成开发环境(IDE)等。

  • Visual Studio 支持 C/C++、C#、F#、VB 等多种程序语言的开发和测试,可以用于生成Web应用程序,也可以生成桌面应用程序,功能十分强大,但下载和安装很可能耗时数小时,还可能会塞满磁盘。

  • Visual Studio 2022 有三种版本:社区版(免费,不支持企业使用),专业版(第一年 1199 美元/ 799 美元续订)和企业版(第一年 5999 美元/ 2569 美元续订)。企业版拥有面向架构师的功能、高级调试和测试,这些功能是另两种 SKU 所没有的。

  • Visual Studio 旨在成为世界上最好的 IDE(集成开发环境),目前最新版本为 Visual Studio 2022。

4.2.3.2 安装

  • 鼠标双击,进入安装:

  • 继续:

  • 等待:

  • 工作负荷(使用 C++ 的桌面开发):

  • 单个组件:

  • 语言包:

  • 安装位置(修改默认的安装位置):

  • 如果不是第一次安装,可能会出现共享组件、工具和 SDK不可以修改,即:

  • 此时,就需要打开注册表编辑器,将如下图中的除了第一个选项,全部删除,然后关闭再重新安装,即:

  • 开始安装:

  • 安装中:

  • 安装完成,然后关闭:

4.2.3.3 配置

  • 在开始菜单处,启动 VS :

  • 登录或跳过该选项(有微软账号就注册,没有就暂时跳过):

  • 继续:

  • 注册 VS :

  • 填写注册码:

NOTE

  • ① Pro 版本:TD244-P4NB7-YQ6XK-Y8MMM-YWV2J
  • ② Enterprise 版本:VHF9H-NXBBB-638P6-6JHCY-88JWH

4.3 HelloWorld

4.3.1 手动版

  • ① 新建一个 HelloWorld.c 的文件:

  • ② 通过记事本等软件打开该文件,输入如下的代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ③ 通过 gcc 命令编译该文件:
shell
gcc HelloWorld.c -o HelloWorld.exe

  • ④ 执行:
shell
./HelloWorld.exe

4.3.2 VS Code 版

  • ① 新建一个文件夹(目录),用于存放代码:

  • ② 通过 vscode 打开该目录:

  • ③ 在 vscode 中新建 HelloWorld.c 文件:

  • ④ 设置 VSCode 中 C/C++ 的代码格式为行尾风格(可选):

  • ⑤ 编写如下的代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ⑥ 通过 gcc 命令编译该文件:
shell
gcc HelloWorld.c -o HelloWorld.exe

  • ⑦ 执行:
shell
./HelloWorld.exe

  • ⑧ 安装 Code Runner 插件(步骤略),实现右键直接编译执行(可选):

4.3.3 VS 版

  • ① 新建空项目:

  • ② 打开解决方案资源管理器

  • ③ 新建 HelloWorld.c 文件:

  • ④ 编写如下代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ⑤ 编译和执行:

4.3.4 CLion

  • ① 新建空项目:

  • ② 编写如下代码,并保存:
c
#include <stdio.h>
+
+int main(){
+    printf("Hello World");
+    return 0;
+}

  • ③ 编译和运行:

  • ④ 默认情况下,一个项目只能有一个 c 源文件包含 main 函数,但是 CLion 可以有多个,如下:

  • ⑤ 如果之后,有中文乱码问题,那么请做如下步骤:

NOTE

内容如下所示:

txt
-Dfile.encoding=UTF-8
+-Dconsole.encoding=UTF-8

第五章:注释

5.1 概述

  • 编程语言中,注释是一种特殊的文本,它不会被编译器执行,而仅用于代码的解释和文档说明。

NOTE

  • ① 注释是一个程序员必须有具有的良好编程习惯。
  • ② 在实际开发中,程序员可以将自己的思路通过注释整理出来,然后再用代码去实现。

5.2 单行注释

  • C 语言中的单行注释的格式,如下所示:
c
// 单行注释

NOTE

在 CLion 中的快捷键是 Ctrl + /

  • 示例:
c
#include <stdio.h> // 这是编译预处理指令
+
+int main() { // 定义主函数
+
+    printf("你好,世界!!!"); // 输出所指定的一行信息
+
+    return 0;  // 函数执行完毕时返回函数值0
+}

5.3 多行注释

  • C 语言中的多行注释的格式,如下所示:
c
/*
+  这是第一行注释
+  这是第二行注释
+  这是第三行注释
+*/

NOTE

  • ① 多行注释不能嵌套使用!!!
  • ② 在 CLion 中的快捷键是 Ctrl + Alt + /
  • 示例:
c
#include <stdio.h> 
+
+int main() { 
+	
+    /*
+       printf(1);
+       printf(2);
+    */
+    printf("你好,世界!!!"); 
+
+    return 0;  
+}

第六章:HelloWorld 的规范(⭐)

6.1 规范的代码风格

6.1.1 正确的缩进和空白

  • ① 使用一次 tab 操作,实现缩进,默认整体向右边移动;如果使用 shift + tab 则整体向左移动。
  • ② 运算符两边习惯各加一个空格,如:2 + 4 = 6

NOTE

各种 IDE 都有格式化的快捷键,如:CLion 的格式化快捷键是 Ctrl + Alt + L

  • 示例:
c
#include <stdio.h>
+
+int main() {
+
+    int a = 1;
+    int b = 2;
+    int c = a + b;
+
+    printf("c = %d", c);
+
+    return 0;
+}

6.1.2 代码风格

  • 在 C 语言中,有两种代码风格:行尾风格次行风格

NOTE

看个人爱好,任选一种即可,本人喜欢行尾分格!!!

  • 示例:行尾风格
c
int main(){                                      
+    if(a > b) {
+		return a;
+	} else {
+		return b;
+	}  
+  	return 0;                   
+}
  • 示例:次行风格
c
int main()
+{                                      
+    if(a > b) 
+	{
+		return a;
+	} 
+	else 
+	{
+		return b;
+	}  
+  	return 0;                   
+}

6.2 代码细节剖析

6.2.1 main() 函数

  • 在 C 语言中,一个程序或工程可以定义很多函数,但是有且只有一个 main() 函数,作为程序执行的入口,并且在 main() 函数结尾结束整个程序的运行,即:
c
int main(){
+    return 0;
+}
  • 如果 main() 函数是空括号,即表示 main() 函数不接收任何参数。
  • 在 main() 函数之前的 int 称为关键字,代表数据类型是整型,它是 main() 函数的返回值的类型,即在执行 main() 函数之后一定会得到一个整数类型的值,即函数值。

NOTE

  • ① 在 C 语言中,人们约定,如果 return 0,就表示 main() 函数终止运行,且运行成功;如果返回其它非零整数,则表示运行失败。
  • ② 默认情况下,如果 main() 函数中省略 return 0 ,则编译器会自动加上;但是,为了保持统一的代码风格,不建议省略。

6.2.2 函数体

  • ① 一对花括号 {} 定义了函数的主体,所有函数都必须以大括号开头和结尾,成对出现。
  • ② C 程序中的函数体指的是作为该函数一部分的语句。它可以是任何操作,比如:搜索、排序、打印等。
  • ③ 每一个执行语句后面都会有一个英文分号;作为语句结束的标志。
  • ④ 一行内可写几条语句,一条语句也可写在几行上。

6.2.3 printf() 函数

  • printf() 函数的格式,如下所示:
c
printf (const char *__format, ...)
  • printf() 函数是产生格式化输出的函数,作用是将参数文本输出到屏幕,f 表示 format(格式化),表示可以指定输出文本的格式,即:
c
printf ("Hello World"); // 将字符串输出到控制台,行尾不换行
  • 如果想让光标移动到下一行的开头,可以在输出文本的结尾,可以添加一个换行符 \n,即:
c
printf("Hello World\n");

6.2.4 标准库和头文件

6.2.4.1 概述

  • printf() 函数是在标准库的头文件 stdio.h 中定义的,要想在程序中使用这个函数,必须在源文件的头部引入该头文件,即:
c
#include <stdio.h>

6.2.4.2 标准库(Standard Library)

  • C 语言的标准库是由一组函数组成,这些函数提供了许多常用的操作和功能,如:输入输出、字符串处理、内存管理、数学计算等。标准库中的函数由编译器提供,遵循 ANSI C 标准(如:C89/C90、C99、C11等)。
  • 换言之,C 语言的标准库就是包含函数的实际代码,这些代码在编译的时候被链接到我们的程序中,无需手动包含。C 语言的标准库提供了可重用的函数实现,使得程序员不必编写常用的功能。

NOTE

实际的 printf() 函数的实现代码通常位于标准库的实现文件中,如:在 Linux 中的标准库libc.so.6 就包含了 printf() 函数的实现。

6.2.4.3 头文件(Header Files)

  • 头文件是包含函数声明、宏定义、数据类型定义等内容的文件。头文件的作用是为源代码提供必要的声明和定义,以便编译器能够正确解析和链接函数调用。头文件通常以.h作为文件扩展名。

  • 换言之,头文件包含函数声明、宏定义和数据类型定义,但不包含函数的实现。头文件告知编译器如何使用标准库中的函数和定义,确保编译时的正确性。头文件需要在源代码文件中使用#include指令显式包含,如:#include <stdio.h>

  • 常见的 C 语言头文件及其功能和常用函数、宏等,如下所示:

头文件功能说明常用函数和宏
stdio.h标准输入输出库printfscanffprintffscanffopenfclosefgetsfputs
stdlib.h标准库,提供内存分配、程序控制、类型转换、随机数生成等功能mallocfreeexitatoiatofrandsrand
string.h字符串处理库strlenstrcpystrncpystrcatstrcmpstrstrmemsetmemcpy
math.h数学库sincostanexplogsqrtpow
time.h时间和日期库timeclockdifftimemktimestrftimelocaltimegmtime
ctype.h字符处理库isalnumisalphaisdigitislowerisuppertolowertoupper
stdbool.h布尔类型库booltruefalse
assert.h断言库assert

6.2.4.4 预处理命令

  • #include 命令的作用是将指定文件的内容插入到包含该命令的源文件中。这通常用于包含头文件,以便使用头文件中声明的函数、宏和数据类型。
  • 语法:
c
// 用于包含标准库头文件或系统头文件。
+// 编译器将在系统的标准头文件目录中查找文件。
+#include <filename>
c
// 用于包含用户自定义的头文件。
+// 编译器首先在当前目录中查找文件,如果未找到,再在标准头文件目录中查找。
+#include "filename"

第七章:CLion 高级配置(⭐)

7.1 安装和配置 WSL2

7.1.1 概述

  • WSL 2,全称为 Windows Subsystem for Linux 2,是微软提供的一种技术,允许用户在 Windows 操作系统上运行 Linux 内核。WSL 2 是 WSL 的升级版,它引入了一个真正的 Linux 内核来代替 WSL 1 中使用的兼容层,从而提供更高的性能和更广泛的系统调用支持。
  • 其架构图,如下所示:

  • WSL2 的功能,如下所示:

    • 真实的Linux内核:WSL 2 使用了微软开发的轻量级虚拟机,它包含了一个完整的 Linux 内核。这意味着 WSL 2 能够运行更多的 Linux 应用程序,并且支持更多的系统调用。
    • 文件系统性能提升:WSL 2 的文件系统性能比 WSL 1 有显著提升。对于 I/O 密集型的操作,如:编译代码或数据库操作,WSL 2 能够提供更快的速度。
    • 兼容性增强:由于使用了真实的 Linux 内核,WSL 2 对 Linux 应用程序的兼容性大幅提高。许多在 WSL 1上不能运行或需要调整的应用程序,可以在 WSL 2上直接运行。
    • 网络功能改进:WSL 2 提供了更好的网络集成,能够更容易地与 Windows 上的其他网络资源进行交互。
    • 资源使用优化:WSL 2 使用轻量级虚拟机,比传统的虚拟机占用更少的资源,同时提供了类似的隔离和安全性。
  • WSL 的用途,如下所示:

    • 开发环境:WSL 2 为开发者提供了一个原生的Linux开发环境,而无需离开 Windows 。这对于需要在 Linux 上开发、测试或运行应用程序的开发者非常有帮助。
    • 学习和实验:用户可以使用 WSL 2 在Windows上学习和实验 Linux 命令行工具和应用程序,而无需设置双重引导系统或安装虚拟机。
    • 多平台开发:对于跨平台开发者来说,WSL 2 允许他们在一个操作系统上同时进行 Windows 和 Linux 平台的开发和测试,提高工作效率。
    • 运行 Linux 工具和应用程序:WSL 2 支持在 Windows 上直接运行各种 Linux 工具和应用程序,如:Docker、数据库、编程语言环境等。

7.1.2 WSL2 的安装

  • ① BIOS 或 UEFI 中,开启虚拟化:步骤略。

  • ② 查看是否开启了虚拟化:

  • ③ 启用适用于 Linux 的 Windows 子系统:
powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

IMPORTANT

以管理员身份打开 PowerShell 并运行,执行完上述命令之后,如果提示需要重启计算机,那就重启计算机。

  • ④ 启用虚拟机功能:
powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

IMPORTANT

以管理员身份打开 PowerShell 并运行,执行完上述命令之后,如果提示需要重启计算机,那就重启计算机。

  • ⑤ 更新 Linux 内核包:
powershell
wsl --update

NOTE

wsl2 的最新 Linux 内核包托管在 GitHub 上,某些国家可能会污染 Github 相关的域名,那么就需要手动下载,然后安装即可,下载地址在这里

  • ⑥ 将 wsl2 设置为默认版本:
powershell
wsl --set-default-version 2

  • ⑦ 查看官方在线支持的 Linux 版本:
powershell
wsl --list --online

  • ⑧ 安装指定版本的 Linux :
powershell
wsl --install Ubuntu-24.04

NOTE

官方支持的 Linux 版本,托管在 Github 上,某些国家可能会污染 Github 的域名;此时,要么走科学上网,要么在 Microsoft Store 中搜索并安装。

  • ⑨ 在 Microsoft Store 中搜索并安装(可选):

  • ⑩ 查询本地安装的 Linux 版本:
powershell
wsl --list

7.1.3 配置 WSL2

  • 本人的安装的是 AlmaLinux9 ,所以需要执行如下命令,以便安装 cmake 相关工具链:
shell
sudo dnf update -y # 更新包管理器 
+sudo dnf groupinstall "Development Tools" -y # 安装开发工具包
+sudo dnf install gcc gcc-c++ -y # 安装GCC相关工具链
+sudo dnf install cmake -y # 安装 cmake
+sudo dnf install make -y # 安装 make
+sudo dnf install gdb -y # 安装 gdb

  • 可以通过 CLion 测试是否安装成功:

7.1.4 配置 WSL2

  • 本人的安装的是 Ubuntu 24.04,所以需要执行如下命令,以便安装 cmake 相关工具链:
shell
sudo apt update && sudo apt upgrade -y # 更新包管理器
+sudo apt install build-essential -y # 安装开发工具包
+sudo apt install gcc g++ -y # 安装 GCC 相关工具链
+sudo apt install cmake -y # 安装 cmake
+sudo apt install gdb -y # 安装 gdb

  • 可以通过 CLion 测试是否安装成功:

NOTE

默认仓库中的 GDB 的版本会很高,CLion 会不支持,那么就需要手动下载源码,自行编译,本次不再演示!!!

7.2 切换 CLion 中的 cmake 的工具链

  • 可以在 CLoin 中切换 cmake 的工具链,以便支持不同平台的 cmake ,即:

7.3 修改 CMakeLists.txt 文件

  • 前文也提到了,在一个 C 语言项目中,只能有一个 main() 函数;但是,我们可以修改 CMakeLists.txt 文件的内容,以便其支持在一个 C 语言项目中,可以有多个包含 main() 函数的文件,如下所示:

  • CMakeLists.txt 的内容,如下所示:
txt
cmake_minimum_required(VERSION 3.10)
+
+# 项目名称和版本号
+project(c-study VERSION 1.0 LANGUAGES C)
+
+# 设置 C 标准
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_C_STANDARD_REQUIRED True)
+
+# 辅助函数,用于递归查找所有源文件
+function(collect_sources result dir)
+    file(GLOB_RECURSE new_sources "${dir}/*.c")
+    set(${result} ${${result}} ${new_sources} PARENT_SCOPE)
+endfunction()
+
+# 查找顶层 include 目录(如果存在)
+if (EXISTS "${CMAKE_SOURCE_DIR}/include")
+    include_directories(${CMAKE_SOURCE_DIR}/include)
+endif ()
+
+# 查找所有源文件
+set(SOURCES)
+collect_sources(SOURCES ${CMAKE_SOURCE_DIR})
+
+# 用于存储已经处理过的可执行文件名,防止重复
+set(EXECUTABLE_NAMES)
+
+# 创建可执行文件
+foreach (SOURCE ${SOURCES})
+    # 获取文件的相对路径
+    file(RELATIVE_PATH REL_PATH ${CMAKE_SOURCE_DIR} ${SOURCE})
+    # 将路径中的斜杠替换为下划线,生成唯一的可执行文件名
+    string(REPLACE "/" "_" EXECUTABLE_NAME ${REL_PATH})
+    string(REPLACE "\\" "_" EXECUTABLE_NAME ${EXECUTABLE_NAME})
+    string(REPLACE "." "_" EXECUTABLE_NAME ${EXECUTABLE_NAME})
+
+    # 处理与 CMakeLists.txt 文件同名的问题
+    if (${EXECUTABLE_NAME} STREQUAL "CMakeLists_txt")
+        set(EXECUTABLE_NAME "${EXECUTABLE_NAME}_exec")
+    endif ()
+
+    # 检查是否已经创建过同名的可执行文件
+    if (NOT EXECUTABLE_NAME IN_LIST EXECUTABLE_NAMES)
+        list(APPEND EXECUTABLE_NAMES ${EXECUTABLE_NAME})
+
+        # 创建可执行文件
+        add_executable(${EXECUTABLE_NAME} ${SOURCE})
+
+        # 查找源文件所在的目录,并添加为包含目录(头文件可能在同一目录下)
+        get_filename_component(DIR ${SOURCE} DIRECTORY)
+        target_include_directories(${EXECUTABLE_NAME} PRIVATE ${DIR})
+
+        # 检查并添加子目录中的 include 目录(如果存在)
+        if (EXISTS "${DIR}/include")
+            target_include_directories(${EXECUTABLE_NAME} PRIVATE ${DIR}/include)
+        endif ()
+    endif ()
+endforeach ()

7.4 配置 .clang-format 文件

  • 配置 .clang-format 格式化文件,以便写代码的时候,可以自动保存并格式化 C 程序代码,如下所示:

  • .clang-format 的内容,如下所示:
txt
BasedOnStyle: Google
+IndentWidth: 4
+UseTab: Never
+ColumnLimit: 0
+
+# 控制大括号的位置
+BreakBeforeBraces: Attach
+
+# 控制空行的使用
+EmptyLineBeforeAccessModifier: Never
+KeepEmptyLinesAtTheStartOfBlocks: true
+
+# 控制短函数、短 if 语句和循环的格式
+AllowShortFunctionsOnASingleLine: Empty
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+
+# 控制其他格式选项
+AlignConsecutiveAssignments: true
+AlignConsecutiveDeclarations: true
+
+# 控制注释的格式化
+ReflowComments: true
+
+# 控制包含指令的格式化
+IncludeBlocks: Regroup
+SortIncludes: CaseInsensitive
+
+SpaceBeforeParens: ControlStatements
+SpacesInParentheses: false
+SpacesInAngles: false
+SpacesInContainerLiterals: false
+SpacesInCStyleCastParentheses: false
  • CLion 中配置保存的时候自动格式化,即:

7.5 配置 .gitignore 文件

  • 需要在项目中,配置 .gitignore 文件,以便在提交代码到 Git 仓库的时候,忽略某些文件或目录,如下所示:

  • .gitignore 文件的内容,如下所示:
txt
.vscode
+.idea
+cmake-build-*
+build

7.6 演示

  • 我们可以在项目中,临时创建或复制一个文件,看上述配置是否生效,即:

NOTE

如果是复制并粘贴一个文件到项目中,请点击重新加载 CMake 项目!!!

第八章:C 语言的编译过程(⭐)

8.1 概述

  • C 程序的编译过程,如下所示:

  • 过程 ① :编写(编辑)源代码,即:编写 C 语言源程序代码,并以文件的形式存储在磁盘中。

IMPORTANT

源程序需要以 .c 作为扩展名。

  • 过程 ② :编译,即:将 C 语言源程序转换为目标程序(或目标文件)。如果程序没有错误,没有任何提示,就会生成一个扩展名为 .obj.o 的二进制文件。C 语言中的每条可执行语句经过编译之后,最终都会转换为二进制的机器指令。

IMPORTANT

  • ① 其实,编译阶段包含了预处理编译汇编

  • 预处理是编译过程的第一个阶段。在这个阶段,预处理器处理源代码中的指令(例如:#include#define等),主要任务包括:

    • 头文件包含:将头文件的内容插入到源文件中。例如:#include <stdio.h>会被替换为stdio.h文件的内容。

    • 宏展开:替换宏定义。例如:#define PI 3.14会将代码中的PI替换为3.14

    • 条件编译:根据条件指令(如:#ifdef#ifndef)有选择地编译代码。

    • 删除代码中的注释,但是不会进行语法检查

    • 预处理完成后,生成一个扩展名为.i的中间文件。

  • 编译是将预处理后的源代码转换为汇编代码的过程。在这个阶段,编译器会检查代码的语法和语义,将其转换为目标机器的汇编语言,生成一个扩展名为.s的汇编文件。

  • 汇编是将汇编代码转换为机器代码(也称为目标代码或目标文件)的过程。在这个阶段,汇编器将汇编指令转换为二进制机器指令,生成一个扩展名为.o.obj的目标文件。

  • 过程 ③ :链接(连接),即:将编译形成的目标文件 *.obj*.o和库函数以及其他目录文件链接,形成一个统一的二进制文件 *.exe

IMPORTANT

  • 为什么需要链接库文件?
  • 因为我们的 C 程序会使用 C 程序库中的内容,如:<stdio.h> 中的 printf() 函数,这些函数不是程序员自己写的,而是 C 程序库中提供的,因此需要链接。其实,在链接过程中,还会加入启动代码,这个启动代码(和系统相关,Linux 下主要有 crt0.c、crti.c 等,它们设置堆栈后,再调用 main() 函数)负责初始化程序运行时的环境。
  • 过程 ④ :执行,即:有了可执行的 *.exe文件,我们就可以在控制台上执行运行此 *.exe 文件。

IMPORTANT

如果修改了源代码,还需要重新编译链接,并生成新的 *.exe文件,再执行,方能生效。

8.2 GCC 编译器的介绍

  • 编辑器,如:vim 、vscode 等,是指我们用它来编写源程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。换言之,我们用编辑器编写程序,由编译器编译后才可以运行!
  • 编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。
  • gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。gcc 原本作为 GNU 操作系统的官方编译器,现已被大多数类 Unix 操作系统(如:Linux、BSD、Mac OS X 等)采纳为标准的编译器,gcc 同样适用于微软的 Windows 。
  • gcc 最初用于编译 C 语言,随着项目的发展, gcc 已经成为了能够编译 C、C++、Java、Ada、fortran、Object C、Object C++、Go 语言的编译器大家族。

8.3 通过 gcc 直接生成可执行文件

  • 示例:进行预处理、编译、汇编和链接
shell
gcc HelloWorld.c -o HelloWorld.exe

8.4 通过 gcc 分步编译

8.3.1 概述

  • 预处理命令:
shell
gcc -E 源文件.c -o 源文件.i # 通常以 .i 结尾表示这个文件是一个中间状态
  • 编译(预处理和编译)命令:
shell
gcc -S 源文件.i -o 源文件.s # 在 Linux 中,通常以 .s 结尾;在 Windows 中,通常以 .asm 结尾
  • 汇编(预处理、编译和汇编)命令:
shell
gcc -c 源文件.s -o 源文件.o # 在 Linux 中,通常以 .o 结尾;在 Windows 中,通常以 .obj 结尾
  • 链接(预处理、编译、汇编和链接)命令:
shell
gcc 源文件.o -o 源文件.exe # 在 Linux 中,通常以 .out 结尾;在 Windows 中,通常以 .exe 结尾

8.4.2 应用示例

  • 示例:只进行预处理
shell
gcc -E HelloWorld.c -o HelloWorld.i

  • 示例:只进行预处理和编译
shell
gcc -S HelloWorld.i -o HelloWorld.s

  • 示例:只进行预处理、编译和汇编
shell
gcc -c HelloWorld.s -o HelloWorld.o

  • 示例:进行预处理、编译、汇编和链接
shell
gcc HelloWorld.o -o HelloWorld.exe

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/notes/01_c-basic/02_xdx/index.html b/notes/01_c-basic/02_xdx/index.html new file mode 100644 index 0000000..0576fde --- /dev/null +++ b/notes/01_c-basic/02_xdx/index.html @@ -0,0 +1,233 @@ + + + + + + 第一章:变量(⭐) | Hi,终于等到你 + + + + + + + + + + + + + + + + +
Skip to content

第一章:变量(⭐)

1.1 程序中变化的数据

  • 在生活中,我们使用最多的不是固定的数据,而是会变化的数据:
    • ① 购物车商品的数量价格等。
    • ② 一首歌播放的时间进度条歌词的展示等。
    • ③ 微信聊天中消息条数时间语音的长度头像名称等。
    • ④ 游戏中技能的冷却时间血量蓝量buff 时间金币的数量等。
    • ……
  • 下图是一个购物车变化数据,即:

  • 那么,在实际开发中,我们就会使用变量保存操作这些变化数据

1.2 变量

  • 变量的定义:变量是程序中不可或缺的组成单位,最基本的存储单元。其实,变量就是一个存储数据的临时空间,可以向其中存储不同类型的数据,如:整数、小数、字符、字符串等,并且变量中的数据在程序运行的时候可以动态改变。

NOTE

  • 变量:用来存储数据容器
  • 数据:可以是一个用来计算的数字,如:上文购物车中的价格等;也可以是一句话中的关键词其它任意格式的数据
  • 变量的特别之处就在于它存放的数据是可以改变的。
  • 我们可以将变量想象为一个容器,盒子中装的就是我们想要的数据,并且我们需要盒子一个特别的名称;通过这个特别的名称,我们可以盒子添加数据移除数据,这个特别的名称就是变量名

NOTE

  • 变量是内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
  • ② 通过变量名,可以操作这块内存区域,向其中存储数据获取数据以及移除数据
  • ③ 变量的构成包含三个要素:数据类型变量名需要存储的数据
  • ④ 在生活中,我们会经常说:这件衣服的价格是 100(整型) 元,这双鞋子的价格是 250.5(小数,浮点类型) 元,今天天气真好(字符串类型)之类的话;在计算机科学中,这些都是数据,并且它们是有类型,即:数据类型。(数据类型用于定义变量所能存储的数据的种类以及可以对这些数据进行的操作的一种分类,每种数据类型都有特定的属性和用途,它们决定了变量在内存中如何表示和存储,以及变量可以执行哪些操作)

1.3 变量的声明和使用

  • ① 变量必须先声明,后使用。
  • ② 可以先声明变量再赋值,也可以在声明变量的同时进行赋值。
  • ③ 变量的值可以在同一类型范围内不断变化。

IMPORTANT

在实际开发中,我们通常都会在声明变量的同时,给其赋值,这被称为初始化。

  • 示例:先声明,再使用
c
#include <stdio.h>
+
+int main() {
+
+    // 声明一个整型变量,取名为 a
+    int a;
+
+    // 给变量赋值
+    a = 10;
+
+    printf("a = %d\n", a);
+
+    return 0;
+}
  • 示例:初始化(声明变量的同时给其赋值)
c
#include <stdio.h>
+
+int main() {
+
+    // 声明一个整型变量,取名为 b ,并直接赋值(初始化,实际开发中最为常用)
+    int b = 200;
+
+    // 修改变量 b 的值,将变量 a 的值赋值给变量 b
+    b = 300;
+
+    printf("b= %d\n", b);
+
+    return 0;
+}
  • 示例:同时声明多个变量并赋值
c
#include <stdio.h>
+
+int main() {
+
+    // 同时声明多个整型的变量并赋值
+    int c1 = 10, c2 = 20, c3 = 30;
+    printf("c1 = %d\n", c1);
+    printf("c2 = %d\n", c2);
+    printf("c3 = %d\n", c3);
+
+    return 0;
+}

1.4 输出变量

  • 在计算机中,所谓的输入输出都是以计算机(CPU 和内存)为主体而言的,即:

NOTE

输入:从输入设备(键盘、鼠标、扫描仪)向计算机输入数据。

输出:从计算机向外部输出设备(显示器、打印机)输出数据。

  • 在 C 语言中,提供了 printf() 函数用于输出信息,其函数声明是:
c
int printf (const char *__format, ...) {
+    ...
+}
  • printf 的标准含义是格式化输出文本,来源于 print formatted(格式化打印)的缩写,其语法规则,如下所示:

NOTE

  • 格式化字符串:是使用双引号括起来的字符串,里面包含了普通的字符串和格式占位符。
  • 格式占位符(格式声明符):由 %格式字符组成,作用是将输出的数据转换为指定的格式后输出,这里的 %d 表示整数。
  • 输出列表:是程序要输出的一些数据,可以是常量、变量或表达式,需要和格式占位符一一对应。
  • 在计算机中,二进制、八进制、十进制以及十六进制的英文名称和缩写,如下所示:

    • 二进制(binary),缩写是 bin。
    • 八进制(octal),缩写是 oct。
    • 十进制(decimal),缩写是 dec。
    • 十六进制(Hexadecimal),缩写是 hex。
  • 其实,我们也可以在 Windows 系统中的计算器中来看到,即:

IMPORTANT

在生活中的 decimal 是小数的意思;但是,在 C 语言中,decimal 的完整含义是 decimal integer ,即十进制整数。

  • 示例:
c
#include <stdio.h>
+
+int main() {
+
+    // 声明变量并赋值
+    int num = 18;
+
+    // 使用输出语句,将变量 num 的值输出,其中 %d 表示输出的是整数
+    printf("我今年%d\n", num);
+
+    return 0;
+}

1.5 输入数据赋值给变量

  • 在 C 语言中,提供了 scanf() 函数用于从标准输入(通常是键盘)中读取数据并根据变量的地址赋值给变量(变量需要提前声明),其函数声明是:
c
int scanf(const char *__format, ...) {
+    ...
+}
  • 其语法规则,如下所示:

NOTE

&age&num 中的 &是寻址操作符,&age 表示变量 age 在内存中的地址。

CAUTION

  • ① scanf() 函数中的 %d,如果是连着写,即:%d%d,那么在输入数据的时候,数据之间不可以使用逗号,分隔,只能使用空白字符(空格、tab 键或回车键),即:2空格3tab2tab3回车等。

  • ② 如果是 %d,%d,则输入的时候需要加上逗号,,即:2,3

  • ③ 如果是 %d %d,则输入的时候需要加上空格,即:2空格3

  • 示例:计算圆的面积,半径由用户指定
c
#include <stdio.h>
+
+int main() {
+
+    float radius;
+
+    printf("请输入一个半径:");
+    scanf("%f", &radius);
+
+    double area = 3.1415926 * radius * radius;
+
+    printf("半径是%f的圆的面积是%.2lf", radius, area);
+
+    return 0;
+}
  • 示例:输入一个整数值,求其绝对值
c
#include <stdio.h>
+
+int main() {
+
+    int num;
+
+    printf("请输入一个整数:");
+    scanf("%d", &num);
+
+    int absNum;
+
+    if (num < 0) {
+        absNum = -num;
+    } else {
+        absNum = num;
+    }
+
+    printf("%d的绝对值是:%d", num, absNum);
+
+    return 0;
+}
  • 示例:输入多个变量的值,求其乘积
c
#include <stdio.h>
+
+int main() {
+
+    int a, b, c;
+    printf("请输入整数 a 、b 和 c 的值:");
+    scanf("%d %d %d", &a, &b, &c);
+
+    int result = a * b * c;
+
+    printf("%d × %d × %d = %d", a, b, c, result);
+
+    return 0;
+}

1.6 标识符

1.6.1 概述

  • 在 C 语言中,变量、函数、数组名、结构体等要素命名的时候使用的字符序列,称为标识符。

NOTE

在上世纪 60 - 70 年代的时候,因为国家贫穷,人民生活不富裕等原因,家长虽然会给孩子取名为:张建国李华强等;但是,也会取小名为二狗子狗剩等,目的是希望孩子能健康成长(养活),像 张建国李华强二狗子狗剩都是名字(标识符),伴随人的一生。

1.6.2 标识符的命名规范

  • 强制规范:

    • ① 只能由小写大写英文字母0-9_ 组成。
    • ② 不能以数字开头。
    • ③ 不可以是关键字
    • ④ 标识符具有长度限制,不同编译器和平台会有所不同,一般限制在 63 个字符内。
    • ⑤ 严格区分大小写字母,如:Hello、hello 是不同的标识符。
  • 建议规范:

    • ① 为了提高阅读性,使用有意义的单词,见名知意,如:sum,name,max,year 等。
    • ② 使用下划线连接多个单词组成的标识符,如:max_classes_per_student 等。
    • ③ 多个单词组成的标识符,除了使用下划线连接,也可以使用小驼峰命名法,除第一个单词外,后续单词的首字母大写,如: studentId、student_name 等。
    • ④ 不要出现仅靠大小写区分不同的标识符,如:name、Name 容易混淆。
    • ⑤ 系统内部使用了一些下划线开头的标识符,如:C99 标准添加的类型 _Bool,为防止冲突,建议开发者尽量避免使用下划线开头的标识符。
  • 示例:合法(不一定建议)的标识符

txt
a、BOOK_sun、MAX_SIZE、Mouse、student23、Football、FOOTBALL、max、_add、num_1、sum_of_numbers
  • 示例:非法的标识符
txt
$zj、3sum、ab#cd、23student、Foot-baii、s.com、b&c、j**p、book-1、tax rate、don't

1.6.3 关键字

  • C 语言中的关键字是编译器预定义保留字,它们有特定含义用途,用于控制程序的结构和执行。
  • C80 和 C90 (ANSI C)定义的关键字,如下所示:
类型(功能)具体关键字
数据类型关键字chardoublefloatintlongshortsignedunsignedvoid
存储类说明符关键字autoexternregisterstatictypedefvolatileconst
控制语句关键字breakcasecontinuedefaultdoelseforgotoifreturnswitchwhile
结构体、联合体和枚举关键字enumstructunion
其他关键字sizeof
  • C99 新增的关键字,如下所示:
类型(功能)具体关键字
数据类型关键字_Bool_Complex_Imaginary
存储类说明符关键字inlinerestrict
其他关键字_Complex_Imaginary
  • C11 新增的关键字,如下所示:
类型(功能)具体关键字
存储类说明符关键字_Atomic
其他关键字_Alignas_Alignof_Generic_Noreturn_Static_assert_Thread_local

IMPORTANT

  • ① 关键字不能用作标识符(如:变量名、函数名等)。
  • ② 不要死记硬背这些关键字,在实际开发中,并不一定全部使用到;而且,在学到后面的时候,会自动记住这些关键字以及对应的含义。

第二章:常量(⭐)

2.1 概述

  • 在程序运行过程中,不能改变的量就是常量。

NOTE

  • ① 在数学中的 π,就是一个常量,其值为 3.1415926 。
  • ② 在生活中,人类的性别只有;其中,也是常量。
  • ③ ...

2.2 常量的分类

  • 在 C 语言中的变量的分类,如下所示:
    • ① 字面量常量。
    • ② 标识符常量:
      • #define 宏定义的标识符常量。
      • const 关键字修饰的标识符常量。
      • 枚举常量。

NOTE

  • 所谓的字面量常量,就是可以直接使用的常量,不需要声明或定义,包括:整数常量、浮点数常量以及字符常量。
  • 所谓的标识符常量,就是使用标识符来作为常量名,包括: #define 宏定义的标识符常量、const 关键字修饰的标识符常量、枚举常量。
  • 示例:字面量常量
c
#include <stdio.h>
+
+int main() {
+
+    1;
+    'A';
+    12.3;
+    "你好";
+
+    return 0;
+}
  • 示例:字面量常量
c
#include <stdio.h>
+
+int main() {
+
+    printf("整数常量 =》%d\n", 1);
+    printf("字符常量 =》%c\n", 'A');
+    printf("浮点数常量 =》%f\n", 12.3);
+    printf("字符串常量 =》%s\n", "你好");
+
+    return 0;
+}

2.3 使用 #define 定义常量

  • #define 来定义常量,也叫作宏定义,就是用一个标识符来表示一个常量值,如果在后面的代码中出现了该标识符,那么编译时就全部替换成指定的常量值,即用宏体替换所有宏名,简称宏替换
  • 格式是:
c
#define 常量名 常量值

CAUTION

  • ① 其实宏定义的常量的执行时机是在预处理阶段,将所有宏常量替换完毕,才会继续编译代码。
  • ② 不要以 ; 结尾,如果有 ; ,分号也会成为常量值的一部分。
  • # define 必须写在 main 函数的外面!!!
  • 常量名习惯用大写字母表示,如果多个单词,使用 _ 来分隔,以便和变量区分。
  • 示例:
c
#include <stdio.h>
+
+#define PI 3.1415926
+
+int main() {
+
+    double radius = 2.5;
+
+    double area = PI * radius * radius;
+
+    printf("半径为%lf的圆的面积是%.2lf", radius, area);
+
+    return 0;
+}

2.4 const 关键字

  • C99 标准新增,这种方式跟定义一个变量是类似的;只不过,需要在变量的数据类型前加上 const 关键字。
  • 和使用 #define定义宏常量相比,const 定义的常量有详细的数据类型,而且会在编译阶段进行安全检查,在运行时才完成替换,所以会更加安全和方便。
  • 格式是:
c
const 数据类型 常量名 = 常量值;
  • 示例:
c
#include <stdio.h>
+
+const int PI = 3.1415926;
+
+int main() {
+
+    double radius = 2.5;
+
+    double area = PI * radius * radius;
+
+    printf("半径为%lf的圆的面积是%.2lf", radius, area);
+
+    return 0;
+}

2.5 枚举常量

  • 格式:
c
enum 枚举常量 {
+    xxx = 1;
+    yyy;
+    ...
+}

NOTE

  • ① 默认情况下,枚举常量是从 0 开始递增的。
  • ② 也可以在定义枚举常量的时候,自定义它们的值。
  • 示例:
c
#include <stdio.h>
+
+enum sex {
+    MALE = 1,
+    FEMALE = 2,
+};
+
+int main() {
+
+    printf("%d\n", MALE);
+    printf("%d\n", FEMALE);
+
+    return 0;
+}
  • 示例:
c
#include <stdio.h>
+
+enum Sex {
+    MALE = 1,
+    FEMALE = 2,
+};
+
+int main() {
+    enum Sex sex;
+
+    printf("请输入性别(1 表示男性, 2 表示女性):");
+    scanf("%d", &sex);
+    printf("您的性别是:%d\n", sex);
+
+    return 0;
+}

2.6 #defind 定义常量 VS const 定义常量

  • ① 执行时机:#define 是预处理指令,在编译之前执行;const 是关键字,在编译过程中执行。
  • ② 类型检查:#define 定义常量不用指定类型不进行类型检查,只是简单地文本替换;const 定义常量需要指定数据类型会进行类型检查,类型安全性更强。

第三章:二进制

3.1 概述

  • 计算机的底层只有二进制,即计算机中运算存储所有数据都需要转换为二进制,包括:数字、字符、图片、视频等。

  • 之前,我们也提到现代的计算机(量子计算机除外)几乎都遵循冯·诺依曼体系结构,其理论要点如下:
    • 存储程序程序指令数据都存储在计算机的内存中,这使得程序可以在运行时修改。
    • 二进制逻辑:所有数据和指令都以二进制形式表示。
    • 顺序执行:指令按照它们在内存中的顺序执行,但可以有条件地改变执行顺序。
    • 五大部件:计算机由运算器控制器存储器输入设备输出设备组成。
    • 指令结构:指令由操作码和地址码组成,操作码指示要执行的操作,地址码指示操作数的位置。
    • 中心化控制:计算机的控制单元(CPU)负责解释和执行指令,控制数据流。
  • 所以,再次论证了为什么计算机只能识别二进制。

3.2 进制

3.2.1 常见的进制

  • 在生活中,我们最为常用的进制就是十进制,其规则是满 10 进 1 ,即:

  • 在计算机中,常见的进制有二进制八进制十六进制,即:
    • 二进制:只能 0 和 1 ,满 2 进 1 。
    • 八进制:0 ~ 7 ,满 8 进 1 。
    • 十六进制:0 ~ 9 以及 A ~ F ,满 16 进 1 。

NOTE

在十六进制中,除了 0 到 9 这十个数字之外,还引入了字母,以便表示超过 9 的值。字母 A 对应十进制的 10 ,字母 B 对应十进制的 11 ,以此类推,字母 F 对应十进制的 15。

  • 进制的换算举例,如下所示:
十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012a 或 A
11101113b 或 B
12110014c 或 C
13110115d 或 D
14111016e 或 E
15111117f 或 F
16100002010
............
  • 二进制和十六进制的关系:十六进制是以 16 为基数的进制系统,16 在二进制中表示为 ( 2^4 ),即:一个十六进制可以表示 4 位二进制。

NOTE

十六进制的范围是:0 ~ F (0 ~ 15)对应的二进制数的范围是:0000 ~ 1111 (0 ~ 15)。

  • 每个十六进制数都可以映射到一个唯一的 4 位二进制数,即:
十六进制二进制
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
A1010
B1011
C1100
D1101
E1110
F1111

NOTE

由此可见,每个十六进制数字确实由 4 位二进制数表示。

  • 二进制和八进制的关系:八进制是以 8 为基数的进制系统,8 在二进制中表示为 ( 2^3 );即:一个八进制位可以表示 3 个二进制位。

NOTE

八进制的范围是:0 ~ 7 对应的二进制数的范围是:000 ~ 111。

  • 每个八进制数位都可以映射到一个唯一的 3 位二进制数,即:
八进制二进制
0000
1001
2010
3011
4100
5101
6110
7111

NOTE

由此可见,每个八进制数字确实由 3 位二进制数表示。

3.2.2 C 语言中如何表示不同进制的整数?

  • 规则如下:

    • 在 C 语言中,如果是二进制(字面常量),则需要在二进制整数前加上 0b0B
    • 在 C 语言中,如果是八进制(字面常量),则需要在八进制整数前加上 0
    • 在 C 语言中,如果是十进制(字面常量),正常数字表示即可。
    • 在 C 语言中,如果是十六进制(字面常量),则需要在十六进制整数前加上 0x0X
  • 示例:

c
#include <stdio.h>
+
+int main() {
+
+    int num1 = 0b10100110; // 二进制
+    int num2 = 0717563; // 八进制
+    int num3 = 1000; // 十进制
+    int num4 = 0xaf72; // 十六进制
+
+    printf("num1 = %d\n", num1); // num1 = 166
+    printf("num2 = %d\n", num2); // num2 = 237427
+    printf("num3 = %d\n", num3); // num3 = 1000
+    printf("num4 = %d\n", num4); // num4 = 44914
+
+    return 0;
+}

3.2.3 输出格式

  • 在 C 语言中,可以使用不同的格式占位符输出不同进制的整数,如下所示:
    • %d:十进制整数。
    • %o :八进制整数。
    • %x:十六进制整数。
    • %#o :显示前缀 0 的八进制整数。
    • %#x :显示前缀 0x 的十六进制整数。
    • %#X :显示前缀 0X 的十六进制整数。

CAUTION

C 语言中没有输出二进制数的格式占位符!!!

  • 示例:
c
#include <stdio.h>
+
+int main() {
+
+    int num = 100;
+
+    printf("%d 的十进制整数: %d\n", num, num); // 100 的十进制整数: 100
+    printf("%d 的八进制整数: %o\n", num, num); // 100 的八进制整数: 144
+    printf("%d 的十六进制整数: %x\n", num, num); // 100 的十六进制整数: 64
+    printf("%d 的八进制(前缀)整数: %#o\n", num, num); // 100 的八进制(前缀)整数: 0144
+    printf("%d 的十六进制(前缀)整数: %#x\n", num, num); // 100 的十六进制(前缀)整数: 0x64
+    printf("%d 的十六进制(前缀)整数: %#X\n", num, num); // 100 的十六进制(前缀)整数: 0X64
+
+    return 0;
+}

3.3 进制的转换

3.3.1 概述

  • 不同进制的转换,如下所示:

  • 在计算机中,数据是从右往左的方式排列的;其中,最右边的是低位,最左边的是高位,即:

3.3.2 二进制和十进制的转换

3.3.2.1 二进制转换为十进制

  • 规则:从最低位开始,将每个位上的数提取出来,乘以 2 的 (位数 - 1 )次方,然后求和。

NOTE

  • ① 在学术界,将这种计算规则,称为位权相加法
  • 八进制转换为十进制十六进制转换为十进制二进制转换为十进制的算法相同!!!
  • 示例:十进制转十进制

  • 示例:二进制转十进制

3.3.2.2 十进制转换二进制

  • 规则:将该数不断除以 2 ,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的二进制。

NOTE

  • ① 在学术界,将这种计算规则,称为短除法连续除2取余法
  • ② 很好理解,只有不断地除以 2 ,就能保证最大的数字不超过 2 ,这不就是二进制(只能有 0 或 1)吗?
  • 八进制转换为二进制十六进制转换为二进制十进制转换为二进制的算法相同!!!
  • 示例:十进制转十进制

  • 示例:十进制转二进制

3.3.3 二进制转八进制

  • 规则:每 3 位二进制就是一个八进制。

  • 示例:011 101 001 -> 351

3.3.4 二进制转十六进制

  • 规则:每 4 位二进制就是一个八进制。

  • 示例:1110 1001 -> 0xE9

3.4 原码、反码和补码

3.4.1 概述

  • 机器数:一个数在计算机的存储形式是二进制,我们称这些二进制数为机器数。机器数可以是有符号的,用机器数的最高位来存放符号位,0 表示正数,1 表示负数。

  • 真值:因为机器数带有符号位,所以机器数的形式值不等于其真实表示的值(真值),以机器数 1000 0001 为例,其真正表示的值(首位是符号位)为 -1,而形式值却是 129 ,因此将带有符号位的机器数的真正表示的值称为机器数的真值。

3.4.2 原码

  • 原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值。
  • 规则:
    • 正数的原码是它本身对应的二进制数,符号位是 0 。
    • 负数的原码是它本身绝对值对应的二进制数,但是符号位是 1 。
  • +1 的原码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)
+10000 0001
  • -1 的原码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)
-11000 0001

IMPORTANT

按照原码的规则,会出现 +0-0 的情况,即:0000 0000(+0)、1000 0000(-0),显然不符合实际情况;所以,计算机底层虽然存储和计算的都是二进数,但显然不是原码。

3.4.3 反码

  • 规则:

    • 正数的反码和它的原码相同。
    • 负数的反码是在其原码的基础上,符号位不变,其余各位取反。
  • +1 的反码,使用 8 位二进数来表示,就是:

十进制数原码(8位二进制数)反码(8位二进制数)
+10000 00010000 0001
  • -1 的反码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)反码(8位二进制数)
-11000 00011111 1110

IMPORTANT

按照反码的规则,如果是 +0,对应的原码是 0000 0000;那么,其反码还是 0000 0000 ;如果是 -0,对应的原码是 1000 0000,其反码是 1111 1111,显然不符合实际情况;所以,计算机底层虽然存储和计算的都是二进数,但显然不是反码。

3.4.4 补码

  • 规则:

    • 正数的补码和它的原码相同。
    • 负数的补码是在其反码的基础上 + 1 。
  • +1 的补码,使用 8 位二进数来表示,就是:

十进制数原码(8位二进制数)反码(8位二进制数)补码(8位二进制数)
+10000 00010000 00010000 0001
  • -1 的补码,使用 8 位二进数来表示,就是:
十进制数原码(8位二进制数)反码(8位二进制数)补码(8位二进制数)
-11000 00011111 11101111 1111
  • 如果 0 ,按照 +0 的情况进行处理,即:

  • 如果 0 ,按照 -0 的情况进行处理,即:

IMPORTANT

  • ① 补码表示法解决了原码反码存在的两种零(+0-0)的问题,即:在补码表示法中,只有一个零,即 0000 0000。
  • ② 补码使得加法运算减法运算可以统一处理,通过将减法运算转换为加法运算,可以简化硬件设计,提高了运算效率。
  • ③ 计算机底层存储计算的都是二进数的补码

3.4.5 总结

  • ① 正数的原码、反码和补码都是一样的,三码合一。
  • ② 负数的反码是在其原码的基础上,按位取反(0 变 1 ,1 变 0 ),符号位不变;负数的补码是其反码 + 1 。
  • ③ 0 的补码是 0 。

3.5 计算机底层为什么使用补码?

  • 如果计算是 2 - 2 ,那么可以转换为 2 + (-2),这样计算机内部在处理减法计算的时候,就会将其转换为加法计算的形式,以简化硬件设计和提高计算效率。
  • 最高位表示符号位,由于符号位的存在,如果使用原码来计算,就会导致计算结果不正确,即:

  • 补码的设计可以巧妙的让符号位也参与计算,并且可以得到正确的计算结果,即:

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/notes/index.html b/notes/index.html new file mode 100644 index 0000000..3d34ce0 --- /dev/null +++ b/notes/index.html @@ -0,0 +1,27 @@ + + + + + + 计算机基础知识 | Hi,终于等到你 + + + + + + + + + + + + + + + + +
Skip to content

计算机基础知识


Released under the MIT License.

+ + + + \ No newline at end of file