From 6db3836c35d1a209c2da666eec480f07a8eaf8dd Mon Sep 17 00:00:00 2001 From: les Date: Tue, 21 Jan 2020 22:14:46 +0100 Subject: [PATCH] [doc] premonition, oauth --- docs/Gemfile | 1 + docs/Gemfile.lock | 2 + docs/_config.yml | 4 +- docs/_includes/head.html | 2 + docs/_site/404.html | 72 +++++---- docs/_site/about.html | 72 +++++---- docs/_site/assets/css/style.css | 9 ++ docs/_site/assets/gancio.png | Bin 0 -> 3576 bytes docs/_site/assets/js/search-data.json | 56 +++---- docs/_site/assets/oauth_auth.png | Bin 0 -> 34445 bytes docs/_site/assets/thumbs/oauth_auth.png | Bin 0 -> 30094 bytes docs/_site/changelog.html | 72 +++++---- docs/_site/config.html | 72 +++++---- .../{dev/migration.html => contacts.html} | 105 ++++++------ docs/_site/dev.html | 92 ++++++----- docs/_site/dev/locales.html | 85 +++++----- docs/_site/{ => dev}/oauth.html | 153 ++++++++++++------ docs/_site/dev/structure.html | 72 +++++---- docs/_site/favicon.ico | Bin 0 -> 4286 bytes docs/_site/federation.html | 76 ++++----- docs/_site/feed.xml | 2 +- docs/_site/index.html | 76 ++++----- docs/_site/install.html | 72 +++++---- docs/_site/install/debian.html | 72 +++++---- docs/_site/install/docker.html | 72 +++++---- docs/_site/install/nginx.html | 72 +++++---- docs/_site/instances.html | 74 +++++---- docs/assets/css/style.css | 9 ++ docs/assets/gancio.png | Bin 0 -> 3576 bytes docs/assets/oauth_auth.png | Bin 0 -> 34445 bytes docs/assets/thumbs/oauth_auth.png | Bin 0 -> 30094 bytes docs/contact.md | 11 ++ docs/dev/locales.md | 8 +- docs/dev/migration.md | 11 -- docs/{ => dev}/oauth.md | 41 ++++- docs/dev/structure.md | 1 + docs/favicon.ico | Bin 0 -> 4286 bytes docs/index.md | 4 +- docs/instances.md | 3 + 39 files changed, 822 insertions(+), 651 deletions(-) create mode 100644 docs/_site/assets/gancio.png create mode 100644 docs/_site/assets/oauth_auth.png create mode 100644 docs/_site/assets/thumbs/oauth_auth.png rename docs/_site/{dev/migration.html => contacts.html} (81%) rename docs/_site/{ => dev}/oauth.html (78%) create mode 100644 docs/_site/favicon.ico create mode 100644 docs/assets/gancio.png create mode 100644 docs/assets/oauth_auth.png create mode 100644 docs/assets/thumbs/oauth_auth.png create mode 100644 docs/contact.md delete mode 100644 docs/dev/migration.md rename docs/{ => dev}/oauth.md (68%) create mode 100644 docs/favicon.ico diff --git a/docs/Gemfile b/docs/Gemfile index 2fa11740..938effe4 100644 --- a/docs/Gemfile +++ b/docs/Gemfile @@ -23,6 +23,7 @@ gem "mini_magick" group :jekyll_plugins do gem "jekyll-feed", "~> 0.6" gem "jemoji" + gem "premonition", "~> 2.0.0" end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index c182d72a..c8a2a40a 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -66,6 +66,7 @@ GEM mini_portile2 (~> 2.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) + premonition (2.0.0) public_suffix (3.1.1) rake (12.3.1) rb-fsevent (0.10.3) @@ -95,6 +96,7 @@ DEPENDENCIES jemoji just-the-docs mini_magick + premonition (~> 2.0.0) tzinfo (~> 1.2) tzinfo-data wdm (~> 0.1.0) diff --git a/docs/_config.yml b/docs/_config.yml index 2a8800e2..abb6e611 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -28,7 +28,7 @@ theme: "just-the-docs" plugins: - jekyll-feed - jemoji - + - premonition search_enabled: true @@ -39,6 +39,8 @@ aux_links: - https://framagit.org/les/gancio "Forum": - https://socialhub.activitypub.rocks/c/software/gancio + "Mastodon": + - https://mastodon.cisti.org/@gancio diff --git a/docs/_includes/head.html b/docs/_includes/head.html index 01a680ba..0cf80707 100644 --- a/docs/_includes/head.html +++ b/docs/_includes/head.html @@ -11,6 +11,8 @@ + + {% if site.search_enabled != nil %} diff --git a/docs/_site/404.html b/docs/_site/404.html index 3644ad42..145c2555 100644 --- a/docs/_site/404.html +++ b/docs/_site/404.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Gancio","url":"https://gancio.org/404.html","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/about.html b/docs/_site/about.html index 1007807a..0b347eb4 100644 --- a/docs/_site/about.html +++ b/docs/_site/about.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"About","url":"https://gancio.org/about","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/assets/css/style.css b/docs/_site/assets/css/style.css index b6489864..313386b2 100644 --- a/docs/_site/assets/css/style.css +++ b/docs/_site/assets/css/style.css @@ -10,3 +10,12 @@ .navigation-list-item a:hover { color: black; } + + +html, body { + font-family: sans-serif; +} + +.page-content h1:first-of-type { + font-weight: 500; +} \ No newline at end of file diff --git a/docs/_site/assets/gancio.png b/docs/_site/assets/gancio.png new file mode 100644 index 0000000000000000000000000000000000000000..d53e1632fbb3fea130105b2cc79c4ccc7a93f296 GIT binary patch literal 3576 zcmZWsc{CJk+n*sbS!Qe*#!h5}ni>0+buhA&kR>APWE*3WkZtS(IRF3v1Z!q&bA*p1A> zon`;ga0JJE3@i-*fPXSL_ubi!{*oSMHbBSN0B#@w0HzxNpmiSr z5X4g-U(`7gK-bQj8Uz0PJ;hyB*+&dJ-pnxs01)r}Tfo548|RKlFcE8s0nY&iU}{47 zw`&Ig04^lf*uXYy@)H%8=4mI;A8q$Z*KdS4@`Ap_K+=zS5_ybU$x1OG9+d^~N#k5! z7F4_t+uc4MN3Qj3PLnhf8S_3##5H|=+e}NZUTN(#u4n$xt*x!6c5m08{h6k{|77=w z*+pBac@Ry23o*O)R{lH)S<#$-5TUHXQ>o_^19g*a5Y~7-C3Sf7e5{ol?=#cp<$x>d&9ABL;4LMI!4r=VId2(GXFePphdsEnK@ic+oXp#s!AH9PUAO zc563FW=3c9-3H4BBze2r04 z{LoxM=cqLQYC*q`xX}{`dKn=R7Q`2Ur_J)7!p&bYEgu}mk~ zw{f3T)#Z0cdh=-d$>w3O5j}?6pRT86jU!CPsD5^m9udr}gKq(YsywqlvxWYeWAo6P z3pj?gd|GL6+2CQgiTw-C7z%lApLbV$O$WXI9x%@;f!I8^nI9<_HuN%T0{lx)Vjof9 zzWI(Nl4}=4xWw|265D<9Qp58vV`8^Vp$++0aD#l_nW`GE7#I?Yq|NnCSW&rskfBKm zW~ID&0cjQ5A7r3O9$dLX&Bwe?Z>hg$M3Uqngu{9!u<)-&xzI z7(Aqtkvv^q1H!6dFBwljaw0?_Pa0%=&&eO((ld2fuM64{qRy}4tQt>2u66V*TYWf1 znx*!EuP{qJ1-L$=+n-0PSG@y= zR8lXc!62_!nd`e8ym+UD&R7IdAcr%z>w+gn_miu?fk@F>@)^QZU%XG>aC~dO-Fk63 z-`DODA*wgNwx42CGJ{!4V$3&o}8Au{$=&y^$xP0#s^x-RVGt-J6v!C+>HDw!-poPENwItYPXEYO6_gdXGPVh0TVq)pJvJ`t7qcnd zB-***+u1I-tGQ-l*w|=Ra0WcQzB61Fd|E^E>FW}#L|IN1XF5@8+)z#C_k+wXc8A3; z2WR8FF|e3BT;YSeSI4&H+KjMUlC0FYYj39e&iGhPrCz(dzlh(j z=Bp|K(e2a0YKyf0zile0gHD!RobvBh}w_Jl*86GkY1G zgc!AoQ*4M$sa^FqRv3RFjSGq4A7$FHYsW@sM`DYTPMxHzb$A=W>S+1MOsi&jzN9*Y zSoR4q1nG&MBx}XTs|o&2qH1Lck~Qv5X`wW4Z7%C*@c858tEwUNseu}c)X zOW{(Pp-95QY4_tbJ`d&`;{AL4O(pLtIte_caryHkz;UB54-E=RkPms(P`SLT#O<;| zs!F=Owo{>xc5fxr(G9o}Iy*{ILyfzgW8c0^5lRdKc#$Pq+6P%n7Gxmbl_QL*5UF27 zFO1x>6aSDfpT#FlGNUY~2k48Na~e=f)XE=t$ZNfnj!>g`3?sNPdUf~0D3|oHPYqMk z(MuBBT&KwP=M^=LAAefpYV_H=Q!emUc^@;KF<}Nzet7Wwfxsvet3c*^g%jQ-uAXLV zVaF|sR&bPdA*3BAVuBDnA0623;)2Z<$H4LdTlU}87#HX8Nn$i#d0bIjpzSj8YgF#~EdKUk?JtG+!R?uv4UmTzjay#MYa+HZ+*CU(HY>>m3NAB(VR@l=RbjZf zsRXIq(uYvIyW($r?K9?i_`L=mfkxX`8&)rl6L8*`Pr+QN35jF*KMaz3XL9H7TGXXJ zOw=LZgqIn^DybW)j?^NPT3^|R7*%gOZd+p>bLIY>pVf=T?YM*{R?9+-!W-G$SUc3T(CjQrWXUV0 zEjj(e*$ye}qgcgvI#o{w%EU=HsF}WFolambJUQLTkYSvs4}lI;ldp*H>JA3n7SJf1 z%#OQdF1zeup_6@%p_J2;r2Ig0juDEPEO~R2)}e!gr-m}w8SV_5!CH3_JZeoEpJz}4 znt2i1UHWjb>Vo4wuNh%VdM=)|L3@n$L=4Le{1YA9oH?29s(>>2aXrPp=zi#&hbw1f z;#P_6Mcpb%8`h}QqK9`BGNL~-X63C06BOjt06v;2MaIuxi)4BdC5sv^I>*dk*btm( zZX4y@+*rFhq})E{*3J>kEhL&B*Pj1En6a*9HWdf!`Ox5Ttew@Rg(s;gc9o&JZE0~u zolr9_EyFUH4I4`sqGx0l*|FCR*iY++@T)J)no%(6a*)(MxD!v5dE{Ui^znx|81W@m znJ>@u&LDnp-nqI$164Yzz!kW;SrojjVfhQm>Z0EFR=*?OKZZp4 z;Qy)p6$js1Y(y|Mpu6XsM#nSN;>H)1aF1A6#Y&!XwexAFx9Ch}G>VOsdSp^YRkb>_ zTn-!5M-%Pa*?a|QoEm())!D7N#PxY(YGDwIYd~K`h!5~`wxWQme(-D;{ky;D2+Enf#(#p zpDXF@+nGJFJ3nr?AYOmGGn^B+(>kFS$z9>x&}(TYrJo_r2(o=uqMLnwEY!{8Yu9V_ zPb{09B$vusB8|N5L%O%aRIMdXsu37C=d){m<+_*9B9NNS?VNF>`Mn^PLqH_(+Yq#P zTk-kRZ3~mJ!_~86x?)~Cej@hu;vL3i+!e2j3@J!K=?!T4tvk8T4*YMH9b5A2>#K%5 zTIWX9;&N9oDg7Q}&xuuK#ZMiFo4Ct#KC+rM9vVSz$W4SIr43!VPoIwB;|=A=qR&19 zPv-Pj3M7sje>KT7%@k2_TI8%eP{GD0@LnPhDJ%qL+&~EEu3f_+C;m|v?))WQ9yd~a zw@fg(!@cAc6xZw1S{ zmN4uWgX-ipyzNX2%uZ3sX!yDY6n=d#qA)E0(HkcAk+wWAFH#)q9R3HaK<|83>tbDf zv`)wpF%CpeccPb;2f^zI0B9r{sf0u+p;5MIl$NTBma>Wh5~YPi%JDVc`kz2RkSEUj z*8dNn|1VJRjl=mUApEz3R~XJ)%MeElx!^^(2RGT1yqJrJ`XcD)jWoeBxg-Ho)D-%fc(rhv*AHqckOi#5<03{{Pi4 z<2?T>zxITx9Ley1R)hHi2H0kbb& A-v9sr literal 0 HcmV?d00001 diff --git a/docs/_site/assets/js/search-data.json b/docs/_site/assets/js/search-data.json index 7ff5f7c8..de724d24 100644 --- a/docs/_site/assets/js/search-data.json +++ b/docs/_site/assets/js/search-data.json @@ -29,66 +29,66 @@ }, "4": { "id": "4", + "title": "Contacts", + "content": "Contacts :elephant: Mastodon ⇒ @gancio@mastodon.cisti.org", + "url": "https://gancio.org/contacts", + "relUrl": "/contacts" + }, + "5": { + "id": "5", "title": "Debian", "content": "Debian installation Install Node.js & yarn (from root) curl -sL https://deb.nodesource.com/setup_12.x | bash - apt-get install -y nodejs curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list apt-get update && apt-get install yarn source Install Gancio yarn global add gancio --prod Setup with postgreSQL (optional as you can choose sqlite) apt-get install postgresql # Create the database su postgres -c psql postgres=# create database gancio; postgres=# create user gancio with encrypted password 'gancio'; postgres=# grant all privileges on database gancio to gancio; Create a user to run gancio from adduser gancio su gancio Launch interactive setup gancio setup --config config.json Start gancio start --config config.json Point your web browser to http://localhost:13120 or where you selected during setup. Setup nginx as a proxy To deploy gancio in production you should use something like pm2: sudo yarn global add pm2 pm2 start gancio -- --config config.json # Run this command to run your application as a service and automatically restart after a reboot: pm2 startup # read the output! sudo pm2 startup -u gancio Upgrade sudo yarn global add gancio sudo service pm2 restart", "url": "https://gancio.org/install/debian", "relUrl": "/install/debian" }, - "5": { - "id": "5", + "6": { + "id": "6", "title": "Hacking", "content": "Development Stack Gancio is built with following technologies: Nuxt.js Vue.js Express Node.js Sequelize Element.ui Testing on your own machine Download source git clone https://framagit.org/les/gancio Install dependencies yarn Hacking yarn dev Please use the issue board and the forum to discuss any modification.", "url": "https://gancio.org/dev", "relUrl": "/dev" }, - "6": { - "id": "6", + "7": { + "id": "7", "title": "Docker", "content": "Initial setup Use sqlite Use postgreSQL Start gancio Upgrade Initial setup You do not need to clone the full repo as we distribute gancio via npm. A Dockerfile and a docker-compose.yml are the only files needed. Create a directory where everything related to gancio is stored (db, images, config) mkdir /opt/gancio cd /opt/gancio note that you can choose a different directory. Use sqlite Download docker-compose.yml and Dockerfile wget https://gancio.org/docker/Dockerfile wget https://gancio.org/docker/sqlite/docker-compose.yml Create an empty db and config (this is needed) touch config.json db.sqlite mkdir user_locale Build docker image and launch interactive setup in one step docker-compose build docker-compose run --rm gancio gancio setup --docker --db=sqlite Use postgreSQL Download docker-compose.yml and Dockerfile wget https://gancio.org/docker/Dockerfile wget https://gancio.org/docker/postgres/docker-compose.yml Create an empty configuration (this is needed) touch config.json mkdir user_locale Build docker image and launch interactive setup in one step docker-compose build docker-compose run --rm gancio gancio setup --docker --db=postgres Start gancio Run your container docker-compose up -d Look at logs with docker-compose logs Setup nginx as a proxy Point your web browser to http://localhost:13120 or where you specified during setup and enjoy :tada: You can edit config.json file and restart the container on your needs, see Configuration for more details. Upgrade cd /opt/gancio docker-compose up -d --no-deps --build", "url": "https://gancio.org/install/docker", "relUrl": "/install/docker" }, - "7": { - "id": "7", + "8": { + "id": "8", "title": "Federation", "content": "Federation Each instance has only one AP Actor that publishes each event. We are considering the introduction of other “Actor” but they will not be linked to users, rather to places or tags/categories. There are no personal homes with a timeline of people I follow, everyone has a sort of local timeline of the instance, it’s an anti filter-bubble feature. Events are not published with the type Event but with type Note because we wanted to add the possibility to interact with events from mastodon instances (boost / bookmark and “comments” that we call resources because we don’t want it to become a place of debate, but more a place where to keep a historical memory of events, e.g. an audio recording of a talk). When mastodon will support Event object type we will change for sure.", "url": "https://gancio.org/federation", "relUrl": "/federation" }, - "8": { - "id": "8", + "9": { + "id": "9", "title": "Home", - "content": "Gancio A shared agenda for local communities. Get started now Demo Source Some relevant key features: Focus on content not on people: nowhere on gancio appears the identity of who published the event, not even under a nickname, not even to administrators (except in the db). This is not an ego-friendly platform. Visitors first. We do not want logged user to get more features than random visitor. We do not want users to register, except to publish events and even in this case you can publish an anonymous event. Anonymous events: optionally a visitor can create events without being registered (an administrator has to confirm them) We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites. Very easy UI Multidays events support (festival, conferences…) Recurrent events support (each monday, each two monday, each monday and friday, each two saturday, etc.) Filters events for tags or places RSS and ICS export (with filters) embeddable iframe (example) boost / bookmark / comment events from the fediverse! Lot of configurations available (user registration open/close, enable federation, enable recurrent events) License Gancio is distributed by an AGPL-3.0 Licence.", + "content": "ancio A shared agenda for local communities. Get started now Demo Source Some relevant key features: Focus on content not on people: nowhere on gancio appears the identity of who published the event, not even under a nickname, not even to administrators (except in the db). This is not an ego-friendly platform. Visitors first. We do not want logged user to get more features than random visitor. We do not want users to register, except to publish events and even in this case you can publish an anonymous event. Anonymous events: optionally a visitor can create events without being registered (an administrator has to confirm them) We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites and via AP Very easy UI Multidays events support (festival, conferences…) Recurrent events support (each monday, each two monday, each monday and friday, each two saturday, etc.) Filters events for tags or places RSS and ICS export (with filters) embeddable iframe (example) boost / bookmark / comment events from the fediverse! Lot of configurations available (user registration open/close, enable federation, enable recurrent events) License Gancio is distributed by an AGPL-3.0 Licence.", "url": "https://gancio.org/", "relUrl": "/" }, - "9": { - "id": "9", + "10": { + "id": "10", "title": "Install", "content": "Install (production) Install on Debian Install using docker Post installation Nginx as a proxy If you wanna hack or run the current develop release take a look at Hacking & contribute", "url": "https://gancio.org/install", "relUrl": "/install" }, - "10": { - "id": "10", + "11": { + "id": "11", "title": "Instances", - "content": "Instances gancio.cisti.org (Torino, Italy) lapunta.org (Firenze, Italy)", + "content": "Instances gancio.cisti.org (Torino, Italy) lapunta.org (Firenze, Italy) Do you want your instance to appear here? Write us.", "url": "https://gancio.org/instances", "relUrl": "/instances" }, - "11": { - "id": "11", - "title": "Support a new language", - "content": "Add a new locale watch this commit", - "url": "https://gancio.org/dev/locales", - "relUrl": "/dev/locales" - }, "12": { "id": "12", - "title": "Migration", - "content": "If you need to modify the db’s structure while hacking, just change server/api/models/ and remember to create a migration, to understand how things works check the sequelize documentation", - "url": "https://gancio.org/dev/migration", - "relUrl": "/dev/migration" + "title": "Internationalization", + "content": "Internationalization We’re self-hosting an instance of weblate you can use to help us with translations.", + "url": "https://gancio.org/dev/locales", + "relUrl": "/dev/locales" }, "13": { "id": "13", @@ -100,9 +100,9 @@ "14": { "id": "14", "title": "OAuth", - "content": "OAuth An open standard for token-based authentication and authorization on the Internet. Gancio supports OAuth 2.0, an authorization framework described in RFC 6749 that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests. To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to acquire a client id/secret and then proceed with normal OAuth 2. Create client Create a new application to obtain OAuth2 credentials. POST /api/client Request parameters client_name string A name for your application redirect_uri string Where the user should be redirected after authorization scopes string Space separated list of scopes. If none is provided, defaults to write as it’s the only supported scope! website string A URL to the homepage of your app Example curl -X POST -d 'client_name=Wordpress Event Manager' -d 'redirect_uri=https://noblogs.org/' -d 'website=https://myapp.example' http://localhost:13120/api/client Returns Application, with client_id and client_secret { "name" : "Wordpress Event Manager", "scopes" : "write", "website" : "https://myapp.example", "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", "redirect_uri" : "https://noblogs.org", "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d" } List of scopes write Grant access to add/update events. Authorize a user Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. The authorization code can be used while requesting a token to obtain access to user-level methods. GET /authorize Request parameters response_type string Should be set equal to code redirect_uri string Where the user should be redirected after authorization scope string Should be write client_id string Client ID, obtained during app registration.", - "url": "https://gancio.org/oauth", - "relUrl": "/oauth" + "content": "BETA FEATUREExpect bad behavior and open issues OAuth An open standard for token-based authentication and authorization on the Internet. Gancio supports OAuth 2.0, an authorization framework described in RFC 6749 that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests. To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to acquire a client id/secret and then proceed with normal OAuth 2. Create client Create a new application to obtain OAuth2 credentials. POST /api/client Request parameters client_name string A name for your application redirect_uris string Where the user should be redirected after authorization scopes string Space separated list of scopes. If none is provided, defaults to event:write as it’s the only supported scope! website string A URL to the homepage of your app Example curl -X POST -d 'client_name=Wordpress Event Manager' -d 'redirect_uris=https://noblogs.org/' -d 'website=https://myapp.example' http://localhost:13120/api/client Returns Application, with client_id and client_secret { "name" : "Wordpress Event Manager", "scopes" : "event:write", "website" : "https://myapp.example", "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", "redirect_uris" : "https://noblogs.org", "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d" } List of scopes event:write Grant access to add/update events. Authorize a user Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. The authorization code can be used while requesting a token to obtain access to user-level methods. GET /authorize Request parameters response_type string Should be set equal to code redirect_uri string Where the user should be redirected after authorization scope string Should be event:write client_id string client_id, obtained during app registration. Obtain a token POST /oauth/token Request parameters client_id string client_id obtained during client registration client_secret string client_secret obtained during client registration scope string Should be event:write grant_type string Set equal to authorization_code code string A user authorization code, obtained via /authorize", + "url": "https://gancio.org/dev/oauth", + "relUrl": "/dev/oauth" }, "15": { "id": "15", diff --git a/docs/_site/assets/oauth_auth.png b/docs/_site/assets/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..34ea5c00670cfe065649df426fde90a75c1e4b4a GIT binary patch literal 34445 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 literal 0 HcmV?d00001 diff --git a/docs/_site/assets/thumbs/oauth_auth.png b/docs/_site/assets/thumbs/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..b35841176a84d67ca7f3d58840dfe8294c8a7a53 GIT binary patch literal 30094 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

    Xw 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 oOM#gKZOlMJw>NTiu{8L1pa + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Changelog","url":"https://gancio.org/changelog","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + +

    - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/config.html b/docs/_site/config.html index be0956ae..80bd0af8 100644 --- a/docs/_site/config.html +++ b/docs/_site/config.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Configuration","url":"https://gancio.org/config","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -314,7 +316,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/dev/migration.html b/docs/_site/contacts.html similarity index 81% rename from docs/_site/dev/migration.html rename to docs/_site/contacts.html index 1265c495..41012c21 100644 --- a/docs/_site/dev/migration.html +++ b/docs/_site/contacts.html @@ -5,13 +5,15 @@ - Migration - Gancio + Contacts - Gancio + + @@ -26,17 +28,17 @@ -Migration | Gancio +Contacts | Gancio - + - - + + +{"@type":"WebPage","headline":"Contacts","url":"https://gancio.org/contacts","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -301,7 +303,8 @@ @@ -313,7 +316,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -322,19 +327,13 @@
    - -
    -

    If you need to modify the db’s structure while hacking, just change server/api/models/ and -remember to create a migration, to understand how things works check the sequelize documentation

    +

    Contacts

    + +

    +:elephant: Mastodon ⇒ @gancio@mastodon.cisti.org +

    diff --git a/docs/_site/dev.html b/docs/_site/dev.html index 6553b47f..337df587 100644 --- a/docs/_site/dev.html +++ b/docs/_site/dev.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Hacking","url":"https://gancio.org/dev","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -370,15 +374,13 @@ -
  • - Support a new language -
  • + -
  • - Migration -
  • + + + @@ -394,7 +396,9 @@ - +
  • + OAuth +
  • @@ -402,9 +406,9 @@ - - - +
  • + Internationalization +
  • diff --git a/docs/_site/dev/locales.html b/docs/_site/dev/locales.html index 2d099d85..44b98bcc 100644 --- a/docs/_site/dev/locales.html +++ b/docs/_site/dev/locales.html @@ -5,13 +5,15 @@ - Support a new language - Gancio + Internationalization - Gancio + + @@ -26,9 +28,9 @@ -Support a new language | Gancio +Internationalization | Gancio - + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Internationalization","url":"https://gancio.org/dev/locales","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -327,14 +331,15 @@ - +
    -

    Add a new locale

    -

    watch this commit

    +

    Internationalization

    + +

    We’re self-hosting an instance of weblate you can use to help us with translations.

    diff --git a/docs/_site/oauth.html b/docs/_site/dev/oauth.html similarity index 78% rename from docs/_site/oauth.html rename to docs/_site/dev/oauth.html index b859bc26..8ec5b53d 100644 --- a/docs/_site/oauth.html +++ b/docs/_site/dev/oauth.html @@ -12,6 +12,8 @@ + + @@ -32,11 +34,11 @@ - - + + +{"@type":"WebPage","headline":"OAuth","url":"https://gancio.org/dev/oauth","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -268,9 +270,9 @@ - @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -322,20 +326,34 @@
    + +
    -

    OAuth

    +

    BETA FEATURE

    Expect bad behavior and open issues

    + + +
    +

    OAuth

    An open standard for token-based authentication and authorization on the Internet.

    Gancio supports OAuth 2.0, an authorization framework described in RFC 6749 that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests.

    To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to acquire a client id/secret and then proceed with normal OAuth 2.

    +
    +

    Create client

    Create a new application to obtain OAuth2 credentials.

    POST

    -

    /api/client

    Request parameters

    @@ -348,14 +366,14 @@ A name for your application - redirect_uri + redirect_uris string Where the user should be redirected after authorization scopes string - Space separated list of scopes. If none is provided, defaults to write as it’s the only supported scope! + Space separated list of scopes. If none is provided, defaults to event:write as it’s the only supported scope! website @@ -368,7 +386,7 @@

    Example

    curl -X POST \
             -d 'client_name=Wordpress Event Manager' \
    -        -d 'redirect_uri=https://noblogs.org/' \
    +        -d 'redirect_uris=https://noblogs.org/' \
             -d 'website=https://myapp.example' \
             http://localhost:13120/api/client
     
    @@ -378,17 +396,17 @@
    {
        "name" : "Wordpress Event Manager",
    -   "scopes" : "write",
    +   "scopes" : "event:write",
        "website" : "https://myapp.example",
        "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4",
    -   "redirect_uri" : "https://noblogs.org",
    +   "redirect_uris" : "https://noblogs.org",
        "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d"
     }
     

    List of scopes

      -
    • write
      +
    • event:write
      Grant access to add/update events.
    @@ -396,6 +414,8 @@ Grant access to add/update events.

    Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. The authorization code can be used while requesting a token to obtain access to user-level methods.

    +

    assets/thumbs/oauth_auth.png

    +

    GET

    /authorize

    @@ -416,12 +436,49 @@ The authorization code can be used while requesting a token to obtain access to scope string - Should be write + Should be event:write client_id string - Client ID, obtained during app registration. + client_id, obtained during app registration. + + + + +

    Obtain a token

    + +

    POST

    +

    /oauth/token

    + +

    Request parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    client_idstringclient_id obtained during client registration
    client_secretstringclient_secret obtained during client registration
    scopestringShould be event:write
    grant_typestringSet equal to authorization_code
    codestringA user authorization code, obtained via /authorize
    diff --git a/docs/_site/dev/structure.html b/docs/_site/dev/structure.html index 5c96d8e0..37f81681 100644 --- a/docs/_site/dev/structure.html +++ b/docs/_site/dev/structure.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Project Structure","url":"https://gancio.org/dev/structure","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/favicon.ico b/docs/_site/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..36b55d4a8ffc0352aa0c8daf717533f6b1b6c4aa GIT binary patch literal 4286 zcmb`KT}WhQ7{|{tXpJAE((XDc=pwc(LSi_2lct0S?uBS#Z5K;{N;h?3c@c`S3sJIW zP|#+(En#d}(p8jQc+rHpt((%KOQ2vZxw@p}M~zy|=+pmy=Da)SoH>qX2cPBVd*(UM z`~2VYey^q-!@pCfH2&4T$kw!znx>rraA|db{v)sqH7#g2N-)) z=0~E-AOyrEjQtoCgJkUyRJ;fd)y>Grkd%}Zr?#s^_Zodc6{f zMC|fXT3V{=b6uF%<|i?2#;~uczW^Qss$H7ihxPUKQc+PM+1c5acPg%?rY26Cj^g5C zbNm&=)3{fe*7#S5p*Gv_puKv%!NEb<+uO6`-r3oarKKgAnVHeo-o(U&Y;A2>V$_ek zygWS*^jK1p+UJbl@SO%~zI|$r6`#+i(j;AGWo21%LbnaD9}NE+DAl;vT4F0JE0fk$ z6;o4FEjgh(1a8IjIoGKF7qIT9ZEbBTOc! z{VhZPCQ8*O(XykX!!akFqobpi_+T*T7@L-sW{HD_Iz!<<2~^*IZjY0$t}e%%bPfy* zSmGBJ793-9a&jzj(EkT;EyB;Wq4bCBanje<=a`dD?ll~P$;n9>85xONBdTISL4iFl z^^N{NW75BBkCUFB9+f8PvZSQMo|pY^%s;M8_5I)4;}Z72+Xj`DmD%%h{#}jsKi5XY zXv44eIB9QhcPn#XTvb(-JumM_FGTe@2ksd9dnkRD*oKCN1M|9l!8IDw($^L5lRmH= z^HRvMeqx>if|2^t7z4t;zQGwq#~zn)C5atL!u$!co1S5%V2jJ6(AUn1A$s; zY;2U~=4Rnp$8$9|H&?$GB9Em`Yip~%KXrC?n*Dzx&acFc^4)0Nrx3?`-j{&=@Bugu z%z1eid=KQ>{N|X1&%9ULjrXtH06AX;?*raL?t>7x4qgP6fP2-;;7{-t;JE4cJCq4^ z`F%uW-B0cqvciKyUb1PZn+T{LV>`|`T!dTvE*^ftM+$XtL z^St1h#W}+7BYdWhce!&w?Q3{UY!dY76Dp! + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Federation","url":"https://gancio.org/federation","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -268,9 +270,9 @@ - @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/feed.xml b/docs/_site/feed.xml index ed7fe771..61508920 100644 --- a/docs/_site/feed.xml +++ b/docs/_site/feed.xml @@ -1 +1 @@ -Jekyll2020-01-21T01:24:44+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file +Jekyll2020-01-21T22:11:47+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file diff --git a/docs/_site/index.html b/docs/_site/index.html index 3cf52551..ff035ac0 100644 --- a/docs/_site/index.html +++ b/docs/_site/index.html @@ -14,6 +14,8 @@ + + @@ -38,7 +40,7 @@ +{"@type":"WebSite","headline":"Home","url":"https://gancio.org/","name":"Gancio","description":"Gancio is a shared agenda for local communities.","@context":"https://schema.org"} @@ -69,18 +71,6 @@ - - - - - - - - - - - - @@ -100,6 +90,10 @@ + + + + - - - - - @@ -219,12 +203,26 @@ + + + + + + @@ -250,6 +248,10 @@ + + + + @@ -272,7 +274,7 @@ @@ -315,7 +317,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -324,7 +328,7 @@
    -

    Gancio

    +

    ancio

    A shared agenda for local communities.

    @@ -350,7 +354,7 @@ nowhere on gancio appears the identity of who published the event, not even unde

    Anonymous events: optionally a visitor can create events without being registered (an administrator has to confirm them)

  • -

    We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites.

    +

    We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites and via AP

  • Very easy UI
  • Multidays events support (festival, conferences…)
  • diff --git a/docs/_site/install.html b/docs/_site/install.html index 30edc7e2..59967102 100644 --- a/docs/_site/install.html +++ b/docs/_site/install.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Install","url":"https://gancio.org/install","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/install/debian.html b/docs/_site/install/debian.html index 47003fe3..b409deb2 100644 --- a/docs/_site/install/debian.html +++ b/docs/_site/install/debian.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Debian","url":"https://gancio.org/install/debian","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/install/docker.html b/docs/_site/install/docker.html index 3a93e256..6c67a04f 100644 --- a/docs/_site/install/docker.html +++ b/docs/_site/install/docker.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Docker","url":"https://gancio.org/install/docker","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -314,7 +316,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/install/nginx.html b/docs/_site/install/nginx.html index 9573040d..866fdee5 100644 --- a/docs/_site/install/nginx.html +++ b/docs/_site/install/nginx.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Nginx","url":"https://gancio.org/install/nginx","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/instances.html b/docs/_site/instances.html index f45577e9..5f615516 100644 --- a/docs/_site/instances.html +++ b/docs/_site/instances.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Instances","url":"https://gancio.org/instances","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -331,6 +335,8 @@
  • lapunta.org (Firenze, Italy)
  • +

    Do you want your instance to appear here? Write us.

    +
    diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css index b6489864..313386b2 100644 --- a/docs/assets/css/style.css +++ b/docs/assets/css/style.css @@ -10,3 +10,12 @@ .navigation-list-item a:hover { color: black; } + + +html, body { + font-family: sans-serif; +} + +.page-content h1:first-of-type { + font-weight: 500; +} \ No newline at end of file diff --git a/docs/assets/gancio.png b/docs/assets/gancio.png new file mode 100644 index 0000000000000000000000000000000000000000..d53e1632fbb3fea130105b2cc79c4ccc7a93f296 GIT binary patch literal 3576 zcmZWsc{CJk+n*sbS!Qe*#!h5}ni>0+buhA&kR>APWE*3WkZtS(IRF3v1Z!q&bA*p1A> zon`;ga0JJE3@i-*fPXSL_ubi!{*oSMHbBSN0B#@w0HzxNpmiSr z5X4g-U(`7gK-bQj8Uz0PJ;hyB*+&dJ-pnxs01)r}Tfo548|RKlFcE8s0nY&iU}{47 zw`&Ig04^lf*uXYy@)H%8=4mI;A8q$Z*KdS4@`Ap_K+=zS5_ybU$x1OG9+d^~N#k5! z7F4_t+uc4MN3Qj3PLnhf8S_3##5H|=+e}NZUTN(#u4n$xt*x!6c5m08{h6k{|77=w z*+pBac@Ry23o*O)R{lH)S<#$-5TUHXQ>o_^19g*a5Y~7-C3Sf7e5{ol?=#cp<$x>d&9ABL;4LMI!4r=VId2(GXFePphdsEnK@ic+oXp#s!AH9PUAO zc563FW=3c9-3H4BBze2r04 z{LoxM=cqLQYC*q`xX}{`dKn=R7Q`2Ur_J)7!p&bYEgu}mk~ zw{f3T)#Z0cdh=-d$>w3O5j}?6pRT86jU!CPsD5^m9udr}gKq(YsywqlvxWYeWAo6P z3pj?gd|GL6+2CQgiTw-C7z%lApLbV$O$WXI9x%@;f!I8^nI9<_HuN%T0{lx)Vjof9 zzWI(Nl4}=4xWw|265D<9Qp58vV`8^Vp$++0aD#l_nW`GE7#I?Yq|NnCSW&rskfBKm zW~ID&0cjQ5A7r3O9$dLX&Bwe?Z>hg$M3Uqngu{9!u<)-&xzI z7(Aqtkvv^q1H!6dFBwljaw0?_Pa0%=&&eO((ld2fuM64{qRy}4tQt>2u66V*TYWf1 znx*!EuP{qJ1-L$=+n-0PSG@y= zR8lXc!62_!nd`e8ym+UD&R7IdAcr%z>w+gn_miu?fk@F>@)^QZU%XG>aC~dO-Fk63 z-`DODA*wgNwx42CGJ{!4V$3&o}8Au{$=&y^$xP0#s^x-RVGt-J6v!C+>HDw!-poPENwItYPXEYO6_gdXGPVh0TVq)pJvJ`t7qcnd zB-***+u1I-tGQ-l*w|=Ra0WcQzB61Fd|E^E>FW}#L|IN1XF5@8+)z#C_k+wXc8A3; z2WR8FF|e3BT;YSeSI4&H+KjMUlC0FYYj39e&iGhPrCz(dzlh(j z=Bp|K(e2a0YKyf0zile0gHD!RobvBh}w_Jl*86GkY1G zgc!AoQ*4M$sa^FqRv3RFjSGq4A7$FHYsW@sM`DYTPMxHzb$A=W>S+1MOsi&jzN9*Y zSoR4q1nG&MBx}XTs|o&2qH1Lck~Qv5X`wW4Z7%C*@c858tEwUNseu}c)X zOW{(Pp-95QY4_tbJ`d&`;{AL4O(pLtIte_caryHkz;UB54-E=RkPms(P`SLT#O<;| zs!F=Owo{>xc5fxr(G9o}Iy*{ILyfzgW8c0^5lRdKc#$Pq+6P%n7Gxmbl_QL*5UF27 zFO1x>6aSDfpT#FlGNUY~2k48Na~e=f)XE=t$ZNfnj!>g`3?sNPdUf~0D3|oHPYqMk z(MuBBT&KwP=M^=LAAefpYV_H=Q!emUc^@;KF<}Nzet7Wwfxsvet3c*^g%jQ-uAXLV zVaF|sR&bPdA*3BAVuBDnA0623;)2Z<$H4LdTlU}87#HX8Nn$i#d0bIjpzSj8YgF#~EdKUk?JtG+!R?uv4UmTzjay#MYa+HZ+*CU(HY>>m3NAB(VR@l=RbjZf zsRXIq(uYvIyW($r?K9?i_`L=mfkxX`8&)rl6L8*`Pr+QN35jF*KMaz3XL9H7TGXXJ zOw=LZgqIn^DybW)j?^NPT3^|R7*%gOZd+p>bLIY>pVf=T?YM*{R?9+-!W-G$SUc3T(CjQrWXUV0 zEjj(e*$ye}qgcgvI#o{w%EU=HsF}WFolambJUQLTkYSvs4}lI;ldp*H>JA3n7SJf1 z%#OQdF1zeup_6@%p_J2;r2Ig0juDEPEO~R2)}e!gr-m}w8SV_5!CH3_JZeoEpJz}4 znt2i1UHWjb>Vo4wuNh%VdM=)|L3@n$L=4Le{1YA9oH?29s(>>2aXrPp=zi#&hbw1f z;#P_6Mcpb%8`h}QqK9`BGNL~-X63C06BOjt06v;2MaIuxi)4BdC5sv^I>*dk*btm( zZX4y@+*rFhq})E{*3J>kEhL&B*Pj1En6a*9HWdf!`Ox5Ttew@Rg(s;gc9o&JZE0~u zolr9_EyFUH4I4`sqGx0l*|FCR*iY++@T)J)no%(6a*)(MxD!v5dE{Ui^znx|81W@m znJ>@u&LDnp-nqI$164Yzz!kW;SrojjVfhQm>Z0EFR=*?OKZZp4 z;Qy)p6$js1Y(y|Mpu6XsM#nSN;>H)1aF1A6#Y&!XwexAFx9Ch}G>VOsdSp^YRkb>_ zTn-!5M-%Pa*?a|QoEm())!D7N#PxY(YGDwIYd~K`h!5~`wxWQme(-D;{ky;D2+Enf#(#p zpDXF@+nGJFJ3nr?AYOmGGn^B+(>kFS$z9>x&}(TYrJo_r2(o=uqMLnwEY!{8Yu9V_ zPb{09B$vusB8|N5L%O%aRIMdXsu37C=d){m<+_*9B9NNS?VNF>`Mn^PLqH_(+Yq#P zTk-kRZ3~mJ!_~86x?)~Cej@hu;vL3i+!e2j3@J!K=?!T4tvk8T4*YMH9b5A2>#K%5 zTIWX9;&N9oDg7Q}&xuuK#ZMiFo4Ct#KC+rM9vVSz$W4SIr43!VPoIwB;|=A=qR&19 zPv-Pj3M7sje>KT7%@k2_TI8%eP{GD0@LnPhDJ%qL+&~EEu3f_+C;m|v?))WQ9yd~a zw@fg(!@cAc6xZw1S{ zmN4uWgX-ipyzNX2%uZ3sX!yDY6n=d#qA)E0(HkcAk+wWAFH#)q9R3HaK<|83>tbDf zv`)wpF%CpeccPb;2f^zI0B9r{sf0u+p;5MIl$NTBma>Wh5~YPi%JDVc`kz2RkSEUj z*8dNn|1VJRjl=mUApEz3R~XJ)%MeElx!^^(2RGT1yqJrJ`XcD)jWoeBxg-Ho)D-%fc(rhv*AHqckOi#5<03{{Pi4 z<2?T>zxITx9Ley1R)hHi2H0kbb& A-v9sr literal 0 HcmV?d00001 diff --git a/docs/assets/oauth_auth.png b/docs/assets/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..34ea5c00670cfe065649df426fde90a75c1e4b4a GIT binary patch literal 34445 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 literal 0 HcmV?d00001 diff --git a/docs/assets/thumbs/oauth_auth.png b/docs/assets/thumbs/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..b35841176a84d67ca7f3d58840dfe8294c8a7a53 GIT binary patch literal 30094 zcmbTdb97`~_%0aRw%xHhX2-UZj&0kv)3G|XZQD-AX2s5}?|0YyGizqnn!9RMo!V!g zjq`3k&-?61MR^HCI6OEI5D-Ku$zRGKAfN-l|I08?z~7;++XdhS!dzHR7zCs~9{$4+ z5*Q{imQ&0SO2J0eJ)73OEG;ab*SpIsXj;!jl04g6)vqp~MG_fHIPi_yzL) z-zUGjG#PjY+C@rE4Ehih6P*y}Y$Qb*1jLz5>X)#p$HwKhYc{6Z!6;yM>T2!!cl5O# zC@m-~B)DqT=o6qG9())C6%xHutRAwsv(s2Bje&FhU$-7xui$l5{>ujuCgk@0Q*#5a z`|%c=^T~|+%%7wVx2p;=m>?3E*p#Q%n5qggHb`NV5a&D!sqg!?Zw?r-TUcPEzl7jy z?Kf7;#0SiU zv%^MlHMQY0m$@1}iDN$iB;KpdEb!qVk`G5vNU9j(*+6h_mMn%oh3#VM!t2qM{M8F` z{-Sai;s0tzEJ`lwC9cw?zr&>eZn{-Y$C&Uzu*u4y(mimJ^4i>pJ!WohR45&i3tpb2##B_%4egI1M9$UMF#Vq zjl|_33V?~{$|6brdvCnvod=u}wti>=WQbcRu(AMpsgN_5U%6M5r2i$7_SZtWW~4W{ zZ!lfswCSt2#oxGdGRZ^k9fz>A)SMN}8@it{Ufb>eg&S+`-Tt3xVu$jGLZIpBUJjdA z9e_p%Zft0KIU!$K7S_W3V$jh9=UXj;&avzH16VbPSI6RS{m-0v7Yc|2wHnn%Cpqp; zNBzMr5Kj`nZgc0ySaRYd^WrxvE6bNHG%@g`%k>pPb6*@9*FK+9*Bm!`P>G-Kpix%|59KeZGl_DW{K1GH5IU#O|0_cS*|=)Bu3$#ba4g zh<*}t8J*eh$r3r)Y_7!hM)SoAwaUis?Eg&XUnWQi)2rKpaCV&4-qDkLk@eHu)q)0# zWY@_s)im?$vC3{UEjt26M31qG5gW9Z*ncqoCyG$fd_qpnG&nL}-$iY&ytMShy1x2< zZzwp2i#)(TJWSAaFJH2>%ErNws#Z`i1jd*ijfIQ5<-OzUaqYpIFW`<4Z+qEf_g(#=#6h=&8(R2oVJT8e9-N) z(@5}b)*rTZ{vXk3m8rFZ0})g&F7R4up1Xn2r#rphmZk8>$kcp%A5FDqk6r@bAI?~t1pp5Ro{RFDiV-P_Re=`*cm1V3dd7Xhx{ya~VH%i$of%xjfvffP zU%nqKuzdv4q0%{VnnBN895@I~7W4b=sl0BNnp6t8G23>dR?T0RYKY?9k!~jj6Y0d; zuZzF!A)U?nCxTlQ`f7E?y0J^XzwL|ZNOD|CDk_3p&bKGjz9!6_Jznf)$U1gDD2`+E z*v!Qk6%0}wJEFd&t1;ZFHV5YG@&;%r*t2Q;*KTU&XR)Om68{4B_c{F6l~Eytxsqp2 zA7Ou-OdkYINQ1y3Lb)L7$f~K$Td@BU6Z@=ja^)eM&g3xu{`xE>7FN6U-11N$Dv387 z5VgNQ&G_{%mm^yFui;WAy}rk-0Rk>xN?>p}>-o92R-ziFk5Yy4Ibyo=YE%55_a`>l zE*peT=$PG5rYFTVe{SThFD7w4<^)4@Vxwn3Uu0{=jP^|TYV6#3ngd(JM3O3I@kXiNR+J-T3KSk7Vsnc@z9C*SvNemm+V71Ooy6 zqHV`te@s>&u=6PhkFE`|Z!g310J~~~IBwJIbmhli{rnjZ%lbm5PkQN#-5LgOd4dt7 zgW_|w8sczj2O!QK@Y&C!8(%bnllf&C+ztdyj`?*R)?Q`}Q+nBc{YkL&r+~cFfA7H9a zpkm%TTS`20oHS&-sYul*-?Rha(gu3s9YYyJL@!(i|jf9+m!yx{S{`YejG3DSZ6A8CG&0*|ZF zm$zuKrmjn2ecxlMLV${%Qs6WbINHH=&cu73&(Nr|z)6wTGwM+}S)m&7h8T!6Zv2)H zhru!R-KF&n+sR-nE_&8%Z*6;O_oKg!CvdX-ATpg0xowLM0AcF_Lk5|3JpC=H7;*4qy%fQD|f>S_=-2r{YMkN<)6%7 z%3eA|*-sFWuY%0(w(B=}hNFf(`t|Ak=ypR0nqK--2`1PEGX_oz;nW4IXYyy$sR(F1 zIapGVF6F;)Odj@NDYS#3vDJE!xeM`;cRX>gvi{B&uKudQOX=$e9|h6;TIWqE)*Fj{ zRv@XCA}eR`W_euStgrnH!}J903zEMeE1VA9asd3+E)fFnO zAw(^PORS(7Dvt?fN4NH*#h37ph>XWklNfWpb0rxFefALG?4$)0QVIwh|Jv@>XM$?{ zlkt*wUUV+|;@h95b^Jv?km*i-bV!N2l6_3;*Wer-_@Z)tFsh)Ygi7Qh2`czDhf_E( zZQ;f)|KusC=<-dI^xX@dN*93bPa@R!tfHg!_#SDq zl9Z4v&XI}uVikPv%+;9GlxEERnoS^TrIU#lm+UzNdd7p%E4|oaEAQL5$UYiBl{N86 zOt=qFNS`m*o3k^uWOS9M&f{Z?eD%ZDR|{6V*#9lh5x4zrDAKv}feR1pf2hFzrzX~4 z`Qbq#PsxrV#C_(PH~U<&iD4`uS1} zHj<3|U&QRS*h=_(m8Fa_qFpv<0=wD9?5V8JqcHqMWI*{g^$2D(>eOs&g?WcqOox(?D$o|v)tmV(_6FPJBbhdiy3ZnE^CP_!3;$! zHapKl1HMFL-py)?^Jw2%p19!Iv}yU?tO25Qs)5gC#oOY?3uY7Eba}E2Pg6q_6Ut?P zx*8%+PS|&a2fsVt9i#7!M~=1kX!ZlQSHc4-yX{Jn$#}R5s8rEjzvZWt)$-9#{~lof z@n6D)7m1}vBt`?{;K-*LdiQyuq|G4vcqWmRmL_9o#}HGx_3B<)TKX^|=-iGgr0LZT zqo4fPhbd-?PZ!V>ivEYZs0=?kSTv_O71MEM#go%gx)NBJ+vD@7@g;4)9x|aOwgg69 zIPM%%crZu)nVybjvB-13{zeXQ_&ZvWRdeq1vRGkf57MV$wEyrq-NF0YgMdg-60gdO zy3r1Qc9nQ~FD~%;cY>)Z<^#3dh0D?&V1jz)QZ+F_!O||*4(cy@@S=(+&CFy!GWzlLqPKlMZCY+VrLVTB zsjGjTyM~S7QGjK0DX1VSx;Zd>w|~H?uWbUxj5WYfR{e3VVutx%he|)zTIjbQ`P1XN zqr}2<`f8h;mhxOb%LO5Y--Qpx$~1?go!xRhJOMhj4t;CUET5Slg*1r2VG*g9tVk*7 z5h|6UkIk!FLwEcl8M@#P!p!nnGGGxADcOgDY$Eoe>ai8;Y(X!6kQSS=Cryq72KOI$ z(=317PJ_{XhJ}%&%u9owS4;rdQy8QcEE^QXY&FS58QURl;%;7l%Lxx!%L`<_GRC=K zGq?REy8RjBzky7q`JGM$ka9y{>Uz1Q)vE)+?GB%(V$Gu_{`@GN{k_?$>jp@r=d+Oj zLWf$n5$zDE#6-=vhXRXPBISS@d1}Kz5UauM-#!AwrlzK)h-|_AeTU=8-`1~>kB_B@ zlD7wl9^7?zt}_=;92K+is~5i#>6@-OlG>U0WpAhuZSiGv%(_`qJBfUAzdm=Uw~7lY zHiVy}?MoGYuqj3_8jkLLoGn22iVj@Y9XNbG#5GJtZsQW<%is^=H?n#=w%BuA!$Y;j$=fjuQNAp`d7Hs?J+{i$kuxZ|x1SXJ!1U}`7D z`fmDdf zt{mhN@kh%VW?#nxxqtZa4?drrdnX~a88l2x>d4ts6vg_FoLH<^=)(~4pE~K@M)2+D znyodw9!?$4;o+7vh>D6gVkye|;d@MRWh^kp0ljx^1_u1?uasQAC|Eg?$!l}yOqeGG z{k9RsmQF4X0XzMPmtbU>&7|VcWxMp#l(VMAwu=ycmy0f|M5Xyn5TyjtR?<+3B|Glx z-AsydGX+LQ+D+6G4sVVX@kGTU*rJn5nj}Jw`behD@*-JHg`Q1;=0jCsq1-Qu$7<5MZ#I0CO@qtYbc7u zA{!MYOU5DohjV8i@_27d_kwOBB0gyGDWrHBg+1!(65g4*66}!)`XFrLBX%>FRHyI| z?SRmTLHl+|MPa_j*Bc~`SWw>4k%coWwxWX0h7-S{VxdCqhu7n|YoTuG;<$nZHGm&r^NMb6k;|NO`S8%^@k)`h`?+mx?Kx+0xc=f1LxmoWOnjVaUBeB8 z)1wFd2LKcp2p9;k7asvWB4h^brrk~ZUVcZ|;cRZ_)Ah#E{|(b)cn{(O{9jgdwEX^g zR#|fyKfE1`dRA2-jNefIZYG;#<;+419}L{Nk*HiYV#Z<4nhpsMN5{vPF*GDyUS0+< zF*8d_Paj>YH=ccJKm%6vD{#gGg-Sw#?QGrr&sGhgHzh1a=*7f@$M+h`#-_~@7?IY< z52-d?Mj&C~)=Aj8Ew86X2+V2i%I(36->ox8LEtsy`{P8=+?)G z)k)`B{?TO(133|qfpvZP|G}n_&e-DO;+>ZnU=BgIz3+=bD8GeD<>|lgWXyWL1)hDL z2?6iV&aSQ;V){%^$=5^&EVh_17!>O>wtqyq0_)dp=A{(m?sT)(N7y!Tou>Q8N-{|X!s4B-<0|5Mce zQ9YkpJ!X>NBthcnju|#3ZwkmGn$Pj{ACudiIdt5KhmRK%ma6bY!(B)ZHHfqK4(2*2 zRYRVQgu*kvpX^L*KLU+p+@V~fcsHYkfVO%`{$S7!c|YkL-VgSx3qdpDB%enKYW~yp zv1B~8qa+tj1dhAX3;os*%Lh1xzpVXiUU12nQkOk8keYY{@B02{1R`rln!&KIqzW{^ zw~2Y1*s1wsmx5NyJIwv*4Z&kFJE?)lyo$lC38c$-eVsiX?N^S`fb@>D+_ zJqJ`{@74l~Z@88;tAxqMHN9Q4!{wig4Erc-=2Iob?XgXzBPus_1$dz68K3*S#c>_+ zf%U^vpN6=O)9+}jRfxW8(_7EIrQ6-u^Z`3Ugy)fdDBG$E3d@$KJK6;FD<&SwUd$wcP~$s zS01X^Z^id*CPD}X-2f^HU8RSM6p{MrAxi9=@Gl$xjsF^*DSIAk@2OqoPkV8SqlST~ z?msfB-o{9p*qmB{uNY|%q`UFb=-V^!uKTe;g1MH1w@K)RuWDR+p7X)1&M?bGL2Aog zh><4eyGu6vg0QAi*F}mqede&0Jv)JS7e+C^vdue8u}E?pjL!7%Qh%Arer!~g){OU( znZJX5)-dh_`2=fUuZvyv{o@()CyD&u9LF|Hd#4kgRb0x`1@`*CulG>wI$jNiR&33` zYUqH7O4{jNAcm(GGhD-eJc(gc;m@d^b1AE_FeMb>6C4~4Cz|r=PPXFEw43y*QQM}ur>^-2Nx0I@*AwF! zroQ;V(>BQ@*37`=kZ}{rEfC&T?1h7m>#8>&(ktq%*;iZTv&~j?+bq|7PbUn#*pLxJ z^X&~$gs!I@mkZ7ib2B+}lM_vfYS5ypVJo;nC7*$5Ct7XZ}m92~B1OBHA4cx}|Jp?=RY9=dXze<0a52RwFSi3d&>Az6R0gRqTA7o4638{g0Y@8~s-JW+TCBs849_ z1SwZB#=Nd4jC;quXEEj`f4Hv+2Ar6Z-;VmYQgFE)Xt&Uc{C+}WYLpaG1rsHdEE|I@ z2l^ZA@ld}H?&LJH;zi&NmG&A?Ea!I}Xp1v~8_VIPCL$7M@>E zhYxfCV?ScpCul$^HKEl$*ZJNYJt+&x5c>rmNpX%q7)zt(QKW_7e~%ueGvfw>;-TV& z${&b}0f#>qc1}MD0yQ~Ds8Cjxr;&)vErGdz4;J}c_YTVO)K`Lt+I}W1Ey`YrTCz(` z+YRm8h>)Hkr?L}U)Jf;<=URAKP$3PC5D*LA+<~%|fr3TJ>SjbQu=4Bagx2pyd*bk( zYc;dQcSOkcco|b#`Z9`*{8G+NtJXns(3*U*dEHloQx^ZdaGs!wZ2IoLZ^;`3J&WI8 zz#Y&0_^yV~F%~eZgI*;niUOXJrk;?1BDzS0#c8(T2voiA;6}KvH=J5kr-&m!j>xn46NiAU`elHER8nkV%Knmx%YZ^SBZ%jhR z_Tg+B!P)~SF^y&_(CA;TkKiodGlBEdMf>?iG|bIXWW*guSK~R!+mNQwK3agDtfv!a zbKi?ZE(Pf~Z;5QqNXiY;U9A){I<8Sa9+7YgtkCT8s-E02c06F{L1U~ktq$kme-_3W zC1v1xt@c>V*q3>3B_2mKSy?;vAqTml^|Wgy1dsCah?0OuStL)!j;ddAdM2kc0tUXIrzFWL3*T9jecq5t z_mSg;U41}SQBO&#dosKqOqNIbkqDabXoiD#qLPFOo*DANX--@EB#>_o+*vkd-5uIJFke+Aguu^ax^UFo6l zJ>+DpcSFolNi&y6=<=Q5MdKpUR_sKr@OhJQg+Z$)66Q!^@j*rZ-~(ovjFFY zkB0Q^MHfz)E!8eL@g-T!8d2jHK^x-AP9>KDz^Ksm({r?Y6InC_CEqVUZ8q}6l+-}1 zO~{O?;)=zjX*@mEUVH`4ujJWB6qU)196Phuu8>TsVF~qZ#F(B2Cc$;T>#rrf4nQ42KFmuZ#Cim1W8KC{MxiVBzk=L`y| zwr#tCfdOWmpuFaN=LWkYI#w?PD#`^H@qeWyFU;O?mbh!3>yd`dl$~oXnu7`VyoKL6 zpFbeqe>S-JV`A&Fhj~oi&`b}sVq9R8FmUopLZ?2;?a77WX!MeX(IKD~vi zU?;S&r#DrL3?t>w`YgEvy&U$|^!;Tz);E*=M`7PzHF5SX7|APVCvB%mRh0?)Cw-|v zGgG(9fdBiuIyPW1jqeSSH=cRgz#X!_qGHX4Gh6<|pkX?R0ychB)WhRtM*!hFq(P%Xn1i}|C4)v0CnB%F{^h=vsn^ys-64J@!P5))1+ zZ8{`OGm#Qjs|AIKD2!f4vO(6uLh{!A%>SK5N2D(E@Z0la=b0QG4NDjZ3g+kMf&L6M zqc89q+R5Gw2^mQ)RKtQXM1LL8!AKZ*Zosp_Blzy~yTWIeiw-E$FFE2#@aObSTLB@#mp*@1|=2xgsQx8bO>(lhAme#}OPoIn9nd9i{QK^_X zuB(gA9`7vVRgB-fO(9x&jGuZx<6EH+B%}72;QI-8{0Ca#^1YxN|Gn+EVw0TB%dk4_ zw%U3l)nrUYfxAV_k<;dXgp$JSK6*K}>r(fCC()y0q2hjgNr=+7K z_}mUVaD4!e4_25#>sDg+9QhrDFU7l9B@U}-J-RLMdOi|08C*#?443*}kTR{rVsKJM z4;-uWBPo-YCua3}tI4Nl?qp}5FEMDlhKsFv4Rnn$Ygi|aN2cI)Z&6yz{?v&8EVrs1 zammgCUBQaYNZvl0C=n7A5TT?;0>OrC1vjn?he;2<&NRUB{vbm4k(+k;yXVE#bhi6r zYExVTi4_}V^C_17;zTS$!E($swFXJF^nZeEus=YQ#@!>%j|e&UHz3e zk?Oxnvk){PNJp@Y?`$CwgVZvH7$)p;TQCxL<#vR^FwqL`&nFwFa%gwJl`T_iPvI)G z*!UH`h)5+D5Npsga9m+QrSDBiTVj>w`^L&k0ITaij8jODXQD+lS4R&_4a%P+1=R{~ zE+m{}B5TIR3Q8c4U4gf?$DBn078SL6K$TB3)&Se6g~SLB$xemtrOHS2GwN<}WamcE zmF)`fe*1^x_vA^kLN96UhD7xBAg;S`sR~i#5&hI*7GyMS8DQbE%TN|)4%eZ6Z*x}5 zxh$oQ%J#oC5tdD>UV9oul~{MCt4Jy4tPpMPykBjiYZy8r%CX+{Qy6Uqe?0Y*7sQX# z?_S{I9@Fc=GPZh1Vy9j-A`Mj4jmbA0^F59&Uxtt<-)R(2z@Q#>ICJP0ps^qzK6;(H zqjIf6Q=Wv&|727+9nhJ*YR*6Vb98f&<&2cf=-~FKW-l2roc3q);hQxRnKJy*JLlbN z5{C!9WlVSy4}e^EvJzJo_sZ%knA*(z?T#5av(EQ435H0i<0J)dX+jj zRP-N|Xe5SRo)(}D^yL3Cg@9rkNaa27^t>FC7>~pc9Zv3Dwf+c!M=I0_jZ z%3sBYamfC=b45-uFqy{SEp_fos)2M0@v`=EHCi?ExY+8Ae{Qw)(CI;=L~RAf&6|EZ z7^Tv6Bq5>3;}kj`N2Kuc7&d`5D3tSCDm@J|LEi> z1LK#TMU=iXUAF?&;`fbPiHungZ`qHzsxK~bg=E&l6}|sJuz%eKLFmN%0{%$<_QB?c zxwKF`_^Qj+ft_pYt(BxE6Ve%h2t9eqdkHslll{_&Xvuvq_?^@}?3Ve2JCJ(fKIrH| zEpul(v<|PCtR?zAkAAkp_%=ilRhUnMxW^!6u?^YvJ#&G<{dpRL#pBi+AndEN=ggfz zfoRqUTe=unSO)Bp!JsBuBS%i4;~!<<5qwasgIZhY-b%eILP3p(4XvK_mCG|fW)lddmc}x(ky#xHofBb zGUZBs-zuB&eKMZ1on{coMC+f-|49_YvB7u>*)%0*W%wFUE4b|bLqv`e&J#N#VITP zqdBxwtI>*MvvHC|bI<|P49IE`xtSgBCbOqp{Tn*Y;nnQ9)mgb@?ALb+A?!q|x1EII zycriYN9^~zq~UeHGMe49@kvTc;?L6R_Jd#6|C4~ic3q*nQmr*zk|P1QpwDnp(q>gqu^EBxk)^ z$54roJS?l#Z}?=AUgv!e)q<^B^qk6eGFvMN|Cy9-);rh&MlHU{ zBH;I}Ch+3Lq3^PUac%l|&T%sYMru&30XwYu58_ zB0`8JqUzD5$@T~X0e?gER2QpAm05+eTcg*s*PYd;rkr1c+m*>pE5ML$Aq2EQ*6;_o>mieW&d=2q zw(E(>h^mcgcl@~h(SUIy&{4zOOo8ya6tgy`RRBPPx8E&h)gWU)-kS$q+}#W?RbEvc zT1d(Ehm$GZFWAe`#?4{ z>-&mRSDL#q&nw0D$%IOOD>;-&&RmZhqsAljq?dOffV6u|pEXOu;483CDlcADuWw

    k2b0!XtBv~!Pc5N9*GrK6+EjbOqtK>M!IO<5CjIN)io z>-o|J>4$^M-o5NQRrJ52(ckmgny>2@rixI2{m7~zA4cPKvz%S&eI+kkYv;BN6v~mbJCy)!H;k@YxoKnSaXA-pO1VX@`jC+VqJ~7o)*Pl zQTa(9-ugRn9kLig}`YQxFdc3vC$H^ai*(LJ10jGz0vqiSz4c-a>bC;!LaF$l9pJLGQj5 z8TtmZ(-O%3<6P$}{$bii{vgwPscL%OA=0)bR(k^YABkIa-1glMBmzON2>MwTRw#sD z22DxcMBdRuPqt$_&saq_Il||AKieLQj7Ic)*~sDD0f$*T3;qu%aVaZFs5yN-H|7qb z?nHLIP5gpBjhR16W+^?d@VCB}Sr~iYth5O?CI(!!T*l@A(;Ge|TN}|@@d_i`ejs5D zWYS&VR5m*oU9A#@3Ym#Vym5fMO(s(MU9lvNjH*Nm_w#|i`>Z_&A!P(U$7Rehbn|=N z9jjcQ2kx32o}AFU>0f94`6I+}yB^`OU_2tz|wnwF{e>30S@nR-Jpum`_BiJf;QiIv}8*`}uC52NIv zdi0%Rq;7hmJ9atzXgG^#w+HV~#+U_!4zi$*M zXgv9~{^5RQUFR0lbc$c3q=#@nGIXL-W9)E-Q)fuA)rzh4!HyT`3d?Qfn{1mYz^Gj{ zYRM2bCgJ%@UL@W`9l7En|B|pkCOG=@>ZEJ3bgtDIs@oNtjme!UGucg$p8(MV;Xte!~5MpXT&J+B6~_nWa8K~Pr+o4sN*GwS^OpJ zgUQ-{=to^+#Ql`uHnm2n3hjD#&_J1A7oQhU4_mD{lsN$6yYVYI-Ci_LYc@hATv1u^ zS9el;ftrFBr|TVn2(!D2l&||odfcgG5L5@XucW6IOKR5Byypko!^KiaO$T6VQrrEU z$jgMTo0r4(xZVfXIl_Bauc0DXc}mX@$ip37?b}(Z^^!W;PGUT`V1gZRclR} z4py^Y&E*+hCFd`b>`$ z-s~B1tYs}`wMJEz1hr&f zsaIyV6mje#U!T-z$S7gG-)`dKKM_}BI^N^;=5{6Ybgob?+Z(Z}pFJMijWA`<0anWt zGlW#+dE673a%B)zziG;Mf6MNA*neVr54MaQp^omMkM2*ZUmZpM~H&&;IMsY9DQf4kL28(?``5 z0-gX;sx7X_oKb~q5r+NpQT-q{Y__xhaNI>U@X~#1&prm(URRp;EL4gFCKUb;EF zSc1*^%xcdgkI#O_vfYLRA+*U5ylc$cz2{ee zcb};TJj~?e13nN0@di7bss{bQE zlW$WK_$#K_+m;4j)0-~!{GEjaEAA6eTruV(`iVe=Aq46Z2tt$x2MQZZ+GJ?I z6HI40Uru!1g|c(|CqG)4sol|&f2_kn1W)8>R1^WEv&S>7-E`XX^7!{lZO$i#!R4~^ zg($MqjcZXPCv+<(qd!RRjzrxZ8XRX=2F%Z|7j?t28Y>@t$mDjz{MBIkybk#?0c^W< zkzb;0!xm8_yN>&6!uD2W`J;#pQ{V0wDoS8&{Qa&JoZPUnooS+3*!34}X)z_^Tz77D zh9^o(%s-~RVo$!ZsDA@Gal96tV{HGD-rtfQ`?to;tO|_4GbxnD9-#bqA{1%Bd!^lcv2 z;7U!`A>qy^TNWsjE_rM>vA+w~!@m)PlRh#S3M2#M(*WH3YXr?p+;^U zKeBmz!QgIx_b%}JYBh21YP~%@pDwyMKUq4=L*@%d6$hNu0Z-5Pr(6y&j^dOaPBKCg zn_mYRTn*5Swb-%iLB(UIO#%CZme2cD&bz#hV1YpPg}mj+Geq5HzmuOMd$ou|dwDi7 zl^C#9iq9N2l%EKWh);%_ECq$@0>$=q(CGpAyE<0>v*2gYIdu0w1Oe(tJEq5Fy95&# z9&l|fNM8bMg|0{eOT#ubLPIQm&>eq4$y#Z&sP3p>Z&qC9Ju@?)e}kO9-KSOHzBG~G zZwl97`)^JB{Ge^th3L5Er!@=Uh3Q!9Ap5#3gB% z=UaAQEni6R$dx7+)4YHoGLWgJ5RWQ>dw}zxWwnrWZ!+iR@#LiIXN>!{Zp+UeZ{&5i zMj0r>*w4ew&J!Z;h(Yr@XE)j5hMoh8pm>2g1ImHSl7rc81#S=`H}g#kG<;FocV?Mpx0MtS6llhQY7GzdP`)%EY4-vSyr?KSgB z-Sj&LhjHEt=RJ`ZLeLkJKArSg4n?8hIsymn-Km#b2Gh1oh+^)CuIzDW|GaInLU~)z z{$1eljGnDs-W5K30bV}2E^OJ`_YGWhxFh|y{iwe(rQf!n_{cl-##-a2_5&B1n=I00 ze=K_a)5;uq%>gwlRUb%{=g(yL)sjIH{%{>Y6@C9-{0NhLP zODG^<^0Tt>I8O=*un(nTIl zl;0~W-@jcchHWT=FuOaQt#1z&(^0)*2p^gxDDOS2T;CVw&B;Q~m!LSV9$);t(J%&- zf!k}Hg1`S?V;v&XQJ<8xLplQQOG6i{RtQ|e?QY3O&3L?9;p~@wvlso z!UgmDZveaZueVSp+9vFVPt?S9P7Zi_nZpG@jT9fFsxbi}tI?Y3T-t*NzkE7&&Uln= z-fYdlO7U=5gX59N+frrO9^MwB={YlsnIe~m1Mzl|&hA=s=6S*D0=E@q{Ps8f@xIju zL$eE^Bd(rX*VF=K^n7UZ-`Ur*mu~$ned6!W;vSH|fGBlk8XduO+(toCT5*N;g&_RS zmKRHQ8R#(grMn^9=lKFPnaroFsiY@RxvVBd8^D zcf|t+qVK>JMG?#c9E2_~AdjatZn7q0tngj`q+o-g_;r#+3`c%FzvYZGyN!FX{d13R z!)$1=F*#DftaiUYklaE3HK8;G%;?-{&Km6&+?JIdsCQ>8j+GaquH*`&*@6J`>mtH& zpPa7pdqBJvWX*ePa2na>fy^0?p1c^nKyHBmhqE}s!|Hm1%Zgu0dO2V8(N~eVu_iJa z8iQ}YPYw5=Y5Y;0Rg!$FH(81wZMndisG#o~)`I?)pXl>4=e$^L?0Gp2&CM#9-EaVE z=jTRWVtljr2n_>**Bc&CxaEE4im1YZ0wLs)GIl@bqz7Hre zQ9M-dPWb56$R1#KDb(rl5#94Hwp_PaJGgTgQg^AF0rXw!qR52I{GT;nFH;zzOK@B|+4?AUzvR?fcb`n(JWpW`US29Qk%9-O?@QI3FJR%*J1q_UOSZyuFU z);gtP;KxE#)X)lK;epEOOu|!uP%^~plk>A)76wCB)$gm6 zH!ERkdPK`0Rt;rEM>iKTf@Zs{qTx!Q(>Zp3Gvd4}> zh#ECsR@767!0T1T11stQhHudM2br$p_Jcn?U&YkOc)(GWuxO&3oRtirQc6NjjP{6w z(I{CZvhLJzCC$023QkTF0T3|JXju0$i<6nEQ!!o;2L+Nl7@?}8=*8F7SlK6UKz6( zpofBaDX%OaK=~6RR$e+&OFaQ6MrntZJXp>!Ib0o0xlyKgrCMhJz9eIoH29E`mSPlZ z8`Q5NC)}P@e2A0X3_K%-*J8WzOSzNi()SxQO_PfCWL&1~$9O?qRovJM)vxd~8akR0 z9HP)=hjYJd{aR`|Iyk8$MNGkEwdIgeh}H6mAYCgTlue2p=E2$LBL2e@tfFWc%JIU2 zhPsR~Dyf(A32t@$cmdYHB^r2|X4R#!p$_p|_3@SpS6G|NDd)zls}2a1@_Ocl3*1r=x)NyWoM z=hsva#O#FtHKzO(ijJ2!9j7KSUwB<_4kEEUTTfOt`rs^ySbY-0cAx^|LfT%*c~`G= zYgQGv)}j$GEMRm;ukC9vl>7`(xDHF|`rDtTB(mn-c@M28qdQvMnqL9OG3iG>w7AJy~DE|lh- zA3qDhH-%YJ(Jw;5#Eh%*D6gm(BtVVSaz9sFoyj!D(0GlM87EOi=CY!7m-!_TO8UO7 zs=itGOWfFsOa9!gv%Kc(>=(0`dY#7d?$fLA3OXvfOqmjTmr_J^lrg1R$S?&eHlc`~ zp+MZ6$Nqyr)Z~Svr2K%E6N0%WpWMKMYAU9RdQn0~l28OjpYMX(ya_96jS|=OG8#JJ zQ)dm~cjd>1amI`$%9lGNpXa0r&(1e0HpjQ6#dVh!UpG@AGEtsGOZqGm(DN%Nhe#BE zQe1%6K%dj5sg`6yA;s^=1Bkq^R^{+055~CsQkCzhks$Nn>&HWzILEfz`^>!V0!&qp zJ<)+p`2RT`^8WHbjE|})>sQIbpUM7s6>Acd_a2D!`jqa5MM{>ZQ%EvZ#3bR0tDvLq zh^LUE@=!e<1?-I`bNTBc2@+W<;eUM}IK2aK>>SuJ$1Q|aToZ6r%oDEI3sysz_tK!b zdb=T8v(OK6bW8J|&B8-MP|)r+8EL*7)lTewpWhSjvxM)rRO))%Q;fJpe;z=72QMAl zo4mz5m$8NHIhP^yI-;e!eDnXDx7hmd6Xf9Fc=728BVAA!RpfSkzn!#IyX7rkn9Hfi zX0O`grFP7;jiErr!;2ce>%4{lr1N$Pmq96l(XryqeLeI;C@Ny&#!hj+LbwAJz0+pz zi*_1^&b)vMyeXGn23ygozs z0ydrRzR>4y7dWI&75XBMu&<<4?6Ds8{xzVqt+& z`}gYA3s~UsSQMBK?jNZbzD7(kFi8}Vw_!iZzgLfda&YbHr(ZHpTSfgw&0hecuX&UD zm>CeD+C{$f{k}zun)|ue{hQZu@#;HVyog&u2Nx(S>ZNGW>fPqvB0~R9j4YVW0`SIa`$|B^}1{!cI6&})n0_k66f^>8DhnS8>3b>V5fW4ws_HYf_p)n!Ziqa|&jLx&=44n|hc zJENhNJ?nK+T}kocuV-z4%=J2yc|T|i_D15B*yUKwK^Ht@f%l{XjOzX1RxRy(G0G7V z3hL9Od0Fc9_E=Xl@7z$!?@LPZh!x0-r|m8KvN#*z40N)ASc_QoLNdN3?3%rH+(u@i zTh^y^i!+|1}{*B?O|Mft-nAKF`yB zZ~A;enhadgNOcx@1AnpINSrUo)NRJ8_^PSXb(i4TE?jE8AFNEK+c~Aa}sdB*c>>bV}Vy6yVT>q=Jw+xOWdbY;| z7FsM>xMG&Y%*@Qpykcf%W@fTjmMoUVWHB={Gg&NU{j2{=US1`sN+ln5=EHRN?7ek& zruX(ar+qlTc5i)t#yFtc7rINmL!E4TSF^&%+>5DM@_5;`?C#s=1W=P+&v5gK78 z$YxIuIka^&yE0QyB0rsK9dY2eonBPIzRE{D~2I~5f!q1H@T==mTgynTKV2K!s{np4}dq}=IGfZTCS zEvNlRcKC!#;Bk+rYB*zYRo_Xr%uTQLjF?}`FRgdOpXcL2(>8!=GXJhBwMIbDVNbJ= zCS&3sGcstSnlrp*XMzFtl|6AUm6O~&qMo2 z6vc~|;Ah(*_sie2DUck%(`U?u`O2vcce6Ek;RLXh>ra%PenEz-_l54mwA}qUR}3m7 zkIA2@-UU3^6F;1EgsX}2F$M~@*$7KYlh;*?R!m`jq6Gi(h?-of8tN)cq}`^F6lb*zhW^!8Ll-8 z)3?3&G}CGc?r!Vg@HJxXUAE&p??5*LG$Ig?2Z^B2^_jDNh3GJzk{4w??p;O(OGdv` z9B4NJxjc>DTW^wfVp{hxXYt!L^S?8F^kLep)+1jx7~Avh(Vq^bJqsi_-pJ`Lmtk?} zI-^Rc`zUnc5|Pmd?i7p9b(pz_xyljobSJUbWF=?JCdQzkBeewo#-&Va?BZoR6BB2R z=U=PJ1U)@~x#*p0scLFA>y2 zRA?!!stB$I_4efBryBp65>IyW7A^H;jEVR6g2DjU7lN7Sqhm%|WG35>tuEXI4tS7f ztq%z_j5=k-RTWesA|rXj8k;t1QSq`wOePo=arFKL%$goEE_e+P8u#;rQS(HKdZ5Ee zGBTGxaAfyoi}vQoxbfl}_~9T{1;%jZb> zEl~8*^F`|SP(FH9Hfa8+CnM=pl#NN;H(V*dV$yC4e75a%$F;w`hBkIN(J-tpvv3x8 zA#<$Xp+dRlMlx{@e-D}jI=E~Zo$iJw1HQ>?nbR|(+}3ky>&1IH@wC<_nf#=(!=Ho0 zXEQy(L|;(|S0^o|5eUnH5rZq>(1~De9iekzt_#j2%?vMpFw0TyE-#^QVL>)Kgv0{# ziyB)e8(d?8KBc1jqAhaRRovP?C6N@Q1zS+5?~`;mpSe)NQfYy3)$v3k7ygF#Jpm1C zFbfjKP!_$MTef0J*r`7CU7thVw(gaMp&R1|u+Bk@i>(~ocsF~xQ4V&lY%3nMoQj@= zb|gj=dG+{+>7j|2`6X@$EQF$Tw&lRz<0a~EKynd$CQ1d80Z~BZo2Gk{5kCagmpT4d zK~$02&S;~hzOrQcgE>N^>GwbK7T#*0xAjw~GYKp>1>YM=GJ)T5cl&&?ecZYRWtuSJdL&%ozXar^W=}bXm6bRcN)GaFORisU?qfBJ^ zt8A;@>kG8ryWa>roUmS2eb(V1J#PwcVh9%^fyuQ8l8=)qgf)Sa1iE&VAb|3866VoP zY+2c?+iEUr{8uie&1aEzmWOvXUA7wc>#Ohf+u=h7dxd3gy9|?s6Ji{*qhHiEbXd-Q z4AtdtB^Ez7S)%K;^3n6^Gk|aJN5r0c!-=HxPrf7b%2juTk+=imd0$X~iAwj@q>eX@ zv|X*WcwnSIJJTlS^!ILxaX4if;4U0l6m-)=K>WKCxU{3cUJfhgmRTiAExr^DSggeC z{%{Hte`lGgQ-UffKsz<__|Tw~$T@T#M5^lB&A2CkpD2Y=7=w z!&0M?37wk zT3z|FfPUORx}QO0X&C7Izl#k07ySGG7rxwpTnm)YlUkr4Sj(Cm5eny;+Vk3+B`bEU zI4kZ1A%iSu@ka`g%Rb@0U~XI;fEnzeLEgM`5*tIrb-Sx~7 z?(&)$LVfMl4!rWG>G{)Fi?s(12tT~Nj{f?YVz2gb`k47Pd8-mOvh2C@OM+AN?Wl1v zN1jsO{yLjR3N4A&q)B^bSo!)Yj8H2r@gUz%;JNAZK_ZP!lh&L}OWfqw+b*AH2_x^Xs_si1_pN|dm zYTMcZ!wU=Ehg)8H=P>8jAAEI$YZGq^?ZnkkqUBbHuBTD{ZLX-J9IaGge1wYk&HxDfY4{yfn=Bg&U~(C* z3u=j)_^$q|yESh=uCujHLgz2TXFvr@ngc6MZk5iTq&yTGvzJk1M*9`^(*p-DL_E1{ zDtxibcIpR74|wF{3s|G4<3ut|zZ@QzHT4?Gjs-<+GOGaTMcNICqr%`i^~d3H=!J)KY+M9+>F^Z8Hi!q-G5XB6r3f=#D4@WjCGgREsjRa^hYv5EH8IBFu{C( zb2)Yd=UWxcXV&}Z#ZOr+{9O`t_Xnw8u|EDv!)C}D*c&nP9x(&iy4+z%z!j*e%?TM2 zE@sFio{*I&N#)@1ifL0R?OBt^gym9dIVG-sIZjd{CL#WK7KJ2OW3d+$3aCsx;krdz zt@6%zcw?QPWaE9jcNJYSy}j6-SZ=&Q!0{v=Q3n&?Nt@g=^rgz(2Qxw~e4Cdjtb0Fm z&-mLX9ydtlwDxREwbmVau!dX^Yc+AL zMO!vDt>hxz3_y)(mXzCHaDDb-YWq7qMOwQYBTCDl7Pw72k9z0Nc(YHGQ z&6)<4J~QGP7Hss<-h5_~SDA;k7XverOIPHeHy7agLQUty>~k(SU(`8n(1z}B2~R4H zL@bTWDXrP)K|c5}{Zq%l%Y7J311B1*rl4HD(6*)P{$%=Iw8p0^*$s*euCp^|@cU!Z z=9%#7AFDd9bwkD-I<7FZnGntB^kS$3GBWbQC;#<@R4^zpC54cRl1i$|pr{a9sq)IG zZtna+m+Z-rfGte9<5E|A{O7H_MC@%*2vbDUmqj4;SO_t$I};s zD>uc~bGAGWU$~jb$bDMBR0;E1XrGRcVY-f{pDFA$*>%^0WzQdqh;S8=At7RksJ2E2 zl(h{G_S8_`UAw(Q`bCN+LOOmSLxipQd}>UhuSgDKPu5zVydh*KunPPfcrbPTJ43X~ zN5vxHhc>Ss6omFQL?dW{08A%Xs{6Eu2akujs%dcx`CXHz!TQ&i=C|naw=0z*0nrKue)+{e+I-$_$IgGk zy!-Q*7Q)q;_4?4PQ^Z|mjOi&%fp3pl5bg(091KXDcwV)IYx!-@cdlO;Oq$N#5t=lJ zZ!>K6_#(@dt)oT%G9*Uk|DXWF+sqsPDqxCg=F;FYNRdOeEX{GfTV1Q@c(V{QlzDT4 zTaEe)qxv-hMn6YJQkSIdZgW4C!lAiHgE5QOD7T@uFmR0ng$BPY z9n|?t&E7)@Jau%N_m6KBa{0lOybu;2+LxY|&}_tT$4=_kJt@fGsqv-!Bdg3T6MJNb zT@Og!->Wk3)|0F0*=Kp>$I|V`&3%pDYpY?+?=MX{KL4DZbLxr<$%lAyIdH%*}v!JS`k(`|@CKLyPdxj2q7r^O`ATXjORFn8*h3?8u=tX83( z8l!0GNITs#qM^=X(DWAF>BE$AvCEVd zIsssM-@bO;H*V%9uhCK#c7x*BbnK z%*krzfS#F)Yz)bg&44+RVL5x!x+4Nd3^%fq1}g4a*bHeqnpyg@!zNRh!E!KJwNKO2 zH=4I;zhg0g+fS0aY1Gkp!W|EDuB8}TA?Z^lddUVwj~+pflE}V=uhdbeQ!-0&;C~XD z9+cDUD$1-y$?&1|hkN4i6|4I-pG+}b1wHz8^?e@HeBSS!*6%Hb4r^R+-M_BZY$@jO z=4epp!|D!qJ*3y4_BhHWqGpH$$#FKAk_^z~&W8ex6sHcWsYlDiHN>j|u?*`DK-?Z> z;H05Ly67Ud9QH>(o8Uvc)R`+zdOQKrdlI()o(_P{rhm4R!0!DC={Fv6hYjD=q(Ser zTd{(y1+%8*(x)*6!bNWyS8}-mPH%2{3^aGcNxk<|p#$KR{lNL4GoPg>IPLI3hpSFO zteC~9DI;;Z_$wQeOP?>o>CdB$SF9PIb(cS}(!p+wmxWLmu`CTP-SMviow3c_mRqkx zk-(D@cA#*3pl=Dq}(?dac>c&Yo%wPfwlors;fw1I+@hy6>Ja7cft! z(NaYEcN!`X8q@Cy=cb?1`Cyoxkux@SFW=Pp!Sy~KAr5b?5~_mw1i=O`*vOY}@qSa+ ze?+o?PKJV4#>^96fOd7Fpk2UR7KWu$WVG$3A8MVugf1-XG1_i1Sjaa%*>@Wy@7Bug z+c|U-i;TO5<3qH)lM!0TQSCN*xAbC?*%xm8Nn5OVuqHTXEZ%UEKvPv9&ptN=!uh}< z^3~9$6GTfa9(be0#4?PgqYs(94*rKI9e$YX{##=2)qK_{jn9nsDso%OorM0g!QvOV z*v$wvEW^8`TFtgkp2m03BU(`4JBKYXaV1P4OiP2WHN9^ffzj3JlBQ1ur;z7l12yQ%wFFFWe532fRDeV?QruHN#%sk_9?Gj=YD*m(5*# zS-)eP^HR<8gKse%-q6LQkIcYP3Clg>a#~l%jRqD=r)v=c4{LP3mu92>AjI{j)z?Pa zm!R|`tYiYn=JLGt_p2LGDFTG~+uoQVO;1^g))s)tl(nb151xLjHSf0yzD$P^SDTGz z%zVK748veQa{I=($C1d3sJ8`^%jZb+WU_Z1Jae3OPtqbB(ujNK@&QBAtb#zY`M zS<5bj2Iy}MGJ|1l6{+*X(7H|+pk+x;&jTKF0WJg${l}-)iR(O9fvfCwbwFLrVu(@k zYUwOnvr!cWYS^It5YU-as}Ih8d1A?u^-Btvetgi>8Qh{8++}7(lCY>t-Pp(lSS&fh z*MPZL;`Jz;o(rMb6DE&u{2r%{f6H`xiV((hdy6~Sm>`rSO zMLn&5LAhvFuZA6VIP`-2&WdmqGQoC=oKy)w3b&{h6Q-rPM<@biyb`J%&_{3tY&b5{td;D^|Ir*yuZ{An2$}12?fZUJiw(=&H+J=CLbPc~y78@kift5%1c- z8B9$_KCDV@kh)^aDI+`|v&AwPU2T$JT3S*jlr)-t?gVZSr)DciaR>~S*ZG)VF8_I{f8P&7G zE!~QK&g!MrYstUCB^6Ijr@K2!`gYv&NT^^kHh$)Da98VCc2Ug!PJ-F(25G;^m1W

    Xw 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 oOM#gKZOlMJw>NTiu{8L1pa error "BETA FEATURE" +> Expect bad behavior and open [issues](https://framagit.org/les/gancio/issues) + ## OAuth {: .no_toc } An open standard for token-based authentication and authorization on the Internet. @@ -13,12 +17,13 @@ Gancio supports OAuth 2.0, an authorization framework described in [RFC 6749](ht To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to [acquire a client id/secret](#create-client) and then proceed with normal OAuth 2. +--- + ## Create client Create a new application to obtain OAuth2 credentials. POST {: .label .label-yellow } - `/api/client` @@ -26,7 +31,7 @@ POST | client_name | `string` | A name for your application | | redirect_uris | `string` | Where the user should be redirected after authorization | -| scopes | `string` | Space separated list of scopes. If none is provided, defaults to `write` as it's the only supported scope!| +| scopes | `string` | Space separated list of scopes. If none is provided, defaults to `event:write` as it's the only supported scope!| | website | `string` | A URL to the homepage of your app | #### Example @@ -44,7 +49,7 @@ Application, with `client_id` and `client_secret` ```json { "name" : "Wordpress Event Manager", - "scopes" : "write", + "scopes" : "event:write", "website" : "https://myapp.example", "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", "redirect_uris" : "https://noblogs.org", @@ -53,13 +58,16 @@ Application, with `client_id` and `client_secret` ``` #### List of scopes -- `write` +- `event:write` Grant access to add/update events. ## Authorize a user Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired `redirect_uri`. The authorization code can be used while requesting a token to obtain access to user-level methods. +[![assets/thumbs/oauth_auth.png](assets/thumbs/oauth_auth.png)](assets/oauth_auth.png){: data-fancybox="group" data-caption="OAuth authorization form"} + + GET {: .label .label-green} `/authorize` @@ -68,6 +76,23 @@ GET | response_type | `string` | Should be set equal to `code` | | redirect_uri | `string` | Where the user should be redirected after authorization | -| scope | `string` | Should be `write`| -| client_id | `string` | Client ID, obtained during app registration. | +| scope | `string` | Should be `event:write`| +| client_id | `string` | `client_id`, obtained during app registration. | + + +## Obtain a token + +POST +{: .label .label-yellow } +`/oauth/token` + + +#### Request parameters + +| client_id | `string` | `client_id` obtained during [client registration](#create-client) | +| client_secret | `string` | `client_secret` obtained during [client registration](#create-client) | +| scope | `string` | Should be `event:write`| +| grant_type | `string` | Set equal to `authorization_code` | +| code | `string` | A user authorization code, obtained via [/authorize](#authorize-a-user) | + diff --git a/docs/dev/structure.md b/docs/dev/structure.md index 63266497..413fc273 100644 --- a/docs/dev/structure.md +++ b/docs/dev/structure.md @@ -3,6 +3,7 @@ layout: default title: Project Structure permalink: /dev/structure parent: Hacking +nav_order: 1 --- ### Project structure diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..36b55d4a8ffc0352aa0c8daf717533f6b1b6c4aa GIT binary patch literal 4286 zcmb`KT}WhQ7{|{tXpJAE((XDc=pwc(LSi_2lct0S?uBS#Z5K;{N;h?3c@c`S3sJIW zP|#+(En#d}(p8jQc+rHpt((%KOQ2vZxw@p}M~zy|=+pmy=Da)SoH>qX2cPBVd*(UM z`~2VYey^q-!@pCfH2&4T$kw!znx>rraA|db{v)sqH7#g2N-)) z=0~E-AOyrEjQtoCgJkUyRJ;fd)y>Grkd%}Zr?#s^_Zodc6{f zMC|fXT3V{=b6uF%<|i?2#;~uczW^Qss$H7ihxPUKQc+PM+1c5acPg%?rY26Cj^g5C zbNm&=)3{fe*7#S5p*Gv_puKv%!NEb<+uO6`-r3oarKKgAnVHeo-o(U&Y;A2>V$_ek zygWS*^jK1p+UJbl@SO%~zI|$r6`#+i(j;AGWo21%LbnaD9}NE+DAl;vT4F0JE0fk$ z6;o4FEjgh(1a8IjIoGKF7qIT9ZEbBTOc! z{VhZPCQ8*O(XykX!!akFqobpi_+T*T7@L-sW{HD_Iz!<<2~^*IZjY0$t}e%%bPfy* zSmGBJ793-9a&jzj(EkT;EyB;Wq4bCBanje<=a`dD?ll~P$;n9>85xONBdTISL4iFl z^^N{NW75BBkCUFB9+f8PvZSQMo|pY^%s;M8_5I)4;}Z72+Xj`DmD%%h{#}jsKi5XY zXv44eIB9QhcPn#XTvb(-JumM_FGTe@2ksd9dnkRD*oKCN1M|9l!8IDw($^L5lRmH= z^HRvMeqx>if|2^t7z4t;zQGwq#~zn)C5atL!u$!co1S5%V2jJ6(AUn1A$s; zY;2U~=4Rnp$8$9|H&?$GB9Em`Yip~%KXrC?n*Dzx&acFc^4)0Nrx3?`-j{&=@Bugu z%z1eid=KQ>{N|X1&%9ULjrXtH06AX;?*raL?t>7x4qgP6fP2-;;7{-t;JE4cJCq4^ z`F%uW-B0cqvciKyUb1PZn+T{LV>`|`T!dTvE*^ftM+$XtL z^St1h#W}+7BYdWhce!&w?Q3{UY!dY76Dp! Gancio +# ![](assets/gancio.png) ancio {: .fs-9 } A shared agenda for local communities. @@ -30,7 +30,7 @@ nowhere on gancio appears the identity of who published the event, not even unde - **Anonymous events**: optionally a visitor can create events without being registered (an administrator has to confirm them) -- **We are not interested in making hits** so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites. +- **We are not interested in making hits** so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites and via [AP](/federation) - Very easy UI - Multidays events support (festival, conferences...) diff --git a/docs/instances.md b/docs/instances.md index f67e016a..7d2b7c52 100644 --- a/docs/instances.md +++ b/docs/instances.md @@ -9,3 +9,6 @@ nav_order: 7 - [gancio.cisti.org](https://gancio.cisti.org) (Torino, Italy) - [lapunta.org](https://lapunta.org) (Firenze, Italy) + + +Do you want your instance to appear here? [Write us](/contacts). \ No newline at end of file