1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-10-26 10:37:13 +02:00

Fix text lint issues

Summary: Ref T5105. This is a proof-of-concept for D11458.

Test Plan: `arc lint --everything`

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Maniphest Tasks: T5105

Differential Revision: https://secure.phabricator.com/D11642
This commit is contained in:
Joshua Spence 2015-02-12 07:00:12 +11:00
parent 5a20daedc7
commit 2a2b47326c
9 changed files with 302 additions and 299 deletions

View file

@ -1,8 +1,7 @@
{ {
"exclude": [ "exclude": [
"(^externals/)", "(^externals/)",
"(^webroot/rsrc/externals/(?!javelin/))", "(^webroot/rsrc/externals/(?!javelin/))"
"(/__tests__/data/)"
], ],
"linters": { "linters": {
"chmod": { "chmod": {
@ -69,21 +68,7 @@
"type": "spelling" "type": "spelling"
}, },
"text": { "text": {
"type": "text", "type": "text"
"exclude": [
"(^\\.arclint$)",
"(^resources/sql/quickstart.sql$)"
]
},
"text-without-length": {
"type": "text",
"severity": {
"3": "disabled"
},
"include": [
"(^\\.arclint$)",
"(^resources/sql/quickstart.sql$)"
]
}, },
"xhpast": { "xhpast": {
"type": "xhpast", "type": "xhpast",

View file

@ -3,12 +3,31 @@
[*] [*]
indent_style = space indent_style = space
indent_size = 2 indent_size = 2
end_of_line = lf
charset = utf-8 charset = utf-8
trim_trailing_whitespace = true trim_trailing_whitespace = true
insert_final_newline = true insert_final_newline = true
max_line_length = 80
[.arclint]
max_line_length =
[resources/sql/**.sql]
max_line_length =
[scripts/install/install_*.sh]
max_line_length =
[src/applications/differential/parser/__tests__/data/*.diff]
trim_trailing_whitespace = false
[src/applications/differential/parser/__tests__/messages/long-title.txt]
max_line_length =
[src/applications/diffusion/ssh/__tests__/hgwiredata/*.txt]
max_line_length =
[externals/**] [externals/**]
; Use editor default (possible autodetection).
indent_style = indent_style =
indent_size = indent_size =
trim_trailing_whitespace = false trim_trailing_whitespace = false

View file

@ -1,4 +1,3 @@
Apache License Apache License
Version 2.0, January 2004 Version 2.0, January 2004
http://www.apache.org/licenses/ http://www.apache.org/licenses/

View file

@ -12,28 +12,28 @@ final class DiffusionGitBranchTestCase
origin/master 713f1fc54f9cfc830acbf6bbdb46a2883f772896 Automat... origin/master 713f1fc54f9cfc830acbf6bbdb46a2883f772896 Automat...
alternate/stuff 4444444444444444444444444444444444444444 Hmm... alternate/stuff 4444444444444444444444444444444444444444 Hmm...
origin/HEAD 713f1fc54f9cfc830acbf6bbdb46a2883f772896 origin/HEAD 713f1fc54f9cfc830acbf6bbdb46a2883f772896
origin/weekend-refactoring 6e947ab0498b82075ca6195ac168385a11326c4b origin/refactoring 6e947ab0498b82075ca6195ac168385a11326c4b
alternate/release-1.0.0 9ddd5d67962dd89fa167f9989954468b6c517b87 alternate/release-1.0.0 9ddd5d67962dd89fa167f9989954468b6c517b87
EOTXT; EOTXT;
$this->assertEqual( $this->assertEqual(
array( array(
'origin/accent-folding' => 'bfaea2e72197506e028c604cd1a294b6e37aa17d', 'origin/accent-folding' => 'bfaea2e72197506e028c604cd1a294b6e37aa17d',
'origin/eventordering' => '185a90a3c1b0556015e5f318fb86ccf8f7a6f3e3', 'origin/eventordering' => '185a90a3c1b0556015e5f318fb86ccf8f7a6f3e3',
'origin/master' => '713f1fc54f9cfc830acbf6bbdb46a2883f772896', 'origin/master' => '713f1fc54f9cfc830acbf6bbdb46a2883f772896',
'alternate/stuff' => '4444444444444444444444444444444444444444', 'alternate/stuff' => '4444444444444444444444444444444444444444',
'origin/weekend-refactoring' => '6e947ab0498b82075ca6195ac168385a11326c4b', 'origin/refactoring' => '6e947ab0498b82075ca6195ac168385a11326c4b',
'alternate/release-1.0.0' => '9ddd5d67962dd89fa167f9989954468b6c517b87', 'alternate/release-1.0.0' => '9ddd5d67962dd89fa167f9989954468b6c517b87',
), ),
DiffusionGitBranch::parseRemoteBranchOutput($output)); DiffusionGitBranch::parseRemoteBranchOutput($output));
$this->assertEqual( $this->assertEqual(
array( array(
'accent-folding' => 'bfaea2e72197506e028c604cd1a294b6e37aa17d', 'accent-folding' => 'bfaea2e72197506e028c604cd1a294b6e37aa17d',
'eventordering' => '185a90a3c1b0556015e5f318fb86ccf8f7a6f3e3', 'eventordering' => '185a90a3c1b0556015e5f318fb86ccf8f7a6f3e3',
'master' => '713f1fc54f9cfc830acbf6bbdb46a2883f772896', 'master' => '713f1fc54f9cfc830acbf6bbdb46a2883f772896',
'weekend-refactoring' => '6e947ab0498b82075ca6195ac168385a11326c4b', 'refactoring' => '6e947ab0498b82075ca6195ac168385a11326c4b',
), ),
DiffusionGitBranch::parseRemoteBranchOutput($output, 'origin')); DiffusionGitBranch::parseRemoteBranchOutput($output, 'origin'));
} }

View file

@ -1,15 +1,15 @@
{ {
"name" : "phabcontrib", "name": "phabcontrib",
"title" : "Phabricator Contributor Documentation", "title": "Phabricator Contributor Documentation",
"short" : "Phabricator Contributor Docs", "short": "Phabricator Contributor Docs",
"preface" : "Information for Phabricator contributors.", "preface": "Information for Phabricator contributors.",
"root" : "../../../", "root": "../../../",
"uri.source" : "uri.source":
"https://secure.phabricator.com/diffusion/P/browse/master/%f$%l", "https://secure.phabricator.com/diffusion/P/browse/master/%f$%l",
"rules" : { "rules": {
"(\\.diviner$)" : "DivinerArticleAtomizer" "(\\.diviner$)": "DivinerArticleAtomizer"
}, },
"exclude" : [ "exclude": [
"(^externals/)", "(^externals/)",
"(^webroot/rsrc/externals/)", "(^webroot/rsrc/externals/)",
"(^scripts/)", "(^scripts/)",
@ -19,18 +19,18 @@
"(^src/docs/tech/)", "(^src/docs/tech/)",
"(^src/docs/flavor/)" "(^src/docs/flavor/)"
], ],
"groups" : { "groups": {
"contrib" : { "contrib": {
"name" : "Contributor Overview" "name": "Contributor Overview"
}, },
"detail": { "detail": {
"name" : "Contributing in Detail" "name": "Contributing in Detail"
}, },
"standards" : { "standards": {
"name" : "Coding Standards" "name": "Coding Standards"
}, },
"developer" : { "developer": {
"name" : "Developer Guides" "name": "Developer Guides"
} }
} }
} }

View file

@ -1,15 +1,15 @@
{ {
"name" : "phabflavor", "name": "phabflavor",
"title" : "Phabricator Flavor Text", "title": "Phabricator Flavor Text",
"short" : "Flavor Text", "short": "Flavor Text",
"preface" : "Recommendations, lore, and dark rituals.", "preface": "Recommendations, lore, and dark rituals.",
"root" : "../../../", "root": "../../../",
"uri.source" : "uri.source":
"https://secure.phabricator.com/diffusion/P/browse/master/%f$%l", "https://secure.phabricator.com/diffusion/P/browse/master/%f$%l",
"rules" : { "rules": {
"(\\.diviner$)" : "DivinerArticleAtomizer" "(\\.diviner$)": "DivinerArticleAtomizer"
}, },
"exclude" : [ "exclude": [
"(^externals/)", "(^externals/)",
"(^webroot/rsrc/externals/)", "(^webroot/rsrc/externals/)",
"(^scripts/)", "(^scripts/)",
@ -19,24 +19,24 @@
"(^src/docs/tech/)", "(^src/docs/tech/)",
"(^src/docs/contributor/)" "(^src/docs/contributor/)"
], ],
"groups" : { "groups": {
"overview" : { "overview": {
"name" : "Overview" "name": "Overview"
}, },
"review" : { "review": {
"name" : "Revision Control and Code Review" "name": "Revision Control and Code Review"
}, },
"sundry" : { "sundry": {
"name" : "Sundries" "name": "Sundries"
}, },
"lore" : { "lore": {
"name" : "Phabricator Lore" "name": "Phabricator Lore"
}, },
"php" : { "php": {
"name" : "PHP" "name": "PHP"
}, },
"javascript" : { "javascript": {
"name" : "Javascript" "name": "Javascript"
} }
} }
} }

View file

@ -1,16 +1,16 @@
{ {
"name" : "phabdev", "name": "phabdev",
"title" : "Phabricator Technical Documentation", "title": "Phabricator Technical Documentation",
"short" : "Phabricator Tech Docs", "short": "Phabricator Tech Docs",
"preface" : "Technical documentation intended for Phabricator developers.", "preface": "Technical documentation intended for Phabricator developers.",
"root" : "../../../", "root": "../../../",
"uri.source" : "uri.source":
"https://secure.phabricator.com/diffusion/P/browse/master/%f$%l", "https://secure.phabricator.com/diffusion/P/browse/master/%f$%l",
"rules" : { "rules": {
"(\\.php$)" : "DivinerPHPAtomizer", "(\\.php$)": "DivinerPHPAtomizer",
"(\\.diviner$)" : "DivinerArticleAtomizer" "(\\.diviner$)": "DivinerArticleAtomizer"
}, },
"exclude" : [ "exclude": [
"(^externals/)", "(^externals/)",
"(^webroot/rsrc/externals/)", "(^webroot/rsrc/externals/)",
"(^scripts/)", "(^scripts/)",
@ -20,254 +20,254 @@
"(^src/docs/flavor/)", "(^src/docs/flavor/)",
"(^src/docs/contributor/)" "(^src/docs/contributor/)"
], ],
"groups" : { "groups": {
"arcanist" : { "arcanist": {
"name" : "Arcanist Integration", "name": "Arcanist Integration",
"include" : "(^src/applications/arcanist/)" "include": "(^src/applications/arcanist/)"
}, },
"audit" : { "audit": {
"name" : "Audit", "name": "Audit",
"include" : "(^src/applications/audit/)" "include": "(^src/applications/audit/)"
}, },
"auth" : { "auth": {
"name" : "Auth", "name": "Auth",
"include" : "(^src/applications/auth/)" "include": "(^src/applications/auth/)"
}, },
"baseapp" : { "baseapp": {
"name" : "Application Basics", "name": "Application Basics",
"include" : "(^src/applications/base/)" "include": "(^src/applications/base/)"
}, },
"cache" : { "cache": {
"name" : "Cache", "name": "Cache",
"include" : "(^src/applications/cache/)" "include": "(^src/applications/cache/)"
}, },
"calendar" : { "calendar": {
"name" : "Calendar", "name": "Calendar",
"include" : "(^src/applications/calendar/)" "include": "(^src/applications/calendar/)"
}, },
"chatlog" : { "chatlog": {
"name" : "Chatlog", "name": "Chatlog",
"include" : "(^src/applications/chatlog/)" "include": "(^src/applications/chatlog/)"
}, },
"conduit" : { "conduit": {
"name" : "Conduit", "name": "Conduit",
"include" : "(^src/applications/conduit/)" "include": "(^src/applications/conduit/)"
}, },
"config" : { "config": {
"name" : "Config", "name": "Config",
"include" : "(^src/applications/config/)" "include": "(^src/applications/config/)"
}, },
"conpherence" : { "conpherence": {
"name" : "Conpherence", "name": "Conpherence",
"include" : "(^src/applications/conpherence/)" "include": "(^src/applications/conpherence/)"
}, },
"countdown" : { "countdown": {
"name" : "Countdown", "name": "Countdown",
"include" : "(^src/applications/countdown/)" "include": "(^src/applications/countdown/)"
}, },
"daemon" : { "daemon": {
"name" : "Daemons", "name": "Daemons",
"include" : "(^src/applications/daemon/)" "include": "(^src/applications/daemon/)"
}, },
"differential" : { "differential": {
"name" : "Differential", "name": "Differential",
"include" : "(^src/applications/differential/)" "include": "(^src/applications/differential/)"
}, },
"diffusion" : { "diffusion": {
"name" : "Diffusion", "name": "Diffusion",
"include" : "(^src/applications/diffusion/)" "include": "(^src/applications/diffusion/)"
}, },
"directory" : { "directory": {
"name" : "Directory", "name": "Directory",
"include" : "(^src/applications/directory/)" "include": "(^src/applications/directory/)"
}, },
"diviner" : { "diviner": {
"name" : "Diviner", "name": "Diviner",
"include" : "(^src/applications/diviner/)" "include": "(^src/applications/diviner/)"
}, },
"doorkeeper" : { "doorkeeper": {
"name" : "Doorkeeper", "name": "Doorkeeper",
"include" : "(^src/applications/doorkeeper/)" "include": "(^src/applications/doorkeeper/)"
}, },
"draft" : { "draft": {
"name" : "Draft", "name": "Draft",
"include" : "(^src/applications/draft/)" "include": "(^src/applications/draft/)"
}, },
"drydock" : { "drydock": {
"name" : "Drydock", "name": "Drydock",
"include" : "(^src/applications/drydock/)" "include": "(^src/applications/drydock/)"
}, },
"fact" : { "fact": {
"name" : "Fact", "name": "Fact",
"include" : "(^src/applications/fact/)" "include": "(^src/applications/fact/)"
}, },
"feed" : { "feed": {
"name" : "Feed", "name": "Feed",
"include" : "(^src/applications/feed/)" "include": "(^src/applications/feed/)"
}, },
"files" : { "files": {
"name" : "Files", "name": "Files",
"include" : "(^src/applications/files/)" "include": "(^src/applications/files/)"
}, },
"flag" : { "flag": {
"name" : "Flags", "name": "Flags",
"include" : "(^src/applications/flag/)" "include": "(^src/applications/flag/)"
}, },
"harbormaster" : { "harbormaster": {
"name" : "Harbormaster", "name": "Harbormaster",
"include" : "(^src/applications/harbormaster/)" "include": "(^src/applications/harbormaster/)"
}, },
"help" : { "help": {
"name" : "Help", "name": "Help",
"include" : "(^src/applications/help/)" "include": "(^src/applications/help/)"
}, },
"herald" : { "herald": {
"name" : "Herald", "name": "Herald",
"include" : "(^src/applications/herald/)" "include": "(^src/applications/herald/)"
}, },
"legalpad" : { "legalpad": {
"name" : "Legalpad", "name": "Legalpad",
"include" : "(^src/applications/legalpad/)" "include": "(^src/applications/legalpad/)"
}, },
"lipsum" : { "lipsum": {
"name" : "Lipsum", "name": "Lipsum",
"include" : "(^src/applications/lipsum/)" "include": "(^src/applications/lipsum/)"
}, },
"macro" : { "macro": {
"name" : "Macro", "name": "Macro",
"include" : "(^src/applications/macro/)" "include": "(^src/applications/macro/)"
}, },
"mailinglists" : { "mailinglists": {
"name" : "Mailing Lists", "name": "Mailing Lists",
"include" : "(^src/applications/mailinglists/)" "include": "(^src/applications/mailinglists/)"
}, },
"maniphest" : { "maniphest": {
"name" : "Maniphest", "name": "Maniphest",
"include" : "(^src/applications/maniphest/)" "include": "(^src/applications/maniphest/)"
}, },
"meta" : { "meta": {
"name" : "Meta", "name": "Meta",
"include" : "(^src/applications/meta/)" "include": "(^src/applications/meta/)"
}, },
"metamta" : { "metamta": {
"name" : "MetaMTA", "name": "MetaMTA",
"include" : "(^src/applications/metamta/)" "include": "(^src/applications/metamta/)"
}, },
"notification" : { "notification": {
"name" : "Notifications", "name": "Notifications",
"include" : "(^src/applications/notification/)" "include": "(^src/applications/notification/)"
}, },
"oauthserver" : { "oauthserver": {
"name" : "OAuth Server", "name": "OAuth Server",
"include" : "(^src/applications/oauthserver/)" "include": "(^src/applications/oauthserver/)"
}, },
"owners" : { "owners": {
"name" : "Owners", "name": "Owners",
"include" : "(^src/applications/owners/)" "include": "(^src/applications/owners/)"
}, },
"paste" : { "paste": {
"name" : "Paste", "name": "Paste",
"include" : "(^src/applications/paste/)" "include": "(^src/applications/paste/)"
}, },
"people" : { "people": {
"name" : "People", "name": "People",
"include" : "(^src/applications/people/)" "include": "(^src/applications/people/)"
}, },
"phame" : { "phame": {
"name" : "Phame", "name": "Phame",
"include" : "(^src/applications/phame/)" "include": "(^src/applications/phame/)"
}, },
"phid" : { "phid": {
"name" : "PHIDs", "name": "PHIDs",
"include" : "(^src/applications/phid/)" "include": "(^src/applications/phid/)"
}, },
"phlux" : { "phlux": {
"name" : "Phlux", "name": "Phlux",
"include" : "(^src/applications/phlux/)" "include": "(^src/applications/phlux/)"
}, },
"pholio" : { "pholio": {
"name" : "Pholio", "name": "Pholio",
"include" : "(^src/applications/pholio/)" "include": "(^src/applications/pholio/)"
}, },
"phortune" : { "phortune": {
"name" : "Phortune", "name": "Phortune",
"include" : "(^src/applications/phortune/)" "include": "(^src/applications/phortune/)"
}, },
"phpast" : { "phpast": {
"name" : "PHPAST", "name": "PHPAST",
"include" : "(^src/applications/phpast/)" "include": "(^src/applications/phpast/)"
}, },
"phrequent" : { "phrequent": {
"name" : "Phrequent", "name": "Phrequent",
"include" : "(^src/applications/phrequent/)" "include": "(^src/applications/phrequent/)"
}, },
"phriction" : { "phriction": {
"name" : "Phriction", "name": "Phriction",
"include" : "(^src/applications/phriction/)" "include": "(^src/applications/phriction/)"
}, },
"policy" : { "policy": {
"name" : "Policy", "name": "Policy",
"include" : "(^src/applications/policy/)" "include": "(^src/applications/policy/)"
}, },
"ponder" : { "ponder": {
"name" : "Ponder", "name": "Ponder",
"include" : "(^src/applications/ponder/)" "include": "(^src/applications/ponder/)"
}, },
"project" : { "project": {
"name" : "Projects", "name": "Projects",
"include" : "(^src/applications/project/)" "include": "(^src/applications/project/)"
}, },
"releeph" : { "releeph": {
"name" : "Releeph", "name": "Releeph",
"include" : "(^src/applications/releeph/)" "include": "(^src/applications/releeph/)"
}, },
"remarkup" : { "remarkup": {
"name" : "Remarkup", "name": "Remarkup",
"include" : "(^src/applications/remarkup/)" "include": "(^src/applications/remarkup/)"
}, },
"repository" : { "repository": {
"name" : "Repositories", "name": "Repositories",
"include" : "(^src/applications/repository/)" "include": "(^src/applications/repository/)"
}, },
"search" : { "search": {
"name" : "Search", "name": "Search",
"include" : "(^src/applications/search/)" "include": "(^src/applications/search/)"
}, },
"settings" : { "settings": {
"name" : "Settings", "name": "Settings",
"include" : "(^src/applications/settings/)" "include": "(^src/applications/settings/)"
}, },
"slowvote" : { "slowvote": {
"name" : "Slowvote", "name": "Slowvote",
"include" : "(^src/applications/slowvote/)" "include": "(^src/applications/slowvote/)"
}, },
"subscriptions" : { "subscriptions": {
"name" : "Subscriptions", "name": "Subscriptions",
"include" : "(^src/applications/subscriptions/)" "include": "(^src/applications/subscriptions/)"
}, },
"system" : { "system": {
"name" : "System", "name": "System",
"include" : "(^src/applications/system/)" "include": "(^src/applications/system/)"
}, },
"tokens" : { "tokens": {
"name" : "Tokens", "name": "Tokens",
"include" : "(^src/applications/tokens/)" "include": "(^src/applications/tokens/)"
}, },
"transactions" : { "transactions": {
"name" : "Transactions", "name": "Transactions",
"include" : "(^src/applications/transactions/)" "include": "(^src/applications/transactions/)"
}, },
"typeahead" : { "typeahead": {
"name" : "Typeahead", "name": "Typeahead",
"include" : "(^src/applications/typeahead/)" "include": "(^src/applications/typeahead/)"
}, },
"uiexample" : { "uiexample": {
"name" : "UI Examples", "name": "UI Examples",
"include" : "(^src/applications/uiexample/)" "include": "(^src/applications/uiexample/)"
}, },
"xhprof" : { "xhprof": {
"name" : "XHProf", "name": "XHProf",
"include" : "(^src/applications/xhprof/)" "include": "(^src/applications/xhprof/)"
} }
} }
} }

View file

@ -1,15 +1,15 @@
{ {
"name" : "phabricator", "name": "phabricator",
"title" : "Phabricator User Documentation", "title": "Phabricator User Documentation",
"short" : "Phabricator User Docs", "short": "Phabricator User Docs",
"preface" : "Instructions for installing, configuring, and using Phabricator.", "preface": "Instructions for installing, configuring, and using Phabricator.",
"root" : "../../../", "root": "../../../",
"uri.source" : "uri.source":
"https://secure.phabricator.com/diffusion/P/browse/master/%f$%l", "https://secure.phabricator.com/diffusion/P/browse/master/%f$%l",
"rules" : { "rules": {
"(\\.diviner$)" : "DivinerArticleAtomizer" "(\\.diviner$)": "DivinerArticleAtomizer"
}, },
"exclude" : [ "exclude": [
"(^externals/)", "(^externals/)",
"(^webroot/rsrc/externals/)", "(^webroot/rsrc/externals/)",
"(^scripts/)", "(^scripts/)",
@ -19,33 +19,33 @@
"(^src/docs/flavor/)", "(^src/docs/flavor/)",
"(^src/docs/contributor/)" "(^src/docs/contributor/)"
], ],
"groups" : { "groups": {
"intro" : { "intro": {
"name" : "Introduction" "name": "Introduction"
}, },
"config" : { "config": {
"name" : "Configuration" "name": "Configuration"
}, },
"userguide" : { "userguide": {
"name" : "Application User Guides" "name": "Application User Guides"
}, },
"differential" : { "differential": {
"name" : "Differential (Code Review)" "name": "Differential (Code Review)"
}, },
"diffusion" : { "diffusion": {
"name" : "Diffusion (Repository Browser)" "name": "Diffusion (Repository Browser)"
}, },
"maniphest" : { "maniphest": {
"name" : "Maniphest (Task Tracking)" "name": "Maniphest (Task Tracking)"
}, },
"slowvote" : { "slowvote": {
"name" : "Slowvote (Polls)" "name": "Slowvote (Polls)"
}, },
"herald" : { "herald": {
"name" : "Herald (Notifications)" "name": "Herald (Notifications)"
}, },
"phriction" : { "phriction": {
"name" : "Phriction (Wiki)" "name": "Phriction (Wiki)"
} }
} }
} }

View file

@ -12,11 +12,11 @@ modification, are permitted provided that the following conditions are met:
may be used to endorse or promote products derived from this software may be used to endorse or promote products derived from this software
without specific prior written permission. without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT