Compare commits
514 Commits
cwtch-alph
...
master
Author | SHA1 | Date |
---|---|---|
Sarah Jamie Lewis | 12a6cb4610 | |
Dan Ballard | 8e92a6ae42 | |
erinn | 211e388a7d | |
Dan Ballard | dc3872fc8a | |
erinn | bc55d472d1 | |
Sarah Jamie Lewis | 60af2930b5 | |
Dan Ballard | 1f98899f6b | |
Dan Ballard | b586248bda | |
Sarah Jamie Lewis | f44cb450a5 | |
Sarah Jamie Lewis | f354f5a81a | |
Dan Ballard | e6145d6e12 | |
Sarah Jamie Lewis | ee1a8dbed5 | |
Dan Ballard | 4bb5a52b9f | |
Sarah Jamie Lewis | bf27590afe | |
erinn | 4cdb507e5e | |
Dan Ballard | 3dbcf07396 | |
Dan Ballard | afcceac8cf | |
Sarah Jamie Lewis | 66c46714b7 | |
Dan Ballard | 288e14ede2 | |
Dan Ballard | 1962cf9df5 | |
Dan Ballard | ae8702cda2 | |
Dan Ballard | 85dc5b5714 | |
Dan Ballard | 4932c728ec | |
Dan Ballard | 0f15141f73 | |
Dan Ballard | db0e8a2395 | |
Dan Ballard | be1959b60c | |
Sarah Jamie Lewis | dfb12a2ab0 | |
erinn | 17c946de6d | |
Sarah Jamie Lewis | 9958bb605b | |
Sarah Jamie Lewis | 826c8b3a1d | |
erinn | bb84e8f46f | |
Sarah Jamie Lewis | f168f6aee9 | |
erinn | bc33356ca4 | |
Sarah Jamie Lewis | dfdce13e46 | |
erinn | fa430b7d7c | |
Sarah Jamie Lewis | 4d927c133d | |
erinn | 0663488d6d | |
erinn | 6263dbf1fa | |
erinn | 1a556d05ce | |
erinn | 49bee4deb1 | |
erinn | 240eb56ebe | |
Dan Ballard | 79052038e6 | |
erinn | e5fce8634e | |
erinn | 09079dd224 | |
Dan Ballard | b920d3ab8b | |
erinn | 8b6e8d2e98 | |
erinn | 473e0a02d0 | |
Dan Ballard | b837757617 | |
Sarah Jamie Lewis | 6292b5a1b9 | |
Dan Ballard | cfe0105992 | |
erinn | bbedeb81c7 | |
erinn | 3687ead49f | |
erinn | c3deeaa227 | |
erinn | 96aaf1f0e9 | |
erinn | 79a8bfb0cf | |
Dan Ballard | 23eece4424 | |
Sarah Jamie Lewis | 0de8bd19bb | |
Sarah Jamie Lewis | e9b98f2aea | |
Dan Ballard | 12bed09d4e | |
Dan Ballard | 8e6f5e813a | |
Sarah Jamie Lewis | 4b081a0db6 | |
Sarah Jamie Lewis | a942bfbba1 | |
Dan Ballard | 2035e44cfd | |
Sarah Jamie Lewis | 07cbb1054b | |
Dan Ballard | 0e965d630a | |
Dan Ballard | d4d88ff541 | |
Dan Ballard | d0f90a9b7f | |
Dan Ballard | 3cdb2b2455 | |
Dan Ballard | f02083e0d6 | |
Dan Ballard | c62891b8d9 | |
erinn | 04aae4d093 | |
erinn | 9cc81b1f29 | |
Dan Ballard | 93dbc6d270 | |
Dan Ballard | 8b004543ed | |
erinn | d4e5546079 | |
erinn | ba7bb704cd | |
Dan Ballard | 752e21f89e | |
erinn | 7aa7f67fd3 | |
erinn | 6e6045d911 | |
Sarah Jamie Lewis | 16ee1635f5 | |
Dan Ballard | 9aa4f6d75d | |
erinn | 38923ef814 | |
erinn | 24a7abacd1 | |
Sarah Jamie Lewis | eef74ae8b3 | |
Sarah Jamie Lewis | 05cd440036 | |
Sarah Jamie Lewis | c1bc5a7806 | |
Sarah Jamie Lewis | d25aadbb2b | |
erinn | 7485837669 | |
erinn | f8d3277a6f | |
erinn | 0634d34bf2 | |
Dan Ballard | 1eec8dbfe0 | |
Sarah Jamie Lewis | dd5995628a | |
Dan Ballard | d5e81e9ae3 | |
Sarah Jamie Lewis | 4e0ecd72c4 | |
Sarah Jamie Lewis | 6b8a8b8da1 | |
Sarah Jamie Lewis | 1d86c3d326 | |
Sarah Jamie Lewis | ef58f002b3 | |
Sarah Jamie Lewis | 1eb391ecc1 | |
Sarah Jamie Lewis | e74d599d95 | |
erinn | 1515fb7998 | |
Dan Ballard | 78400a17c6 | |
Dan Ballard | 2f6395697e | |
Dan Ballard | e493a18f3f | |
Dan Ballard | 44e0f9ebab | |
Sarah Jamie Lewis | de1b3319b1 | |
Dan Ballard | 4f4df63e51 | |
erinn | bbea51b561 | |
Dan Ballard | 3d509c6810 | |
Sarah Jamie Lewis | 76df3c286d | |
Dan Ballard | de56f8be15 | |
erinn | 9e4917ac5b | |
Dan Ballard | f402f515da | |
erinn | a0081c9d4e | |
erinn | 94381cb076 | |
erinn | a0bbfa7721 | |
erinn | 4179e2798b | |
Sarah Jamie Lewis | 8340b7aed3 | |
Sarah Jamie Lewis | e74a0e8dc2 | |
Sarah Jamie Lewis | 228a9b6ebd | |
Sarah Jamie Lewis | b4b10ca75f | |
Dan Ballard | 46ed17eec2 | |
erinn | a54aa8e0af | |
Sarah Jamie Lewis | a5c96964e8 | |
Sarah Jamie Lewis | cb932d3ca3 | |
Sarah Jamie Lewis | 72457d138b | |
Dan Ballard | 454d10e28c | |
Dan Ballard | aadcb0d7c6 | |
Sarah Jamie Lewis | 4805507014 | |
Sarah Jamie Lewis | eb33e46e3d | |
Sarah Jamie Lewis | 45acecf9d7 | |
Dan Ballard | 483d765146 | |
Dan Ballard | 36a4e13184 | |
Dan Ballard | 5cb284c99c | |
Sarah Jamie Lewis | 7f011663d7 | |
Dan Ballard | 918e44fdb6 | |
erinn | 1c463f235c | |
Dan Ballard | 9701380e3c | |
Sarah Jamie Lewis | 01428b1371 | |
Dan Ballard | 568b979698 | |
Sarah Jamie Lewis | c11e541f4e | |
Dan Ballard | 162ee96a1f | |
erinn | 0be9447a07 | |
Dan Ballard | 0e5d78cbb9 | |
erinn | 98d58ebd62 | |
Dan Ballard | 5ca904b675 | |
erinn | d144f0d8b0 | |
Sarah Jamie Lewis | a276d5732a | |
erinn | fd45f72a09 | |
Dan Ballard | 843790c27b | |
Sarah Jamie Lewis | 9721999e9b | |
Dan Ballard | 6117486808 | |
erinn | b80ecc0a7d | |
erinn | 2433c667d8 | |
Sarah Jamie Lewis | 143dd9693c | |
Sarah Jamie Lewis | 91c182b880 | |
Sarah Jamie Lewis | 48d375f007 | |
erinn | 223936cda8 | |
Dan Ballard | f2a4c61610 | |
Dan Ballard | a247fd91c0 | |
Sarah Jamie Lewis | 1b0d69dfb2 | |
Dan Ballard | fec49cf1fd | |
Sarah Jamie Lewis | bfb431cbaf | |
Sarah Jamie Lewis | ada9dc7bb9 | |
Dan Ballard | 93776e0ca8 | |
erinn | 1de7e5bd6a | |
Dan Ballard | 1b57b5b0c6 | |
Dan Ballard | 4fb726a926 | |
Dan Ballard | 4580d616de | |
erinn | a52794d562 | |
erinn | cd241e45c4 | |
erinn | e09ad91ab5 | |
erinn | 7bb2198879 | |
erinn | 7398bec25b | |
erinn | db315f8de1 | |
Sarah Jamie Lewis | e2ab860c72 | |
Dan Ballard | e3717dd175 | |
Sarah Jamie Lewis | c4d5d889b6 | |
Dan Ballard | 9e784ba4ea | |
Sarah Jamie Lewis | 325c959b69 | |
Sarah Jamie Lewis | 35cd963ec3 | |
erinn | 59dd9c34d6 | |
Dan Ballard | 733efb5d1d | |
Dan Ballard | 78e3859b64 | |
erinn | a814dee7af | |
erinn | bd10a2c303 | |
Dan Ballard | c580597c8d | |
Dan Ballard | 31abd0020e | |
erinn | c55a6b196a | |
Dan Ballard | 27a09dd8cb | |
erinn | 21201d2e68 | |
Dan Ballard | 0ba6a200cc | |
Dan Ballard | af3c593228 | |
Dan Ballard | f91f932c00 | |
erinn | 02c2900aa0 | |
Dan Ballard | 08722d7b97 | |
Sarah Jamie Lewis | 66676076e9 | |
Dan Ballard | 5694dfe23e | |
Sarah Jamie Lewis | b0aad3a1cc | |
Dan Ballard | 94e30f4962 | |
Dan Ballard | 315c66009e | |
Dan Ballard | b8ffa85fac | |
Sarah Jamie Lewis | 1337f97345 | |
Sarah Jamie Lewis | 310d313034 | |
Dan Ballard | 37dab30d5e | |
Dan Ballard | 9c8134e0c3 | |
Dan Ballard | ec60073ce2 | |
Dan Ballard | 8dacea29bb | |
Dan Ballard | da72629387 | |
Dan Ballard | de2604b578 | |
erinn | 5cf1d6a1db | |
erinn | ebfa5352b4 | |
erinn | f609dcaac4 | |
erinn | 219065dde5 | |
erinn | 3ffdaa1ca3 | |
erinn | 533b0d3fe0 | |
erinn | 282cc9d516 | |
erinn | 92adc2a61d | |
Sarah Jamie Lewis | ba22cf93c7 | |
Dan Ballard | d0d8d4bd3b | |
Sarah Jamie Lewis | 02d4e04804 | |
Dan Ballard | 40e0c5f700 | |
Sarah Jamie Lewis | 4ccf48a50f | |
Dan Ballard | 3221e30701 | |
Dan Ballard | 22814ed160 | |
Sarah Jamie Lewis | d77c33a485 | |
Sarah Jamie Lewis | 0c65ec9c8e | |
Dan Ballard | 1b82054e76 | |
Dan Ballard | 92a1561a12 | |
Sarah Jamie Lewis | 2aa2eabf48 | |
Sarah Jamie Lewis | 73d8951d6e | |
Dan Ballard | 1af5662416 | |
Dan Ballard | 1319674940 | |
Sarah Jamie Lewis | 65de146c34 | |
Sarah Jamie Lewis | 4bb5ef6a1c | |
Dan Ballard | 427808b646 | |
Sarah Jamie Lewis | 00522884ae | |
Sarah Jamie Lewis | ce8e46a4dd | |
Sarah Jamie Lewis | 0a9b2ed6f5 | |
Dan Ballard | 5343348aa9 | |
Sarah Jamie Lewis | 2f251aa4da | |
Dan Ballard | 7495a6dca4 | |
Dan Ballard | 522f395d86 | |
Dan Ballard | cef2ae28d2 | |
erinn | 481c8ca701 | |
erinn | bf213cc863 | |
erinn | 975ad0a8ac | |
erinn | 3d7ebf64af | |
Dan Ballard | 2037fc6d21 | |
Dan Ballard | 2abd9ba53b | |
Sarah Jamie Lewis | 632136f193 | |
Dan Ballard | fc3bdb76f6 | |
Dan Ballard | 631810df5b | |
Sarah Jamie Lewis | 64ff9aed24 | |
Dan Ballard | 35246ed364 | |
Sarah Jamie Lewis | 2a1209c07a | |
Dan Ballard | b834d536c5 | |
Sarah Jamie Lewis | dbb7a563f1 | |
Dan Ballard | 9fcca6580d | |
Sarah Jamie Lewis | ccf6df326e | |
Dan Ballard | 94f5dd20bd | |
Dan Ballard | 449bccd626 | |
Dan Ballard | 4e7173f878 | |
Dan Ballard | 35e53a4d60 | |
Dan Ballard | da3c93792c | |
Sarah Jamie Lewis | 0eb27d6525 | |
erinn | a4ae5dcbed | |
Dan Ballard | fee151cf26 | |
Sarah Jamie Lewis | f5f6d4b947 | |
Dan Ballard | 9397131967 | |
Sarah Jamie Lewis | e635a3a384 | |
Dan Ballard | 8d9681e130 | |
Dan Ballard | 8e347d79b8 | |
Dan Ballard | a9041c6485 | |
Sarah Jamie Lewis | cedf39aaa6 | |
Dan Ballard | aa81c40e50 | |
Dan Ballard | 7e0945583e | |
Dan Ballard | 13239c094c | |
Dan Ballard | d77851a835 | |
Sarah Jamie Lewis | 5ca2fa6332 | |
Dan Ballard | fbecb20e05 | |
Dan Ballard | 541f4f7da4 | |
Dan Ballard | ba14e8ad72 | |
Sarah Jamie Lewis | 5df3fd4cf4 | |
Dan Ballard | 1b20c9ed02 | |
Dan Ballard | d3e178474d | |
Dan Ballard | 7a7be2777b | |
Sarah Jamie Lewis | 434907ea0d | |
Dan Ballard | bac4accb1b | |
Sarah Jamie Lewis | 91f397d9e1 | |
Dan Ballard | 606f7c7eb6 | |
Dan Ballard | c77737be1d | |
Sarah Jamie Lewis | 6dd346fe96 | |
Sarah Jamie Lewis | 54918e612f | |
Dan Ballard | 35fa0adb67 | |
Sarah Jamie Lewis | 4f205f7c4f | |
Dan Ballard | d6eebe82bd | |
Sarah Jamie Lewis | 628e414376 | |
Dan Ballard | 0964363b89 | |
Sarah Jamie Lewis | e2c3a82ea0 | |
Dan Ballard | f0099acb2b | |
Dan Ballard | 30b8d9ab6d | |
Dan Ballard | 1bf2910b4d | |
Dan Ballard | 5bea6bdc47 | |
Sarah Jamie Lewis | 1ad9d5be20 | |
Dan Ballard | ee30a3227d | |
Sarah Jamie Lewis | 121a62c142 | |
Dan Ballard | 3fd5755ed9 | |
Dan Ballard | 1773e52cbd | |
Dan Ballard | a75f7778be | |
Dan Ballard | b80500da35 | |
erinn | cf10647d4c | |
Dan Ballard | ab92e68628 | |
Sarah Jamie Lewis | 62911b03fa | |
Dan Ballard | f3a453f5a6 | |
Sarah Jamie Lewis | 45973dfaf4 | |
Dan Ballard | db817dbed2 | |
Sarah Jamie Lewis | c3189553c8 | |
erinn | 3a744197b8 | |
erinn | ab8153f042 | |
erinn | 4dd686476a | |
erinn | 742eefd950 | |
erinn | 1ef634d25d | |
Dan Ballard | 504a935005 | |
erinn | 033c1c4279 | |
Dan Ballard | 81c0047c20 | |
Dan Ballard | 6af91b71c1 | |
Dan Ballard | fb0e5117c1 | |
erinn | 85378e3ca8 | |
erinn | c230187d15 | |
Sarah Jamie Lewis | 594b55de1d | |
Dan Ballard | 4141d21dcb | |
Dan Ballard | 21b6429a7f | |
Dan Ballard | c9f4afb214 | |
Dan Ballard | 02dc1b9b03 | |
Sarah Jamie Lewis | 8c51c10eb0 | |
Dan Ballard | 68e66fb62d | |
Dan Ballard | 208a18da7f | |
Dan Ballard | 956e7a4413 | |
Dan Ballard | 4da95090c5 | |
Sarah Jamie Lewis | 1e8dd756a7 | |
Dan Ballard | c23a922599 | |
Dan Ballard | 8c5252c32c | |
Dan Ballard | 589ae29ac7 | |
Dan Ballard | f04733f422 | |
Dan Ballard | 3eccf2d510 | |
Sarah Jamie Lewis | a8edcc8173 | |
Dan Ballard | 882a9abefb | |
Dan Ballard | ccf497c840 | |
Dan Ballard | 4cabff44f1 | |
Dan Ballard | cf5d54edef | |
Dan Ballard | c3af080db4 | |
Dan Ballard | a975e22482 | |
Dan Ballard | 29307657b5 | |
Dan Ballard | 9b29a45ea0 | |
Dan Ballard | f3c80c2e48 | |
Dan Ballard | 390d8a6db9 | |
Dan Ballard | da46a81265 | |
Dan Ballard | 6bf9458b1c | |
Dan Ballard | 7edb9b0961 | |
Dan Ballard | 2c0925004d | |
erinn | f029da4c49 | |
erinn | 2d9a558b89 | |
erinn | c6f9b8a271 | |
Dan Ballard | 12fde77c71 | |
Dan Ballard | c6ed152809 | |
Sarah Jamie Lewis | 928ee5a76f | |
Dan Ballard | 6de3805ecf | |
Dan Ballard | a84a0ae1b4 | |
erinn | a31a073847 | |
Sarah Jamie Lewis | 0d6dd0e7ed | |
erinn | c6ca6d2567 | |
Sarah Jamie Lewis | 9a4c24626d | |
Dan Ballard | 1b54cf2a19 | |
Sarah Jamie Lewis | ec0766946f | |
Sarah Jamie Lewis | f9713bb1e0 | |
Dan Ballard | 49fef3f800 | |
Dan Ballard | 3c9abe2a0b | |
Dan Ballard | 7e0786aea2 | |
Dan Ballard | 732d8ab671 | |
Sarah Jamie Lewis | 10f892d10d | |
Sarah Jamie Lewis | d13c53cc73 | |
Dan Ballard | 741443bcf3 | |
Dan Ballard | eca82ae45d | |
Sarah Jamie Lewis | f973a2bfe5 | |
Dan Ballard | 4c626dc922 | |
Dan Ballard | ed904ed79d | |
Sarah Jamie Lewis | 8fe6648100 | |
Dan Ballard | 5584fba6e5 | |
erinn | f4b1296aa2 | |
Dan Ballard | 412e1f1713 | |
erinn | 74dd48fdc1 | |
Dan Ballard | 56b7aec403 | |
erinn | 3ba48d3bfd | |
Dan Ballard | 4e671a7b3f | |
erinn | d85961bb14 | |
Dan Ballard | 75111e0421 | |
Dan Ballard | 9400d5aa63 | |
Dan Ballard | 8a666a7f37 | |
Dan Ballard | b287d0b27e | |
erinn | 1011a37d54 | |
Dan Ballard | 18b9cc41e0 | |
Sarah Jamie Lewis | fec5b994d1 | |
erinn | 86156d2f16 | |
erinn | 007e485e76 | |
Dan Ballard | 30fbbef6b7 | |
erinn | b6f0e7f171 | |
Dan Ballard | 672570ed42 | |
Dan Ballard | fa8d2007ec | |
erinn | f4518cba9f | |
erinn | 4494a2b168 | |
erinn | e60b2fae0b | |
Dan Ballard | fe5dd1e615 | |
Dan Ballard | c7c464e21e | |
erinn | 61571989e7 | |
Sarah Jamie Lewis | 5cb93c8fe9 | |
erinn | 6d5aad4a4d | |
erinn | b3c5b08a74 | |
Dan Ballard | 07e660ab30 | |
erinn | 7ce73ec89d | |
Dan Ballard | 4b9f3f136e | |
erinn | 37f5cbc9b4 | |
Dan Ballard | c1e4f866e4 | |
erinn | 029cd93713 | |
Dan Ballard | e854d7ff11 | |
Dan Ballard | 5493b2f988 | |
erinn | 32a61f3c56 | |
erinn | a3108c2581 | |
Dan Ballard | 493fbeba38 | |
Dan Ballard | 8a8cd9f804 | |
Dan Ballard | f425e3ee32 | |
erinn | 9f6eb6dfcb | |
Dan Ballard | eeb167ce38 | |
erinn | dfef958c68 | |
erinn | 9ff099418f | |
Dan Ballard | e1d1715023 | |
Dan Ballard | 0f81b4430a | |
Dan Ballard | 90c9405b7e | |
erinn | ded921a898 | |
erinn | f26fd38bf0 | |
Dan Ballard | abef1472d8 | |
Dan Ballard | b75b374e57 | |
Sarah Jamie Lewis | 1cfb38d830 | |
erinn | 8a30cc20a1 | |
erinn | 7bb8257420 | |
erinn | 78d958e5f0 | |
erinn | 71defd5ae3 | |
Dan Ballard | 34d09eb69d | |
juju4 | d45d7c24ab | |
Dan Ballard | e0fd78be73 | |
erinn | 9f8863559d | |
Dan Ballard | a552fe885b | |
erinn | 5ac792826a | |
Dan Ballard | 8b30638373 | |
erinn | ce94f649d2 | |
erinn | a19073c8c4 | |
erinn | 1e72a59829 | |
erinn | 196e8fad68 | |
erinn | b0027c9e0e | |
erinn | 4e17b11c49 | |
Agent of User | 7f3dd9663e | |
Agent of User | bfa9bbb039 | |
Agent of User | 5eba883bf0 | |
Dan Ballard | 28c19d7e4b | |
Dan Ballard | 84b6bdd045 | |
Dan Ballard | c73d7603ef | |
Dan Ballard | 68f4bee72e | |
Dan Ballard | 4c1fd05425 | |
Agent of User | ba99fc612c | |
erinn | a43d148da8 | |
Dan Ballard | e4db07bee8 | |
erinn | c36d74639e | |
Dan Ballard | 901109409b | |
erinn | 7a9022bac1 | |
Sarah Jamie Lewis | bcd81c813d | |
erinn | ac6fb8d2e8 | |
Sarah Jamie Lewis | c483bded55 | |
erinn | 713c3ed72d | |
Sarah Jamie Lewis | 153651478a | |
Sarah Jamie Lewis | eaa700ba57 | |
erinn | c4b0eeccfb | |
erinn | 202153bab2 | |
Sarah Jamie Lewis | d4abc25ed0 | |
erinn | ebdaf54ff9 | |
Dan Ballard | 2e7f49bde4 | |
Sarah Jamie Lewis | a9b1f7904a | |
Dan Ballard | d6fc4766a0 | |
Dan Ballard | 7b350d4c54 | |
Dan Ballard | 3cc713ed9a | |
Sarah Jamie Lewis | 18dd7cc4b7 | |
Dan Ballard | 2a6fb029fd | |
Dan Ballard | f4368a0810 | |
Dan Ballard | f886a626b7 | |
Dan Ballard | afa6aa94c4 | |
Dan Ballard | 35e35656cb | |
Sarah Jamie Lewis | dd1df6f916 | |
Dan Ballard | cb64131d0b | |
Dan Ballard | e33e72d759 | |
Dan Ballard | c756c6d2c7 | |
Dan Ballard | c84d5eb643 | |
Dan Ballard | 7b7715539e | |
Sarah Jamie Lewis | b2c9663564 | |
Dan Ballard | baa0a71f45 | |
Dan Ballard | 06b8820c3b | |
Dan Ballard | e2147fbf6a | |
Dan Ballard | 0777bfa68c | |
Dan Ballard | 741cb78b0a | |
Dan Ballard | 9c5d8c6df4 | |
Dan Ballard | a7c769b49f | |
Dan Ballard | e3c52e916f | |
Dan Ballard | 466b55f8bc | |
Dan Ballard | 1361d9d12e | |
Dan Ballard | 39e0c81f47 | |
Dan Ballard | eb50e36849 | |
Dan Ballard | ce606b99b2 |
208
.drone.yml
|
@ -1,28 +1,206 @@
|
|||
workspace:
|
||||
base: /media/sf_GOPATH1/src
|
||||
path: cwtch.im/ui
|
||||
base: /media/sf_GOPATH1/src/cwtch.im
|
||||
path: ui
|
||||
|
||||
pipeline:
|
||||
build-linux:
|
||||
mem_limit: 3G
|
||||
image: therecipe/qt:linux
|
||||
image: therecipe/qt:linux_static
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
event: [ push, pull_request ]
|
||||
environment:
|
||||
- QT_DIR=/opt/Qt
|
||||
- QT_DOCKER='true'
|
||||
- QT_API=5.12.0
|
||||
- QT_API=5.13.0
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- echo $QT_DIR
|
||||
- export GOPATH=$GOPATH:/media/sf_GOPATH1/
|
||||
- echo $GOPATH
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- echo $PATH
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
- go get
|
||||
- qtdeploy build linux
|
||||
build-android:
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git openssh-client
|
||||
- go mod download
|
||||
- $QT_DIR/$QT_API/gcc_64/bin/lrelease ui.pro
|
||||
- git fetch --tags
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- go mod vendor
|
||||
- qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build linux
|
||||
- cp README.md deploy/linux
|
||||
- cp -R assets deploy/linux/
|
||||
- export FILENAME=cwtch-linux-$BUILDDATE.tar.gz
|
||||
- cd deploy
|
||||
- mv linux cwtch
|
||||
- tar -czf $FILENAME cwtch
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm -r cwtch
|
||||
build-android-arm-v7a:
|
||||
mem_limit: 3G
|
||||
image: therecipe/qt:android
|
||||
secrets: [upload_jks_file,upload_jks_pass]
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
event: push
|
||||
environment:
|
||||
- QT_DIR=/opt/Qt
|
||||
- QT_DOCKER='true'
|
||||
- QT_API=5.13.0
|
||||
- ANDROID_NDK_DIR=/home/user/android-ndk-r18b
|
||||
- ANDROID_SDK_DIR=/home/user/android-sdk-linux
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- qtdeploy build android
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
- rm -r vendor/
|
||||
- make clean
|
||||
- echo "cwtch-upload" > android/jks_alias
|
||||
- echo $UPLOAD_JKS_PASS > android/jks_pass
|
||||
- echo $UPLOAD_JKS_FILE | tr -d '\n ' > android/ui.jks.b64
|
||||
- base64 --decode android/ui.jks.b64 > android/ui.jks
|
||||
- export GOARCH=arm
|
||||
- go mod download
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- go mod vendor
|
||||
- qtsetup generate android
|
||||
- mv assets android/
|
||||
- ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build android
|
||||
- mv android/assets assets
|
||||
- cd deploy
|
||||
- export FILENAME=cwtch-android-arm-v7a-$BUILDDATE.apk
|
||||
- cp android/build-release-signed.apk $FILENAME
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm -r android
|
||||
build-android-arm64-v8a:
|
||||
mem_limit: 3G
|
||||
image: therecipe/qt:android
|
||||
secrets: [upload_jks_file,upload_jks_pass]
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
event: push
|
||||
environment:
|
||||
- QT_DIR=/opt/Qt
|
||||
- QT_DOCKER='true'
|
||||
- QT_API=5.13.0
|
||||
- ANDROID_NDK_DIR=/home/user/android-ndk-r18b
|
||||
- ANDROID_SDK_DIR=/home/user/android-sdk-linux
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
- rm -r vendor/
|
||||
- make clean
|
||||
- echo "cwtch-upload" > android/jks_alias
|
||||
- echo $UPLOAD_JKS_PASS > android/jks_pass
|
||||
- echo $UPLOAD_JKS_FILE | tr -d '\n ' > android/ui.jks.b64
|
||||
- base64 --decode android/ui.jks.b64 > android/ui.jks
|
||||
- export GOARCH=arm64
|
||||
- perl -pe 's/versionCode="(\d+)"/"versionCode=\"" .($1+1)."\""/eg' android/AndroidManifest.xml > android/AndroidManifest.xml.inc
|
||||
- rm android/AndroidManifest.xml
|
||||
- mv android/AndroidManifest.xml.inc android/AndroidManifest.xml
|
||||
- go mod download
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- go mod vendor
|
||||
- qtsetup generate android
|
||||
- mv assets android/
|
||||
- ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build android
|
||||
- mv android/assets assets
|
||||
- cd deploy
|
||||
- export FILENAME=cwtch-android-arm64-v8a-$BUILDDATE.apk
|
||||
- cp android/build-release-signed.apk $FILENAME
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm -r android
|
||||
build-windows:
|
||||
mem_limit: 3G
|
||||
image: therecipe/qt:windows_64_static
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: [ master, windows_build ]
|
||||
event: push
|
||||
environment:
|
||||
- QT_DIR=/opt/Qt
|
||||
- QT_DOCKER='true'
|
||||
- QT_API=5.13.0
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git zip
|
||||
- rm -r vendor || true
|
||||
- make clean || true
|
||||
- go mod download
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- go mod vendor
|
||||
- export QT_DEBUG=true
|
||||
- export CONSOLE=true
|
||||
- export QT_DEBUG_QML=true
|
||||
- qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build windows
|
||||
- cp README.md deploy/windows
|
||||
- cp -R assets deploy/windows/
|
||||
- cp -r windows/* deploy/windows
|
||||
- cd deploy
|
||||
- mv windows cwtch
|
||||
- export FILENAME=cwtch-windows-$BUILDDATE.zip
|
||||
- zip -r $FILENAME cwtch
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- mv cwtch windows
|
||||
package-windows:
|
||||
mem_limit: 3G
|
||||
image: hp41/nsis:latest
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: [ master, windows_build ]
|
||||
event: push
|
||||
environment:
|
||||
commands:
|
||||
- cp nsis/cwtch-installer.nsi deploy/
|
||||
- cd deploy
|
||||
- makensis -V3 cwtch-installer.nsi
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- export FILENAME=cwtch-installer-$BUILDDATE.exe
|
||||
- mv cwtch-installer.exe $FILENAME
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm cwtch-installer.nsi
|
||||
- rm -r windows
|
||||
deploy-buildfiles:
|
||||
image: pivotaldata/concourse-ssh
|
||||
secrets: [buildfiles_key]
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
event: push
|
||||
status: [ success ]
|
||||
commands:
|
||||
- apk add --no-cache git
|
||||
- echo $BUILDFILES_KEY > ~/id_rsab64
|
||||
- base64 -d ~/id_rsab64 > ~/id_rsa
|
||||
- chmod 400 ~/id_rsa
|
||||
- export DIR=`date +%G.%m.%d-%H.%M`-`git describe --tags`
|
||||
- cd deploy
|
||||
- mkdir $DIR
|
||||
- mv cwtch* $DIR/
|
||||
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@openprivacy.ca:/home/buildfiles/buildfiles/
|
||||
deploy-windows-build:
|
||||
image: pivotaldata/concourse-ssh
|
||||
secrets: [buildfiles_key]
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: windows_build
|
||||
event: push
|
||||
status: [ success ]
|
||||
commands:
|
||||
- apk add --no-cache git
|
||||
- echo $BUILDFILES_KEY > ~/id_rsab64
|
||||
- base64 -d ~/id_rsab64 > ~/id_rsa
|
||||
- chmod 400 ~/id_rsa
|
||||
- git fetch --tags
|
||||
- export DIR=`date +%G.%m.%d-%H.%M`-`git describe --tags`
|
||||
- cd deploy
|
||||
- mkdir -p windows_build/$DIR
|
||||
- mv cwtch* windows_build/$DIR/
|
||||
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa windows_build buildfiles@openprivacy.ca:/home/buildfiles/buildfiles/
|
||||
notify-email:
|
||||
image: drillster/drone-email
|
||||
host: build.openprivacy.ca
|
||||
|
@ -30,10 +208,14 @@ pipeline:
|
|||
skip_verify: true
|
||||
from: drone@openprivacy.ca
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
status: [ failure ]
|
||||
notify-gogs:
|
||||
image: openpriv/drone-gogs
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
event: pull_request
|
||||
status: [ success, changed, failure ]
|
||||
secrets: [gogs_account_token]
|
||||
|
|
|
@ -5,4 +5,5 @@ rcc*
|
|||
*.qmlc
|
||||
*.jsc
|
||||
vendor/
|
||||
tor/
|
||||
.directory
|
||||
cwtch_log.txt
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "qml/opaque"]
|
||||
path = qml/opaque
|
||||
url = https://git.openprivacy.ca/openprivacy/opaque
|
|
@ -0,0 +1,89 @@
|
|||
# Notes on Android Debugging
|
||||
|
||||
If you are reading this you are probably interested in developing Cwtch for Android! Awesome.
|
||||
|
||||
The Cwtch UI app is intended to be a single codebase that runs on multiple platforms. This
|
||||
complicates the build process in favour of simplifying the code (so goes the theory).
|
||||
|
||||
We make use of https://github.com/therecipe/qt/ for deploying Go/Qt code to Android. Before you venture into the weeds
|
||||
of this README please take a look at the [Installation](https://github.com/therecipe/qt/wiki/Installation)
|
||||
and [Setup instructions](https://github.com/therecipe/qt/wiki/Deploying-Linux-to-Android) in therecipe/qt.
|
||||
|
||||
## Building
|
||||
|
||||
Check out and follow the instructions at https://github.com/therecipe/qt/wiki/Deploying-Linux-to-Android as they are sufficient,
|
||||
below you will find high-level notes regarding the process.
|
||||
|
||||
You need to run `qtsetup --qt_version=<vesion> full android` for the non-docker setup. You will need to do this
|
||||
for every major version change of therecipe dependencies.
|
||||
|
||||
You will also need the Android 28 SDK (Pie), the NDK, SDK build tools and platform tools, gradle and **JDK 8**
|
||||
|
||||
JAVA_JDK=/path/to/jre8
|
||||
ANDROID_NDK_DIR=/path/to/ndk
|
||||
|
||||
Once all that setup is done you should be able to run:
|
||||
|
||||
ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy build android
|
||||
|
||||
2-4 minutes later an android apk will pop out in `./deploy/android/build-debug.apk`.
|
||||
|
||||
### Build Setup Issues we have seen
|
||||
|
||||
* `Could not determine java version from <blah>` - this is thrown by gradle inside the `androiddeployqt` process when the
|
||||
Java version is *not* JRE8. Ensure that JAVA_HOME is pointed to the correct java installation.
|
||||
* ` readelf <blah> "is not an ordinary file"` - this isn't actually an error that will stop the build, but sometimes
|
||||
because of the very long debug log output you will come across it when trying to find the *actual* error (which is
|
||||
probably a Java version issue). It can be safely ignored.
|
||||
* `could not find QAndroid...` / `CPP build errors` - you will need to run `qtsetup` full android` for the Qt version
|
||||
you are using.
|
||||
* Example: androidextras_android.cpp:9:10: fatal error: 'QAndroidActivityResultReceiver' file not found
|
||||
|
||||
## Testing on a Real Device
|
||||
|
||||
Consult the Android documentation on setting up your device for development.
|
||||
|
||||
You will need an android sdk, setup your device for USB Debugging and then with `adb` you can do:
|
||||
|
||||
adb install -r ./deploy/android/build-debug.apk
|
||||
|
||||
To get the logs you can run
|
||||
|
||||
adb logcat
|
||||
|
||||
Android Studio provides a nice logcat interface for quickly filtering log files that can be very useful when trying to
|
||||
debug complex behavior, but command line tools like `grep` and the built-in [logcat filtering](https://developer.android.com/studio/command-line/logcat)
|
||||
should also suffice.
|
||||
|
||||
*Important*: Cwtch UI technically runs *3* different applications: Cwtch Frontend (application client),
|
||||
Cwtch Backend (application server) and Tor. When filtering logcat you should be aware that some of your messages might
|
||||
be getting logged by a different process.
|
||||
|
||||
(*Ctrl-F Helper: "Why are log messages missing"*)
|
||||
|
||||
# Bundled Libraries
|
||||
|
||||
There seems to be a bug in Qt (https://bugreports.qt.io/browse/QTBUG-84371) that prevents the use of
|
||||
`AndroidExtras` in `ANDROID_MODULES_INCLUDE` so we bundle it in `android/libQt5AndroidExtras.so` along with
|
||||
`libtor` for Tor support.
|
||||
|
||||
## Non-SDK Interfaces
|
||||
|
||||
e.g. java.lang.NoSuchFieldException: No field mPivotX in class Landroid/graphics/drawable/RotateDrawable$RotateState;
|
||||
|
||||
* https://bugreports.qt.io/browse/QTBUG-71590
|
||||
|
||||
## Plugins
|
||||
|
||||
Theoretically speaking it should be possible to use `ANDROID_EXTRA_PLUGINS` to include support for e.g.
|
||||
SVG images on Android. However, we have been unable to make it work. If you would like to try, the following
|
||||
issues might be helpful:
|
||||
|
||||
* https://bugreports.qt.io/browse/QTBUG-60022
|
||||
|
||||
## Notifications
|
||||
|
||||
- Android 8 (API Level 26) forces you to call setChannelId()
|
||||
- Android 9 "Do Not Disturb" mode also hides all notifications
|
||||
- Setting up notification channels only seems possible *once* per install. any changes you need to make
|
||||
require that the app is reinstalled, or the actual channel deleted and changed.
|
2
LICENSE
|
@ -1,4 +1,4 @@
|
|||
All code in this repositorym, unless otherwise indicated, is distributed under the following license:
|
||||
All code in this repository, unless otherwise indicated, is distributed under the following license:
|
||||
|
||||
Copyright 2019 Open Privacy Research Society
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
.PHONY: all clean linux windows android
|
||||
|
||||
DEFAULT_GOAL: linux
|
||||
|
||||
SHELL := env QT_BUILD_VERSION=$(QT_BUILD_VERSION) $(SHELL)
|
||||
QT_BUILD_VERSION ?= "5.13.4"
|
||||
|
||||
all: clean linux windows android
|
||||
|
||||
clean:
|
||||
rm -r vendor || true
|
||||
find -type f -iname "moc*" | xargs rm
|
||||
find -iname "rcc*" | xargs rm
|
||||
|
||||
linux:
|
||||
date
|
||||
qtdeploy -qt_version $(QT_BUILD_VERSION) build linux 2>&1 | tee qtdeploy.log | pv
|
||||
date
|
||||
cp -R assets deploy/linux/
|
||||
|
||||
windows:
|
||||
date
|
||||
qtdeploy -qt_version $(QT_BUILD_VERSION) build windows 2>&1 | tee qtdeploy.log | pv
|
||||
date
|
||||
cp -R assets deploy/windows/
|
||||
|
||||
android:
|
||||
cp -R assets android/
|
||||
date
|
||||
## TODO have this also include AndroidExtras (see ANDROID_DEBUGGING) for full notes.
|
||||
env ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -debug -qt_version $(QT_BUILD_VERSION) build android 2>&1 | tee qtdeploy.log | pv
|
||||
date
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# Settings List / Flickable
|
||||
|
||||
Content not scrolling: Flickable does some reparenting behind the scenes and so
|
||||
in the top level child of the Flickable you will need:
|
||||
|
||||
parent: root.contentItem
|
||||
|
||||
And in the flickable you will need to set the contentHeight:
|
||||
|
||||
contentHeight: <childId>.height + <padding>
|
63
README.md
|
@ -8,20 +8,37 @@ This codebase provides a graphical user interface for Desktop and Android for [C
|
|||
|
||||
If you discover a security issue, please log an issue above, or email team@cwtch.im.
|
||||
|
||||
# Compiling & Running
|
||||
# Running
|
||||
|
||||
# Compiling
|
||||
The UI is built using QT so you will need the development libraries and tools for your OS. Currently we are using QT 5.13.0
|
||||
|
||||
This code relies on [therecipe/qt](https://github.com/therecipe/qt) before getting started consult the [Installation](https://github.com/therecipe/qt/wiki/Installation) and [Getting Started](https://github.com/therecipe/qt/wiki/Getting-Started) documentation to get that up and running. It will make building this much easier.
|
||||
|
||||
## Desktop
|
||||
qtdeploy build desktop
|
||||
./deploy/linux/ui.sh -local -debug 2>&1 | grep -v 'Detected anchors on an item that is managed by a layout.'
|
||||
Cwtch UI uses the Go module system for dependancies, and git submodules for includin QML components
|
||||
|
||||
```
|
||||
git submodule init
|
||||
git submodule update
|
||||
```
|
||||
|
||||
The -local and -debug flags are helpful when developing.
|
||||
## Linux
|
||||
|
||||
go mod vendor
|
||||
qtdeploy build linux
|
||||
./deploy/linux/ui -local -debug 2>&1 | grep -v 'Detected anchors on an item that is managed by a layout.'
|
||||
|
||||
The -debug flag increases the logging level.
|
||||
|
||||
The -local flag means the binary should use the local copies of QML files instead of the compiled ones allowing for more rapid UI development.
|
||||
|
||||
The grep statement filters out some QML noise.
|
||||
|
||||
## Android
|
||||
|
||||
We supply an arm-pie version of tor in `android/libs/armeabi-v7a` with the name `libtor.so`
|
||||
|
||||
go mod vendor
|
||||
qtdeploy -docker build android
|
||||
adb install deploy/android/build-debug.apk
|
||||
|
||||
|
@ -38,6 +55,38 @@ We supply an arm-pie version of tor in `android/libs/armeabi-v7a` with the name
|
|||
- `go get -u -v github.com/therecipe/qt/cmd/...`
|
||||
- `qtsetup` (Can take around an hour?)
|
||||
|
||||
If all that is done, then check out cwtch.im/ui and run `qtdeploy` in the root of it.
|
||||
If all that is done, then check out cwtch.im/ui
|
||||
|
||||
go mod vendor
|
||||
qtdeploy
|
||||
deploy/windows/ui
|
||||
|
||||
Currently if you do not have Tor running Cwtch will start tor for you, which will open a dos console window. We are working to hide this in the future.
|
||||
|
||||
# Contributing
|
||||
|
||||
## Translations
|
||||
|
||||
(If you'd like to add a new translation, feel free to open an issue and we can generate the .ts file for you to edit by hand, or in QT Linguist!)
|
||||
|
||||
### Add new translation
|
||||
|
||||
0. Install the language tools if you have not already (on linux: `sudo apt-get install qttools5-dev qttools-dev-tools`)
|
||||
|
||||
1. Edit `ui.pro` and add a new line in the variable definition for `TRANSLATIONS` like:
|
||||
|
||||
TRANSLATIONS = i18n/translation_en.ts \
|
||||
i18n/translation_de.ts
|
||||
|
||||
2. Edit `qml.qrc` and add a new line near the other translation files like:
|
||||
|
||||
\<file>i18n/translation_de.qm\</file>
|
||||
|
||||
3. To update and generate your new translation file, run `lupdate ui.pro` and you will find your new file in the `i18n/` directory.
|
||||
|
||||
### Updating translations
|
||||
|
||||
Run `lupdate ui.pro` to update all the translation files in the `i18n/` directory, then edit your languages' .ts file to make the appropriate changes. It is recommended to use QT Linguist (`linguist`) to edit the files.
|
||||
|
||||
When done, run `lrelease ui.pro` to compile all the translations from their .ts files into .qm files for use in the program. Then you can compile the ui program.
|
||||
|
||||
Currently you will need to manually run tor first before running cwtch.im/ui. Use the included tor and torrc file: `tor -f torrc`
|
||||
|
|
|
@ -1,11 +1,20 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<manifest package="org.qtproject.example.go" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
|
||||
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="cwtch" android:icon="@drawable/ic_launcher">
|
||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation"
|
||||
android:name="org.qtproject.qt5.android.bindings.QtActivity"
|
||||
<?xml version="1.0"?>
|
||||
<manifest package="ca.openprivacy.cwtch.ui" xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionName="1.0"
|
||||
android:versionCode="4"
|
||||
android:installLocation="auto">
|
||||
<application android:hardwareAccelerated="true"
|
||||
android:name="org.qtproject.qt5.android.bindings.QtApplication"
|
||||
android:label="cwtch"
|
||||
android:icon="@drawable/knot">
|
||||
|
||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation"
|
||||
android:name="ca.openprivacy.cwtch.ui.CwtchActivity"
|
||||
android:label="cwtch"
|
||||
android:theme="@style/AppTheme"
|
||||
android:screenOrientation="unspecified"
|
||||
android:launchMode="singleTop">
|
||||
android:launchMode="singleTop"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
|
@ -39,6 +48,7 @@
|
|||
<!-- Messages maps -->
|
||||
|
||||
<!-- Splash screen -->
|
||||
<meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
|
||||
<!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ -->
|
||||
<!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
|
||||
<!-- Splash screen -->
|
||||
|
@ -66,16 +76,59 @@
|
|||
</activity>
|
||||
|
||||
<!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
|
||||
<service
|
||||
android:name="ca.openprivacy.cwtch.ui.CwtchService"
|
||||
android:process=":cwtchService">
|
||||
<!--
|
||||
<intent-filter>
|
||||
<action android:name="ca.openprivacy.cwtch.ui.CwtchService"/>
|
||||
</intent-filter>
|
||||
-->
|
||||
|
||||
<!-- Application arguments -->
|
||||
<meta-data android:name="android.app.arguments" android:value="-service"/>
|
||||
<!-- Application arguments -->
|
||||
|
||||
<meta-data android:name="android.app.lib_name" android:value="go"/>
|
||||
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
|
||||
<meta-data android:name="android.app.repository" android:value="default"/>
|
||||
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
|
||||
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
|
||||
<!-- Deploy Qt libs as part of package -->
|
||||
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="1"/>
|
||||
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
|
||||
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
|
||||
<!-- Run with local libs -->
|
||||
<meta-data android:name="android.app.use_local_qt_libs" android:value="1"/>
|
||||
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
|
||||
<meta-data android:name="android.app.load_local_libs" android:value="plugins/platforms/android/libqtforandroid.so:plugins/bearer/libqandroidbearer.so:plugins/mediaservice/libqtmedia_android.so:lib/libQt5MultimediaQuick.so:lib/libQt5QuickParticles.so"/>
|
||||
<meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar:jar/QtAndroidBearer.jar:jar/QtMultimedia.jar"/>
|
||||
<meta-data android:name="android.app.static_init_classes" android:value="org.qtproject.qt5.android.multimedia.QtMultimediaUtils"/>
|
||||
<!-- Used to specify custom system library path to run with local system libs -->
|
||||
<!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> -->
|
||||
<!-- Messages maps -->
|
||||
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
|
||||
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
|
||||
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
|
||||
<!-- Messages maps -->
|
||||
|
||||
<!-- Background running -->
|
||||
<!-- <meta-data android:name="android.app.background_running" android:value="true"/> -->
|
||||
<!-- Background running -->
|
||||
</service>
|
||||
|
||||
|
||||
|
||||
</application>
|
||||
|
||||
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16"/>
|
||||
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29"/> -->
|
||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission-sdk-23 android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
|
||||
|
||||
</manifest>
|
||||
|
|
|
@ -0,0 +1,150 @@
|
|||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.0'
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||
}
|
||||
|
||||
android {
|
||||
/*******************************************************
|
||||
* The following variables:
|
||||
* - androidBuildToolsVersion,
|
||||
* - androidCompileSdkVersion
|
||||
* - qt5AndroidDir - holds the path to qt android files
|
||||
* needed to build any Qt application
|
||||
* on Android.
|
||||
*
|
||||
* are defined in gradle.properties file. This file is
|
||||
* updated by QtCreator and androiddeployqt tools.
|
||||
* Changing them manually might break the compilation!
|
||||
*******************************************************/
|
||||
|
||||
compileSdkVersion androidCompileSdkVersion.toInteger()
|
||||
|
||||
buildToolsVersion '28.0.3'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
manifest.srcFile 'AndroidManifest.xml'
|
||||
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
|
||||
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
|
||||
res.srcDirs = [qt5AndroidDir + '/res', 'res']
|
||||
resources.srcDirs = ['src']
|
||||
renderscript.srcDirs = ['src']
|
||||
assets.srcDirs = ['assets']
|
||||
jniLibs.srcDirs = ['libs']
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// kinda of cheaty, would prefer to use if (System.getEnv("GOARCH") == "arm64") {
|
||||
// but it doesn't want to work in this context
|
||||
if (qt5AndroidDir.contains("arm64")) {
|
||||
|
||||
splits {
|
||||
|
||||
// Configures multiple APKs based on ABI.
|
||||
abi {
|
||||
|
||||
// Enables building multiple APKs per ABI.
|
||||
enable true
|
||||
|
||||
// By default all ABIs are included, so use reset() and include to specify that we only
|
||||
// want APKs for x86 and x86_64.
|
||||
|
||||
// Resets the list of ABIs that Gradle should create APKs for to none.
|
||||
reset()
|
||||
|
||||
// Specifies a list of ABIs that Gradle should create APKs for.
|
||||
// Note that because of the way that therecipe/qt bundles libraries
|
||||
// only the specific architecture specified by GOARCH /GOARM will *actually*
|
||||
// work so we currently have to do separate builds for each arch - this needs to be fixed.
|
||||
include "arm64-v8a"
|
||||
|
||||
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
|
||||
// QT deploy has to be run twice to generate the libgo_base.so for each arch
|
||||
universalApk false
|
||||
}
|
||||
}
|
||||
|
||||
task linkBuildDebugArm64(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/debug/'
|
||||
commandLine 'ln', '-sf', 'build-arm64-v8a-debug.apk', 'build-debug.apk'
|
||||
}
|
||||
|
||||
task renameBuildReleaseArm64(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/release/'
|
||||
commandLine 'mv', 'build-arm64-v8a-release-unsigned.apk', 'build-release-unsigned.apk'
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
assembleDebug.finalizedBy(linkBuildDebugArm64)
|
||||
assembleRelease.finalizedBy(renameBuildReleaseArm64)
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
splits {
|
||||
|
||||
// Configures multiple APKs based on ABI.
|
||||
abi {
|
||||
|
||||
// Enables building multiple APKs per ABI.
|
||||
enable true
|
||||
|
||||
// By default all ABIs are included, so use reset() and include to specify that we only
|
||||
// want APKs for x86 and x86_64.
|
||||
|
||||
// Resets the list of ABIs that Gradle should create APKs for to none.
|
||||
reset()
|
||||
|
||||
// Specifies a list of ABIs that Gradle should create APKs for.
|
||||
// Note that because of the way that therecipe/qt bundles libraries
|
||||
// only the specific architecture specified by GOARCH /GOARM will *actually*
|
||||
// work so we currently have to do separate builds for each arch - this needs to be fixed.
|
||||
include "armeabi-v7a"
|
||||
|
||||
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
|
||||
// QT deploy has to be run twice to generate the libgo_base.so for each arch
|
||||
universalApk false
|
||||
}
|
||||
}
|
||||
|
||||
task linkBuildDebugArm7(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/debug/'
|
||||
commandLine 'ln', '-sf', 'build-armeabi-v7a-debug.apk', 'build-debug.apk'
|
||||
}
|
||||
|
||||
task renameBuildReleaseArm7(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/release/'
|
||||
commandLine 'mv', 'build-armeabi-v7a-release-unsigned.apk', 'build-release-unsigned.apk'
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
assembleDebug.finalizedBy(linkBuildDebugArm7)
|
||||
assembleRelease.finalizedBy(renameBuildReleaseArm7)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
lintOptions {
|
||||
abortOnError true
|
||||
}
|
||||
|
||||
}
|
||||
|
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="rectangle" >
|
||||
<solid android:color="#FFFDF3FC"/>
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
<!-- It would be nice to find a way to use a transition and trigger it but I haven't yet -->
|
||||
<item>
|
||||
<bitmap android:src="@drawable/splash_350"
|
||||
android:gravity="center" />
|
||||
</item>
|
||||
|
||||
</layer-list>
|
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="AppTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
|
||||
<item name="android:windowBackground">@drawable/splash</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="loading_tor">Loading tor...</string>
|
||||
</resources>
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
package ca.openprivacy.cwtch.ui;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.NotificationChannel;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.os.Bundle;
|
||||
import android.content.ComponentName;
|
||||
|
||||
import static android.app.Notification.DEFAULT_LIGHTS;
|
||||
import static android.app.Notification.DEFAULT_SOUND;
|
||||
import static android.app.Notification.DEFAULT_VIBRATE;
|
||||
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
|
||||
import static android.app.NotificationManager.IMPORTANCE_LOW;
|
||||
import static android.content.Context.NOTIFICATION_SERVICE;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
||||
import static android.os.Build.VERSION.SDK_INT;
|
||||
import static android.app.Notification.CATEGORY_SERVICE;
|
||||
|
||||
public class CwtchActivity extends org.qtproject.qt5.android.bindings.QtActivity
|
||||
{
|
||||
private static NotificationManager m_notificationManager;
|
||||
private static Notification.Builder m_builderOngoing;
|
||||
private static CwtchActivity m_instance;
|
||||
|
||||
private static String NOTIFICATION_CHANNEL_ID = "cwtch_notification_channel";
|
||||
private static int CONTENT_NOTIFICATION_ID = 2;
|
||||
private static String CONTENT_NOTIFICATION_ID_NAME = "Notifications from Peers";
|
||||
|
||||
|
||||
|
||||
public CwtchActivity() {
|
||||
m_instance = this;
|
||||
}
|
||||
|
||||
// https://github.com/bbernhard/qtandroidservices_example/blob/master/source/java/MyCustomAppActivity.java
|
||||
@Override
|
||||
public void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
Log.i("CwtchActivity", "Starting service!");
|
||||
Intent serviceIntent = new Intent(this, ca.openprivacy.cwtch.ui.CwtchService.class);
|
||||
ComponentName ret = startService(serviceIntent);
|
||||
if (ret == null) {
|
||||
Log.i("CwtchActivity", "Started Service: FAILED with null");
|
||||
} else {
|
||||
Log.i("CwtchActivity", "Started Service: " + ret.flattenToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static void notify(String s, String o)
|
||||
{
|
||||
if (m_notificationManager == null) {
|
||||
m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
createNotificationChannel();
|
||||
}
|
||||
|
||||
// Apparently thr android documentation is just wrong and we need to provide a setGroupSummary
|
||||
// notification regardless of targetted support version...
|
||||
Notification groupSummary =
|
||||
new Notification.Builder(m_instance)
|
||||
.setContentTitle("Cwtch")
|
||||
.setContentText("New Message from Peer: " + o)
|
||||
.setGroupSummary(true)
|
||||
.setWhen(System.currentTimeMillis())
|
||||
.setSmallIcon(R.drawable.ic_launcher)
|
||||
.setGroup(NOTIFICATION_CHANNEL_ID)
|
||||
.setChannelId(NOTIFICATION_CHANNEL_ID)
|
||||
.build();
|
||||
m_notificationManager.notify(1, groupSummary);
|
||||
|
||||
Notification.Builder m_builder = new Notification.Builder(m_instance)
|
||||
.setSmallIcon(R.drawable.ic_launcher)
|
||||
.setChannelId(NOTIFICATION_CHANNEL_ID)
|
||||
.setGroup(NOTIFICATION_CHANNEL_ID)
|
||||
.setWhen(System.currentTimeMillis())
|
||||
.setAutoCancel(true)
|
||||
.setContentTitle("New Message from Peer: " + o)
|
||||
.setContentText("[redacted: Open Cwtch App to see the Message]");
|
||||
m_notificationManager.notify(CONTENT_NOTIFICATION_ID++, m_builder.build());
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static void createNotificationChannel() {
|
||||
// Create the NotificationChannel, but only on API 26+ because
|
||||
// the NotificationChannel class is new and not in the support library
|
||||
if (SDK_INT >= 26) {
|
||||
String description = "Cwtch Notification Channel";
|
||||
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, CONTENT_NOTIFICATION_ID_NAME, NotificationManager.IMPORTANCE_HIGH);
|
||||
channel.setDescription(description);
|
||||
// Register the channel with the system; you can't change the importance
|
||||
// or other notification behaviors after this
|
||||
m_notificationManager.createNotificationChannel(channel);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// handle root level back button push as a home button push: don't exit, just go to home screen
|
||||
public static void rootHomeHandle() {
|
||||
Intent i = new Intent(Intent.ACTION_MAIN);
|
||||
i.addCategory(Intent.CATEGORY_HOME);
|
||||
m_instance.startActivity(i);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package ca.openprivacy.cwtch.ui;
|
||||
|
||||
|
||||
import android.app.IntentService;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import org.qtproject.qt5.android.bindings.QtService;
|
||||
|
||||
// https://github.com/bbernhard/qtandroidservices_example
|
||||
public class CwtchService extends QtService {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
.st1{fill:#BCB6BC;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<path class="st0" d="M12,5c-1.7,0-3,1.3-3,3s1.3,3,3,3c0.1,0,0.1,0,0.1,0l2.7-4C14.4,5.8,13.3,5,12,5z"/>
|
||||
<path class="st0" d="M12,19.2c2.5,0,4.7-1.3,6-3.2c0-1.7-3.1-2.8-5.2-3l-3.8,5.6C10,19,11,19.2,12,19.2z"/>
|
||||
<path class="st0" d="M6,16c0.4,0.7,1,1.2,1.6,1.7l3.2-4.7C8.7,13.3,6,14.3,6,16z"/>
|
||||
<path class="st1" d="M6,16c0-1.6,2.7-2.7,4.8-3l1.4-2c-0.1,0-0.1,0-0.1,0c-1.7,0-3-1.3-3-3s1.3-3,3-3c1.3,0,2.4,0.8,2.8,2l2.4-3.5
|
||||
C15.7,2.5,13.9,2,12,2C6.5,2,2,6.5,2,12c0,3.3,1.6,6.2,4.1,8l1.6-2.3C7,17.2,6.4,16.6,6,16z"/>
|
||||
<path class="st1" d="M18.5,4.4L12.8,13c2.1,0.2,5.1,1.3,5.2,3c-1.3,1.9-3.5,3.2-6,3.2c-1,0-2-0.2-2.9-0.6l-1.6,2.4
|
||||
C8.8,21.6,10.4,22,12,22c5.5,0,10-4.5,10-10C22,9,20.7,6.3,18.5,4.4z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"/></svg>
|
After Width: | Height: | Size: 367 B |
After Width: | Height: | Size: 774 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM7.07 18.28c.43-.9 3.05-1.78 4.93-1.78s4.51.88 4.93 1.78C15.57 19.36 13.86 20 12 20s-3.57-.64-4.93-1.72zm11.29-1.45c-1.43-1.74-4.9-2.33-6.36-2.33s-4.93.59-6.36 2.33C4.62 15.49 4 13.82 4 12c0-4.41 3.59-8 8-8s8 3.59 8 8c0 1.82-.62 3.49-1.64 4.83zM12 6c-1.94 0-3.5 1.56-3.5 3.5S10.06 13 12 13s3.5-1.56 3.5-3.5S13.94 6 12 6zm0 5c-.83 0-1.5-.67-1.5-1.5S11.17 8 12 8s1.5.67 1.5 1.5S12.83 11 12 11z"/></svg>
|
After Width: | Height: | Size: 597 B |
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<circle class="st0" cx="12" cy="9.5" r="1.5"/>
|
||||
<path class="st0" d="M10.7,12.7c-1.3-0.5-2.2-1.8-2.2-3.2C8.5,7.6,10.1,6,12,6c1.7,0,3.2,1.3,3.4,2.9l2.7-2.1C16.6,5.1,14.4,4,12,4
|
||||
c-4.4,0-8,3.6-8,8c0,1.8,0.6,3.5,1.6,4.7L10.7,12.7z"/>
|
||||
<path class="st0" d="M12,16.5c-1.9,0-4.5,0.9-4.9,1.8c1.3,1.1,3,1.7,4.9,1.7s3.6-0.6,4.9-1.7C16.5,17.4,13.9,16.5,12,16.5z"/>
|
||||
<path class="st0" d="M18.6,7.4l-3.1,2.4C15.3,11.6,13.8,13,12,13c-0.1,0-0.3,0-0.4,0l-2.5,2c1.1-0.3,2.2-0.4,2.9-0.4
|
||||
c1.5,0,4.9,0.6,6.4,2.3c1-1.3,1.6-3,1.6-4.8C20,10.3,19.5,8.7,18.6,7.4z"/>
|
||||
<path d="M12,3.4c-4.7,0-8.6,3.8-8.6,8.6c0,4.7,3.8,8.6,8.6,8.6c4.7,0,8.6-3.8,8.6-8.6C20.6,7.3,16.7,3.4,12,3.4z M12,4
|
||||
c2.4,0,4.6,1.1,6.1,2.8l-2.7,2.1C15.2,7.3,13.7,6,12,6c-1.9,0-3.5,1.6-3.5,3.5c0,1.4,0.9,2.7,2.2,3.2l-5.1,4c-1-1.3-1.6-3-1.6-4.7
|
||||
C4,7.6,7.6,4,12,4z M10.5,9.5C10.5,8.7,11.2,8,12,8s1.5,0.7,1.5,1.5S12.8,11,12,11S10.5,10.3,10.5,9.5z M12,20
|
||||
c-1.9,0-3.6-0.6-4.9-1.7c0.4-0.9,3-1.8,4.9-1.8s4.5,0.9,4.9,1.8C15.6,19.4,13.9,20,12,20z M12,14.5c-0.7,0-1.8,0.1-2.9,0.4l2.5-2
|
||||
c0.1,0,0.3,0,0.4,0c1.8,0,3.3-1.4,3.5-3.1l3.1-2.4C19.5,8.7,20,10.3,20,12c0,1.8-0.6,3.5-1.6,4.8C16.9,15.1,13.5,14.5,12,14.5z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<circle class="st0" cx="12" cy="9.5" r="1.5"/>
|
||||
<path class="st0" d="M12,4c-4.4,0-8,3.6-8,8c0,1.8,0.6,3.5,1.6,4.8c1.4-1.7,4.9-2.3,6.4-2.3s4.9,0.6,6.4,2.3c1-1.3,1.6-3,1.6-4.8
|
||||
C20,7.6,16.4,4,12,4z M12,13c-1.9,0-3.5-1.6-3.5-3.5S10.1,6,12,6s3.5,1.6,3.5,3.5S13.9,13,12,13z"/>
|
||||
<path class="st0" d="M12,16.5c-1.9,0-4.5,0.9-4.9,1.8C8.4,19.4,10.1,20,12,20s3.6-0.6,4.9-1.7C16.5,17.4,13.9,16.5,12,16.5z"/>
|
||||
<path d="M12,6c-1.9,0-3.5,1.6-3.5,3.5S10.1,13,12,13s3.5-1.6,3.5-3.5S13.9,6,12,6z M12,11c-0.8,0-1.5-0.7-1.5-1.5S11.2,8,12,8
|
||||
s1.5,0.7,1.5,1.5S12.8,11,12,11z"/>
|
||||
<path d="M12,3.4c-4.7,0-8.6,3.8-8.6,8.6c0,4.7,3.8,8.6,8.6,8.6c4.7,0,8.6-3.8,8.6-8.6C20.6,7.3,16.7,3.4,12,3.4z M12,20
|
||||
c-1.9,0-3.6-0.6-4.9-1.7c0.4-0.9,3-1.8,4.9-1.8s4.5,0.9,4.9,1.8C15.6,19.4,13.9,20,12,20z M12,14.5c-1.5,0-4.9,0.6-6.4,2.3
|
||||
c-1-1.3-1.6-3-1.6-4.8c0-4.4,3.6-8,8-8s8,3.6,8,8c0,1.8-0.6,3.5-1.6,4.8C16.9,15.1,13.5,14.5,12,14.5z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 998 B |
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<g id="Layer_1">
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<circle cx="12" cy="8" r="3"/>
|
||||
<path d="M12,12.9c-2,0-6,1.1-6,3.1c1.3,1.9,3.5,3.2,6,3.2s4.7-1.3,6-3.2C18,14,14,12.9,12,12.9z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Layer_2">
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 635 B |
After Width: | Height: | Size: 396 B |
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
.st1{fill:#FF0000;}
|
||||
</style>
|
||||
<g>
|
||||
<path class="st0" d="M5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8c1.5-1.7,4.9-2.3,6.4-2.3C10.5,14.5,7.1,15.1,5.6,16.8z"/>
|
||||
<circle class="st0" cx="12" cy="9.5" r="1.5"/>
|
||||
<path class="st0" d="M12,16.5c-1.9,0-4.4,0.9-4.9,1.8c1.3,1.1,3,1.7,4.9,1.7s3.5-0.6,4.9-1.7C16.4,17.4,13.9,16.5,12,16.5z"/>
|
||||
<path d="M12,6c-1.9,0-3.5,1.6-3.5,3.5S10.1,13,12,13s3.5-1.6,3.5-3.5S13.9,6,12,6z M12,11c-0.8,0-1.5-0.7-1.5-1.5S11.2,8,12,8
|
||||
s1.5,0.7,1.5,1.5S12.8,11,12,11z"/>
|
||||
<path d="M12,11c0.8,0,1.5-0.7,1.5-1.5C13.5,10.3,12.8,11,12,11z"/>
|
||||
<path d="M10.5,9.5c0,0.8,0.7,1.5,1.5,1.5C11.2,11,10.5,10.3,10.5,9.5z"/>
|
||||
<path d="M12,8c0.8,0,1.5,0.7,1.5,1.5C13.5,8.7,12.8,8,12,8z"/>
|
||||
<path d="M12,8c-0.8,0-1.5,0.7-1.5,1.5C10.5,8.7,11.2,8,12,8z"/>
|
||||
<path d="M5.6,16.8c0.4,0.6,0.9,1.1,1.5,1.5c0.4-0.9,3-1.8,4.9-1.8c1.9,0,4.4,0.9,4.9,1.8c0.6-0.4,1.1-0.9,1.5-1.5
|
||||
c-1.5-1.7-4.9-2.3-6.4-2.3S7.2,15.1,5.6,16.8z"/>
|
||||
<path class="st1" d="M5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 478 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"/></svg>
|
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 512 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"/></svg>
|
After Width: | Height: | Size: 353 B |
After Width: | Height: | Size: 530 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"/></svg>
|
After Width: | Height: | Size: 373 B |
After Width: | Height: | Size: 868 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>
|
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 258 B |
After Width: | Height: | Size: 393 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z"/></svg>
|
After Width: | Height: | Size: 195 B |
After Width: | Height: | Size: 234 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 308 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M6 21h12V7H6v14zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"/></svg>
|
After Width: | Height: | Size: 189 B |
After Width: | Height: | Size: 166 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/></svg>
|
After Width: | Height: | Size: 190 B |
After Width: | Height: | Size: 270 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>
|
After Width: | Height: | Size: 431 B |
After Width: | Height: | Size: 218 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM21.41 6.34l-3.75-3.75-2.53 2.54 3.75 3.75 2.53-2.54z"/></svg>
|
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 268 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg>
|
After Width: | Height: | Size: 314 B |
After Width: | Height: | Size: 532 B |
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 826 B |
After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 792 B After Width: | Height: | Size: 792 B |
After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 848 B After Width: | Height: | Size: 848 B |
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 599 B |
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 634 B |
After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 564 B After Width: | Height: | Size: 564 B |
After Width: | Height: | Size: 7.5 KiB |
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<g>
|
||||
<path d="M8.9,12.9c-0.3,0-0.6,0-0.9,0c-2.1,0-6.3,1-6.3,3.1v2.2h5.4V16C7.1,14.7,7.8,13.7,8.9,12.9z"/>
|
||||
<path d="M8,11.1c1.5,0,2.7-1.2,2.7-2.7c0-1.5-1.2-2.7-2.7-2.7c-1.5,0-2.7,1.2-2.7,2.7C5.3,9.9,6.5,11.1,8,11.1z"/>
|
||||
<path d="M14.3,11.1c1.5,0,2.7-1.2,2.7-2.7c0-1.5-1.2-2.7-2.7-2.7s-2.7,1.2-2.7,2.7C11.7,9.9,12.8,11.1,14.3,11.1z"/>
|
||||
<path d="M15.4,13c-0.4,0-0.7-0.1-1.1-0.1c-2.1,0-6-0.4-6.3,3.1v2.2h4.8c0-0.2,0-0.3,0-0.5C12.8,15.8,13.8,14,15.4,13z"/>
|
||||
</g>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<path d="M22.1,18.3c0-0.1,0-0.3,0-0.4c0-0.2,0-0.3,0-0.4l1-0.7c0.1-0.1,0.1-0.2,0.1-0.3l-0.9-1.6c-0.1-0.1-0.2-0.1-0.3-0.1l-1.1,0.5
|
||||
c-0.2-0.2-0.5-0.3-0.8-0.4l-0.2-1.2c0-0.1-0.1-0.2-0.2-0.2h-1.8c-0.1,0-0.2,0.1-0.2,0.2l-0.2,1.2c-0.3,0.1-0.5,0.3-0.8,0.4l-1.1-0.5
|
||||
c-0.1,0-0.2,0-0.3,0.1l-0.9,1.6c-0.1,0.1,0,0.2,0.1,0.3l1,0.7c0,0.1,0,0.3,0,0.4s0,0.3,0,0.4l-1,0.7c-0.1,0.1-0.1,0.2-0.1,0.3
|
||||
l0.9,1.6c0.1,0.1,0.2,0.1,0.3,0.1l1.1-0.5c0.2,0.2,0.5,0.3,0.8,0.4l0.2,1.2c0,0.1,0.1,0.2,0.2,0.2h1.8c0.1,0,0.2-0.1,0.2-0.2L20,21
|
||||
c0.3-0.1,0.5-0.3,0.8-0.4l1.1,0.5c0.1,0,0.2,0,0.3-0.1l0.9-1.6c0.1-0.1,0-0.2-0.1-0.3L22.1,18.3z M18.7,19.5c-0.9,0-1.7-0.8-1.7-1.7
|
||||
c0-0.9,0.8-1.7,1.7-1.7c0.9,0,1.7,0.8,1.7,1.7C20.5,18.8,19.7,19.5,18.7,19.5z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
|
After Width: | Height: | Size: 236 B |
After Width: | Height: | Size: 510 B |
After Width: | Height: | Size: 445 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><path d="M0 0h24v24H0V0z"/><path opacity=".87" d="M0 0h24v24H0V0z"/></g><path d="M20 8h-3V6.21c0-2.61-1.91-4.94-4.51-5.19C9.51.74 7 3.08 7 6v2H4v14h16V8zm-8 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM9 8V6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9z"/></svg>
|
After Width: | Height: | Size: 349 B |
After Width: | Height: | Size: 366 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M20 8h-3V6.21c0-2.61-1.91-4.94-4.51-5.19C9.51.74 7 3.08 7 6h2c0-1.13.6-2.24 1.64-2.7C12.85 2.31 15 3.9 15 6v2H4v14h16V8zm-2 12H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"/></svg>
|
After Width: | Height: | Size: 327 B |
After Width: | Height: | Size: 376 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>
|
After Width: | Height: | Size: 185 B |
After Width: | Height: | Size: 134 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z"/></svg>
|
After Width: | Height: | Size: 493 B |
After Width: | Height: | Size: 984 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>
|
After Width: | Height: | Size: 285 B |
After Width: | Height: | Size: 194 B |
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<path id="Subtraction_1" d="M18.5,16L18.5,16L5.3,4.4C6.3,3.5,7.6,3,9,3c1.7,0,3.3,0.7,4.4,2c1.1-1.3,2.7-2,4.4-2
|
||||
C20.6,3,23,5.3,23,8.2c0,0,0,0.1,0,0.1c0,0.6-0.1,1.3-0.3,1.9c-0.2,0.7-0.5,1.3-0.9,1.9C21.1,13.2,20.1,14.4,18.5,16L18.5,16z"/>
|
||||
<path d="M20.2,18.6L2.3,3.1L1,4.6l2.6,2.2C3.2,7.5,3,8.4,3,9.2c0,3.7,3.3,6.6,8.3,11.2l1.4,1.3l1.4-1.3c0.9-0.8,1.7-1.6,2.5-2.3
|
||||
l2.3,2L20.2,18.6z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 840 B |
After Width: | Height: | Size: 834 B |
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<path d="M13.6,13.8c-1-0.2-2-0.3-2.8-0.3c-2.7,0-8,1.3-8,4v2h9.8c-0.3-0.6-0.4-1.3-0.4-2.1C12.2,15.9,12.7,14.7,13.6,13.8z"/>
|
||||
<circle cx="10.8" cy="7.4" r="4"/>
|
||||
</g>
|
||||
<path d="M21.1,17.9c0-0.1,0-0.3,0-0.4c0-0.2,0-0.3,0-0.4l1-0.7c0.1-0.1,0.1-0.2,0.1-0.3l-0.9-1.6c-0.1-0.1-0.2-0.1-0.3-0.1l-1.1,0.5
|
||||
c-0.2-0.2-0.5-0.3-0.8-0.4l-0.2-1.2c0-0.1-0.1-0.2-0.2-0.2h-1.8c-0.1,0-0.2,0.1-0.2,0.2l-0.2,1.2c-0.3,0.1-0.5,0.3-0.8,0.4l-1.1-0.5
|
||||
c-0.1,0-0.2,0-0.3,0.1L13.4,16c-0.1,0.1,0,0.2,0.1,0.3l1,0.7c0,0.1,0,0.3,0,0.4c0,0.1,0,0.3,0,0.4l-1,0.7c-0.1,0.1-0.1,0.2-0.1,0.3
|
||||
l0.9,1.6c0.1,0.1,0.2,0.1,0.3,0.1l1.1-0.5c0.2,0.2,0.5,0.3,0.8,0.4l0.2,1.2c0,0.1,0.1,0.2,0.2,0.2h1.8c0.1,0,0.2-0.1,0.2-0.2
|
||||
l0.2-1.2c0.3-0.1,0.5-0.3,0.8-0.4l1.1,0.5c0.1,0,0.2,0,0.3-0.1l0.9-1.6c0.1-0.1,0-0.2-0.1-0.3L21.1,17.9z M17.7,19.2
|
||||
c-0.9,0-1.7-0.8-1.7-1.7c0-0.9,0.8-1.7,1.7-1.7c0.9,0,1.7,0.8,1.7,1.7C19.4,18.4,18.7,19.2,17.7,19.2z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 787 B After Width: | Height: | Size: 787 B |
After Width: | Height: | Size: 14 KiB |