From 03f150bb5688be72ae4dfb43fbe6795aae493e6d Mon Sep 17 00:00:00 2001 From: Mark de Wever Date: Sun, 3 Mar 2024 16:18:35 +0100 Subject: [PATCH] Removes arcanist and Phabricator information. (#82115) Removes old arcanist configuration files and documentation of Phabricator. This only removes the data that seems save to remove. --- .arcconfig | 8 - .arclint | 15 - llvm/docs/Contributing.rst | 9 +- llvm/docs/DeveloperPolicy.rst | 4 +- llvm/docs/Phabricator.rst | 441 ------------------ llvm/docs/Phabricator_premerge_results.png | Bin 28229 -> 0 bytes llvm/docs/Phabricator_premerge_unit_tests.png | Bin 25929 -> 0 bytes llvm/docs/UserGuides.rst | 1 - utils/arcanist/clang-format.sh | 68 --- 9 files changed, 6 insertions(+), 540 deletions(-) delete mode 100644 .arcconfig delete mode 100644 .arclint delete mode 100644 llvm/docs/Phabricator.rst delete mode 100644 llvm/docs/Phabricator_premerge_results.png delete mode 100644 llvm/docs/Phabricator_premerge_unit_tests.png delete mode 100755 utils/arcanist/clang-format.sh diff --git a/.arcconfig b/.arcconfig deleted file mode 100644 index e200298f603e5e..00000000000000 --- a/.arcconfig +++ /dev/null @@ -1,8 +0,0 @@ -{ - "phabricator.uri" : "https://reviews.llvm.org/", - "repository.callsign" : "G", - "conduit_uri" : "https://reviews.llvm.org/", - "base": "git:HEAD^", - "arc.land.onto.default": "main", - "arc.land.onto": ["main"] -} diff --git a/.arclint b/.arclint deleted file mode 100644 index 27d838eb153f2a..00000000000000 --- a/.arclint +++ /dev/null @@ -1,15 +0,0 @@ -{ - "linters": { - "clang-format": { - "type": "script-and-regex", - "script-and-regex.script": "bash utils/arcanist/clang-format.sh", - "script-and-regex.regex": "/^(?P[[:alpha:]]+)\n(?P[^\n]+)\n(====|(?P\\d),(?P\\d)\n(?P.*)>>>>\n(?P.*)<<<<\n)$/s", - "include": [ - "(\\.(cc|cpp|h)$)" - ], - "exclude": [ - "(^clang/test/)" - ] - } - } -} diff --git a/llvm/docs/Contributing.rst b/llvm/docs/Contributing.rst index 05521684517524..dc8be93463cec1 100644 --- a/llvm/docs/Contributing.rst +++ b/llvm/docs/Contributing.rst @@ -89,10 +89,9 @@ in order to update the last commit with all pending changes. ``clang/tools/clang-format/git-clang-format``. The LLVM project has migrated to GitHub Pull Requests as its review process. -We still have an active :ref:`Phabricator ` -instance for the duration of the migration. If you want to contribute to LLVM -now, please use GitHub. For more information about the workflow of using GitHub -Pull Requests see our :ref:`GitHub ` documentation. +For more information about the workflow of using GitHub Pull Requests see our +:ref:`GitHub ` documentation. We still have an read-only +`LLVM's Phabricator `_ instance. To make sure the right people see your patch, please select suitable reviewers and add them to your patch when requesting a review. Suitable reviewers are the @@ -185,5 +184,5 @@ of LLVM's high-level design, as well as its internals: .. _clang-format-diff.py: https://reviews.llvm.org/source/llvm-github/browse/main/clang/tools/clang-format/clang-format-diff.py .. _git-clang-format: https://reviews.llvm.org/source/llvm-github/browse/main/clang/tools/clang-format/git-clang-format .. _LLVM's GitHub: https://github.com/llvm/llvm-project -.. _LLVM's Phabricator (deprecated): https://reviews.llvm.org/ +.. _LLVM's Phabricator (read-only): https://reviews.llvm.org/ .. _LLVM's Open Projects page: https://llvm.org/OpenProjects.html#what diff --git a/llvm/docs/DeveloperPolicy.rst b/llvm/docs/DeveloperPolicy.rst index 19b8ddb5245fc3..5d3731d761a3d6 100644 --- a/llvm/docs/DeveloperPolicy.rst +++ b/llvm/docs/DeveloperPolicy.rst @@ -129,8 +129,8 @@ awareness of. For such changes, the following should be done: .. warning:: - Phabricator is deprecated and will be switched to read-only mode in October - 2023, for new code contributions use :ref:`GitHub Pull Requests `. + Phabricator is deprecated is available in read-only mode, + for new code contributions use :ref:`GitHub Pull Requests `. This section contains old information that needs to be updated. * When performing the code review for the change, please add any applicable diff --git a/llvm/docs/Phabricator.rst b/llvm/docs/Phabricator.rst deleted file mode 100644 index 057e5e0a140709..00000000000000 --- a/llvm/docs/Phabricator.rst +++ /dev/null @@ -1,441 +0,0 @@ -.. _phabricator-reviews: - -============================= -Code Reviews with Phabricator -============================= - -.. warning:: - - Phabricator is deprecated and will be switched to read-only mode in October - 2023, for new code contributions use :ref:`GitHub Pull Requests `. - - -.. contents:: - :local: - - -If you prefer to use a web user interface for code reviews, you can now submit -your patches for Clang and LLVM at `LLVM's Phabricator`_ instance. - -While Phabricator is a useful tool for some, the relevant -commits mailing list -is the system of record for all LLVM code review. The mailing list should be -added as a subscriber on all reviews, and Phabricator users should be prepared -to respond to free-form comments in mail sent to the commits list. - -Sign up -------- - -To get started with Phabricator, navigate to `https://reviews.llvm.org`_ and -click the power icon in the top right. You can register with a GitHub account, -a Google account, or you can create your own profile. - -Make *sure* that the email address registered with Phabricator is subscribed -to the relevant -commits mailing list. If you are not subscribed to the commit -list, all mail sent by Phabricator on your behalf will be held for moderation. - -Note that if you use your git user name as Phabricator user name, -Phabricator will automatically connect your submits to your Phabricator user in -the `Code Repository Browser`_. - -Requesting a review via the command line ----------------------------------------- - -Phabricator has a tool called *Arcanist* to upload patches from -the command line. To get you set up, follow the -`Arcanist Quick Start`_ instructions. - -You can learn more about how to use arc to interact with -Phabricator in the `Arcanist User Guide`_. -The basic way of creating a revision for the current commit in your local -repository is to run: - -:: - - arc diff HEAD~ - - -Sometime you may want to create a draft revision to show the proof of concept -or for experimental purposes, In that case you can use the `--draft` option. It -will create a new draft revision. The good part is: it will not send mail to -llvm-commit mailing list, patch reviewers, and all other subscribers, buildbot -will also run on every patch update: - -:: - - arc diff --draft HEAD~ - - -If you later update your commit message, you need to add the `--verbatim` -option to have `arc` update the description on Phabricator: - -:: - - arc diff --edit --verbatim - - -.. _phabricator-request-review-web: - -Requesting a review via the web interface ------------------------------------------ - -The tool to create and review patches in Phabricator is called -*Differential*. - -Note that you can upload patches created through git, but using `arc` on the -command line (see previous section) is preferred: it adds more metadata to -Phabricator which are useful for the pre-merge testing system and for -propagating attribution on commits when someone else has to push it for you. - -To make reviews easier, please always include **as much context as -possible** with your diff! Don't worry, Phabricator -will automatically send a diff with a smaller context in the review -email, but having the full file in the web interface will help the -reviewer understand your code. - -To get a full diff, use one of the following commands (or just use Arcanist -to upload your patch): - -* ``git show HEAD -U999999 > mypatch.patch`` -* ``git diff -U999999 @{u} > mypatch.patch`` -* ``git diff HEAD~1 -U999999 > mypatch.patch`` - -Before uploading your patch, please make sure it is formatted properly, as -described in :ref:`How to Submit a Patch `. - -To upload a new patch: - -* Click *Differential*. -* Click *+ Create Diff*. -* Paste the text diff or browse to the patch file. Leave this first Repository - field blank. (We'll fill in the Repository later, when sending the review.) - Click *Create Diff*. -* Leave the drop down on *Create a new Revision...* and click *Continue*. -* Enter a descriptive title and summary. The title and summary are usually - in the form of a :ref:`commit message `. -* Add reviewers (see below for advice). (If you set the Repository field - correctly, llvm-commits or cfe-commits will be subscribed automatically; - otherwise, you will have to manually subscribe them.) -* In the Repository field, enter "rG LLVM Github Monorepo". -* Click *Save*. - -To submit an updated patch: - -* Click *Differential*. -* Click *+ Create Diff*. -* Paste the updated diff or browse to the updated patch file. Click *Create Diff*. -* Select the review you want to from the *Attach To* dropdown and click - *Continue*. -* Leave the Repository field blank. (We previously filled out the Repository - for the review request.) -* Add comments about the changes in the new diff. Click *Save*. - -Choosing reviewers: You typically pick one or two people as initial reviewers. -This choice is not crucial, because you are merely suggesting and not requiring -them to participate. Many people will see the email notification on cfe-commits -or llvm-commits, and if the subject line suggests the patch is something they -should look at, they will. - -.. _creating-a-patch-series: - -Creating a patch series ------------------------ - -Chaining reviews together requires some manual work. There are two ways to do it -(these are also described `here `_ -along with some screenshots of what to expect). - -.. _using-the-web-interface: - -Using the web interface -^^^^^^^^^^^^^^^^^^^^^^^ - -This assumes that you've already created a Phabricator review for each commit, -using `arc` or the web interface. - -* Go to what will be the last review in the series (the most recent). -* Click "Edit Related Revisions" then "Edit Parent Revisions". -* This will open a dialog where you will enter the patch number of the parent patch - (or patches). The patch number is of the form D and you can find it by - looking at the URL for the review e.g. reviews.llvm/org/D12345. -* Click "Save Parent Revisions" after entering them. -* You should now see a "Stack" tab in the "Revision Contents" section of the web - interface, showing the parent patch that you added. - -Repeat this with each previous review until you reach the first in the series. This -one won't have a parent since it's the start of the series. - -If you prefer to start with the first in the series and go forward, you can use the -"Edit Child Revisions" option instead. - -.. _using-patch-summaries: - -Using patch summaries -^^^^^^^^^^^^^^^^^^^^^ - -This applies to new and existing reviews, uploaded with `arc` or the web interface. - -* Upload the first review and note its patch number, either with the web interface - or `arc`. -* For each commit after that, add the following line to the commit message or patch - summary: "Depends on D", where "" is the patch number of the previous review. - This must be entirely on its own line, with a blank line before it. - For example:: - - [llvm] Example commit - - Depends on D12345 - -* If you want a single review to have multiple parent reviews then - add more with "and", for example: "Depends on D12344 and D12345". -* Upload the commit with the web interface or `arc` - (``arc diff --verbatim`` to update an existing review). -* You will see a "Stack" tab in the "Revision Contents" section of the review - in the web interface, showing the parent review. -* Repeat these steps until you've uploaded or updated all the patches in - your series. - -When you push the patches, please remove the "Depends on" lines from the -commit messages, since they add noise and duplicate git's implicit ordering. - -One frequently used workflow for creating a series of patches using patch summaries -is based on git's rebasing. These steps assume that you have a series of commits that -you have not posted for review, but can be adapted to update existing reviews. - -* git interactive rebase back to the first commit you want to upload for review:: - - git rebase -i HEAD~ - -* Mark all commits for editing by changing "pick" to "edit" in the instructions - git shows. -* Start the rebase (usually by writing and closing the instructions). -* For the first commit: - - - Upload the current commit for a review (with ``arc diff`` or the web - interface). - - - Continue to the next commit with ``git rebase --continue`` - -* For the rest: - - - Add the "Depends on..." line using ``git commit --amend`` - - - Upload for review. - - - Continue the rebase. - -* Once the rebase is complete, you've created your patch series. - -.. _finding-potential-reviewers: - -Finding potential reviewers ---------------------------- - -Here are a couple of ways to pick the initial reviewer(s): - -* Use ``git blame`` and the commit log to find names of people who have - recently modified the same area of code that you are modifying. -* Look in CODE_OWNERS.TXT to see who might be responsible for that area. -* If you've discussed the change on a dev list, the people who participated - might be appropriate reviewers. - -Even if you think the code owner is the busiest person in the world, it's still -okay to put them as a reviewer. Being the code owner means they have accepted -responsibility for making sure the review happens. - -Reviewing code with Phabricator -------------------------------- - -Phabricator allows you to add inline comments as well as overall comments -to a revision. To add an inline comment, select the lines of code you want -to comment on by clicking and dragging the line numbers in the diff pane. -When you have added all your comments, scroll to the bottom of the page and -click the Submit button. - -You can add overall comments in the text box at the bottom of the page. -When you're done, click the Submit button. - -Phabricator has many useful features, for example allowing you to select -diffs between different versions of the patch as it was reviewed in the -*Revision Update History*. Most features are self descriptive - explore, and -if you have a question, drop by on #llvm in IRC to get help. - -Note that as e-mail is the system of reference for code reviews, and some -people prefer it over a web interface, we do not generate automated mail -when a review changes state, for example by clicking "Accept Revision" in -the web interface. Thus, please type LGTM into the comment box to accept -a change from Phabricator. - -.. _pre-merge-testing: - -Pre-merge testing ------------------ - -The pre-merge tests are a continuous integration (CI) workflow. The workflow -checks the patches uploaded to Phabricator before a user merges them to the main -branch - thus the term *pre-merge testing*. - -When a user uploads a patch to Phabricator, Phabricator triggers the checks and -then displays the results. This way bugs in a patch are contained during the -code review stage and do not pollute the main branch. - -Our goal with pre-merge testing is to report most true problems while strongly -minimizing the number of false positive reports. Our goal is that problems -reported are always actionable. If you notice a false positive, please report -it so that we can identify the cause. - -If you notice issues or have an idea on how to improve pre-merge checks, please -`create a new issue `_ -or give a ❤️ to an existing one. - -Requirements -^^^^^^^^^^^^ - -To get a patch on Phabricator tested, the build server must be able to apply the -patch to the checked out git repository. Please make sure that either: - -* You set a git hash as ``sourceControlBaseRevision`` in Phabricator which is - available on the GitHub repository, -* **or** you define the dependencies of your patch in Phabricator, -* **or** your patch can be applied to the main branch. - -Only then can the build server apply the patch locally and run the builds and -tests. - -Accessing build results -^^^^^^^^^^^^^^^^^^^^^^^ -Phabricator will automatically trigger a build for every new patch you upload or -modify. Phabricator shows the build results at the top of the entry. Clicking on -the links (in the red box) will show more details: - - .. image:: Phabricator_premerge_results.png - -The CI will compile and run tests, run clang-format and clang-tidy on lines -changed. - -If a unit test failed, this is shown below the build status. You can also expand -the unit test to see the details: - - .. image:: Phabricator_premerge_unit_tests.png - -Opting Out -^^^^^^^^^^ - -In case you want to opt-out entirely of pre-merge testing, add yourself to the -`OPT OUT project `_. If you decide -to opt-out, please let us know why, so we might be able to improve in the future. - -Operational Details -^^^^^^^^^^^^^^^^^^^ - -The code responsible for running the pre-merge flow can be found in the `external -repository `_. For enhancement -ideas and most bugs, please file an issue on said repository. For immediate -operational problems, the point of contact is -`Mikhail Goncharov `_. - -Background on the pre-merge infrastructure can be found in `this 2020 DevMeeting -talk `_ - -Committing a change -------------------- - -Once a patch has been reviewed and approved on Phabricator it can then be -committed to trunk. If you do not have commit access, someone has to -commit the change for you (with attribution). It is sufficient to add -a comment to the approved review indicating you cannot commit the patch -yourself. If you have commit access, there are multiple workflows to commit the -change. Whichever method you follow it is recommended that your commit message -ends with the line: - -:: - - Differential Revision: - -where ```` is the URL for the code review, starting with -``https://reviews.llvm.org/``. - -This allows people reading the version history to see the review for -context. This also allows Phabricator to detect the commit, close the -review, and add a link from the review to the commit. - -Note that if you use the Arcanist tool the ``Differential Revision`` line will -be added automatically. If you don't want to use Arcanist, you can add the -``Differential Revision`` line (as the last line) to the commit message -yourself. - -Using the Arcanist tool can simplify the process of committing reviewed code as -it will retrieve reviewers, the ``Differential Revision``, etc from the review -and place it in the commit message. You may also commit an accepted change -directly using ``git push``, per the section in the :ref:`getting started -guide `. - -Note that if you commit the change without using Arcanist and forget to add the -``Differential Revision`` line to your commit message then it is recommended -that you close the review manually. In the web UI, under "Leap Into Action" put -the git revision number in the Comment, set the Action to "Close Revision" and -click Submit. Note the review must have been Accepted first. - -Committing someone's change from Phabricator -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -On a clean Git repository on an up to date ``main`` branch run the -following (where ```` is the Phabricator review number): - -:: - - arc patch D - - -This will create a new branch called ``arcpatch-D`` based on the -current ``main`` and will create a commit corresponding to ``D`` with a -commit message derived from information in the Phabricator review. - -Check you are happy with the commit message and amend it if necessary. -For example, ensure the 'Author' property of the commit is set to the original author. -You can use a command to correct the author property if it is incorrect: - -:: - - git commit --amend --author="John Doe " - -Then, make sure the commit is up-to-date, and commit it. This can be done by running -the following: - -:: - - git pull --rebase https://github.com/llvm/llvm-project.git main - git show # Ensure the patch looks correct. - ninja check-$whatever # Rerun the appropriate tests if needed. - git push https://github.com/llvm/llvm-project.git HEAD:main - - -Abandoning a change -------------------- - -If you decide you should not commit the patch, you should explicitly abandon -the review so that reviewers don't think it is still open. In the web UI, -scroll to the bottom of the page where normally you would enter an overall -comment. In the drop-down Action list, which defaults to "Comment," you should -select "Abandon Revision" and then enter a comment explaining why. Click the -Submit button to finish closing the review. - -Status ------- - -Please let us know whether you like it and what could be improved! We're still -working on setting up a bug tracker, but you can email klimek-at-google-dot-com -and chandlerc-at-gmail-dot-com and CC the llvm-dev mailing list with questions -until then. We also could use help implementing improvements. This sadly is -really painful and hard because the Phabricator codebase is in PHP and not as -testable as you might like. However, we've put exactly what we're deploying up -on an `llvm-reviews GitHub project`_ where folks can hack on it and post pull -requests. We're looking into what the right long-term hosting for this is, but -note that it is a derivative of an existing open source project, and so not -trivially a good fit for an official LLVM project. - -.. _LLVM's Phabricator: https://reviews.llvm.org -.. _`https://reviews.llvm.org`: https://reviews.llvm.org -.. _Code Repository Browser: https://reviews.llvm.org/diffusion/ -.. _Arcanist Quick Start: https://secure.phabricator.com/book/phabricator/article/arcanist_quick_start/ -.. _Arcanist User Guide: https://secure.phabricator.com/book/phabricator/article/arcanist/ -.. _llvm-reviews GitHub project: https://github.com/r4nt/llvm-reviews/ diff --git a/llvm/docs/Phabricator_premerge_results.png b/llvm/docs/Phabricator_premerge_results.png deleted file mode 100644 index ce55f231148b5fdce97559b2836c57e73d4e6c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28229 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�#_Gy|oN8T|f5c~&zVEI6__if(7 z{PKi2cs#|>J5zqQ%0XeBn=0%3cfVru#ZV?Q4T&ZHXnI0Vb}WeX$8q;k_T6MDVfS;? zXJ#NJIp=~n;hmQxj(zT**paM@)#Ik-gmcokBI;~)=|`gDXOI#+B*%VN_%<|njd_O7t4Jq_@>}mJE@*2 z)q%&-O_!RC(rQN+RL=y<(UAKQL2cKGTZT3mTv-y*-5Vx9Frjl8shbi0Ydrl15e=z2 z**(Sz2fGR}D@_6{C;YG3uEV~({~IpihH|_zr0%sT_uysEzo6-@UHNlhEz(pu0b@L! zZo*l}VV`wBqHO-M&kBMX3Jl3uto?c8=bIGqiSqIytr z9?*xG!R~Dim*cs_=lNW1l|WrY=i6}a_JclwADA;S!|xGRk|wrmdx$-g(@)W2=y}!B zM$m&j@(6;mObDfT4a{2__vbmTUOiu+jydRm-Yn)^SyG&PNQhXg_YRpQ*uT2VOo{W6 z_pOx7h_bzvo~@I(zeqh#{helLNMs`6(&Yc;%XWhVx+5(ZIBz#iQcaA2Ba^gZ@IhA# z+2)>c^NMx0rx*Aa?H=vTN4-vSDW}_8myf%cSN#Ena2*fS=`T5HXSMgc9}`kp9}1EG z5GF(+(*nF-V;&`p#>(27Io)SOkRs1_vliIuN9Uga#Xvc!qBqZId540E;XVpvf6Nly z<$6P@4CF`!!#}cd5i)ZD%AaH<1o<1*R%q3=^ex8H{VQlvmHr;wX-v^;(VF|^t8oxV z9IRc8(w2Uvgmt|}} zSOZSH=#Dpep#qWheih9bJotCk-ighJv!=6atqs`cTfF~ zas5uT@$mfr2kKJH=&jj)7f7tquW#7@xLK7zai2xv?liF(E_9b7Vu;!&ORPV%{(&O! zb7nZG`Z~_5KM+Nmb6@dwdn^}YNBmHIA`+?rahu%IG>y->Uls^{a;H^BF=w+>*qr8a z52o$w{ zYs->Ye^`^|Cn zWgoZ8(S6+jE{ZF&RaKLxHc2}n|5CqHGFmn&T&(_x1AiNa^T+S>pQd;eu|VauhQ;r)xRo6A$lJH_%>>$oUjFA zHns%iRrBMY_ed)s-oQtN%?q2yhNX4YYjv*+E8I?;C^=%U=PuP|#zrgX6LosF3h(cN zF8d^CIPAA`o+;h#MdF?Q=tP}0-d}5H<|)0_|8uuNYpZP{5Fqys3|^h)+yRYQVOPsa zJ_Vcf4q97jpzMF)-fB~<6pLzIC~l-8f8hd@+a?Hl_YC}I?GDS8OD(W*GVZeK>dIU< zlvt?M!iV-;psZ}Z`(KQ|Lzh~6JdxEMWlyz;02DeBGHkbF6HrCMXN9B<*JsqZ%Nq2J z6Y)!OC4-YGU`38HX11A))|Y^ow<7QXo__zcq9&mwXQAQ~lP*JbFG9db?)cbH_4Tc{ z?oeg3r2)Cr44KP$$=TG9=WbMjpNjFajh-KBfB4c7@7xOE4?FBl03LMeV=uayuZ}hS-|ihl<|XL~0_6dxa8l5}7Y<&$?EQ)nLXa+7Wgu9lia6X@(Qd zcG+7t!l^}O!P76m;`xo}bX)mr>s`dw^B+AqPOt26cc*ZRB6*BrMyR-mphO?$l? zyPN<%il_tDn~gw@SFBpKyhqvH=~JC*5T_~hB=vaL|1NCjX8kX+INZNBA0966*$j7c zE^3Ru+awc@yJA#Um6V%`2N`;b*QHQz2HN}WQ1xxS5aH8ta%wz}KV)!yZCjksZ3+Hp ze6H@b!tC$gc(^{a=(ASp32M9^RI;%~(_rCBih=k3$_RpcC*KV?t=Rs1g$-BUwJSzI zj89K0-}Am$76rP;xaWM#g$h(e#5J9B?O{{KMf}tyUK{GU%;z*>I%9P%I~<;4i(HXx z`lvt->pHJNh~}p7%X5w5jN7c!LNX0T)@PJ3)K23S{yhn7Zsuo&fPdM*-|?DFj|)qQ zD_$f71U4rO>XJP7Zmyk$BSQOPRuvVj)9`qBXNG^NvCmvped~__K`PIdCqPuc$~<14 z!w%qIW|Nk!6ky}o#V!WvD4c6lRY@%YsN=vO{o0nvdufJDg=)%Y&bQyf$TxSAkNa$? zY}$2mvx_mI^y;I-Q;0BYncud={nU`q(*bj^FSJm z=o}B|yD`z>Dxs{~{O5w*9+)+Nq1|^nAKi@LNuoNO6}s<3-id+ILM-lLJ9=X1Rpjf2 zwm{?>e$%I8hCiTymoaoZ_E+AF;nB@&Oj8RU=Z!drwbIQ{kZ(PQXb!_ zW<(ur2x!E4oYPwlmHxP2jx4DuUG<+eepDP8YCP{m`rjRt`6IIjPUO6o zF01+l&l2Z+l|@ixN9Bx8X9P~1^&I+ijD%i+Y%ixY7hVJDTod$*tOc-1{7y-D8eT}Y zSGuE8qBi)Dgsw%_(G_9(ciE(^JWj2u^$7QI-*JcYv|{`+8`s8ttfjwud5RPNki}1e zBlI?!b)jpU=<_mExdwt!FuQy5AoVx;T@=RP_zB z&XPH=0jzGnbavHUI~zt{I`G*m@k`rEGV(Azb2s4SN!hx)Df;KcWkb>}6y zBP>d6vsmp2+pkHRdV|X)7~%!>aeXd$0tUBh>S5XjsJn!qjNlT>GSt|{A{I^!-+pnq zw`FlkD%u!>*fS$=gpJIVl{DQVGc{l1A6I9bY-B!IWGDrB2Lo_)XY|xNvW@m!e`iLY z%9nvhBt+&z;S}&K03egtdnq@f!kxV*_dzLp#$nLppm>dvxBctr`^Oz zg`q6vTeh3GSjuzjc*(r=;?Lbj2F^Zmc7-O-364?-%Pf2GxHE*ptTU?XqV1SUF5vDU zySuE_os9TemaV4vWm@#2)0XHtuR5p4l%Dt+sM5+fNo)hN7N6Rqq_I2@JuCrOHWwx) zO(>NK47O=I46G?^VM&`;F9jW z!uy_c1KZ0Ar5NfpAT!XsCIec6C#ZF6^sPC6W>hRlvB~;yu>|y70zIf%D)2wwib>rT zgB1OT&5`4i9rl4Dult@p`WCz(pOaL7u_UG$>tp&YFFtvX+F3O!ILGTAf?l(O zDIymb900M|_fHa)ocdBkivK%Q=zi9T|!i3OlfA3CW$?=|6a%)k^*+7h?Z(-*{@+^bjMLtapPWnmQ zc;tZQzME}j#^^~{sWe;QMdIN`;t$Z(wkes=gv6=WgqlvR^Aqc<5R)@SukEBNSib#V z_$8wolz%kso`MEM!zW}iF*>f!G+=r@mXY8`@yBTDRXcjv9leHpcb*bZDGoZ3GY_V{ zwT`0H$p23)z|8f~9Cm1k{Kw|fo^fqIw;GrAd)DK=zq|YT3kn+$T0b{iMVoQaEKkQ2 zGIjr}mGa_!{Z~_?$h-5ft*BCiF^dTgF^QV$@K4*qbBeF4D`D^aW{TH%g#)C_hqt{% z?9<~ngYw9E>lY1xz#S;#>OVZN#B~}a$iUXqQBA@p{%OA{oA4|`pjQFyv8uvAp!MUn zoq7arP(A0`M&xz0f1X%9^?V;;mxOut2KB_PGl;SxH_ST>;0{=i*z(u_}Tm$47gHuph zF|o%NN9o#AY&nny&MEY#FGs|7*rl3_ZmiZ9+q$CnF(EFB?x)J1D@&fCwc40wi{jeJ zKA)el_M(&!EZt{7*usyCtN5SiqT?_ix@QPWTMz(?T-ngR5n2W*$oWy_f9YdrZ9pBL+X@M!lwcvKy6q|YXyVq_T)kn+bml5WF zBSd?bU>~u5F>#oxwIXZii)!|!6zOqY3@cr_*Pgcl0xi${@8^#WX#J6U`IsV8zw;L_ z?=~&d@c7&`a_{%ECCDQ_95)o$H(PyA@xI0x8+w*U;Hy>dx)I6=Y}!(y%|ML}^QMsb z*P>S-6)CT$xtbwB=Kd|}U*e$1jM*_ywS`fN_tp&SzfZhaNv*&`SyMtZWre{hZI_bnkkT-xsbWVf zayyq?GbZn9d!s2=Ogy1}Ux$L|OjhAIC_}AISVR=ot_=|o)UM|lJ(y`%?Mov*Y^reC z>Bc5Ry5Gln(=$q3zV5=Z0jd?P=j)dimO)Dxv%7MgXK`r5fl@jey4Ow^1@*D!IPyNO8q@sKw7Qo;}!c>ihb=h(;Yjd%-Qlcorl#Y z;3YA4T%aM-x9dl5yBjCQzJA%?>tF-KbZa|0KULL)q!|obybdDI&!y71k_#!IXTJJ1 zsM^X`?aUNcYPG;5v6gGBZTc#$G>Wy!*O|Cd3|S1KvL$}lTXQ0qdwIY#TA(_pz9Srw zdZ%^rtl~U;mUvrGF!ADKK3uBoO*~aKdiV8F{~HD>WJ2YVQA(Wj1gPmPN4neKG3Q3BU~FqFX=;Y( zsM~dus&|^AayfbD-?KcNm%XlGNmcfYCIBOC?*~;FppS$QXq48d7vV{XQ5V9TjBH5y zaj0!0^PqpGAH=7N#*9v7uj@2_itG;*STSl|W65#%|2lZa4FCX?Oej&z=zJ}{fx)B; zx@r`a!%G33;y(uKsRnjR(a}==CFV9+ z?%Yga-eH((1I_ z2~sDl3`nGO?XA;UoVMh3$)kQl;u+k*?#O7=z6x#lg`pE5vr0z7PRrKoRj^5xE}oi0 zDtnW~Ux;asTyZ_0*udN(sU>}2WzCY}o8ab%TpSjJCWpqL9xtc?X5cTL?gzaCd!L6Y-TTmyYCPwo&q&T$$ym)fC?6hrJpJD-{GTGv z{`&@P2JA`ctcGIyZA*F|e2>0MtrFm}99mreRjH0%`k;G9=5IHs0RW0H0w1@W*!<3Z zFW<_qVQ0Q7PIYYD7;J;LX)s|Q($p2_4j0A6I_ZXl zgjn}0DafM6(%Z#kAX8EtQBYCSAwy)kb-FCuR1{;LhT@;^%m&H{3$3~=6H`?QCDuD@ zLvP}!k!;fb`+J$~?duOe<6MO?M6tWGgGK+M2+wm;51-{{u>=6Ay;m@i&Vbt4H5u)E zb9k4+Sr#K5pFVW*?JYw>a%JX)QQ@@MumZ0mAjZ5Me<&(-U3IPbH!+>HMum}F$6o=` zQ~|+S&IGH&$D?XG1J65|3ij*`f7!ojkjJU1A6UolSJy9y!|W2mQ+nws)$!JbonJ2a zV{vx(aa3_M&S9oWW-h1NE2ZMNlBn=g;!{j9ck9F9L{m*J4u1EUn{~GOfYVaVahOeu z=+3J%o>NzL?;8r^*tPWBBiCo<(7x&e+{E%Axx%*)%?9@ZGb_hOY-onrx5c`*vKJDl z^v1O2ZFk6z4?Kmxx)-`S)CvR$u?D6pk!S0Da#en;Qc8B9p+<|dFcpQ^#BEmY!PF`8 z(2({6Wv&$iBgv1Qg+>aAib~A*K{O?22{hV^SLR}g4vp1r63YK={k2L{#&^HF2N;7VVy3V& zE_44z-DUyS>)Sh`7*VFUlwGaOa!@i#5t*ZP_0)OOBfD|9fTV|be9_`(X=L<8GQ(rq z;{T^v_gsjHkS%R0zD5E>LA)hk28XzuX7+Hi=v6)2DO$f>9B7n-mg z&-R{GWib%}gxDesC{{TT8nm;TgVR(ZGSHW>YKvC^YsT?}P1$Tb#h;BCfXAtS&SPk* z+fIiK-tHagZHU#X&BH30arne$@$+FzdLs6JFp>(b-PRUOEChXPzu_2EzPB8j+MwyT zAFYPmtksk{P~243)%)l=>S)LWhlV80e4WcU`qCAgug?5xYw`fQu};9zw6GA5PQ++^ zpuzrKgAW zXLpq9Q`6&wYj1$~-~p=MmMARO{Lm0`k>-$ix&yRLI2hPQM-b!ID~c8CHOnyac;k-z z*G1UkZkf{$ZF;PkMA263PA($9v`}v9s|%JcSvK*K9)?s*qr8#TdVqW9TV}yd$AJzC zAx2v!Bl2?h=}CvvE)^c@78~RyB{#vA+6CvuAbv?+7qefV(P{P*+?Y@vK+H%xPxS@S zeFHz$Vr@XcRiwyqmSghGc!b+Mp7lQm42Qv8lwSS5Uq&_J^#EQ{Zw6@1?HwZ*SFFq` zGNHY%Pm$Hk$=km|jX!@;sz-HJw8Rj3+TKnO2CP-|sK`?xf4X830suSX!75Jndj|WP zaIbKCYdfPLk6ZqUsxF;&ajrQZO77U9=;T@Yv&Dv)HiO zk!{IuWqQQtvRkP^sbJp2+<)dhDvkiXx((+DfTpit>ve zRo7WLXU=X@IkV<(oQsX(>1xQFKYOl%vx~v+f&67c?C?Fs{rRl3D?}zAN0bn_7fSBw z&|tXV#H)HXSWt0`U^3|0NM|9HvR&F>0p8}ebyXCt33w1}M8lqK0M$#33d%w@#mY@- zG$F|ztd;g$s)?QU^O>VTvsG0q2hCd)ng?s=9k>cxBH`rm;}SrB(+pC)avMYxk@n#eo&4hK)f3(}tUkzVNL=5UYrc zVjxAX&8K<0+&_%SqdRLZ%11w}Ie1j%1={R;dzJv3iNhQ65E0 zYrE$)=lJ0SRb+tU1QF3Ld7XRhd&T>*@%u-VoD(!kMJXPlvG4@XB5;F~cS%Z!M_RRc z7DnL}A7{0<2;chVcpaEgbfuHmjG1N!VgW5N@1CuXlO~MQ;^tmtt?^cJ@!_OhybK6{ zM6#wkjNnGrb@9Oe;V(Is_QM(rR&=Hfx#9O4I>bjna3{{|0!EY~Af^@Xnv~#7aZqDJ8hubi8s;^PA5;B{wRJkQYrSgIroX=us#BceGJA10 zt^)+d#U#2pt_$A@_STS^TKP-{%@GL%?#g|np;PkE;0wC|C2$TrHedNiX)=SP zfbLX(r)g;Scx>EkJG|u6QTo}_rOWz3JMKmlIH=XUIwc<&lDV(E(leh1FVgX}JTIh2 zE&m9K(x9s0jLFm(%l=#!9`b2#XDwEJq&FDXPF!kJz@HO0!8Fu^XJy8__i`_Ftsy!w z|8LjWm6->=fm1?=jk)*q)}jSn?(->6u50WA?7m!Ay$V`OgFw3T{Q!IA4F zRwy|$tr8bNX47M4YsrE!w{(US=9)jo0uyaZ@~X!RYb}1Q?JeNW1qfxlP_yJz@HOZ1 zcHnIOo)_lm=>8?Ndr{eDkCTuBT}$xfH+VEoyn1WyA*#3cRWu{gIyhU(opx?>6KsA=S7Xu zOGm8!6kJbqFdw$30Y*%FZ=7<`=ow$!t!Z~u*03dTXDdNCYpR)d0lfLIx3CpFxED$$ zvxq)ciQe^i8m+P_-CTw3T&PPC5iZQ|$q+UdyjrQbD&o|$AF+nxGbIpG;4#Iy`3rZH zoo8@bt_TIh{4k2iMG3aabJq*@s0gH8BRnEwy3JOC*y(Cc{>r4J$am#tDV8xeNc+Nh zROjO$t#Ni>^vF5}Gn_>%67pQ=JZZ`-m?!?T>81&eD4P>{FGH0v!Mb-^Ioe0!=r=~8 zm2la?Tq`gkz^BJPZRkSpw{3HobfgssS6Demumr$C&e;cE(LIbF6~#X(%=8o`_(gRO z)v->hJL@~cZsI&Ovk5f_(tbDB#VepC2?dH2zo&tVO~&L__vi4?Q&Pj%l6Du@G)|s+ zFKzq!^tWf0zD>ZUAfu(l0?c@O&6@JNowScvpO2g79WZh`>SGGWw?k)0>^9dQ$+gcX z_c*jwm^$wIN<#|@52gjU$5=Yb%c<6Zqw!4n^9=*t^D_%rZjt4kWnv>wsVuC>jqFHj zy7_)(M|%^Md@n@2Q54fIVJ7r~E&vYRkE<9!owZl!fIw+ldw4^=oA|IFWuM4{cd(|Y zr3rw|l(MlGxA5?{2l7$Tv@keGU!lEV*|EWdnt4mt81HG>!}P!Z=tOCSW=9@);Yfq^ zcl)#v(J-vc!~}#Q5Fw8!xQxfC>}iufGjJo$ z$HXn*9;~&+xl@?_d(O6arJJBfKMVN9o4vaZe!PO$1ivNk2-}ZaPXz0o#|&L$Kr`x! zkMd;!SL+Y2iI}bl(}bI#1>p4>HSrxJ#_syTw6=CBGY|?b3UyUU8mgmiG{e~qV{sJ) z0P-70xNEU+Cj!s$Qo`0G*zt~9OKY_Q7qW1i}1KqJrdQr9_@-uuFMEhr2ZiyJz`_b+%XrPzm5n*C@FJ-Jj**f2)hZ$hqDF*nVi|vo-Ty`@obKKMBwE{I*0e0h@BG+rVH3l}o{Dvf{ZQ(yVfAfd)(j`tVC}*#x{6ayZy9Vo?zz z6owfNQ$(>&>_O>Fx?2{C%-r@NOYhbYiZM3Tahc`iY0TW?>WXg0wQ9jw_$bqMd3;;@AJa$n41?8@=?fyQ~ zb}vz&K=M_jbrXm2Vad1HsQZu_BBXpEKFoUXf%f{aD(EcBH=81!Tn@ zfa-J3v9Tgg6#8W5Q$Cgqe>~%`2Fd9Li^k(f7efh% z9*5cwXgI%nD{z;hS|;9Em{BM^gq*7Eh>ylSBXVaB_e0?Qdf{}Nw4us)){Ch6g~}&; zWKeudS&{0RkPt_$TC3cD3g+~Lv@erMAllE7B*);A&($sgDG>!9^@}p#f01qhC1$&d zQivM<1~-45CZPD|M9(5E>rrto;&XdwEDz1EnnG%-kK2rkNW%h0?5h6dG*5 z6t8;-N`kHYR(9HCtTNj{R&l)}d#&%y{V*a+MLO1^KT(jX`y-Z{WG6ditcK)$x?c{2 z8)Of4%gFMU&mCZ0$i(_CdtAzlQ_Iu1C~`FEb+EPF!LTy$ zrs<;Fe52Q1e*bLMcA+fy8`jayGUJG?P>*&Ms)r;&aD_8+2GOgE&kvFd>8yP%YJ@&h z*RpSM630_?PM!TizjBA4d6-r?L4j+fbyVZ0S6-}fH+c2gSE>a0i$`DNM&oIP42tN3 zK5f%9anBM-2rerJpifaQJN_zX^5XlJHy`C`@cx%u6Zu$Vq>4`r4vf%u6(XThFf2CKNf4;yM== zoz~0NEum{ow6`mI;QlRh?w~^m|O1*xgWS`ju=Q`Y7L+T0+&_8|tTHhDKI}Y61hXA~O;9eWf4a;o9?N zBmLwCRq4G|Z9@0r8M@-u2ETo_S3RK|B8;~m4(diZ${v+nJB@9H@Ga>ldS8Cl7z~W< z!)sJDIEW3kcW6q%<8@q6rm{dtAscr%=WEqQHnxQ~U71i}RmQ=Ci3#d1av1ZBIn8bt z>m$x&69^So`Z}+A#WM%1?J4`T55)ru@xmF9V1&xfZPkwSUzhr>awM zK9l^1{p(b6pupkHq`vx8J(zKCHsK|iXdHoqi&mAe)rjxTg^%QlsSdg5u^f=?TXFqo zW;~4rulAB|9u^K89s8`*aeZi`V#W)|+zo%FrrV^@S%4fdXZX|0? znlhKR3s>bhM{XJ3iiREZW%|3fAKNw4r=2Gbue3l3!W^&qSa!E)Hx+RB@dz-37^h$!; zYe@1<<6V+MLLjfIZ?On8vK56ib9XtNP{uuE-IE}zc4ty)w&W}ApHSgz54-G`koI&* z>u7rp#lE+8JOHkW<%09?gG6kvrha-OFc?IbC5^Pcv3?6{U z2<-(ilTG|r*3QhZZOkCq@56#65ZE~gGBOQ;hlE@r&cv)za#sgg(ndao#n0I_W!Rc{ zB+p7|l=q}D8a0x>kpG%2+pPDn3@Uvl0=(ZDt(OM|{0_>Bm~!E2v(wGrF_W{#_?1KF}5$X>>K~%zO%U zhfykMKgZt)ZO9TR)(fHIc4Pu_Cwp{G`u#&owt1ai=T}@Rnx1FJ2LP-QR@eooh`wKN z>_5{T>TJ6nOiBGTNAK!BY^g)8zK0)wq+%tDmHjd_z!+m(&ln`5AC=GX8#m8C;!n4W;EYPby(k2pJUUxK| zDW$*+Qn#JWi7jupevcUo{7))2RWvOIYG52qJeQw6%Vc86;sz1)@9d{RKdAuL_m z9Y^aNIq%#*ZO#+J(ToSPGjV~*G`7KGv-Z$5fwK>&V^^xE!?&CRHEZYkUX2S`c-8?@ zP29c14k(AmWDRBkql@#iJeuw|D~>)MIy}kwC|&2G{r=`V$c&i9aDn9R<)L`f-+t&y zx8-;jk1WiD-jUd89ew1wm}3lH_QH__0I-(uLFBt(m45I3PB9bxf52d{@OkF1c`CRjT%qjoe*9m2 zB+040FP$SM{Lj8MiObsAT?zH!tKxODVj;{9yW=wXC1=;sPFKy*)5!2u_op&v9ffZr z>F-8;)%AA^X8CHj{?Lp#(x3|^ww;b*4l?lRpW4XPgxk$GO@?mFfv822%RYs;Y6HEwMFS@jSY#NN5!0fa;qFK0=;z+L3eyJJnTHV3SAr6*huL~wHoARUY zl+*pG-W|li;1P!S2!|rQo}&srrU1+H%jDjhzS=4# zj>)TtI-YsMSi~$vLw%?T2MrK6@)X%L*N18*i^bUPz9OZy00CF|>aGWi8r^Vx{gZh2 z_b#Siq34>PM~RJzM?+>Xkr%G5cT8mW@QkgS{J`EUJ&-$$tYl`n$1O2qI#GKEHZzaW z%~T@NbU1TWX3%D~2RdDBS~wj~j89{5M^C5fUH#Qn`VQVIa@AdLvk+fR`(xVyh5nai zOZ=j#ZC)Sk&d~6bc2BE(f73fiRC01MO*A&CJvQdppw2hzy@s>zkWI6#3K`4`D)YiU zZ)K2Mrnzxob}jT%kq%j|M73e|O()aTEk&eoyg*FPdciF5PA@_>j(~LhAcFteKx6R> zu!)N`TNWUax=qvtunZfOTUf(j_Rrb4#50iun^>`mxNXMXhFyLV001;0i4%w>J~}nC z65&`ifhy|smE-gWugy4x8t#}ML4+zXI0S84^Qb5qUd(4EGn{OGfQ<-r?rLOZ9md#A zSI8ED1b^yi(f(5>HTn z<^R8GyUUX2X_q)0TNtKumiz^1_ktgrfRx-s=J@x^fTkMa{fQW);u%fe~PV^0EI+EYMaFTe=xPVI||2q zQ6Zu7ejC>MW*B(ArELo*hBx_E!(An{S8d*ynzXU;44czIE@-`{?}rXO|7q%)Xnr5p zTxZxI6@^6f`q7qp6DuCX-rLY16*frC;gW1t$lGSKR{A<(SP0yPML$Y#-%RsAw<}7S zx?-uyNHLM)H|sK4j|g@6ogoe1V+W;>DN>DE@^F41m{rH?!hbKmld6(#;!tIMQ}8sY z2LshR?BS-inJYY2k<`Af_MXROr}zphTaCbo(oi)1K_eWd-A>bzDLJ6s-p_YN#XVi2 z+3TRc-P1s_kI9}`IIpp7>= zUMD8anpNdkJ@7*9PRwEGsnxCCmAFLEtC7OT@WxdOE*8L5C-=4CwHnM4u5g!j*lexIy(!q zr7wq(X)(NZr=IYY}O>x&JsE6Q0Mm5*;+3CW5-D&20izy9?=(TT^qqPST(cMC3-Hh%c z2Wr9Fbr4HD4#T;{7MRKrHxuV&ueHH1HuJ1rgxvyt4BMN0=$#*>`w5;vJ#mkTU(b%= z3eZDcdn|qP6j4)~JpFnd3A%ag{;=)1bp#edqtIv+kJp}`H@|Tg!iZkKIdB4Z2^Pa+ zSC9edK~#-MR(1Q*Z=E`N+jID|YuG?YO1dZPGVcNIuWj|jiOx7V@2j1F^wpzgXk=kw z!BRW8XocU`=P93nF!^9GOqzwzntK?586YO{RaJG<^URkBqVkEq!D^V)+%3HQI-bDA zf18GH;qFO|&j41i56B{V2)55Ox?b zb|Tcb438$egr-Ct7Qm-#;^KZgle3}}KV~~BHIn@6ZUADd=b-zu^O*e6!%+wpXaU|= zcx#^{d+ZZgyE#VYvkLAXkO_6ZSDDpVp{+gkjI(1NS1%l`%{2(E>hVlLrKh6Y>d$xa z9O#d;iUwyFB<&@?SJCJ(Pz>Qj4krfEg?T}-v3nyJ#3Pp5tXvMbHBfX>Tpz!7JQ=_D z`))4Jc{Ab~RjJriF~X!m&=xO+EgGVnd;vA=Q)S1 zR|7{QybAIeWy7VK>Z@4e6;d*v>52kt+FD-MkyO~9O1ZSdM=QvDg&MAHLg0bN`0^T! zEzG|XD>sCkSl&~6W>UUm(Zy0IR(CfOss@}@5wlp_S5*F{0DHct+APKNIbDj&iyzf` zpjD4DVG^#Xec++)tDCWRA2MrrPH^?vtzD~ZI2Ix;c{n~wpOEKGZ_bM(iIPQ^=f|LK z_-n8_|Td>Ix+#Dqr@5e^)q74A(}*UH#x);P|*017>D|5cEZfW z3Xo(Jd=>(r-Zn%tim9tZ=7&GnBTKUd@veDi2GXAEhUe#Pylx(`?kOW#Z{8<{JIlJe zCfKl)*DJ5=EsFhqLZb=NCgfxT25o0vqx-jT@&Zlw zO<+G5xzzER1rY6bBZ#>SoMUK2fLucIdX5j0HTRpqFIG4xyyJJFo-9MJTT`9Jm=%$w z+TVTy9A;py@A)8!UbP2xZ(>xvmb5 z6f{ZvKZxuVayehT{UF2}nwsrA*c*+jbu(1a-%d|7i*AxUd#bBJ#H?OC!CqD;LxZ3i zAmqn`y>ymBoh4fyt9L_KSU63RSyNpeMf#Z%hW$RP!)piyMdqhip+X^?gURHZ=#R*i zycY1$7Tu_T?~J$1+S`he`Xhr~d|FY_y4kQWfS54U6fniPf4~FV4Sm)e{X&PyGr{}Z z-g;o_r0Qc(c0qIZh<|aK+21m|yef$E+Hu%sCS!ZSp+DErVqX-|QU|=-_iY9ayQ)^k zn4>rMxh+>dSr~l_$ZxMaVNifsh!5srTt{Elc3}N{ujOq8OCjxrNe9q91c{^tQQJTh*b@P;po-ca#OF zb$s%8N;))+k3a;FnA#?&Fr+&!k>l7QFP64zl;_mGyH-ykFmmX$xmA{4!3D_1>N<}6 zLgM(lPw6cADGa}mg$d%z&im(ro^s8qk&D^Nqm%8ej9Nr>AWyQP*6Hb~JMy%wk&8S# zmU;LnhF8e4t`wYJL?Mr{BLo=dITuMfs&XYlzg#z(@8?ufLsf({k5F0(A zTix#~>zaHMiEkCRbz(UFi+%-1Cyu4SB&z-45*za;hP}6)nJ_~}rZl7Zk>V)h{(Psg z@+2x@%a?XkjZ97bba@1&RCK2dgtxH7QMIJ+aZQwff>{h7ws>;*LYB(f8o-w()w#Zt zOa-2y4&VG|w;RG)MI z*pz`cHKvVY!{XVQO1};>|JaSyN#Sb_0nmkgerU1ul49$z+bREPC8QeXnwyZ9pYM{A zOt6a~V>++pWHMlB2YbtqEcw`V4Dcy+4!l^gZZwA6k_^Y?a<;t)5b75wAIiE*^d{080HfhHk zel+#kjpXc)lnt|ZU;R&azDK+XW@X_WLO5Nih$RhN#4IkNkEyTOqw*t#vpu=(&GeG~ zrrbXom&ktGWn=p(c{+B7(k<0_H7S-U6T0l5Ss+?0zj3Ecuc z@n@_oj`3hO#85#x==yojhOu(iMpPTR=c9Pg_P(ro*sU)r`Q18MVoy?OHPYCx zZiby!`SG#(J#21o=-#<;PE(OQ?@cP$^+b_vLD_~^dM>xqW3L9w@4WV+^PnS@L*qL| zmv(0bls#)}!j*O%-XM-WjL1e;$+7gY&19Pn`5RnllwLCG29W*wgQF&FrT2BU+%M#HT>DL;mL^MEC&F+Zd^hGmgm8$($>W0*PV)rF*RX{(;*`cZtm)q@iHtwSls7?iy~+q^&9x zg!aiPsJxCf2r|Z38>EJpoa}B5MWXqhFTVM1Du$n)`e937ur9-bvjtWdTI)S5P|7Tl z9bi@Po3Edw_!vC5I1YY(cQ5tq;kWdwI;M4{_F>(2AzEobxNM}Ra@lY<+xbfP?cFy| z8kqCxq6N@yzz&Bt3qBBL0m%$CGE(KLKPsj2{xwMpye7hQ{;CnW(q%ZU0}*+I;}4v= zvzE`5TT##6CvU%8iw`rKEQCdRXhQ=GDY_tYyuw^2*{NIVQbEif^|YEchPOM}hSmky ze_&0;G-|c#bK{+Me%?T6!7);kG$AyHV$u)(W>J8BO&eheSKM9vm-cvbOv}aUDdwpg zEL8AlvUswe9LZTSnHkna2}323W#`qewOHRKt>1jS{T;U(aU?%6p(z}#fGrH!qK|S5 z9(Qsv1SRdeHinO?I9-p)#(O*CJguBg)MoN`B)XEiO)+od?q*GvV_55=U{Q8M-x)MQ zbO!L$jG|2BHCYr-6lfuVkkgUqBv_Q&N~)sW>Me9vHq*}iH`Bix!+ut{iuvW1w{S0T zieqQ_=fkwX3I63#nw_`4)egWtJ9?5aB0ar&y+fm)U&>EsX$uxt)+EyLP;AkC+;cpn zAsLx?5LR;@-&Qtto#@%%I7;AebF2-wSL~G$4Elhi?f{den7_{I~$vWkBg6c zBLe>KI`DauOB~(bzrKB_>pfgfUAS;{qrKH!XJ_=aDDCF!oMINv>F3(|8RN`J2&c$r zgXi?Iaq#gEN!_0(m;)0~9n&tjuapX`k*$t^+Px1Y&x)y&jgr0ii3BERmH7gEHXtpi z?}}4lv9T+Dku$Swu5L?$pX;=tIr2^zVQY7u>F?p4y+D91sHdab!fU zb5%*OaLqdy8UMYLn0Ds?9lvdd(v{KcBDuqce@|N@0^(JbbWJqizW-iY;W|hJ6l9i` zu+B1&rVK2UX62fFLIWhKdY|-0xA(f0xr)-XP(Jl#`E>TA!Bcaux$xZ50|em}kKFSDVNi2iauO#xNZ#n?a6yx-nuyVg&D}iNQ(6^|+?^ zqmC$C(<~2e%@hfoZP=C3`sXOK7-UDR%%aZM&udkT+lzZ*GmOrOnsUyUG;Tv30qO^8 zTMM(>V91XwU$^AfJiBAW8vZ~0{R_VO1$q?6X;;BucZU+29|8Q`U85QJ_RiM=2pdtF zay~W+vNr8%MjMO(F*SfW6Z7k8F7D$O4@msc-)cR@HmMF}fZE{@k70)TCGh^C$eTR( z1LeA_YC};=m&6SbT`O~vR~IR|F~>%ZST^bPJ+0GPV)z$D@C!Ndm(m34b1}2{MRR4%5IcID zPSFrwrwsjuror-Jv(q)lJ@7&rh#Vp^%R7)@*zOQ0dAsL@6QUQ@NWW~At;b|o7 zU4DLPiT|UU@B;yP)*&hJB$$W%BkJkt%?9ZcadC=aXd6Re9Sg5Kg@kXEU*^C?R_tj{ zRDENz0-aZ%q)A4(Rmop-|Lj)q9k94oSUWH)ShL>Mt?gv+NN$}rs|mzQT9R0Mf#xzX7)ZWSU4%dlmwYl;PfckE6-^xYak}QuAzTx#9U<>~$$ocQ$S|CV` zn?&pe$`3yvPuygSuC9Ajt+V!2`DVFo@KOGbdv8qS^z>l}BF%)>7S3W8Pcg<`oTi7e z*UM!@=^|+qm9_4uduqIp%%CZybKeTATD}=Bh-)x7EG?6B_IrptSmrT;G*7x1!~b-o z(l6tgt){@S!{T?U)&g}?x(nmYC+|9p3~*^Cvo*mYO%gwg*QbpRt`bnUx|16S!v+^P ziEt$WzrsY|yuk5MTv1VG>fFI!QT=7BU=uMnZ3=o_8kwIWtQ4tMspfe6q~xy@=OnRs z*&_Y64ZP02n$qF=zM&m>TtjP12Dw`_T!H|fmF>L|m6)T*&PVK<%_n&d#|Oo${0ccS zb;$ggRo{(EN&N0^7$n8u<`zAg&`y!jakQDtuK^j?14PT`N2>6V;s2Wm5_{Fkv(#Tx z02B&?a+p(dP4O{S6~gjH^TZpPGJG)3NAwK|3Dp3x3R-rPoXLVc^{L9 z*k=IYY_d}7wzjK@1E4~nMuc-_3%uH?<(=eCuI0&+={cyXV$_`f#odkQUjjQ&f~gP? z3PT1ci)PO6pqc+0_w&+U4Op`_73;>@Jf8gMGjF!C)isdSuyv{ z1H>@g>;10e5*@+ZA3V&(e?$?K(%4GhU|0>u3-)l=%b@x5q`7Ps@FHefhs35!z6GUKW3)<2$;posffl^&6m)D;$We*pp1oI)}v! z2tgjmo$D#(YcS25AXBXn6YY>KEsgK}e-J^5N#%ub1=}PEG-JM6m;h>a1^!=#%^!!@ zfs|TC7T4Zp(!AF)TZDbW@)g5R=5s3+WVj}qQ{{yNzd$c)$9MjTK8*1Ggvq=FT1O|& z2>t|w3*>>g*B5DA^w|FNip7p^8#7UZg{YZ!+W|(e0i;y-Q9i-kfayt@+4|-8Qqb28VDKp@~`SWzZAo< zjm)@OPdRJP;yu~gMH~eeUlBrN5+fJYFu32N+kGWF1OF^{C0p04$tBAMu;dMrg8fe z6d)cz+$7-YX^YJza)22Iphir35(J>;*7Td~>evv1q6pUiq-p1B@q?7z__#lkb_~_i z!#{R7RhwLsn)>vAGb93tVj?wJekaig4{kal%vYAll`(@0CR!Z<4;LRcB-q_(;^7L} zDmot-O{zdvo$Ff3&IFwX!_Ta8 zCt?FtOb;6t55Eu8XE{_e0<#z;mae!70S+Fv7P?r|nBteQN_so211KQZZT^kaVqYKS z^;4nrIJZR_z~*R%^zg7e3V|#={%Zv_gaR0EXsgg&6p*2pUGUWRYdvg6XH{W88hV2< zl4BNN#_AE}@MSQrg2GlwJW>0})?8l^1m_T8pS1&Y1l--d4(Gue0#om!^9|et{`kU@ z@v;ptZxnqs*}uHdEsk`r8PGuFG=EoJ>yg6hWq=sxTb27NP;(PnzG$L9!@snJAW)A_ z+{2jDsIvwOjD(zQ;czw0cJo7UxVaglk*IdzP`h@1E5y1rQ&OMH*;b>Xt`iIYP#Ak> zu@pqM-yHwP>7&$7kI%#1`0MY`C1qxYvq(kyYR}pq;Q>AEB*qE45gd{b=P9G1Q~LGF zG;5SlTy#lomm3+~a|S79f_0rFaR)VS3P^tN!1;45aeLcokJxKE`Q9d6utD2h#c>LT zN4CPHM-xtSyqL$i#LHX&TG_s5zB~oht;dRW-R6lD==pWnP!k^dLcQn`lv`;)wkM)Z zpZP)HN$v~qn~Q@apnS&R=u#L@ba*cc!w|9e{DNIR>Pb5XtEnSQ8m4m+IjUn|CkIZ@ zV}47~=4Hh$fBb5=h%Nv8BR~bwTuN0dy%J6g7)rIwD=PE;HNfJu!NO1D0_}bS+c4x0 zciOkAk?WRFhK0~nCw195eQ3MP)+8}0GiDpu!SHdj`)DBVFhpwRxs-YP;u z_3xKL!$f;-z_OOs-+f!Fhp;)HWu^0Xp3?^eB?c3gjAQZ1!<69Urm!T3qIk`AfQ}DsCB|#2>S@m1AQ_fbGO6sUey819_ zvO+~*BSA6{bG7qiS4(y|ZR%>JxQ{9!D^hcp&j%Q0d9FTvpJzGu`*$S>@2_LHQG3{w z8li_5r8gIvl7$(&hApr^(yr4#-)ou>iB2}5sz5LaOsgCvp#9Yo^k;@M?}LW7HePyi z6igSuppaUi8$Vx67rM$+*-Tje&}IuP=L^rDE7?{R;oP){u(UzwtgJ-HNhq4t!N3qT z{F=V+F}*9R>M$Ek@S*D(5WWSH60k*amoZ_ho`%nfPY}upz=nUx>$YR2{t+!;*(5{H@*0}FPu{9yV38FP5@%z}5iPwO zEssifl!a^F`e?*nZ)t!*S^WCc$9PIT(0k)kf3jeOG*vIVv)5O*Ut^D%%aV_RRE@q( z+^rTqlo${BX5KE!i7|IhgE?E@DYea#z20|9x_he5pB66Tk)I5nQdGi7g}4 z5sRu19hsI8!rN>C=)?-yA&ytV2p-<*+R5Dg;FuZYFW>@2;{=tW+1-l9?KEO%BKs+1 z?x!CE!czd=n*NKu)^pPl*6s3~0IY8S3>?nx_(c6U@{VaYJ9y!I60TVE6Ff}W;l!{W zGF$V;(b+{YR1_|pn5!COQgp z+e!;{(-V9JwpT`b5TzV?&X^{PcbPiD?gm0z-2ag`YTTQE{~J^LKUv%VkKHk#;MEH%AcTE3p<+~S}V&&RYSi@@!0szQJDo9j`eGU9CEWPe^ diff --git a/llvm/docs/UserGuides.rst b/llvm/docs/UserGuides.rst index 6fb61f2d3a2526..2eeb076192033b 100644 --- a/llvm/docs/UserGuides.rst +++ b/llvm/docs/UserGuides.rst @@ -57,7 +57,6 @@ intermediate LLVM representation. JITLink NewPassManager NVPTXUsage - Phabricator Passes ReportingGuide ResponseGuide diff --git a/utils/arcanist/clang-format.sh b/utils/arcanist/clang-format.sh deleted file mode 100755 index c8ae017fe751a4..00000000000000 --- a/utils/arcanist/clang-format.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -# "script-and-regex.regex": "/^(?P.*?)\n(?P.*?)\n(?P\\d),(?P\\d)(\n(?P.*?)>>>>\n(?P.*?)<<</dev/null; then - echo "advice" - echo "clang-format not found in user’s local PATH; not linting file." - echo "====" - exit 0 -fi -if ! git rev-parse --git-dir >/dev/null; then - echo "advice" - echo "not in git repostitory; not linting file." - echo "====" - exit 0 -fi - -src_file="${1}" -original_file="$(mktemp)" -formatted_file="$(mktemp)" -readonly src_file -readonly original_file -readonly formatted_file -cp -p "${src_file}" "${original_file}" -cp -p "${src_file}" "${formatted_file}" - -cleanup() { - rc=$? - rm -f "${formatted_file}" "${original_file}" - exit ${rc} -} -trap 'cleanup' INT HUP QUIT TERM EXIT - -# Arcanist can filter out lint messages for unchanged lines, but for that, we -# need to generate line by line lint messages. Instead, we generate one lint -# message on line 1, char 1 with file content edited using clang-format-diff.py -# -# We do not use git-clang-format because it wants to modify the index, -# and arc is already holding the lock. -# -# We do not look for clang-format-diff or clang-format-diff.py in the PATH -# because whether/how these are installed differs between distributions, -# and we have an executable copy in the tree anyway. -arc_base_commit=$(arc which --show-base) -git diff-index -U0 "${arc_base_commit}" "${src_file}" \ - | clang/tools/clang-format/clang-format-diff.py -style file -i -p1 - -cp -p "${src_file}" "${formatted_file}" -cp -p "${original_file}" "${src_file}" -if ! diff -q "${src_file}" "${formatted_file}" > /dev/null ; then - echo "autofix" - echo "clang-format suggested style edits found:" - echo "1,1" # line,char of start of replacement. - cat "${src_file}" - echo ">>>>" - cat "${formatted_file}" - echo "<<<<" -fi