diff --git a/.github/workflows/lektor-build-deploy.yml b/.github/workflows/lektor-build-deploy.yml
index 25c9479e4..ab8385895 100644
--- a/.github/workflows/lektor-build-deploy.yml
+++ b/.github/workflows/lektor-build-deploy.yml
@@ -4,17 +4,28 @@ jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
- - name: setup python version
- uses: actions/setup-python@v3
- with:
- python-version: 3.9
- - name: Install dependencies
- run: |
- pip install pipenv
- pipenv sync
- pipenv run lektor build -f webpack
- - name: Deploy to production
- if: github.ref == 'refs/heads/main'
- run: |
- pipenv run lektor deploy ghpages --username ${{ secrets.LEKTOR_DEPLOY_USERNAME }} --password ${{ secrets.LEKTOR_DEPLOY_PASSWORD }}
+
+ # https://github.com/actions/setup-python
+ - name: setup python version
+ uses: actions/setup-python@v5
+ with:
+ python-version: 3.11
+
+ - name: Install pipenv
+ run: |
+ pip install --upgrade pip
+ pip install pipenv
+
+ # https://github.com/actions/checkout
+ - uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: pipenv sync
+
+ - name: Build static site and use webpack
+ run: pipenv run lektor build -f webpack
+
+ - name: Deploy to production
+ if: github.ref == 'refs/heads/main'
+ run: |
+ pipenv run lektor deploy ghpages --username ${{ secrets.LEKTOR_DEPLOY_USERNAME }} --password ${{ secrets.LEKTOR_DEPLOY_PASSWORD }}
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 30dc65364..000000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Contributor Code of Conduct
-
-The Creative Commons team is committed to fostering a welcoming community. This
-project and all other Creative Commons open source projects are governed by our
-[Code of Conduct][code_of_conduct]. Please report unacceptable behavior to
-[conduct@creativecommons.org](mailto:conduct@creativecommons.org) per our
-[reporting guidelines][reporting_guide].
-
-For a history of updates, see the [page history here][updates].
-
-[code_of_conduct]: https://opensource.creativecommons.org/community/code-of-conduct/
-[reporting_guide]: https://opensource.creativecommons.org/community/code-of-conduct/enforcement/
-[updates]: https://github.com/creativecommons/creativecommons.github.io-source/commits/main/content/community/code-of-conduct/contents.lr
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 800641851..000000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Contributing to CC Open Source
-
-Thank you for your interest in contributing to CC Open Source! This document is
-a set of guidelines to help you contribute to this project.
-
-
-## Code of Conduct
-
-By participating in this project, you are expected to uphold our [Code of
-Conduct][code_of_conduct].
-
-[code_of_conduct]: https://opensource.creativecommons.org/community/code-of-conduct/
-
-
-## Project Documentation
-
-The `README` in the root of the repository should contain or link to project
-documentation. If you cannot find the documentation you're looking for, please
-file a GitHub issue with details of what you'd like to see documented.
-
-
-## How to Contribute
-
-Please follow the processes in our general [Contributing Code][contributing]
-guidelines on the Creative Common Open Source website.
-
-[contributing]: https://opensource.creativecommons.org/contributing-code/
-
-
-## Questions or Thoughts?
-
-Talk to us on [one of our community forums][community].
-
-[community]: https://opensource.creativecommons.org/community/
diff --git a/Pipfile b/Pipfile
index ca3d75d9b..e17e81ee0 100644
--- a/Pipfile
+++ b/Pipfile
@@ -4,10 +4,10 @@ url = "https://pypi.org/simple"
verify_ssl = true
[packages]
-black = "*"
+black = ">=24.3.0"
flake8 = "*"
isort = "*"
-lektor = "*"
+lektor = ">=3.3.11"
[requires]
-python_version = "3.9"
+python_version = "3.11"
diff --git a/Pipfile.lock b/Pipfile.lock
index 999703b9b..8e95d34bf 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,11 +1,11 @@
{
"_meta": {
"hash": {
- "sha256": "fda8e9ba4b9feedfd82f6ce930b145f9775f2d03cc06f487cd8c6057e8751e6b"
+ "sha256": "26979fd14d3d85ad2992aec81b9e7b42d02ec577d749ee251d6e27db047211dc"
},
"pipfile-spec": 6,
"requires": {
- "python_version": "3.9"
+ "python_version": "3.11"
},
"sources": [
{
@@ -18,163 +18,157 @@
"default": {
"babel": {
"hashes": [
- "sha256:04c3e2d28d2b7681644508f836be388ae49e0cfe91465095340395b60d00f210",
- "sha256:fbfcae1575ff78e26c7449136f1abbefc3c13ce542eeb13d43d50d8b047216ec"
+ "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d",
+ "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"
],
- "markers": "python_version >= '3.7'",
- "version": "==2.13.0"
+ "markers": "python_version >= '3.8'",
+ "version": "==2.17.0"
},
"black": {
"hashes": [
- "sha256:0e232f24a337fed7a82c1185ae46c56c4a6167fb0fe37411b43e876892c76699",
- "sha256:30b78ac9b54cf87bcb9910ee3d499d2bc893afd52495066c49d9ee6b21eee06e",
- "sha256:31946ec6f9c54ed7ba431c38bc81d758970dd734b96b8e8c2b17a367d7908171",
- "sha256:31b9f87b277a68d0e99d2905edae08807c007973eaa609da5f0c62def6b7c0bd",
- "sha256:47c4510f70ec2e8f9135ba490811c071419c115e46f143e4dce2ac45afdcf4c9",
- "sha256:481167c60cd3e6b1cb8ef2aac0f76165843a374346aeeaa9d86765fe0dd0318b",
- "sha256:6901631b937acbee93c75537e74f69463adaf34379a04eef32425b88aca88a23",
- "sha256:76baba9281e5e5b230c9b7f83a96daf67a95e919c2dfc240d9e6295eab7b9204",
- "sha256:7fb5fc36bb65160df21498d5a3dd330af8b6401be3f25af60c6ebfe23753f747",
- "sha256:960c21555be135c4b37b7018d63d6248bdae8514e5c55b71e994ad37407f45b8",
- "sha256:a3c2ddb35f71976a4cfeca558848c2f2f89abc86b06e8dd89b5a65c1e6c0f22a",
- "sha256:c870bee76ad5f7a5ea7bd01dc646028d05568d33b0b09b7ecfc8ec0da3f3f39c",
- "sha256:d3d9129ce05b0829730323bdcb00f928a448a124af5acf90aa94d9aba6969604",
- "sha256:db451a3363b1e765c172c3fd86213a4ce63fb8524c938ebd82919bf2a6e28c6a",
- "sha256:e223b731a0e025f8ef427dd79d8cd69c167da807f5710add30cdf131f13dd62e",
- "sha256:f20ff03f3fdd2fd4460b4f631663813e57dc277e37fb216463f3b907aa5a9bdd",
- "sha256:f74892b4b836e5162aa0452393112a574dac85e13902c57dfbaaf388e4eda37c",
- "sha256:f8dc7d50d94063cdfd13c82368afd8588bac4ce360e4224ac399e769d6704e98"
+ "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171",
+ "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7",
+ "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da",
+ "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2",
+ "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc",
+ "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666",
+ "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f",
+ "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b",
+ "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32",
+ "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f",
+ "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717",
+ "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299",
+ "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0",
+ "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18",
+ "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0",
+ "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3",
+ "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355",
+ "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096",
+ "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e",
+ "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9",
+ "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba",
+ "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f"
],
"index": "pypi",
- "markers": "python_version >= '3.8'",
- "version": "==23.10.0"
+ "markers": "python_version >= '3.9'",
+ "version": "==25.1.0"
},
"blinker": {
"hashes": [
- "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d",
- "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa"
+ "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf",
+ "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"
],
- "markers": "python_version >= '3.7'",
- "version": "==1.6.3"
+ "markers": "python_version >= '3.9'",
+ "version": "==1.9.0"
},
"certifi": {
"hashes": [
- "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082",
- "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"
+ "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407",
+ "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"
],
- "markers": "python_version >= '3.6'",
- "version": "==2023.7.22"
+ "markers": "python_version >= '3.7'",
+ "version": "==2025.8.3"
},
"charset-normalizer": {
"hashes": [
- "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843",
- "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786",
- "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e",
- "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8",
- "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4",
- "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa",
- "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d",
- "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82",
- "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7",
- "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895",
- "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d",
- "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a",
- "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382",
- "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678",
- "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b",
- "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e",
- "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741",
- "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4",
- "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596",
- "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9",
- "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69",
- "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c",
- "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77",
- "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13",
- "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459",
- "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e",
- "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7",
- "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908",
- "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a",
- "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f",
- "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8",
- "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482",
- "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d",
- "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d",
- "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545",
- "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34",
- "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86",
- "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6",
- "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe",
- "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e",
- "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc",
- "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7",
- "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd",
- "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c",
- "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557",
- "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a",
- "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89",
- "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078",
- "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e",
- "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4",
- "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403",
- "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0",
- "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89",
- "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115",
- "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9",
- "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05",
- "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a",
- "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec",
- "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56",
- "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38",
- "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479",
- "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c",
- "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e",
- "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd",
- "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186",
- "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455",
- "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c",
- "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65",
- "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78",
- "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287",
- "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df",
- "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43",
- "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1",
- "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7",
- "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989",
- "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a",
- "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63",
- "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884",
- "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649",
- "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810",
- "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828",
- "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4",
- "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2",
- "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd",
- "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5",
- "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe",
- "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293",
- "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e",
- "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e",
- "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"
- ],
- "markers": "python_full_version >= '3.7.0'",
- "version": "==3.3.0"
+ "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91",
+ "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0",
+ "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154",
+ "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601",
+ "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884",
+ "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07",
+ "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c",
+ "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64",
+ "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe",
+ "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f",
+ "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432",
+ "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc",
+ "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa",
+ "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9",
+ "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae",
+ "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19",
+ "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d",
+ "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e",
+ "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4",
+ "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7",
+ "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312",
+ "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92",
+ "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31",
+ "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c",
+ "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f",
+ "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99",
+ "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b",
+ "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15",
+ "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392",
+ "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f",
+ "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8",
+ "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491",
+ "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0",
+ "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc",
+ "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0",
+ "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f",
+ "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a",
+ "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40",
+ "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927",
+ "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849",
+ "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce",
+ "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14",
+ "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05",
+ "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c",
+ "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c",
+ "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a",
+ "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc",
+ "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34",
+ "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9",
+ "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096",
+ "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14",
+ "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30",
+ "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b",
+ "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b",
+ "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942",
+ "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db",
+ "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5",
+ "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b",
+ "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce",
+ "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669",
+ "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0",
+ "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018",
+ "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93",
+ "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe",
+ "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049",
+ "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a",
+ "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef",
+ "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2",
+ "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca",
+ "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16",
+ "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f",
+ "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb",
+ "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1",
+ "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557",
+ "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37",
+ "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7",
+ "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72",
+ "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c",
+ "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"
+ ],
+ "markers": "python_version >= '3.7'",
+ "version": "==3.4.3"
},
"click": {
"hashes": [
- "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
- "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"
+ "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202",
+ "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"
],
- "markers": "python_version >= '3.7'",
- "version": "==8.1.7"
+ "markers": "python_version >= '3.10'",
+ "version": "==8.2.1"
},
"exifread": {
"hashes": [
- "sha256:0ac5a364169dbdf2bd62f94f5c073970ab6694a3166177f5e448b10c943e2ca4",
- "sha256:2c5c59ef03b3bbee75b82b82d2498006b3c13509f35c9a76c7552faff73fa2d5"
+ "sha256:9f998f80d3062741c976dfc4fd033424bc40932937994e4d2181eb70c4b6aedd",
+ "sha256:e5426ce2857423ad401e575ea9d159dc97449dc041fb6e61b35109caea72c311"
],
- "version": "==3.0.0"
+ "markers": "python_version >= '3.7'",
+ "version": "==3.5.1"
},
"filetype": {
"hashes": [
@@ -185,12 +179,12 @@
},
"flake8": {
"hashes": [
- "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23",
- "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"
+ "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e",
+ "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872"
],
"index": "pypi",
- "markers": "python_full_version >= '3.8.1'",
- "version": "==6.1.0"
+ "markers": "python_version >= '3.9'",
+ "version": "==7.3.0"
},
"flask": {
"hashes": [
@@ -202,19 +196,11 @@
},
"idna": {
"hashes": [
- "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4",
- "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
+ "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9",
+ "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"
],
- "markers": "python_version >= '3.5'",
- "version": "==3.4"
- },
- "importlib-metadata": {
- "hashes": [
- "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb",
- "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"
- ],
- "markers": "python_version < '3.10'",
- "version": "==6.8.0"
+ "markers": "python_version >= '3.6'",
+ "version": "==3.10"
},
"inifile": {
"hashes": [
@@ -224,103 +210,104 @@
},
"isort": {
"hashes": [
- "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504",
- "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"
+ "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450",
+ "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615"
],
"index": "pypi",
- "markers": "python_full_version >= '3.8.0'",
- "version": "==5.12.0"
+ "markers": "python_full_version >= '3.9.0'",
+ "version": "==6.0.1"
},
"itsdangerous": {
"hashes": [
- "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44",
- "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"
+ "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef",
+ "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"
],
- "markers": "python_version >= '3.7'",
- "version": "==2.1.2"
+ "markers": "python_version >= '3.8'",
+ "version": "==2.2.0"
},
"jinja2": {
"hashes": [
- "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852",
- "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"
+ "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d",
+ "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"
],
"markers": "python_version >= '3.7'",
- "version": "==3.1.2"
+ "version": "==3.1.6"
},
"lektor": {
"hashes": [
- "sha256:7c1645643a3aa0a6c8e8c13534c348299387524bd4872ce45a2aca8778e6b5b2",
- "sha256:a0d8fca269565f581d54539f213b261b615bd13426817b245b755a285b9268ad"
+ "sha256:a856e5f94f77f8c960f6c3f21675338ac32e205bf035582063b17ea137035b03",
+ "sha256:d5667647bd784ae5216fbc1a32ea0022ed0b559d9d1967744675aa39ece72075"
],
"index": "pypi",
"markers": "python_version >= '3.6'",
- "version": "==3.3.10"
+ "version": "==3.3.12"
},
"markupsafe": {
"hashes": [
- "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e",
- "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e",
- "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431",
- "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686",
- "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c",
- "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559",
- "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc",
- "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb",
- "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939",
- "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c",
- "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0",
- "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4",
- "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9",
- "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575",
- "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba",
- "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d",
- "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd",
- "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3",
- "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00",
- "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155",
- "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac",
- "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52",
- "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f",
- "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8",
- "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b",
- "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007",
- "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24",
- "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea",
- "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198",
- "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0",
- "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee",
- "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be",
- "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2",
- "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1",
- "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707",
- "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6",
- "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c",
- "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58",
- "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823",
- "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779",
- "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636",
- "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c",
- "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad",
- "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee",
- "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc",
- "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2",
- "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48",
- "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7",
- "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e",
- "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b",
- "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa",
- "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5",
- "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e",
- "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb",
- "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9",
- "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57",
- "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc",
- "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc",
- "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2",
- "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"
- ],
- "markers": "python_version >= '3.7'",
- "version": "==2.1.3"
+ "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4",
+ "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30",
+ "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0",
+ "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9",
+ "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396",
+ "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13",
+ "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028",
+ "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca",
+ "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557",
+ "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832",
+ "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0",
+ "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b",
+ "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579",
+ "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a",
+ "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c",
+ "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff",
+ "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c",
+ "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22",
+ "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094",
+ "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb",
+ "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e",
+ "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5",
+ "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a",
+ "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d",
+ "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a",
+ "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b",
+ "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8",
+ "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225",
+ "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c",
+ "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144",
+ "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f",
+ "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87",
+ "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d",
+ "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93",
+ "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf",
+ "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158",
+ "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84",
+ "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb",
+ "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48",
+ "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171",
+ "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c",
+ "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6",
+ "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd",
+ "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d",
+ "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1",
+ "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d",
+ "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca",
+ "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a",
+ "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29",
+ "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe",
+ "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798",
+ "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c",
+ "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8",
+ "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f",
+ "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f",
+ "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a",
+ "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178",
+ "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0",
+ "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79",
+ "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430",
+ "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"
+ ],
+ "markers": "python_version >= '3.9'",
+ "version": "==3.0.2"
},
"mccabe": {
"hashes": [
@@ -339,90 +326,90 @@
},
"mypy-extensions": {
"hashes": [
- "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d",
- "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"
+ "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505",
+ "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"
],
- "markers": "python_version >= '3.5'",
- "version": "==1.0.0"
+ "markers": "python_version >= '3.8'",
+ "version": "==1.1.0"
},
"packaging": {
"hashes": [
- "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5",
- "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"
+ "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484",
+ "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"
],
- "markers": "python_version >= '3.7'",
- "version": "==23.2"
+ "markers": "python_version >= '3.8'",
+ "version": "==25.0"
},
"pathspec": {
"hashes": [
- "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20",
- "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"
+ "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08",
+ "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"
],
- "markers": "python_version >= '3.7'",
- "version": "==0.11.2"
+ "markers": "python_version >= '3.8'",
+ "version": "==0.12.1"
},
"pip": {
"hashes": [
- "sha256:bb7d4f69f488432e4e96394612f43ab43dd478d073ef7422604a570f7157561e",
- "sha256:bc38bb52bc286514f8f7cb3a1ba5ed100b76aaef29b521d48574329331c5ae7b"
+ "sha256:578283f006390f85bb6282dffb876454593d637f5d1be494b5202ce4877e71f2",
+ "sha256:6d67a2b4e7f14d8b31b8b52648866fa717f45a1eb70e83002f4331d07e953717"
],
- "markers": "python_version >= '3.7'",
- "version": "==23.3"
+ "markers": "python_version >= '3.9'",
+ "version": "==25.2"
},
"platformdirs": {
"hashes": [
- "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3",
- "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"
+ "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc",
+ "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"
],
- "markers": "python_version >= '3.7'",
- "version": "==3.11.0"
+ "markers": "python_version >= '3.9'",
+ "version": "==4.3.8"
},
"pycodestyle": {
"hashes": [
- "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f",
- "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"
+ "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783",
+ "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d"
],
- "markers": "python_version >= '3.8'",
- "version": "==2.11.1"
+ "markers": "python_version >= '3.9'",
+ "version": "==2.14.0"
},
"pyflakes": {
"hashes": [
- "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774",
- "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"
+ "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58",
+ "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f"
],
- "markers": "python_version >= '3.8'",
- "version": "==3.1.0"
+ "markers": "python_version >= '3.9'",
+ "version": "==3.4.0"
},
"python-slugify": {
"hashes": [
- "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395",
- "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"
+ "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8",
+ "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856"
],
"markers": "python_version >= '3.7'",
- "version": "==8.0.1"
+ "version": "==8.0.4"
},
"pytz": {
"hashes": [
- "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b",
- "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"
+ "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3",
+ "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"
],
- "version": "==2023.3.post1"
+ "version": "==2025.2"
},
"requests": {
"hashes": [
- "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f",
- "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"
+ "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6",
+ "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"
],
- "markers": "python_version >= '3.7'",
- "version": "==2.31.0"
+ "markers": "python_version >= '3.9'",
+ "version": "==2.32.5"
},
"setuptools": {
"hashes": [
- "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87",
- "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"
+ "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922",
+ "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"
],
- "markers": "python_version >= '3.8'",
- "version": "==68.2.2"
+ "markers": "python_version >= '3.9'",
+ "version": "==80.9.0"
},
"text-unidecode": {
"hashes": [
@@ -431,78 +418,57 @@
],
"version": "==1.3"
},
- "tomli": {
- "hashes": [
- "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
- "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
- ],
- "markers": "python_version < '3.11'",
- "version": "==2.0.1"
- },
- "typing-extensions": {
- "hashes": [
- "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0",
- "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"
- ],
- "markers": "python_version < '3.11'",
- "version": "==4.8.0"
- },
"urllib3": {
"hashes": [
- "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84",
- "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"
+ "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760",
+ "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"
],
- "markers": "python_version >= '3.7'",
- "version": "==2.0.7"
+ "markers": "python_version >= '3.9'",
+ "version": "==2.5.0"
},
"watchdog": {
"hashes": [
- "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a",
- "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100",
- "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8",
- "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc",
- "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae",
- "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41",
- "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0",
- "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f",
- "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c",
- "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9",
- "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3",
- "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709",
- "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83",
- "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759",
- "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9",
- "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3",
- "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7",
- "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f",
- "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346",
- "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674",
- "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397",
- "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96",
- "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d",
- "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a",
- "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64",
- "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44",
- "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"
- ],
- "markers": "python_version >= '3.7'",
- "version": "==3.0.0"
+ "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a",
+ "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2",
+ "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f",
+ "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c",
+ "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c",
+ "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c",
+ "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0",
+ "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13",
+ "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134",
+ "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa",
+ "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e",
+ "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379",
+ "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a",
+ "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11",
+ "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282",
+ "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b",
+ "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f",
+ "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c",
+ "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112",
+ "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948",
+ "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881",
+ "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860",
+ "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3",
+ "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680",
+ "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26",
+ "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26",
+ "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e",
+ "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8",
+ "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c",
+ "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"
+ ],
+ "markers": "python_version >= '3.9'",
+ "version": "==6.0.0"
},
"werkzeug": {
"hashes": [
- "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8",
- "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"
- ],
- "markers": "python_version >= '3.8'",
- "version": "==2.3.7"
- },
- "zipp": {
- "hashes": [
- "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31",
- "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"
+ "sha256:554b257c74bbeb7a0d254160a4f8ffe185243f52a52035060b761ca62d977f03",
+ "sha256:bba1f19f8ec89d4d607a3bd62f1904bd2e609472d93cd85e9d4e178f472c3748"
],
"markers": "python_version >= '3.8'",
- "version": "==3.17.0"
+ "version": "==2.3.8"
}
},
"develop": {}
diff --git a/README.md b/README.md
index df913dc89..d30553082 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,13 @@
-# creativecommons.github.io-source
+# ccos-website-source
Source for `creativecommons.github.io`
## Overview
-> **:warning: DO *NOT* MAKE CHANGES TO THE
-> [creativecommons/creativecommons.github.io][ccghiorepo] REPO DIRECTLY**.
+> **:warning: DON'T MAKE CHANGES TO THE
+> [creativecommons/creativecommons.github.io][ccghiorepo] REPOSIOTRY,
+> DIRECTLY**.
[ccghiorepo]: https://github.com/creativecommons/creativecommons.github.io
@@ -20,33 +21,41 @@ via lektor (see [Deployment](#deployment), below).
[ccopensource]: https://opensource.creativecommons.org/
-## Code of Conduct
+## Code of conduct
-[`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md):
+[`CODE_OF_CONDUCT.md`][org-coc]:
> The Creative Commons team is committed to fostering a welcoming community.
> This project and all other Creative Commons open source projects are governed
> by our [Code of Conduct][code_of_conduct]. Please report unacceptable
> behavior to [conduct@creativecommons.org](mailto:conduct@creativecommons.org)
> per our [reporting guidelines][reporting_guide].
-[code_of_conduct]: https://opensource.creativecommons.org/community/code-of-conduct/ "CC Open Source Code of Conduct — Creative Commons on GitHub"
-[reporting_guide]: https://opensource.creativecommons.org/community/code-of-conduct/enforcement/ "Codes of Conduct Enforcement — Creative Commons on GitHub"
+[org-coc]: https://github.com/creativecommons/.github/blob/main/CODE_OF_CONDUCT.md
+[code_of_conduct]: https://opensource.creativecommons.org/community/code-of-conduct/
+[reporting_guide]: https://opensource.creativecommons.org/community/code-of-conduct/enforcement/
## Contributing
-- See [`CONTRIBUTING.md`](CONTRIBUTING.md) for information on how to contribute
+See [`CONTRIBUTING.md`][org-contrib].
+
+[org-contrib]: https://github.com/creativecommons/.github/blob/main/CONTRIBUTING.md
+
- See [Contributors to
- creativecommons/creativecommons.github.io-source][contributors] for a
+ creativecommons/ccos-website-source][contributors] for a
list of authors and their contributions to this project :blush:
-[contributors]: https://github.com/creativecommons/creativecommons.github.io-source/graphs/contributors "Contributors to creativecommons/creativecommons.github.io-source"
+[contributors]: https://github.com/creativecommons/ccos-website-source/graphs/contributors "Contributors to creativecommons/ccos-website-source"
## Installation
### Prerequisites
+For information on learning and installing the prerequisite technologies for this project, please see [Foundational technologies — Creative Commons Open Source][found-tech].
+
+[found-tech]: https://opensource.creativecommons.org/contributing-code/foundational-tech/
+
Make sure you have:
- [pipenv][pipenvdocs]
- [Node.js][nodejswebsite] **v12+** and [npm][npmdocs] installed.
@@ -62,7 +71,7 @@ To install these, execute the following commands:
1. [Installing Pipenv][pipenvinstall]
2. [Install Node.js][nodeinstall] (or see the
[detailed instructions][nodedetailed])
- 3. Upate packges:
+ 3. Update packges:
```
sudo apt update
```
@@ -75,7 +84,7 @@ To install these, execute the following commands:
[nodejswebsite]: https://nodejs.org/en/
[npmdocs]: https://docs.npmjs.com/
[homebrew]: https://brew.sh/
-[pipenvinstall]: https://pipenv.pypa.io/en/latest/install/#installing-pipenv
+[pipenvinstall]: https://pipenv.pypa.io/en/latest/installation.html
[nodeinstall]: https://github.com/nodesource/distributions/blob/master/README.md#table-of-contents
[nodedetailed]: https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions
@@ -105,6 +114,11 @@ else fails, try removing the virtual environment and reinstalling:
```
pipenv install --dev
```
+ - If there's no Python 3.11 on your system (or if pipenv can't find it),
+ you may need to specify the Python location. For example:
+ ```
+ pipenv install --dev --python /opt/homebrew/bin/python3.11
+ ```
[pipenverror]: https://github.com/pypa/pipenv/issues/1918
@@ -204,8 +218,6 @@ Here's how the code is structured in the top level of the repository:
- [nixjdm/lektor-atom][atom]: Lektor Atom plugin
- [lektor/lektor-disqus-comments][disqus]: Adds disqus comments to a Lektor
website
- - [kmonsoor/lektor-google-analytics][lektorga]: Integration of Google
- analytics with Lektor CMS
- [bancek/lektor-markdown-excerpt][mdexcerpt]: Adds filter for Markdown body
excerpt
- [lektor/lektor-markdown-header-anchors][md-header]: Adds support for
@@ -220,7 +232,6 @@ Here's how the code is structured in the top level of the repository:
[plugins]: https://www.getlektor.com/docs/plugins/
[atom]: https://github.com/nixjdm/lektor-atom
[disqus]: https://github.com/lektor/lektor-disqus-comments
-[lektorga]: https://github.com/kmonsoor/lektor-google-analytics
[mdexcerpt]: https://github.com/bancek/lektor-markdown-excerpt
[md-header]: https://github.com/lektor/lektor-markdown-header-anchors
[md-highlighter]: https://github.com/lektor/lektor-markdown-highlighter
diff --git a/assets/CODE_OF_CONDUCT.md b/assets/CODE_OF_CONDUCT.md
deleted file mode 100644
index 30dc65364..000000000
--- a/assets/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Contributor Code of Conduct
-
-The Creative Commons team is committed to fostering a welcoming community. This
-project and all other Creative Commons open source projects are governed by our
-[Code of Conduct][code_of_conduct]. Please report unacceptable behavior to
-[conduct@creativecommons.org](mailto:conduct@creativecommons.org) per our
-[reporting guidelines][reporting_guide].
-
-For a history of updates, see the [page history here][updates].
-
-[code_of_conduct]: https://opensource.creativecommons.org/community/code-of-conduct/
-[reporting_guide]: https://opensource.creativecommons.org/community/code-of-conduct/enforcement/
-[updates]: https://github.com/creativecommons/creativecommons.github.io-source/commits/main/content/community/code-of-conduct/contents.lr
diff --git a/assets/README.md b/assets/README.md
index c1e887dfa..6442dc97f 100644
--- a/assets/README.md
+++ b/assets/README.md
@@ -1,10 +1,10 @@
-# Creative Commons Open Source Website
+# Creative Commons Open Source website
-⚠️ DO NOT MODIFY THIS REPOSITORY!
+> ⚠️ **DO NOT MODIFY THIS REPOSITORY!**
-These are the static files for [Creative Commons Open Source][ccos]. The files
-are automatically built via CI from the source files in the
-[creativecommons.github.io-source][src] repository.
+These are the static files for [Creative Commons Open Source][ccos] website.
+The files are automatically built via GitHub Actions from the source files in
+the [ccos-website-source][src] repository.
[ccos]: https://opensource.creativecommons.org/
-[src]: https://github.com/creativecommons/creativecommons.github.io-source
+[src]: https://github.com/creativecommons/ccos-website-source
diff --git a/assets/static/css/issue-finder.css b/assets/static/css/issue-finder.css
new file mode 100644
index 000000000..5d9ae251d
--- /dev/null
+++ b/assets/static/css/issue-finder.css
@@ -0,0 +1,87 @@
+@import "/static/vocabulary/css/vocabulary.css" layer(vocabulary);
+
+/* Issue-card styles */
+.issue-card {
+ padding: 1.3rem;
+ margin-bottom: 1.5rem;
+
+ border: 3px solid #ddd;
+ border-radius: 0.3rem;
+}
+
+.issue-card h4 {
+ font-size: 1.45rem;
+}
+
+.issue-card p {
+ font-size: 1rem;
+ color: rgb(118, 118, 118);
+}
+
+/* General container styling */
+
+.filter-container {
+ padding: 1rem;
+}
+
+/* Label styling */
+
+.filter-container label {
+ display: block;
+ margin-bottom: 0.5rem;
+
+ font-size: 1.12rem;
+ color: #333;
+}
+
+/* Strong text */
+
+.filter-container label strong {
+ display: block;
+ margin-bottom: 0.25rem;
+
+ font-size: 1.2rem;
+ color: #000;
+ font-weight: 700;
+}
+
+.filter-container select {
+ width: 100%;
+ padding: 0.5rem;
+ margin-bottom: 2rem;
+
+ border: 1px solid #ccc;
+ border-radius: 0.25rem;
+}
+
+/* Paragraph styling */
+
+.filter-container p {
+ margin-top: 1rem;
+
+ font-size: 0.75rem;
+ color: #666;
+ line-height: 1.4;
+}
+
+/* Review: Adjust focus outline color */
+
+.filter-container select:focus {
+ outline: 2px solid #0078D4;
+ border-color: #0078D4;
+}
+
+
+@media (min-width: 1024px) {
+.issue-container {
+ display: flex;
+ margin-left: -20%;
+ margin-right: -23%
+}
+
+.filter-container {
+ width: 25%;
+ flex: none;
+}
+
+}
diff --git a/assets/static/css/style.css b/assets/static/css/style.css
new file mode 100644
index 000000000..cb5633a47
--- /dev/null
+++ b/assets/static/css/style.css
@@ -0,0 +1,471 @@
+@import "/static/vocabulary/css/vocabulary.css" layer(vocabulary);
+@import "/static/vendor/datatable/datatables.css" layer(datatables);
+@import "/static/css/issue-finder.css" layer(issue-finder);
+
+/* Homepage Styles */
+
+.home-page main {
+ margin-top: 3rem;
+
+ font-family: 'Source Sans Pro';
+}
+
+/* Hero-section */
+
+.hero-section h2 {
+ margin-top: 0;
+
+ font-style: normal;
+ font-weight: 700;
+ text-transform: uppercase;
+ font-size: 2.5rem;
+}
+
+.home-page main p {
+ font-size: 1.5rem;
+ line-height: 1.5;
+ margin-bottom: 1rem;
+}
+
+.home-page li, .posts li, .projects li{
+ list-style-type: none;
+}
+
+.hero-section img {
+ width: 100%;
+ margin-top: 1.5rem
+}
+
+.hero-description a {
+ text-transform: uppercase;
+ font-size: 1.5rem;
+ font-weight: 700;
+}
+
+.home-page main article figure {
+ order: -1;
+}
+
+.home-page main .posts ul li h3 {
+ font-size: 1.5rem;
+}
+
+/* PROJECTS */
+
+.posts > h2 {
+ text-align: center;
+}
+
+.projects ul {
+ display: grid;
+ gap: 2rem;
+ margin: 0;
+}
+
+.projects article {
+ padding: 3rem;
+
+ background: var(--vocabulary-brand-color-soft-turquoise);
+ border-top: 3px solid black;
+}
+
+.projects article a {
+ --underline-background-color: var(--vocabulary-brand-color-soft-turquoise);
+}
+
+/* Table Styles */
+table.display {
+ border-collapse: collapse;
+ width: 100%;
+ border-left: 1px solid #ddd;
+ border-right: 1px solid #ddd;
+}
+
+table.display th {
+ border-bottom: 1px solid #ddd;
+ border-top: 1px solid #ddd;
+ border-width: 1px;
+}
+
+table.display thead {
+ background-color: rgb(216, 216, 216);
+}
+
+table.display th, table.display td {
+ border: 1px solid #ddd;
+ padding: 8px;
+}
+
+.search-table table.display th {
+ width: 30%; /* To make the th have a larger width than default on the search archive page */
+}
+
+.search-table {
+ overflow-x: scroll;
+}
+
+/* Code block styles */
+code {
+ color: rgb(51, 51, 51);
+ background-color: rgb(245, 245, 245);
+ border: 0.0625rem solid rgb(216, 216, 216);
+ border-radius: 0.25rem;
+ padding: 0.125rem 0.25rem;
+ font-size: 0.75em;
+ font-weight: normal;
+ /*padding: 0.25em 0.5em 0.25em; */
+}
+
+/* BLOG POST STYLING */
+.blog-post img {
+ max-width: 100%;
+}
+
+/* BUTTON STYLES FOR PROJECT IDEAS PAGE */
+.filter-btn {
+ border: 2px solid var(--vocabulary-brand-color-tomato);
+ background-color: transparent;
+ padding: 0 1rem;
+ font-size: .81rem;
+ min-height: 1.81rem;
+ border-radius: 18.5rem;
+ cursor: pointer;
+ margin-bottom: 1rem;
+}
+
+/* Hover State */
+.filter-btn:hover {
+ background-color: var(--vocabulary-brand-color-tomato);
+ color: #fff;
+}
+
+/* Active/Selected State */
+.filter-btn.btn-dark {
+ background-color: var(--vocabulary-brand-color-tomato);
+ color: white;
+}
+
+/* Inactive State */
+.filter-btn.btn-primary {
+ background-color: transparent;
+ color: #000;
+ border-color: var(--vocabulary-brand-color-tomato);
+}
+
+/* PRE STYLES */
+pre {
+ color: rgb(51, 51, 51);
+ background-color: rgb(245, 245, 245);
+ border: 0.0625rem solid rgb(216, 216, 216);
+ border-radius: 0.25rem;
+ padding: 1rem 2rem;
+}
+
+pre code {
+ border: none;
+}
+
+/* label styles */
+.gh-label {
+ display: inline-block;
+ margin-right: 0.25rem;
+ padding: 0.25rem 0.5rem;
+
+ font-size: smaller;
+ border: 1px solid #eeeeee;
+ border-radius: 1.5rem;
+}
+
+/* for anchor tags with a span.gh-label inside them */
+main a:has(span.gh-label) {
+ --underline-background-color: unset;
+}
+
+/* label style for individual labels */
+
+.goal {
+ background-color: #ffffff;
+ color: #000000;
+}
+
+.aspect {
+ background-color: #04338c;
+ color: #ffffff;
+}
+
+.skill {
+ background-color: #5ff1f5;
+ color: #000000;
+}
+
+.talk {
+ background-color: #f9bbe5;
+ color: #000000;
+}
+
+.friendliness {
+ background-color: #7f0799;
+ color: #ffffff;
+}
+
+.status-lighter {
+ background-color: #eeeeee;
+ color: #000000;
+}
+
+.status-light {
+ background-color: #cccccc;
+ color: #000000;
+}
+
+.status-neutral {
+ background-color: #999999;
+ color: #000000;
+}
+
+.status-dark {
+ background-color: #666666;
+ color: #ffffff;
+}
+
+.status-darker {
+ background-color: #333333;
+ color: #ffffff;
+}
+
+.status-medium{
+ background-color: #999999;
+ color: #ffffff;
+}
+
+.priority-unfavourable {
+ background-color: #b60205;
+ color: #ffffff;
+}
+
+.priority-negative {
+ background-color: #ff9f1c;
+ color: #000000;
+}
+
+.priority-neutral {
+ background-color: #ffcc00;
+ color: #000000;
+}
+
+.priority-positive {
+ background-color: #cfda2c;
+ color: #000000;
+}
+
+.priority-favourable {
+ background-color: #008672;
+ color: #ffffff;
+}
+
+.miscellaneous {
+ background-color: #000000;
+ color: #ffffff;
+}
+
+.hacktoberfest {
+ background-color: #883255;
+ color: #ffffff;
+}
+
+.invalid {
+ background-color: #eeeeee;
+ color: #000000;
+}
+
+/* Sidebar Visual Distinction */
+main:has( > aside.sidebar) > aside.sidebar {
+ background-color: var(--vocabulary-brand-color-soft-gold);
+ margin-left: 4.1rem;
+ padding: 1em 1em 1em 4.1em;
+ height: fit-content;
+}
+
+main > aside.sidebar nav.filter-menu ul li.current {
+ background: var(--vocabulary-brand-color-dark-tomato);
+ font-weight: bold;
+}
+
+main > aside.sidebar nav.filter-menu ul li.current a {
+ --underline-background-color: var(--vocabulary-brand-color-dark-tomato);
+}
+
+/* CC Search Feature */
+.steps-list {
+ list-style: none;
+ padding: 0;
+ position: relative;
+ margin-left: 1rem;
+}
+
+.steps-list::before {
+ content: '';
+ position: absolute;
+ top: 10px;
+ left: 15px;
+ width: 2px;
+ height: calc(100% - 20px);
+ background-color: #eee;
+}
+
+.step-item {
+ display: flex;
+ align-items: center;
+ position: relative;
+ margin-bottom: 1.6rem;
+}
+
+.step-link {
+ --underline-color: unset
+ --underline-background-color: unset;
+ color: #333;
+ display: flex;
+ align-items: center;
+ font-weight: bold;
+}
+
+.step-number {
+ width: 1.82rem;
+ height: 1.82rem;
+ background-color: rgb(245, 245, 245);
+ border-radius: 50%;
+ text-align: center;
+ line-height: 32px;
+ font-weight: bold;
+ font-size: 1rem;
+ margin-right: 15px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.step-title {
+ font-size: 1rem;
+}
+
+.home-page .topic-summary {
+ grid-column: 2 / span 9;
+ display: grid;
+ grid-template:
+ "title graphic graphic"
+ "description graphic graphic"
+ "button graphic graphic";
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ margin-bottom: 6.4em;
+ gap: 0 4em;
+}
+
+.home-page .topic-summary h2 {
+ grid-area: title;
+
+ font-size: 2.4em;
+}
+
+.home-page .topic-summary img {
+ width: 100%;
+ grid-area: graphic;
+ margin-top: 3.1em;
+}
+
+.home-page .topic-summary figure {
+ width: 100%;
+ grid-area: graphic;
+ margin: 0;
+ padding: 0;
+ margin-top: .6em;
+}
+
+.home-page .topic-summary .description {
+ grid-area: description;
+}
+
+.home-page .topic-summary .description p {
+ margin-bottom: 1em;
+}
+
+.home-page .topic-summary .description a {
+ display: inline;
+ box-sizing: border-box;
+ grid-column-start: 1;
+ grid-row-start: 3;
+
+ text-transform: uppercase;
+ font-size: 1.5em;
+ font-weight: 700;
+}
+
+
+@media (min-width: 1024px) {
+ .projects ul {
+ grid-template-columns: 1fr 1fr;
+
+ font-size: 1rem;
+ }
+
+ .projects {
+ grid-column: 2 / 11;
+ margin-bottom: 6rem;
+ }
+ .body-container, .main-content{
+ grid-column: 2 / 10;
+ }
+
+ .project h5 {
+ font-size: 1.25rem;
+ }
+
+ .home-page main .posts h2 {
+ text-align: center;
+ margin-bottom: .7em;
+ }
+
+ .home-page main .posts {
+ grid-column: 2 / span 9;
+ }
+
+ .home-page main .posts ul {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ margin-top: 8em;
+ gap: 2em;
+ box-sizing: border-box;
+ width:100%;
+ margin: 0 auto;
+ margin-top: 0;
+
+ font-size: 1rem;
+ list-style: none;
+ }
+
+ .project-container, .search-guide-container {
+ display: flex;
+ }
+
+ .project-description, .guide-content {
+ margin-left: 10%;
+ }
+}
+
+@media (min-width: 1314px) {
+ .hero-image {
+ grid-column: 3;
+ margin-top: -6rem;
+ }
+}
+
+@media (max-width: 900px) {
+ .home-page .topic-summary {
+ display: block;
+ }
+
+ .home-page .topic-summary figure {
+ display: none;
+ }
+}
+
diff --git a/webpack/js/ideas.js b/assets/static/js/ideas.js
similarity index 98%
rename from webpack/js/ideas.js
rename to assets/static/js/ideas.js
index 06e8da68a..40a034f4b 100644
--- a/webpack/js/ideas.js
+++ b/assets/static/js/ideas.js
@@ -17,8 +17,10 @@ $(document).ready(function(){
'difficulty-easy',
'difficulty-medium',
'difficulty-hard',
+ 'skill-ansible',
'skill-css',
'skill-django',
+ 'skill-docker',
'skill-javascript',
'skill-php',
'skill-python',
diff --git a/assets/static/js/table.js b/assets/static/js/table.js
new file mode 100644
index 000000000..000083f55
--- /dev/null
+++ b/assets/static/js/table.js
@@ -0,0 +1,12 @@
+document.addEventListener("DOMContentLoaded", function () {
+ document
+ .querySelectorAll(".datatable")
+ .forEach(function (tableElement) {
+ new DataTable(tableElement, {
+ paging: false, // Disable pagination
+ searching: false, // Disable search bar
+ ordering: true, // Enable column sorting
+ info: false, // Disable info text
+ });
+ });
+});
diff --git a/assets/static/vendor/datatable/datatables.css b/assets/static/vendor/datatable/datatables.css
new file mode 100644
index 000000000..2bf6914f9
--- /dev/null
+++ b/assets/static/vendor/datatable/datatables.css
@@ -0,0 +1,768 @@
+@charset "UTF-8";
+:root {
+ --dt-row-selected: 13, 110, 253;
+ --dt-row-selected-text: 255, 255, 255;
+ --dt-row-selected-link: 9, 10, 11;
+ --dt-row-stripe: 0, 0, 0;
+ --dt-row-hover: 0, 0, 0;
+ --dt-column-ordering: 0, 0, 0;
+ --dt-html-background: white;
+}
+:root.dark {
+ --dt-html-background: rgb(33, 37, 41);
+}
+
+table.dataTable td.dt-control {
+ text-align: center;
+ cursor: pointer;
+}
+table.dataTable td.dt-control:before {
+ display: inline-block;
+ box-sizing: border-box;
+ content: "";
+ border-top: 5px solid transparent;
+ border-left: 10px solid rgba(0, 0, 0, 0.5);
+ border-bottom: 5px solid transparent;
+ border-right: 0px solid transparent;
+}
+table.dataTable tr.dt-hasChild td.dt-control:before {
+ border-top: 10px solid rgba(0, 0, 0, 0.5);
+ border-left: 5px solid transparent;
+ border-bottom: 0px solid transparent;
+ border-right: 5px solid transparent;
+}
+table.dataTable tfoot:empty {
+ display: none;
+}
+
+html.dark table.dataTable td.dt-control:before,
+:root[data-bs-theme=dark] table.dataTable td.dt-control:before,
+:root[data-theme=dark] table.dataTable td.dt-control:before {
+ border-left-color: rgba(255, 255, 255, 0.5);
+}
+html.dark table.dataTable tr.dt-hasChild td.dt-control:before,
+:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,
+:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before {
+ border-top-color: rgba(255, 255, 255, 0.5);
+ border-left-color: transparent;
+}
+
+div.dt-scroll {
+ width: 100%;
+}
+
+div.dt-scroll-body thead tr,
+div.dt-scroll-body tfoot tr {
+ height: 0;
+}
+div.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td,
+div.dt-scroll-body tfoot tr th,
+div.dt-scroll-body tfoot tr td {
+ height: 0 !important;
+ padding-top: 0px !important;
+ padding-bottom: 0px !important;
+ border-top-width: 0px !important;
+ border-bottom-width: 0px !important;
+}
+div.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing,
+div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,
+div.dt-scroll-body tfoot tr td div.dt-scroll-sizing {
+ height: 0 !important;
+ overflow: hidden !important;
+}
+
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+ outline: none;
+}
+table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before {
+ position: absolute;
+ display: block;
+ bottom: 50%;
+ content: "▲";
+ content: "▲"/"";
+}
+table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
+ position: absolute;
+ display: block;
+ top: 50%;
+ content: "▼";
+ content: "▼"/"";
+}
+table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc, table.dataTable thead > tr > th.dt-ordering-asc, table.dataTable thead > tr > th.dt-ordering-desc,
+table.dataTable thead > tr > td.dt-orderable-asc,
+table.dataTable thead > tr > td.dt-orderable-desc,
+table.dataTable thead > tr > td.dt-ordering-asc,
+table.dataTable thead > tr > td.dt-ordering-desc {
+ position: relative;
+ padding-right: 30px;
+}
+table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {
+ position: absolute;
+ right: 12px;
+ top: 0;
+ bottom: 0;
+ width: 12px;
+}
+table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
+ left: 0;
+ opacity: 0.125;
+ line-height: 9px;
+ font-size: 0.8em;
+}
+table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc,
+table.dataTable thead > tr > td.dt-orderable-asc,
+table.dataTable thead > tr > td.dt-orderable-desc {
+ cursor: pointer;
+}
+table.dataTable thead > tr > th.dt-orderable-asc:hover, table.dataTable thead > tr > th.dt-orderable-desc:hover,
+table.dataTable thead > tr > td.dt-orderable-asc:hover,
+table.dataTable thead > tr > td.dt-orderable-desc:hover {
+ outline: 2px solid rgba(0, 0, 0, 0.05);
+ outline-offset: -2px;
+}
+table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
+ opacity: 0.6;
+}
+table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,
+table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,
+table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {
+ display: none;
+}
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+ outline: none;
+}
+
+div.dt-scroll-body > table.dataTable > thead > tr > th,
+div.dt-scroll-body > table.dataTable > thead > tr > td {
+ overflow: hidden;
+}
+
+:root.dark table.dataTable thead > tr > th.dt-orderable-asc:hover, :root.dark table.dataTable thead > tr > th.dt-orderable-desc:hover,
+:root.dark table.dataTable thead > tr > td.dt-orderable-asc:hover,
+:root.dark table.dataTable thead > tr > td.dt-orderable-desc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-asc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-desc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-asc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-desc:hover {
+ outline: 2px solid rgba(255, 255, 255, 0.05);
+}
+
+div.dt-processing {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 200px;
+ margin-left: -100px;
+ margin-top: -22px;
+ text-align: center;
+ padding: 2px;
+ z-index: 10;
+}
+div.dt-processing > div:last-child {
+ position: relative;
+ width: 80px;
+ height: 15px;
+ margin: 1em auto;
+}
+div.dt-processing > div:last-child > div {
+ position: absolute;
+ top: 0;
+ width: 13px;
+ height: 13px;
+ border-radius: 50%;
+ background: rgb(13, 110, 253);
+ background: rgb(var(--dt-row-selected));
+ animation-timing-function: cubic-bezier(0, 1, 1, 0);
+}
+div.dt-processing > div:last-child > div:nth-child(1) {
+ left: 8px;
+ animation: datatables-loader-1 0.6s infinite;
+}
+div.dt-processing > div:last-child > div:nth-child(2) {
+ left: 8px;
+ animation: datatables-loader-2 0.6s infinite;
+}
+div.dt-processing > div:last-child > div:nth-child(3) {
+ left: 32px;
+ animation: datatables-loader-2 0.6s infinite;
+}
+div.dt-processing > div:last-child > div:nth-child(4) {
+ left: 56px;
+ animation: datatables-loader-3 0.6s infinite;
+}
+
+@keyframes datatables-loader-1 {
+ 0% {
+ transform: scale(0);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@keyframes datatables-loader-3 {
+ 0% {
+ transform: scale(1);
+ }
+ 100% {
+ transform: scale(0);
+ }
+}
+@keyframes datatables-loader-2 {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 100% {
+ transform: translate(24px, 0);
+ }
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+ white-space: nowrap;
+}
+table.dataTable th,
+table.dataTable td {
+ box-sizing: border-box;
+}
+table.dataTable th.dt-type-numeric, table.dataTable th.dt-type-date,
+table.dataTable td.dt-type-numeric,
+table.dataTable td.dt-type-date {
+ text-align: right;
+}
+table.dataTable th.dt-left,
+table.dataTable td.dt-left {
+ text-align: left;
+}
+table.dataTable th.dt-center,
+table.dataTable td.dt-center {
+ text-align: center;
+}
+table.dataTable th.dt-right,
+table.dataTable td.dt-right {
+ text-align: right;
+}
+table.dataTable th.dt-justify,
+table.dataTable td.dt-justify {
+ text-align: justify;
+}
+table.dataTable th.dt-nowrap,
+table.dataTable td.dt-nowrap {
+ white-space: nowrap;
+}
+table.dataTable th.dt-empty,
+table.dataTable td.dt-empty {
+ text-align: center;
+ vertical-align: top;
+}
+table.dataTable thead th,
+table.dataTable thead td,
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+ text-align: left;
+}
+table.dataTable thead th.dt-head-left,
+table.dataTable thead td.dt-head-left,
+table.dataTable tfoot th.dt-head-left,
+table.dataTable tfoot td.dt-head-left {
+ text-align: left;
+}
+table.dataTable thead th.dt-head-center,
+table.dataTable thead td.dt-head-center,
+table.dataTable tfoot th.dt-head-center,
+table.dataTable tfoot td.dt-head-center {
+ text-align: center;
+}
+table.dataTable thead th.dt-head-right,
+table.dataTable thead td.dt-head-right,
+table.dataTable tfoot th.dt-head-right,
+table.dataTable tfoot td.dt-head-right {
+ text-align: right;
+}
+table.dataTable thead th.dt-head-justify,
+table.dataTable thead td.dt-head-justify,
+table.dataTable tfoot th.dt-head-justify,
+table.dataTable tfoot td.dt-head-justify {
+ text-align: justify;
+}
+table.dataTable thead th.dt-head-nowrap,
+table.dataTable thead td.dt-head-nowrap,
+table.dataTable tfoot th.dt-head-nowrap,
+table.dataTable tfoot td.dt-head-nowrap {
+ white-space: nowrap;
+}
+table.dataTable tbody th.dt-body-left,
+table.dataTable tbody td.dt-body-left {
+ text-align: left;
+}
+table.dataTable tbody th.dt-body-center,
+table.dataTable tbody td.dt-body-center {
+ text-align: center;
+}
+table.dataTable tbody th.dt-body-right,
+table.dataTable tbody td.dt-body-right {
+ text-align: right;
+}
+table.dataTable tbody th.dt-body-justify,
+table.dataTable tbody td.dt-body-justify {
+ text-align: justify;
+}
+table.dataTable tbody th.dt-body-nowrap,
+table.dataTable tbody td.dt-body-nowrap {
+ white-space: nowrap;
+}
+
+:root {
+ --dt-row-hover-alpha: 0.035;
+ --dt-row-stripe-alpha: 0.023;
+ --dt-column-ordering-alpha: 0.019;
+ --dt-row-selected-stripe-alpha: 0.923;
+ --dt-row-selected-column-ordering-alpha: 0.919;
+}
+
+/*
+ * Table styles
+ */
+table.dataTable {
+ width: 100%;
+ margin: 0 auto;
+ border-spacing: 0;
+ /*
+ * Header and footer styles
+ */
+ /*
+ * Body styles
+ */
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+ font-weight: bold;
+}
+table.dataTable > thead > tr > th,
+table.dataTable > thead > tr > td {
+ padding: 10px;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.3);
+}
+table.dataTable > thead > tr > th:active,
+table.dataTable > thead > tr > td:active {
+ outline: none;
+}
+table.dataTable > tfoot > tr > th,
+table.dataTable > tfoot > tr > td {
+ border-top: 1px solid rgba(0, 0, 0, 0.3);
+ padding: 10px 10px 6px 10px;
+}
+table.dataTable > tbody > tr {
+ background-color: transparent;
+}
+table.dataTable > tbody > tr:first-child > * {
+ border-top: none;
+}
+table.dataTable > tbody > tr:last-child > * {
+ border-bottom: none;
+}
+table.dataTable > tbody > tr.selected > * {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.9);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);
+ color: rgb(255, 255, 255);
+ color: rgb(var(--dt-row-selected-text));
+}
+table.dataTable > tbody > tr.selected a {
+ color: rgb(9, 10, 11);
+ color: rgb(var(--dt-row-selected-link));
+}
+table.dataTable > tbody > tr > th,
+table.dataTable > tbody > tr > td {
+ padding: 8px 10px;
+}
+table.dataTable.row-border > tbody > tr > *, table.dataTable.display > tbody > tr > * {
+ border-top: 1px solid rgba(0, 0, 0, 0.15);
+}
+table.dataTable.row-border > tbody > tr:first-child > *, table.dataTable.display > tbody > tr:first-child > * {
+ border-top: none;
+}
+table.dataTable.row-border > tbody > tr.selected + tr.selected > td, table.dataTable.display > tbody > tr.selected + tr.selected > td {
+ border-top-color: rgba(13, 110, 253, 0.65);
+ border-top-color: rgba(var(--dt-row-selected), 0.65);
+}
+table.dataTable.cell-border > tbody > tr > * {
+ border-top: 1px solid rgba(0, 0, 0, 0.15);
+ border-right: 1px solid rgba(0, 0, 0, 0.15);
+}
+table.dataTable.cell-border > tbody > tr > *:first-child {
+ border-left: 1px solid rgba(0, 0, 0, 0.15);
+}
+table.dataTable.cell-border > tbody > tr:first-child > * {
+ border-top: 1px solid rgba(0, 0, 0, 0.3);
+}
+table.dataTable.stripe > tbody > tr:nth-child(odd) > *, table.dataTable.display > tbody > tr:nth-child(odd) > * {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.023);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-stripe), var(--dt-row-stripe-alpha));
+}
+table.dataTable.stripe > tbody > tr:nth-child(odd).selected > *, table.dataTable.display > tbody > tr:nth-child(odd).selected > * {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.923);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-stripe-alpha));
+}
+table.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > tr:hover > * {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.035);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha));
+}
+table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
+ box-shadow: inset 0 0 0 9999px #0d6efd !important;
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important;
+}
+table.dataTable.order-column > tbody tr > .sorting_1,
+table.dataTable.order-column > tbody tr > .sorting_2,
+table.dataTable.order-column > tbody tr > .sorting_3, table.dataTable.display > tbody tr > .sorting_1,
+table.dataTable.display > tbody tr > .sorting_2,
+table.dataTable.display > tbody tr > .sorting_3 {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), var(--dt-column-ordering-alpha));
+}
+table.dataTable.order-column > tbody tr.selected > .sorting_1,
+table.dataTable.order-column > tbody tr.selected > .sorting_2,
+table.dataTable.order-column > tbody tr.selected > .sorting_3, table.dataTable.display > tbody tr.selected > .sorting_1,
+table.dataTable.display > tbody tr.selected > .sorting_2,
+table.dataTable.display > tbody tr.selected > .sorting_3 {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-column-ordering-alpha));
+}
+table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_1 {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.054);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha)));
+}
+table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_2 {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.047);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007));
+}
+table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_3 {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.039);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015));
+}
+table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_1 {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.954);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)));
+}
+table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_2 {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.947);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007));
+}
+table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_3 {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.939);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015));
+}
+table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.082);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha)));
+}
+table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.074);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007));
+}
+table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
+ box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.062);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015));
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.982);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)));
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.974);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007));
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.962);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015));
+}
+table.dataTable.compact thead th,
+table.dataTable.compact thead td,
+table.dataTable.compact tfoot th,
+table.dataTable.compact tfoot td,
+table.dataTable.compact tbody th,
+table.dataTable.compact tbody td {
+ padding: 4px;
+}
+
+div.dt-container div.dt-layout-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+ margin: 0.75em 0;
+}
+div.dt-container div.dt-layout-row div.dt-layout-cell {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start {
+ justify-content: flex-start;
+ margin-right: auto;
+}
+div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end {
+ justify-content: flex-end;
+ margin-left: auto;
+}
+div.dt-container div.dt-layout-row div.dt-layout-cell:empty {
+ display: none;
+}
+
+@media screen and (max-width: 767px) {
+ div.dt-container div.dt-layout-row:not(.dt-layout-table) {
+ display: block;
+ }
+ div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell {
+ display: block;
+ text-align: center;
+ }
+ div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell > * {
+ margin: 0.5em 0;
+ }
+ div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start {
+ margin-right: 0;
+ }
+ div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end {
+ margin-left: 0;
+ }
+}
+div.dt-container div.dt-layout-start > *:not(:last-child) {
+ margin-right: 1em;
+}
+div.dt-container div.dt-layout-end > *:not(:first-child) {
+ margin-left: 1em;
+}
+div.dt-container div.dt-layout-full {
+ width: 100%;
+}
+div.dt-container div.dt-layout-full > *:only-child {
+ margin-left: auto;
+ margin-right: auto;
+}
+div.dt-container div.dt-layout-table > div {
+ display: block !important;
+}
+
+@media screen and (max-width: 767px) {
+ div.dt-container div.dt-layout-start > *:not(:last-child) {
+ margin-right: 0;
+ }
+ div.dt-container div.dt-layout-end > *:not(:first-child) {
+ margin-left: 0;
+ }
+}
+/*
+ * Control feature layout
+ */
+div.dt-container {
+ position: relative;
+ clear: both;
+}
+div.dt-container .dt-search input {
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ padding: 5px;
+ background-color: transparent;
+ color: inherit;
+ margin-left: 3px;
+}
+div.dt-container .dt-input {
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ padding: 5px;
+ background-color: transparent;
+ color: inherit;
+}
+div.dt-container select.dt-input {
+ padding: 4px;
+}
+div.dt-container .dt-paging .dt-paging-button {
+ box-sizing: border-box;
+ display: inline-block;
+ min-width: 1.5em;
+ padding: 0.5em 1em;
+ margin-left: 2px;
+ text-align: center;
+ text-decoration: none !important;
+ cursor: pointer;
+ color: inherit !important;
+ border: 1px solid transparent;
+ border-radius: 2px;
+ background: transparent;
+}
+div.dt-container .dt-paging .dt-paging-button.current, div.dt-container .dt-paging .dt-paging-button.current:hover {
+ color: inherit !important;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ background-color: rgba(0, 0, 0, 0.05);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05))); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* FF3.6+ */
+ background: -ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* IE10+ */
+ background: -o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Opera 11.10+ */
+ background: linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* W3C */
+}
+div.dt-container .dt-paging .dt-paging-button.disabled, div.dt-container .dt-paging .dt-paging-button.disabled:hover, div.dt-container .dt-paging .dt-paging-button.disabled:active {
+ cursor: default;
+ color: rgba(0, 0, 0, 0.5) !important;
+ border: 1px solid transparent;
+ background: transparent;
+ box-shadow: none;
+}
+div.dt-container .dt-paging .dt-paging-button:hover {
+ color: white !important;
+ border: 1px solid #111;
+ background-color: #111;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */
+ background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */
+ background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */
+ background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */
+}
+div.dt-container .dt-paging .dt-paging-button:active {
+ outline: none;
+ background-color: #0c0c0c;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */
+ background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */
+ background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */
+ background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */
+ box-shadow: inset 0 0 3px #111;
+}
+div.dt-container .dt-paging .ellipsis {
+ padding: 0 1em;
+}
+div.dt-container .dt-length,
+div.dt-container .dt-search,
+div.dt-container .dt-info,
+div.dt-container .dt-processing,
+div.dt-container .dt-paging {
+ color: inherit;
+}
+div.dt-container .dataTables_scroll {
+ clear: both;
+}
+div.dt-container .dataTables_scroll div.dt-scroll-body {
+ -webkit-overflow-scrolling: touch;
+}
+div.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > th, div.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > td, div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > th, div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td {
+ vertical-align: middle;
+}
+div.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > th > div.dataTables_sizing,
+div.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > td > div.dataTables_sizing, div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > th > div.dataTables_sizing,
+div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td > div.dataTables_sizing {
+ height: 0;
+ overflow: hidden;
+ margin: 0 !important;
+ padding: 0 !important;
+}
+div.dt-container.dt-empty-footer tbody > tr:last-child > * {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.3);
+}
+div.dt-container.dt-empty-footer .dt-scroll-body {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.3);
+}
+div.dt-container.dt-empty-footer .dt-scroll-body tbody > tr:last-child > * {
+ border-bottom: none;
+}
+
+html.dark {
+ --dt-row-hover: 255, 255, 255;
+ --dt-row-stripe: 255, 255, 255;
+ --dt-column-ordering: 255, 255, 255;
+}
+html.dark table.dataTable > thead > tr > th,
+html.dark table.dataTable > thead > tr > td {
+ border-bottom: 1px solid rgb(89, 91, 94);
+}
+html.dark table.dataTable > thead > tr > th:active,
+html.dark table.dataTable > thead > tr > td:active {
+ outline: none;
+}
+html.dark table.dataTable > tfoot > tr > th,
+html.dark table.dataTable > tfoot > tr > td {
+ border-top: 1px solid rgb(89, 91, 94);
+}
+html.dark table.dataTable.row-border > tbody > tr > *, html.dark table.dataTable.display > tbody > tr > * {
+ border-top: 1px solid rgb(64, 67, 70);
+}
+html.dark table.dataTable.row-border > tbody > tr:first-child > *, html.dark table.dataTable.display > tbody > tr:first-child > * {
+ border-top: none;
+}
+html.dark table.dataTable.row-border > tbody > tr.selected + tr.selected > td, html.dark table.dataTable.display > tbody > tr.selected + tr.selected > td {
+ border-top-color: rgba(13, 110, 253, 0.65);
+ border-top-color: rgba(var(--dt-row-selected), 0.65);
+}
+html.dark table.dataTable.cell-border > tbody > tr > th,
+html.dark table.dataTable.cell-border > tbody > tr > td {
+ border-top: 1px solid rgb(64, 67, 70);
+ border-right: 1px solid rgb(64, 67, 70);
+}
+html.dark table.dataTable.cell-border > tbody > tr > th:first-child,
+html.dark table.dataTable.cell-border > tbody > tr > td:first-child {
+ border-left: 1px solid rgb(64, 67, 70);
+}
+html.dark .dt-container.dt-empty-footer table.dataTable {
+ border-bottom: 1px solid rgb(89, 91, 94);
+}
+html.dark .dt-container .dt-search input,
+html.dark .dt-container .dt-length select {
+ border: 1px solid rgba(255, 255, 255, 0.2);
+ background-color: var(--dt-html-background);
+}
+html.dark .dt-container .dt-paging .dt-paging-button.current, html.dark .dt-container .dt-paging .dt-paging-button.current:hover {
+ border: 1px solid rgb(89, 91, 94);
+ background: rgba(255, 255, 255, 0.15);
+}
+html.dark .dt-container .dt-paging .dt-paging-button.disabled, html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover, html.dark .dt-container .dt-paging .dt-paging-button.disabled:active {
+ color: #666 !important;
+}
+html.dark .dt-container .dt-paging .dt-paging-button:hover {
+ border: 1px solid rgb(53, 53, 53);
+ background: rgb(53, 53, 53);
+}
+html.dark .dt-container .dt-paging .dt-paging-button:active {
+ background: #3a3a3a;
+}
+
+/*
+ * Overrides for RTL support
+ */
+*[dir=rtl] table.dataTable thead th,
+*[dir=rtl] table.dataTable thead td,
+*[dir=rtl] table.dataTable tfoot th,
+*[dir=rtl] table.dataTable tfoot td {
+ text-align: right;
+}
+*[dir=rtl] table.dataTable th.dt-type-numeric, *[dir=rtl] table.dataTable th.dt-type-date,
+*[dir=rtl] table.dataTable td.dt-type-numeric,
+*[dir=rtl] table.dataTable td.dt-type-date {
+ text-align: left;
+}
+*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start {
+ text-align: right;
+}
+*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end {
+ text-align: left;
+}
+*[dir=rtl] div.dt-container div.dt-search input {
+ margin: 0 3px 0 0;
+}
diff --git a/assets/static/vendor/datatable/datatables.js b/assets/static/vendor/datatable/datatables.js
new file mode 100644
index 000000000..bc397e28d
--- /dev/null
+++ b/assets/static/vendor/datatable/datatables.js
@@ -0,0 +1,13811 @@
+/*! DataTables 2.2.1
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ) {
+ "use strict";
+
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ // jQuery's factory checks for a global window - if it isn't present then it
+ // returns a factory function that expects the window object
+ var jq = require('jquery');
+
+ if (typeof window === 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ window.DataTable = factory( jQuery, window, document );
+ }
+}(function( $, window, document ) {
+ "use strict";
+
+
+ var DataTable = function ( selector, options )
+ {
+ // Check if called with a window or jQuery object for DOM less applications
+ // This is for backwards compatibility
+ if (DataTable.factory(selector, options)) {
+ return DataTable;
+ }
+
+ // When creating with `new`, create a new DataTable, returning the API instance
+ if (this instanceof DataTable) {
+ return $(selector).DataTable(options);
+ }
+ else {
+ // Argument switching
+ options = selector;
+ }
+
+ var _that = this;
+ var emptyInit = options === undefined;
+ var len = this.length;
+
+ if ( emptyInit ) {
+ options = {};
+ }
+
+ // Method to get DT API instance from jQuery object
+ this.api = function ()
+ {
+ return new _Api( this );
+ };
+
+ this.each(function() {
+ // For each initialisation we want to give it a clean initialisation
+ // object that can be bashed around
+ var o = {};
+ var oInit = len > 1 ? // optimisation for single table case
+ _fnExtend( o, options, true ) :
+ options;
+
+
+ var i=0, iLen;
+ var sId = this.getAttribute( 'id' );
+ var defaults = DataTable.defaults;
+ var $this = $(this);
+
+
+ /* Sanity check */
+ if ( this.nodeName.toLowerCase() != 'table' )
+ {
+ _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
+ return;
+ }
+
+ $(this).trigger( 'options.dt', oInit );
+
+ /* Backwards compatibility for the defaults */
+ _fnCompatOpts( defaults );
+ _fnCompatCols( defaults.column );
+
+ /* Convert the camel-case defaults to Hungarian */
+ _fnCamelToHungarian( defaults, defaults, true );
+ _fnCamelToHungarian( defaults.column, defaults.column, true );
+
+ /* Setting up the initialisation object */
+ _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ), true );
+
+
+
+ /* Check to see if we are re-initialising a table */
+ var allSettings = DataTable.settings;
+ for ( i=0, iLen=allSettings.length ; i