<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1791273848">
  <project timestamp="1791273848">
    <file name="/workspace/src/extensions/IPInfo/maintenance/InfoManager.php">
      <class name="MediaWiki\IPInfo\Maintenance\InfoManager" namespace="global">
        <metrics complexity="3" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="9" elements="12" coveredelements="10"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="28" type="method" name="execute" visibility="public" complexity="2" crap="2.02" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="31" type="stmt" count="0"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <metrics loc="44" ncloc="39" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="9" elements="12" coveredelements="10"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/AccessLevelTrait.php">
      <class name="MediaWiki\IPInfo\AccessLevelTrait" namespace="global">
        <metrics complexity="3" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="9" elements="10" coveredelements="10"/>
      </class>
      <line num="16" type="method" name="highestAccessLevel" visibility="public" complexity="3" crap="3" count="38"/>
      <line num="20" type="stmt" count="38"/>
      <line num="21" type="stmt" count="38"/>
      <line num="22" type="stmt" count="38"/>
      <line num="23" type="stmt" count="38"/>
      <line num="25" type="stmt" count="38"/>
      <line num="26" type="stmt" count="38"/>
      <line num="27" type="stmt" count="38"/>
      <line num="28" type="stmt" count="38"/>
      <line num="32" type="stmt" count="38"/>
      <metrics loc="35" ncloc="26" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="9" elements="10" coveredelements="10"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/AnonymousUserIPLookup.php">
      <class name="MediaWiki\IPInfo\AnonymousUserIPLookup" namespace="global">
        <metrics complexity="12" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="92" coveredstatements="91" elements="94" coveredelements="92"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="23" type="stmt" count="11"/>
      <line num="25" type="method" name="checkIPIsKnown" visibility="public" complexity="11" crap="11" count="11"/>
      <line num="26" type="stmt" count="11"/>
      <line num="27" type="stmt" count="11"/>
      <line num="28" type="stmt" count="11"/>
      <line num="29" type="stmt" count="11"/>
      <line num="30" type="stmt" count="11"/>
      <line num="31" type="stmt" count="8"/>
      <line num="36" type="stmt" count="8"/>
      <line num="37" type="stmt" count="8"/>
      <line num="39" type="stmt" count="1"/>
      <line num="42" type="stmt" count="7"/>
      <line num="45" type="stmt" count="7"/>
      <line num="46" type="stmt" count="7"/>
      <line num="47" type="stmt" count="7"/>
      <line num="48" type="stmt" count="7"/>
      <line num="49" type="stmt" count="7"/>
      <line num="50" type="stmt" count="7"/>
      <line num="51" type="stmt" count="7"/>
      <line num="52" type="stmt" count="7"/>
      <line num="53" type="stmt" count="7"/>
      <line num="54" type="stmt" count="7"/>
      <line num="55" type="stmt" count="7"/>
      <line num="56" type="stmt" count="7"/>
      <line num="57" type="stmt" count="7"/>
      <line num="58" type="stmt" count="7"/>
      <line num="59" type="stmt" count="2"/>
      <line num="62" type="stmt" count="5"/>
      <line num="63" type="stmt" count="5"/>
      <line num="64" type="stmt" count="5"/>
      <line num="65" type="stmt" count="5"/>
      <line num="66" type="stmt" count="5"/>
      <line num="67" type="stmt" count="5"/>
      <line num="68" type="stmt" count="5"/>
      <line num="69" type="stmt" count="5"/>
      <line num="70" type="stmt" count="5"/>
      <line num="71" type="stmt" count="5"/>
      <line num="72" type="stmt" count="5"/>
      <line num="73" type="stmt" count="5"/>
      <line num="74" type="stmt" count="5"/>
      <line num="75" type="stmt" count="1"/>
      <line num="78" type="stmt" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="80" type="stmt" count="4"/>
      <line num="81" type="stmt" count="4"/>
      <line num="82" type="stmt" count="4"/>
      <line num="83" type="stmt" count="4"/>
      <line num="84" type="stmt" count="4"/>
      <line num="85" type="stmt" count="4"/>
      <line num="86" type="stmt" count="4"/>
      <line num="88" type="stmt" count="4"/>
      <line num="89" type="stmt" count="1"/>
      <line num="90" type="stmt" count="1"/>
      <line num="91" type="stmt" count="1"/>
      <line num="92" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="97" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <line num="99" type="stmt" count="1"/>
      <line num="100" type="stmt" count="1"/>
      <line num="101" type="stmt" count="0"/>
      <line num="105" type="stmt" count="4"/>
      <line num="106" type="stmt" count="4"/>
      <line num="107" type="stmt" count="4"/>
      <line num="108" type="stmt" count="4"/>
      <line num="109" type="stmt" count="4"/>
      <line num="110" type="stmt" count="4"/>
      <line num="111" type="stmt" count="4"/>
      <line num="112" type="stmt" count="4"/>
      <line num="113" type="stmt" count="4"/>
      <line num="114" type="stmt" count="4"/>
      <line num="115" type="stmt" count="4"/>
      <line num="116" type="stmt" count="4"/>
      <line num="117" type="stmt" count="4"/>
      <line num="118" type="stmt" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="123" type="stmt" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <line num="125" type="stmt" count="2"/>
      <line num="126" type="stmt" count="2"/>
      <line num="127" type="stmt" count="2"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="2"/>
      <line num="130" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="2"/>
      <line num="133" type="stmt" count="2"/>
      <line num="134" type="stmt" count="2"/>
      <line num="135" type="stmt" count="1"/>
      <line num="140" type="stmt" count="1"/>
      <metrics loc="143" ncloc="133" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="92" coveredstatements="91" elements="94" coveredelements="92"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Hook/IPInfoHookRunner.php">
      <class name="MediaWiki\IPInfo\Hook\IPInfoHookRunner" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="5" elements="7" coveredelements="7"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="16" type="stmt" count="1"/>
      <line num="21" type="method" name="onIPInfoHandlerRun" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="27" type="stmt" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <metrics loc="33" ncloc="30" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="5" elements="7" coveredelements="7"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Hook/IPInfoIPInfoHandlerHook.php">
      <metrics loc="31" ncloc="17" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/AbstractPreferencesHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\AbstractPreferencesHandler" namespace="global">
        <metrics complexity="7" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="10" elements="23" coveredelements="14"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="16"/>
      <line num="28" type="stmt" count="16"/>
      <line num="37" type="method" name="isTruthy" visibility="protected" complexity="1" crap="1" count="14"/>
      <line num="38" type="stmt" count="14"/>
      <line num="49" type="method" name="isFalsey" visibility="protected" complexity="2" crap="2" count="14"/>
      <line num="50" type="stmt" count="14"/>
      <line num="62" type="method" name="applyDefaultsToPreferenceArrays" visibility="protected" complexity="1" crap="1" count="14"/>
      <line num="65" type="stmt" count="14"/>
      <line num="66" type="stmt" count="14"/>
      <line num="67" type="stmt" count="14"/>
      <line num="68" type="stmt" count="14"/>
      <line num="69" type="stmt" count="14"/>
      <line num="80" type="method" name="logEvent" visibility="protected" complexity="2" crap="4.05" count="8"/>
      <line num="81" type="stmt" count="8"/>
      <line num="82" type="stmt" count="8"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <metrics loc="94" ncloc="57" classes="1" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="10" elements="23" coveredelements="14"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/BetaFeaturePreferencesHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\BetaFeaturePreferencesHandler" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="20" elements="22" coveredelements="22"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="17" type="stmt" count="4"/>
      <line num="23" type="method" name="onGetBetaFeaturePreferences" visibility="public" complexity="3" crap="3" count="4"/>
      <line num="24" type="stmt" count="4"/>
      <line num="27" type="stmt" count="4"/>
      <line num="28" type="stmt" count="4"/>
      <line num="30" type="stmt" count="1"/>
      <line num="31" type="stmt" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <metrics loc="50" ncloc="46" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="20" elements="22" coveredelements="22"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/GlobalPreferencesHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\GlobalPreferencesHandler" namespace="global">
        <metrics complexity="8" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="18" elements="20" coveredelements="20"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="10"/>
      <line num="24" type="stmt" count="10"/>
      <line num="28" type="method" name="onGlobalPreferencesSetGlobalPreferences" visibility="public" complexity="7" crap="7" count="10"/>
      <line num="33" type="stmt" count="10"/>
      <line num="35" type="stmt" count="10"/>
      <line num="36" type="stmt" count="10"/>
      <line num="38" type="stmt" count="10"/>
      <line num="39" type="stmt" count="10"/>
      <line num="42" type="stmt" count="10"/>
      <line num="43" type="stmt" count="10"/>
      <line num="45" type="stmt" count="5"/>
      <line num="46" type="stmt" count="5"/>
      <line num="47" type="stmt" count="5"/>
      <line num="48" type="stmt" count="5"/>
      <line num="49" type="stmt" count="5"/>
      <line num="50" type="stmt" count="5"/>
      <line num="52" type="stmt" count="5"/>
      <line num="53" type="stmt" count="5"/>
      <line num="54" type="stmt" count="3"/>
      <line num="56" type="stmt" count="3"/>
      <metrics loc="61" ncloc="60" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="18" elements="20" coveredelements="20"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/InfoboxHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\InfoboxHandler" namespace="global">
        <metrics complexity="20" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="47" coveredstatements="46" elements="52" coveredelements="50"/>
      </class>
      <line num="22" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="38"/>
      <line num="27" type="stmt" count="38"/>
      <line num="38" type="method" name="addInfoBox" visibility="private" complexity="5" crap="5" count="27"/>
      <line num="39" type="stmt" count="27"/>
      <line num="40" type="stmt" count="27"/>
      <line num="41" type="stmt" count="3"/>
      <line num="45" type="stmt" count="24"/>
      <line num="46" type="stmt" count="2"/>
      <line num="49" type="stmt" count="22"/>
      <line num="50" type="stmt" count="22"/>
      <line num="51" type="stmt" count="22"/>
      <line num="60" type="stmt" count="22"/>
      <line num="61" type="stmt" count="22"/>
      <line num="62" type="stmt" count="22"/>
      <line num="63" type="stmt" count="22"/>
      <line num="64" type="stmt" count="22"/>
      <line num="66" type="stmt" count="22"/>
      <line num="67" type="stmt" count="22"/>
      <line num="68" type="stmt" count="22"/>
      <line num="69" type="stmt" count="22"/>
      <line num="70" type="stmt" count="22"/>
      <line num="71" type="stmt" count="22"/>
      <line num="72" type="stmt" count="22"/>
      <line num="73" type="stmt" count="22"/>
      <line num="74" type="stmt" count="22"/>
      <line num="75" type="stmt" count="22"/>
      <line num="76" type="stmt" count="22"/>
      <line num="77" type="stmt" count="22"/>
      <line num="78" type="stmt" count="22"/>
      <line num="79" type="stmt" count="22"/>
      <line num="80" type="stmt" count="22"/>
      <line num="81" type="stmt" count="22"/>
      <line num="85" type="method" name="onSpecialContributionsBeforeMainOutput" visibility="public" complexity="7" crap="7" count="28"/>
      <line num="86" type="stmt" count="28"/>
      <line num="87" type="stmt" count="28"/>
      <line num="92" type="stmt" count="17"/>
      <line num="93" type="stmt" count="14"/>
      <line num="96" type="stmt" count="17"/>
      <line num="98" type="stmt" count="11"/>
      <line num="104" type="stmt" count="8"/>
      <line num="105" type="stmt" count="5"/>
      <line num="108" type="stmt" count="8"/>
      <line num="116" type="method" name="onSpecialPageBeforeExecute" visibility="public" complexity="5" crap="5.12" count="10"/>
      <line num="117" type="stmt" count="10"/>
      <line num="118" type="stmt" count="2"/>
      <line num="121" type="stmt" count="8"/>
      <line num="122" type="stmt" count="0"/>
      <line num="128" type="stmt" count="8"/>
      <line num="129" type="stmt" count="8"/>
      <line num="133" type="method" name="isFirstPage" visibility="private" complexity="2" crap="2" count="25"/>
      <line num="134" type="stmt" count="25"/>
      <line num="135" type="stmt" count="25"/>
      <metrics loc="138" ncloc="107" classes="1" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="47" coveredstatements="46" elements="52" coveredelements="50"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/PopupHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\PopupHandler" namespace="global">
        <metrics complexity="8" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/>
      </class>
      <line num="11" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="14" type="stmt" count="11"/>
      <line num="17" type="method" name="onBeforePageDisplay" visibility="public" complexity="7" crap="7" count="10"/>
      <line num="19" type="stmt" count="10"/>
      <line num="20" type="stmt" count="10"/>
      <line num="21" type="stmt" count="10"/>
      <line num="22" type="stmt" count="10"/>
      <line num="23" type="stmt" count="10"/>
      <line num="24" type="stmt" count="10"/>
      <line num="25" type="stmt" count="10"/>
      <line num="27" type="stmt" count="6"/>
      <line num="30" type="stmt" count="4"/>
      <line num="31" type="stmt" count="2"/>
      <line num="34" type="stmt" count="2"/>
      <line num="35" type="stmt" count="2"/>
      <metrics loc="38" ncloc="37" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/PreferencesHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\PreferencesHandler" namespace="global">
        <metrics complexity="19" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="43" elements="46" coveredelements="46"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="17"/>
      <line num="27" type="stmt" count="17"/>
      <line num="31" type="method" name="onGetPreferences" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="32" type="stmt" count="2"/>
      <line num="33" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="44" type="method" name="onLocalUserOptionsStoreSave" visibility="public" complexity="16" crap="16" count="15"/>
      <line num="45" type="stmt" count="15"/>
      <line num="47" type="stmt" count="15"/>
      <line num="48" type="stmt" count="7"/>
      <line num="49" type="stmt" count="7"/>
      <line num="50" type="stmt" count="7"/>
      <line num="53" type="stmt" count="8"/>
      <line num="54" type="stmt" count="8"/>
      <line num="55" type="stmt" count="8"/>
      <line num="59" type="stmt" count="15"/>
      <line num="60" type="stmt" count="15"/>
      <line num="61" type="stmt" count="15"/>
      <line num="63" type="stmt" count="15"/>
      <line num="64" type="stmt" count="15"/>
      <line num="65" type="stmt" count="15"/>
      <line num="66" type="stmt" count="15"/>
      <line num="68" type="stmt" count="15"/>
      <line num="69" type="stmt" count="15"/>
      <line num="70" type="stmt" count="7"/>
      <line num="71" type="stmt" count="7"/>
      <line num="72" type="stmt" count="7"/>
      <line num="73" type="stmt" count="7"/>
      <line num="74" type="stmt" count="7"/>
      <line num="75" type="stmt" count="7"/>
      <line num="78" type="stmt" count="15"/>
      <line num="79" type="stmt" count="15"/>
      <line num="81" type="stmt" count="9"/>
      <line num="82" type="stmt" count="9"/>
      <line num="83" type="stmt" count="5"/>
      <line num="85" type="stmt" count="4"/>
      <line num="88" type="stmt" count="9"/>
      <line num="89" type="stmt" count="9"/>
      <line num="90" type="stmt" count="9"/>
      <line num="91" type="stmt" count="9"/>
      <line num="92" type="stmt" count="9"/>
      <line num="93" type="stmt" count="9"/>
      <metrics loc="97" ncloc="93" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="43" elements="46" coveredelements="46"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/SchemaHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\SchemaHandler" namespace="global">
        <metrics complexity="1" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="18" ncloc="14" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/HookHandler/SpecialPageInitListHandler.php">
      <class name="MediaWiki\IPInfo\HookHandler\SpecialPageInitListHandler" namespace="global">
        <metrics complexity="3" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="17" coveredelements="17"/>
      </class>
      <line num="16" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="19" type="stmt" count="2"/>
      <line num="28" type="method" name="onSpecialPage_initList" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="29" type="stmt" count="2"/>
      <line num="30" type="stmt" count="1"/>
      <line num="31" type="stmt" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <metrics loc="46" ncloc="36" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="17" coveredelements="17"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/IPInfoPermissionManager.php">
      <class name="MediaWiki\IPInfo\IPInfoPermissionManager" namespace="global">
        <metrics complexity="8" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="15" coveredelements="15"/>
      </class>
      <line num="17" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="17"/>
      <line num="22" type="stmt" count="17"/>
      <line num="33" type="method" name="hasEnabledIPInfo" visibility="public" complexity="3" crap="3" count="13"/>
      <line num="34" type="stmt" count="13"/>
      <line num="35" type="stmt" count="2"/>
      <line num="38" type="stmt" count="11"/>
      <line num="39" type="stmt" count="4"/>
      <line num="42" type="stmt" count="7"/>
      <line num="50" type="method" name="requiresBetaFeatureToggle" visibility="public" complexity="2" crap="2" count="15"/>
      <line num="52" type="stmt" count="15"/>
      <line num="63" type="method" name="canViewIPInfo" visibility="public" complexity="2" crap="2" count="7"/>
      <line num="64" type="stmt" count="7"/>
      <line num="65" type="stmt" count="7"/>
      <line num="66" type="stmt" count="7"/>
      <line num="67" type="stmt" count="7"/>
      <metrics loc="70" ncloc="44" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="15" coveredelements="15"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/BlockInfo.php">
      <class name="MediaWiki\IPInfo\Info\BlockInfo" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="5" elements="8" coveredelements="8"/>
      </class>
      <line num="11" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="14" type="stmt" count="2"/>
      <line num="16" type="method" name="getNumActiveBlocks" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="17" type="stmt" count="2"/>
      <line num="20" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="21" type="stmt" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <metrics loc="26" ncloc="26" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="5" elements="8" coveredelements="8"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/ContributionInfo.php">
      <class name="MediaWiki\IPInfo\Info\ContributionInfo" namespace="global">
        <metrics complexity="5" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="14" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="17" type="method" name="getNumLocalEdits" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="21" type="method" name="getNumRecentEdits" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="25" type="method" name="getNumDeletedEdits" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="29" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <metrics loc="37" ncloc="37" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="14" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/Coordinates.php">
      <class name="MediaWiki\IPInfo\Info\Coordinates" namespace="global">
        <metrics complexity="4" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="11" coveredelements="11"/>
      </class>
      <line num="10" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="14" type="stmt" count="2"/>
      <line num="16" type="method" name="getLatitude" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="17" type="stmt" count="2"/>
      <line num="20" type="method" name="getLongitude" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="21" type="stmt" count="2"/>
      <line num="24" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="27" type="stmt" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <metrics loc="31" ncloc="31" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="11" coveredelements="11"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/IPCountInfo.php">
      <class name="MediaWiki\IPInfo\Info\IPCountInfo" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
      </class>
      <line num="12" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="22" type="method" name="getCount" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <metrics loc="26" ncloc="18" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/IPVersionInfo.php">
      <class name="MediaWiki\IPInfo\Info\IPVersionInfo" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/>
      </class>
      <line num="9" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="12" type="stmt" count="3"/>
      <line num="14" type="method" name="getVersion" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="15" type="stmt" count="3"/>
      <metrics loc="18" ncloc="18" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/Info.php">
      <class name="MediaWiki\IPInfo\Info\Info" namespace="global">
        <metrics complexity="10" methods="10" coveredmethods="10" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="29" coveredelements="29"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="30" type="stmt" count="2"/>
      <line num="35" type="method" name="getCoordinates" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="42" type="method" name="getAsn" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="43" type="stmt" count="2"/>
      <line num="49" type="method" name="getOrganization" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="56" type="method" name="getCountryNames" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="63" type="method" name="getLocation" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="64" type="stmt" count="2"/>
      <line num="70" type="method" name="getConnectionType" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="77" type="method" name="getUserType" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="78" type="stmt" count="1"/>
      <line num="84" type="method" name="getProxyType" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="85" type="stmt" count="2"/>
      <line num="88" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="89" type="stmt" count="1"/>
      <line num="90" type="stmt" count="1"/>
      <line num="91" type="stmt" count="1"/>
      <line num="92" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="97" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <metrics loc="101" ncloc="67" classes="1" methods="10" coveredmethods="10" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="29" coveredelements="29"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/Location.php">
      <class name="MediaWiki\IPInfo\Info\Location" namespace="global">
        <metrics complexity="4" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="11" coveredelements="11"/>
      </class>
      <line num="10" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="14" type="stmt" count="2"/>
      <line num="16" type="method" name="getId" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="17" type="stmt" count="2"/>
      <line num="20" type="method" name="getLabel" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="21" type="stmt" count="2"/>
      <line num="24" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="27" type="stmt" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <metrics loc="31" ncloc="31" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="11" coveredelements="11"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Info/ProxyType.php">
      <class name="MediaWiki\IPInfo\Info\ProxyType" namespace="global">
        <metrics complexity="8" methods="8" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="22" coveredelements="22"/>
      </class>
      <line num="10" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="18" type="stmt" count="2"/>
      <line num="20" type="method" name="isAnonymousVpn" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="21" type="stmt" count="2"/>
      <line num="24" type="method" name="isPublicProxy" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="28" type="method" name="isResidentialProxy" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="29" type="stmt" count="2"/>
      <line num="32" type="method" name="isLegitimateProxy" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="33" type="stmt" count="2"/>
      <line num="36" type="method" name="isTorExitNode" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="37" type="stmt" count="2"/>
      <line num="40" type="method" name="isHostingProvider" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="44" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <metrics loc="54" ncloc="54" classes="1" methods="8" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="22" coveredelements="22"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoManager.php">
      <class name="MediaWiki\IPInfo\InfoManager" namespace="global">
        <metrics complexity="11" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="23" elements="26" coveredelements="26"/>
      </class>
      <line num="16" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="19" type="stmt" count="7"/>
      <line num="31" type="method" name="retrieveFor" visibility="public" complexity="4" crap="4" count="5"/>
      <line num="32" type="stmt" count="5"/>
      <line num="34" type="stmt" count="5"/>
      <line num="35" type="stmt" count="2"/>
      <line num="38" type="stmt" count="5"/>
      <line num="39" type="stmt" count="5"/>
      <line num="42" type="stmt" count="5"/>
      <line num="44" type="stmt" count="5"/>
      <line num="47" type="stmt" count="5"/>
      <line num="48" type="stmt" count="5"/>
      <line num="49" type="stmt" count="5"/>
      <line num="62" type="method" name="retrieveBatch" visibility="public" complexity="6" crap="6" count="2"/>
      <line num="67" type="stmt" count="2"/>
      <line num="68" type="stmt" count="2"/>
      <line num="70" type="stmt" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="72" type="stmt" count="2"/>
      <line num="73" type="stmt" count="2"/>
      <line num="75" type="stmt" count="2"/>
      <line num="76" type="stmt" count="2"/>
      <line num="77" type="stmt" count="2"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="84" type="stmt" count="2"/>
      <metrics loc="87" ncloc="62" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="23" elements="26" coveredelements="26"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/BaseInfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\BaseInfoRetriever" namespace="global">
        <metrics complexity="2" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/>
      </class>
      <line num="19" type="method" name="retrieveBatch" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="20" type="stmt" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <metrics loc="29" ncloc="21" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/BlockInfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\BlockInfoRetriever" namespace="global">
        <metrics complexity="5" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="15" elements="19" coveredelements="17"/>
      </class>
      <line num="16" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="20" type="stmt" count="7"/>
      <line num="23" type="method" name="getName" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="28" type="method" name="retrieveFor" visibility="public" complexity="3" crap="3.00" count="6"/>
      <line num="30" type="stmt" count="6"/>
      <line num="31" type="stmt" count="2"/>
      <line num="33" type="stmt" count="4"/>
      <line num="36" type="stmt" count="6"/>
      <line num="38" type="stmt" count="6"/>
      <line num="39" type="stmt" count="6"/>
      <line num="40" type="stmt" count="6"/>
      <line num="41" type="stmt" count="6"/>
      <line num="42" type="stmt" count="6"/>
      <line num="43" type="stmt" count="6"/>
      <line num="44" type="stmt" count="6"/>
      <line num="45" type="stmt" count="6"/>
      <line num="47" type="stmt" count="0"/>
      <line num="63" type="stmt" count="6"/>
      <metrics loc="66" ncloc="50" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="15" elements="19" coveredelements="17"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/ContributionInfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\ContributionInfoRetriever" namespace="global">
        <metrics complexity="4" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="30" elements="33" coveredelements="33"/>
      </class>
      <line num="15" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="19" type="stmt" count="8"/>
      <line num="22" type="method" name="getName" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="27" type="method" name="retrieveFor" visibility="public" complexity="2" crap="2" count="7"/>
      <line num="28" type="stmt" count="7"/>
      <line num="29" type="stmt" count="7"/>
      <line num="31" type="stmt" count="7"/>
      <line num="32" type="stmt" count="2"/>
      <line num="35" type="stmt" count="5"/>
      <line num="36" type="stmt" count="5"/>
      <line num="37" type="stmt" count="5"/>
      <line num="38" type="stmt" count="5"/>
      <line num="39" type="stmt" count="5"/>
      <line num="40" type="stmt" count="5"/>
      <line num="41" type="stmt" count="5"/>
      <line num="43" type="stmt" count="5"/>
      <line num="44" type="stmt" count="5"/>
      <line num="45" type="stmt" count="5"/>
      <line num="46" type="stmt" count="5"/>
      <line num="47" type="stmt" count="5"/>
      <line num="48" type="stmt" count="5"/>
      <line num="49" type="stmt" count="5"/>
      <line num="50" type="stmt" count="5"/>
      <line num="51" type="stmt" count="5"/>
      <line num="53" type="stmt" count="5"/>
      <line num="54" type="stmt" count="5"/>
      <line num="55" type="stmt" count="5"/>
      <line num="56" type="stmt" count="5"/>
      <line num="57" type="stmt" count="5"/>
      <line num="58" type="stmt" count="5"/>
      <line num="59" type="stmt" count="5"/>
      <line num="61" type="stmt" count="5"/>
      <metrics loc="64" ncloc="62" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="30" elements="33" coveredelements="33"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/GeoIp2EnterpriseInfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\GeoIp2EnterpriseInfoRetriever" namespace="global">
        <metrics complexity="28" methods="11" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="81" coveredstatements="75" elements="92" coveredelements="84"/>
      </class>
      <line num="31" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="35" type="stmt" count="5"/>
      <line num="39" type="method" name="getName" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="62" type="method" name="retrieveFor" visibility="public" complexity="7" crap="7" count="5"/>
      <line num="63" type="stmt" count="5"/>
      <line num="64" type="stmt" count="1"/>
      <line num="67" type="stmt" count="4"/>
      <line num="68" type="stmt" count="4"/>
      <line num="69" type="stmt" count="4"/>
      <line num="70" type="stmt" count="4"/>
      <line num="71" type="stmt" count="4"/>
      <line num="72" type="stmt" count="4"/>
      <line num="73" type="stmt" count="4"/>
      <line num="74" type="stmt" count="4"/>
      <line num="75" type="stmt" count="4"/>
      <line num="76" type="stmt" count="4"/>
      <line num="77" type="stmt" count="4"/>
      <line num="78" type="stmt" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="81" type="stmt" count="4"/>
      <line num="82" type="stmt" count="4"/>
      <line num="84" type="stmt" count="3"/>
      <line num="86" type="stmt" count="2"/>
      <line num="87" type="stmt" count="2"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="1"/>
      <line num="99" type="stmt" count="4"/>
      <line num="100" type="stmt" count="4"/>
      <line num="102" type="stmt" count="3"/>
      <line num="103" type="stmt" count="2"/>
      <line num="104" type="stmt" count="2"/>
      <line num="105" type="stmt" count="2"/>
      <line num="107" type="stmt" count="2"/>
      <line num="108" type="stmt" count="1"/>
      <line num="114" type="stmt" count="4"/>
      <line num="115" type="stmt" count="4"/>
      <line num="116" type="stmt" count="4"/>
      <line num="117" type="stmt" count="4"/>
      <line num="118" type="stmt" count="4"/>
      <line num="119" type="stmt" count="4"/>
      <line num="120" type="stmt" count="4"/>
      <line num="121" type="stmt" count="4"/>
      <line num="122" type="stmt" count="4"/>
      <line num="123" type="stmt" count="4"/>
      <line num="130" type="method" name="getCoordinates" visibility="private" complexity="3" crap="3.03" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="2"/>
      <line num="133" type="stmt" count="0"/>
      <line num="136" type="stmt" count="2"/>
      <line num="137" type="stmt" count="2"/>
      <line num="138" type="stmt" count="2"/>
      <line num="139" type="stmt" count="2"/>
      <line num="146" type="method" name="getAsn" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="147" type="stmt" count="2"/>
      <line num="154" type="method" name="getOrganization" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="155" type="stmt" count="2"/>
      <line num="162" type="method" name="getCountryNames" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="163" type="stmt" count="2"/>
      <line num="170" type="method" name="getLocations" visibility="private" complexity="3" crap="3.33" count="2"/>
      <line num="171" type="stmt" count="2"/>
      <line num="172" type="stmt" count="0"/>
      <line num="175" type="stmt" count="2"/>
      <line num="176" type="stmt" count="2"/>
      <line num="177" type="stmt" count="2"/>
      <line num="178" type="stmt" count="2"/>
      <line num="184" type="stmt" count="2"/>
      <line num="185" type="stmt" count="2"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="190" type="stmt" count="2"/>
      <line num="191" type="stmt" count="2"/>
      <line num="192" type="stmt" count="2"/>
      <line num="199" type="method" name="getConnectionType" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="200" type="stmt" count="2"/>
      <line num="207" type="method" name="getUserType" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="208" type="stmt" count="2"/>
      <line num="211" type="method" name="getProxyType" visibility="private" complexity="6" crap="6" count="2"/>
      <line num="212" type="stmt" count="2"/>
      <line num="213" type="stmt" count="2"/>
      <line num="214" type="stmt" count="2"/>
      <line num="215" type="stmt" count="2"/>
      <line num="216" type="stmt" count="2"/>
      <line num="217" type="stmt" count="2"/>
      <line num="218" type="stmt" count="2"/>
      <line num="219" type="stmt" count="2"/>
      <metrics loc="222" ncloc="170" classes="1" methods="11" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="81" coveredstatements="75" elements="92" coveredelements="84"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/GeoLite2InfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\GeoLite2InfoRetriever" namespace="global">
        <metrics complexity="25" methods="8" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="64" coveredstatements="58" elements="72" coveredelements="64"/>
      </class>
      <line num="30" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="34" type="stmt" count="5"/>
      <line num="38" type="method" name="getName" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="59" type="method" name="retrieveFor" visibility="public" complexity="2" crap="2" count="5"/>
      <line num="60" type="stmt" count="5"/>
      <line num="61" type="stmt" count="1"/>
      <line num="64" type="stmt" count="4"/>
      <line num="65" type="stmt" count="4"/>
      <line num="66" type="stmt" count="4"/>
      <line num="67" type="stmt" count="4"/>
      <line num="68" type="stmt" count="4"/>
      <line num="69" type="stmt" count="4"/>
      <line num="70" type="stmt" count="4"/>
      <line num="77" type="method" name="getCoordinates" visibility="private" complexity="5" crap="5.01" count="4"/>
      <line num="78" type="stmt" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="80" type="stmt" count="1"/>
      <line num="84" type="stmt" count="3"/>
      <line num="85" type="stmt" count="1"/>
      <line num="86" type="stmt" count="1"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="0"/>
      <line num="94" type="stmt" count="2"/>
      <line num="95" type="stmt" count="2"/>
      <line num="96" type="stmt" count="2"/>
      <line num="97" type="stmt" count="2"/>
      <line num="104" type="method" name="getAsn" visibility="private" complexity="3" crap="3" count="4"/>
      <line num="105" type="stmt" count="4"/>
      <line num="106" type="stmt" count="4"/>
      <line num="107" type="stmt" count="1"/>
      <line num="111" type="stmt" count="3"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="121" type="method" name="getOrganization" visibility="private" complexity="3" crap="3" count="4"/>
      <line num="122" type="stmt" count="4"/>
      <line num="123" type="stmt" count="4"/>
      <line num="124" type="stmt" count="1"/>
      <line num="128" type="stmt" count="3"/>
      <line num="129" type="stmt" count="1"/>
      <line num="130" type="stmt" count="1"/>
      <line num="134" type="method" name="getCountryNames" visibility="private" complexity="3" crap="3" count="4"/>
      <line num="135" type="stmt" count="4"/>
      <line num="136" type="stmt" count="4"/>
      <line num="137" type="stmt" count="1"/>
      <line num="141" type="stmt" count="3"/>
      <line num="142" type="stmt" count="1"/>
      <line num="143" type="stmt" count="1"/>
      <line num="146" type="stmt" count="2"/>
      <line num="153" type="method" name="getLocations" visibility="private" complexity="5" crap="5.34" count="4"/>
      <line num="154" type="stmt" count="4"/>
      <line num="155" type="stmt" count="4"/>
      <line num="156" type="stmt" count="1"/>
      <line num="160" type="stmt" count="3"/>
      <line num="161" type="stmt" count="1"/>
      <line num="162" type="stmt" count="1"/>
      <line num="165" type="stmt" count="2"/>
      <line num="166" type="stmt" count="0"/>
      <line num="169" type="stmt" count="2"/>
      <line num="170" type="stmt" count="2"/>
      <line num="171" type="stmt" count="2"/>
      <line num="172" type="stmt" count="2"/>
      <line num="178" type="stmt" count="2"/>
      <line num="179" type="stmt" count="2"/>
      <line num="180" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="2"/>
      <line num="185" type="stmt" count="2"/>
      <line num="186" type="stmt" count="2"/>
      <metrics loc="189" ncloc="150" classes="1" methods="8" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="64" coveredstatements="58" elements="72" coveredelements="64"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/IPCountInfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\IPCountInfoRetriever" namespace="global">
        <metrics complexity="4" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="9" coveredelements="9"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="21" type="stmt" count="3"/>
      <line num="23" type="method" name="getName" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="27" type="method" name="retrieveFor" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="32" type="stmt" count="2"/>
      <line num="33" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <metrics loc="40" ncloc="33" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="9" coveredelements="9"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/IPVersionInfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\IPVersionInfoRetriever" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="6" elements="9" coveredelements="7"/>
      </class>
      <line num="14" type="method" name="getName" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="18" type="method" name="retrieveFor" visibility="public" complexity="4" crap="4" count="3"/>
      <line num="19" type="stmt" count="3"/>
      <line num="20" type="stmt" count="2"/>
      <line num="21" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <metrics loc="32" ncloc="32" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="6" elements="9" coveredelements="7"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/IPoidInfoRetriever.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\IPoidInfoRetriever" namespace="global">
        <metrics complexity="6" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="10" elements="15" coveredelements="13"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="21" type="stmt" count="4"/>
      <line num="24" type="method" name="getName" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="32" type="method" name="retrieveFor" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="33" type="stmt" count="2"/>
      <line num="34" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="46" type="method" name="retrieveBatch" visibility="public" complexity="2" crap="2.03" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="0"/>
      <line num="54" type="stmt" count="1"/>
      <metrics loc="58" ncloc="42" classes="1" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="10" elements="15" coveredelements="13"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/InfoRetriever.php">
      <metrics loc="39" ncloc="17" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/InfoRetriever/ReaderFactory.php">
      <class name="MediaWiki\IPInfo\InfoRetriever\ReaderFactory" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="8" elements="10" coveredelements="10"/>
      </class>
      <line num="20" type="method" name="get" visibility="public" complexity="3" crap="3" count="2"/>
      <line num="21" type="stmt" count="2"/>
      <line num="22" type="stmt" count="1"/>
      <line num="25" type="stmt" count="2"/>
      <line num="26" type="stmt" count="1"/>
      <line num="27" type="stmt" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="40" type="method" name="getReader" visibility="protected" complexity="1" crap="1" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <metrics loc="44" ncloc="33" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="8" elements="10" coveredelements="10"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Jobs/LogIPInfoAccessJob.php">
      <class name="MediaWiki\IPInfo\Jobs\LogIPInfoAccessJob" namespace="global">
        <metrics complexity="7" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="31" elements="34" coveredelements="34"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="25" type="stmt" count="5"/>
      <line num="37" type="method" name="newSpecification" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="60" type="method" name="run" visibility="public" complexity="5" crap="5" count="5"/>
      <line num="61" type="stmt" count="5"/>
      <line num="63" type="stmt" count="5"/>
      <line num="64" type="stmt" count="5"/>
      <line num="65" type="stmt" count="5"/>
      <line num="67" type="stmt" count="5"/>
      <line num="68" type="stmt" count="2"/>
      <line num="69" type="stmt" count="2"/>
      <line num="72" type="stmt" count="3"/>
      <line num="74" type="stmt" count="3"/>
      <line num="75" type="stmt" count="3"/>
      <line num="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="85" type="stmt" count="2"/>
      <metrics loc="88" ncloc="72" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="31" elements="34" coveredelements="34"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Logging/IPInfoLogFormatter.php">
      <class name="MediaWiki\IPInfo\Logging\IPInfoLogFormatter" namespace="global">
        <metrics complexity="4" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="12" coveredelements="12"/>
      </class>
      <line num="14" type="method" name="getMessageParameters" visibility="protected" complexity="4" crap="4" count="5"/>
      <line num="15" type="stmt" count="5"/>
      <line num="18" type="stmt" count="5"/>
      <line num="24" type="stmt" count="2"/>
      <line num="28" type="stmt" count="5"/>
      <line num="29" type="stmt" count="5"/>
      <line num="33" type="stmt" count="3"/>
      <line num="34" type="stmt" count="3"/>
      <line num="35" type="stmt" count="3"/>
      <line num="36" type="stmt" count="3"/>
      <line num="42" type="stmt" count="3"/>
      <line num="45" type="stmt" count="5"/>
      <metrics loc="48" ncloc="35" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="12" coveredelements="12"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Logging/Logger.php">
      <class name="MediaWiki\IPInfo\Logging\Logger" namespace="global">
        <metrics complexity="15" methods="10" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="59" coveredstatements="56" elements="69" coveredelements="64"/>
      </class>
      <line num="85" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="90" type="stmt" count="8"/>
      <line num="101" type="method" name="logViewInfobox" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="107" type="stmt" count="2"/>
      <line num="108" type="stmt" count="1"/>
      <line num="110" type="stmt" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="122" type="method" name="logViewPopup" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="123" type="stmt" count="2"/>
      <line num="124" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="135" type="method" name="logAccessEnabled" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="136" type="stmt" count="1"/>
      <line num="137" type="stmt" count="1"/>
      <line num="138" type="stmt" count="1"/>
      <line num="139" type="stmt" count="1"/>
      <line num="147" type="method" name="logAccessDisabled" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="148" type="stmt" count="1"/>
      <line num="149" type="stmt" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <line num="151" type="stmt" count="1"/>
      <line num="159" type="method" name="logGlobalAccessEnabled" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="160" type="stmt" count="1"/>
      <line num="161" type="stmt" count="1"/>
      <line num="162" type="stmt" count="1"/>
      <line num="163" type="stmt" count="1"/>
      <line num="171" type="method" name="logGlobalAccessDisabled" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="172" type="stmt" count="1"/>
      <line num="173" type="stmt" count="1"/>
      <line num="174" type="stmt" count="1"/>
      <line num="175" type="stmt" count="1"/>
      <line num="186" type="method" name="debouncedLog" visibility="private" complexity="3" crap="3.00" count="2"/>
      <line num="193" type="stmt" count="2"/>
      <line num="197" type="stmt" count="2"/>
      <line num="198" type="stmt" count="2"/>
      <line num="199" type="stmt" count="2"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="204" type="stmt" count="2"/>
      <line num="205" type="stmt" count="2"/>
      <line num="206" type="stmt" count="2"/>
      <line num="207" type="stmt" count="2"/>
      <line num="208" type="stmt" count="2"/>
      <line num="209" type="stmt" count="2"/>
      <line num="210" type="stmt" count="2"/>
      <line num="211" type="stmt" count="2"/>
      <line num="212" type="stmt" count="2"/>
      <line num="213" type="stmt" count="2"/>
      <line num="214" type="stmt" count="2"/>
      <line num="215" type="stmt" count="2"/>
      <line num="216" type="stmt" count="2"/>
      <line num="217" type="stmt" count="2"/>
      <line num="218" type="stmt" count="2"/>
      <line num="219" type="stmt" count="2"/>
      <line num="220" type="stmt" count="2"/>
      <line num="221" type="stmt" count="2"/>
      <line num="223" type="stmt" count="2"/>
      <line num="224" type="stmt" count="1"/>
      <line num="228" type="method" name="log" visibility="private" complexity="2" crap="2" count="5"/>
      <line num="235" type="stmt" count="5"/>
      <line num="236" type="stmt" count="5"/>
      <line num="237" type="stmt" count="5"/>
      <line num="238" type="stmt" count="5"/>
      <line num="240" type="stmt" count="5"/>
      <line num="241" type="stmt" count="1"/>
      <line num="244" type="stmt" count="5"/>
      <line num="257" type="method" name="createManualLogEntry" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="258" type="stmt" count="0"/>
      <metrics loc="261" ncloc="155" classes="1" methods="10" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="59" coveredstatements="56" elements="69" coveredelements="64"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Logging/LoggerFactory.php">
      <class name="MediaWiki\IPInfo\Logging\LoggerFactory" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="8" coveredelements="8"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="24" type="stmt" count="2"/>
      <line num="26" type="method" name="getLogger" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="31" type="stmt" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <metrics loc="36" ncloc="30" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="8" coveredelements="8"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Rest/Handler/AbstractRevisionHandler.php">
      <class name="MediaWiki\IPInfo\Rest\Handler\AbstractRevisionHandler" namespace="global">
        <metrics complexity="8" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="41" coveredstatements="41" elements="43" coveredelements="43"/>
      </class>
      <line num="16" type="method" name="getInfo" visibility="protected" complexity="7" crap="7" count="34"/>
      <line num="17" type="stmt" count="34"/>
      <line num="19" type="stmt" count="33"/>
      <line num="20" type="stmt" count="3"/>
      <line num="21" type="stmt" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="23" type="stmt" count="3"/>
      <line num="26" type="stmt" count="30"/>
      <line num="27" type="stmt" count="2"/>
      <line num="28" type="stmt" count="2"/>
      <line num="29" type="stmt" count="2"/>
      <line num="30" type="stmt" count="2"/>
      <line num="33" type="stmt" count="28"/>
      <line num="35" type="stmt" count="28"/>
      <line num="37" type="stmt" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <line num="39" type="stmt" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="43" type="stmt" count="26"/>
      <line num="45" type="stmt" count="2"/>
      <line num="46" type="stmt" count="2"/>
      <line num="47" type="stmt" count="2"/>
      <line num="48" type="stmt" count="2"/>
      <line num="51" type="stmt" count="24"/>
      <line num="53" type="stmt" count="2"/>
      <line num="54" type="stmt" count="2"/>
      <line num="55" type="stmt" count="2"/>
      <line num="56" type="stmt" count="2"/>
      <line num="59" type="stmt" count="22"/>
      <line num="61" type="stmt" count="22"/>
      <line num="62" type="stmt" count="22"/>
      <line num="63" type="stmt" count="22"/>
      <line num="64" type="stmt" count="22"/>
      <line num="65" type="stmt" count="22"/>
      <line num="66" type="stmt" count="22"/>
      <line num="76" type="method" name="getParamSettings" visibility="public" complexity="1" crap="1" count="51"/>
      <line num="77" type="stmt" count="51"/>
      <line num="78" type="stmt" count="51"/>
      <line num="79" type="stmt" count="51"/>
      <line num="80" type="stmt" count="51"/>
      <line num="81" type="stmt" count="51"/>
      <line num="82" type="stmt" count="51"/>
      <line num="83" type="stmt" count="51"/>
      <metrics loc="86" ncloc="77" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="41" coveredstatements="41" elements="43" coveredelements="43"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Rest/Handler/ArchivedRevisionHandler.php">
      <class name="MediaWiki\IPInfo\Rest\Handler\ArchivedRevisionHandler" namespace="global">
        <metrics complexity="5" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="33" coveredstatements="33" elements="36" coveredelements="36"/>
      </class>
      <line num="28" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="24"/>
      <line num="42" type="stmt" count="24"/>
      <line num="43" type="stmt" count="24"/>
      <line num="44" type="stmt" count="24"/>
      <line num="45" type="stmt" count="24"/>
      <line num="46" type="stmt" count="24"/>
      <line num="47" type="stmt" count="24"/>
      <line num="48" type="stmt" count="24"/>
      <line num="49" type="stmt" count="24"/>
      <line num="50" type="stmt" count="24"/>
      <line num="51" type="stmt" count="24"/>
      <line num="52" type="stmt" count="24"/>
      <line num="53" type="stmt" count="24"/>
      <line num="54" type="stmt" count="24"/>
      <line num="57" type="method" name="factory" visibility="public" complexity="1" crap="1" count="24"/>
      <line num="70" type="stmt" count="24"/>
      <line num="71" type="stmt" count="24"/>
      <line num="72" type="stmt" count="24"/>
      <line num="73" type="stmt" count="24"/>
      <line num="74" type="stmt" count="24"/>
      <line num="75" type="stmt" count="24"/>
      <line num="76" type="stmt" count="24"/>
      <line num="77" type="stmt" count="24"/>
      <line num="78" type="stmt" count="24"/>
      <line num="79" type="stmt" count="24"/>
      <line num="80" type="stmt" count="24"/>
      <line num="81" type="stmt" count="24"/>
      <line num="82" type="stmt" count="24"/>
      <line num="83" type="stmt" count="24"/>
      <line num="87" type="method" name="getRevision" visibility="protected" complexity="3" crap="3" count="16"/>
      <line num="88" type="stmt" count="16"/>
      <line num="89" type="stmt" count="1"/>
      <line num="90" type="stmt" count="1"/>
      <line num="91" type="stmt" count="1"/>
      <line num="92" type="stmt" count="1"/>
      <line num="95" type="stmt" count="15"/>
      <metrics loc="98" ncloc="94" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="33" coveredstatements="33" elements="36" coveredelements="36"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Rest/Handler/IPInfoHandler.php">
      <class name="MediaWiki\IPInfo\Rest\Handler\IPInfoHandler" namespace="global">
        <metrics complexity="20" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="69" coveredstatements="62" elements="74" coveredelements="66"/>
      </class>
      <line num="76" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="51"/>
      <line num="89" type="stmt" count="51"/>
      <line num="118" type="method" name="run" visibility="public" complexity="16" crap="16.75" count="51"/>
      <line num="119" type="stmt" count="51"/>
      <line num="120" type="stmt" count="10"/>
      <line num="121" type="stmt" count="10"/>
      <line num="122" type="stmt" count="10"/>
      <line num="123" type="stmt" count="10"/>
      <line num="126" type="stmt" count="41"/>
      <line num="129" type="stmt" count="41"/>
      <line num="130" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="2"/>
      <line num="133" type="stmt" count="2"/>
      <line num="137" type="stmt" count="39"/>
      <line num="141" type="stmt" count="35"/>
      <line num="142" type="stmt" count="35"/>
      <line num="143" type="stmt" count="1"/>
      <line num="144" type="stmt" count="1"/>
      <line num="145" type="stmt" count="1"/>
      <line num="146" type="stmt" count="1"/>
      <line num="149" type="stmt" count="34"/>
      <line num="150" type="stmt" count="22"/>
      <line num="151" type="stmt" count="22"/>
      <line num="152" type="stmt" count="22"/>
      <line num="153" type="stmt" count="22"/>
      <line num="154" type="stmt" count="22"/>
      <line num="157" type="stmt" count="22"/>
      <line num="158" type="stmt" count="22"/>
      <line num="159" type="stmt" count="22"/>
      <line num="160" type="stmt" count="0"/>
      <line num="162" type="stmt" count="22"/>
      <line num="163" type="stmt" count="22"/>
      <line num="164" type="stmt" count="22"/>
      <line num="165" type="stmt" count="22"/>
      <line num="166" type="stmt" count="0"/>
      <line num="175" type="stmt" count="22"/>
      <line num="176" type="stmt" count="22"/>
      <line num="177" type="stmt" count="22"/>
      <line num="178" type="stmt" count="22"/>
      <line num="180" type="stmt" count="22"/>
      <line num="181" type="stmt" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="190" type="stmt" count="22"/>
      <line num="191" type="stmt" count="22"/>
      <line num="192" type="stmt" count="0"/>
      <line num="194" type="stmt" count="22"/>
      <line num="197" type="stmt" count="22"/>
      <line num="198" type="stmt" count="22"/>
      <line num="199" type="stmt" count="22"/>
      <line num="209" type="method" name="logAccess" visibility="protected" complexity="1" crap="1" count="22"/>
      <line num="210" type="stmt" count="22"/>
      <line num="211" type="stmt" count="22"/>
      <line num="212" type="stmt" count="22"/>
      <line num="213" type="stmt" count="22"/>
      <line num="214" type="stmt" count="22"/>
      <line num="215" type="stmt" count="22"/>
      <line num="219" type="method" name="getParamSettings" visibility="public" complexity="1" crap="1" count="51"/>
      <line num="220" type="stmt" count="51"/>
      <line num="221" type="stmt" count="51"/>
      <line num="222" type="stmt" count="51"/>
      <line num="223" type="stmt" count="51"/>
      <line num="224" type="stmt" count="51"/>
      <line num="225" type="stmt" count="51"/>
      <line num="226" type="stmt" count="51"/>
      <line num="227" type="stmt" count="51"/>
      <line num="228" type="stmt" count="51"/>
      <line num="229" type="stmt" count="51"/>
      <line num="230" type="stmt" count="51"/>
      <line num="231" type="stmt" count="51"/>
      <line num="234" type="method" name="getBodyParamSettings" visibility="public" complexity="1" crap="1" count="51"/>
      <line num="235" type="stmt" count="51"/>
      <metrics loc="239" ncloc="192" classes="1" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="69" coveredstatements="62" elements="74" coveredelements="66"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Rest/Handler/LogHandler.php">
      <class name="MediaWiki\IPInfo\Rest\Handler\LogHandler" namespace="global">
        <metrics complexity="31" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="98" coveredstatements="98" elements="103" coveredelements="103"/>
      </class>
      <line num="35" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="39"/>
      <line num="51" type="stmt" count="39"/>
      <line num="52" type="stmt" count="39"/>
      <line num="53" type="stmt" count="39"/>
      <line num="54" type="stmt" count="39"/>
      <line num="55" type="stmt" count="39"/>
      <line num="56" type="stmt" count="39"/>
      <line num="57" type="stmt" count="39"/>
      <line num="58" type="stmt" count="39"/>
      <line num="59" type="stmt" count="39"/>
      <line num="60" type="stmt" count="39"/>
      <line num="61" type="stmt" count="39"/>
      <line num="62" type="stmt" count="39"/>
      <line num="63" type="stmt" count="39"/>
      <line num="66" type="method" name="factory" visibility="public" complexity="1" crap="1" count="39"/>
      <line num="81" type="stmt" count="39"/>
      <line num="82" type="stmt" count="39"/>
      <line num="83" type="stmt" count="39"/>
      <line num="84" type="stmt" count="39"/>
      <line num="85" type="stmt" count="39"/>
      <line num="86" type="stmt" count="39"/>
      <line num="87" type="stmt" count="39"/>
      <line num="88" type="stmt" count="39"/>
      <line num="89" type="stmt" count="39"/>
      <line num="90" type="stmt" count="39"/>
      <line num="91" type="stmt" count="39"/>
      <line num="92" type="stmt" count="39"/>
      <line num="93" type="stmt" count="39"/>
      <line num="94" type="stmt" count="39"/>
      <line num="95" type="stmt" count="39"/>
      <line num="96" type="stmt" count="39"/>
      <line num="100" type="method" name="getInfo" visibility="protected" complexity="25" crap="25" count="33"/>
      <line num="101" type="stmt" count="33"/>
      <line num="102" type="stmt" count="33"/>
      <line num="104" type="stmt" count="33"/>
      <line num="105" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="111" type="stmt" count="32"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="115" type="stmt" count="1"/>
      <line num="121" type="stmt" count="31"/>
      <line num="122" type="stmt" count="31"/>
      <line num="123" type="stmt" count="31"/>
      <line num="124" type="stmt" count="31"/>
      <line num="125" type="stmt" count="31"/>
      <line num="129" type="stmt" count="31"/>
      <line num="130" type="stmt" count="1"/>
      <line num="131" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="133" type="stmt" count="1"/>
      <line num="136" type="stmt" count="30"/>
      <line num="137" type="stmt" count="30"/>
      <line num="138" type="stmt" count="30"/>
      <line num="139" type="stmt" count="21"/>
      <line num="140" type="stmt" count="21"/>
      <line num="146" type="stmt" count="30"/>
      <line num="147" type="stmt" count="30"/>
      <line num="148" type="stmt" count="30"/>
      <line num="149" type="stmt" count="30"/>
      <line num="153" type="stmt" count="8"/>
      <line num="154" type="stmt" count="8"/>
      <line num="159" type="stmt" count="30"/>
      <line num="160" type="stmt" count="30"/>
      <line num="162" type="stmt" count="30"/>
      <line num="163" type="stmt" count="30"/>
      <line num="166" type="stmt" count="3"/>
      <line num="167" type="stmt" count="3"/>
      <line num="168" type="stmt" count="3"/>
      <line num="169" type="stmt" count="3"/>
      <line num="176" type="stmt" count="27"/>
      <line num="178" type="stmt" count="27"/>
      <line num="179" type="stmt" count="27"/>
      <line num="180" type="stmt" count="27"/>
      <line num="181" type="stmt" count="27"/>
      <line num="182" type="stmt" count="1"/>
      <line num="186" type="stmt" count="27"/>
      <line num="187" type="stmt" count="27"/>
      <line num="188" type="stmt" count="26"/>
      <line num="189" type="stmt" count="26"/>
      <line num="190" type="stmt" count="26"/>
      <line num="191" type="stmt" count="26"/>
      <line num="194" type="stmt" count="27"/>
      <line num="195" type="stmt" count="26"/>
      <line num="199" type="stmt" count="1"/>
      <line num="200" type="stmt" count="1"/>
      <line num="201" type="stmt" count="1"/>
      <line num="202" type="stmt" count="1"/>
      <line num="211" type="method" name="isAnonymousOrTempUser" visibility="private" complexity="3" crap="3" count="30"/>
      <line num="212" type="stmt" count="30"/>
      <line num="213" type="stmt" count="2"/>
      <line num="216" type="stmt" count="30"/>
      <line num="220" type="method" name="getParamSettings" visibility="public" complexity="1" crap="1" count="39"/>
      <line num="221" type="stmt" count="39"/>
      <line num="222" type="stmt" count="39"/>
      <line num="223" type="stmt" count="39"/>
      <line num="224" type="stmt" count="39"/>
      <line num="225" type="stmt" count="39"/>
      <line num="226" type="stmt" count="39"/>
      <line num="227" type="stmt" count="39"/>
      <metrics loc="230" ncloc="203" classes="1" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="98" coveredstatements="98" elements="103" coveredelements="103"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Rest/Handler/NoRevisionHandler.php">
      <class name="MediaWiki\IPInfo\Rest\Handler\NoRevisionHandler" namespace="global">
        <metrics complexity="11" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="69" coveredstatements="69" elements="73" coveredelements="73"/>
      </class>
      <line num="29" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="43" type="stmt" count="9"/>
      <line num="44" type="stmt" count="9"/>
      <line num="45" type="stmt" count="9"/>
      <line num="46" type="stmt" count="9"/>
      <line num="47" type="stmt" count="9"/>
      <line num="48" type="stmt" count="9"/>
      <line num="49" type="stmt" count="9"/>
      <line num="50" type="stmt" count="9"/>
      <line num="51" type="stmt" count="9"/>
      <line num="52" type="stmt" count="9"/>
      <line num="53" type="stmt" count="9"/>
      <line num="54" type="stmt" count="9"/>
      <line num="55" type="stmt" count="9"/>
      <line num="58" type="method" name="factory" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="71" type="stmt" count="9"/>
      <line num="72" type="stmt" count="9"/>
      <line num="73" type="stmt" count="9"/>
      <line num="74" type="stmt" count="9"/>
      <line num="75" type="stmt" count="9"/>
      <line num="76" type="stmt" count="9"/>
      <line num="77" type="stmt" count="9"/>
      <line num="78" type="stmt" count="9"/>
      <line num="79" type="stmt" count="9"/>
      <line num="80" type="stmt" count="9"/>
      <line num="81" type="stmt" count="9"/>
      <line num="82" type="stmt" count="9"/>
      <line num="83" type="stmt" count="9"/>
      <line num="84" type="stmt" count="9"/>
      <line num="88" type="method" name="getInfo" visibility="protected" complexity="8" crap="8" count="9"/>
      <line num="91" type="stmt" count="9"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="97" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <line num="100" type="stmt" count="1"/>
      <line num="104" type="stmt" count="7"/>
      <line num="105" type="stmt" count="7"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="114" type="stmt" count="6"/>
      <line num="115" type="stmt" count="6"/>
      <line num="117" type="stmt" count="1"/>
      <line num="118" type="stmt" count="1"/>
      <line num="119" type="stmt" count="1"/>
      <line num="120" type="stmt" count="1"/>
      <line num="124" type="stmt" count="5"/>
      <line num="125" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="128" type="stmt" count="1"/>
      <line num="131" type="stmt" count="4"/>
      <line num="132" type="stmt" count="4"/>
      <line num="133" type="stmt" count="3"/>
      <line num="134" type="stmt" count="3"/>
      <line num="135" type="stmt" count="3"/>
      <line num="136" type="stmt" count="3"/>
      <line num="137" type="stmt" count="3"/>
      <line num="138" type="stmt" count="3"/>
      <line num="141" type="stmt" count="1"/>
      <line num="145" type="method" name="getParamSettings" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="146" type="stmt" count="9"/>
      <line num="147" type="stmt" count="9"/>
      <line num="148" type="stmt" count="9"/>
      <line num="149" type="stmt" count="9"/>
      <line num="150" type="stmt" count="9"/>
      <line num="151" type="stmt" count="9"/>
      <line num="152" type="stmt" count="9"/>
      <metrics loc="155" ncloc="146" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="69" coveredstatements="69" elements="73" coveredelements="73"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Rest/Handler/RevisionHandler.php">
      <class name="MediaWiki\IPInfo\Rest\Handler\RevisionHandler" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="31" coveredelements="31"/>
      </class>
      <line num="26" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="27"/>
      <line num="40" type="stmt" count="27"/>
      <line num="41" type="stmt" count="27"/>
      <line num="42" type="stmt" count="27"/>
      <line num="43" type="stmt" count="27"/>
      <line num="44" type="stmt" count="27"/>
      <line num="45" type="stmt" count="27"/>
      <line num="46" type="stmt" count="27"/>
      <line num="47" type="stmt" count="27"/>
      <line num="48" type="stmt" count="27"/>
      <line num="49" type="stmt" count="27"/>
      <line num="50" type="stmt" count="27"/>
      <line num="51" type="stmt" count="27"/>
      <line num="52" type="stmt" count="27"/>
      <line num="55" type="method" name="factory" visibility="public" complexity="1" crap="1" count="27"/>
      <line num="68" type="stmt" count="27"/>
      <line num="69" type="stmt" count="27"/>
      <line num="70" type="stmt" count="27"/>
      <line num="71" type="stmt" count="27"/>
      <line num="72" type="stmt" count="27"/>
      <line num="73" type="stmt" count="27"/>
      <line num="74" type="stmt" count="27"/>
      <line num="75" type="stmt" count="27"/>
      <line num="76" type="stmt" count="27"/>
      <line num="77" type="stmt" count="27"/>
      <line num="78" type="stmt" count="27"/>
      <line num="79" type="stmt" count="27"/>
      <line num="80" type="stmt" count="27"/>
      <line num="81" type="stmt" count="27"/>
      <line num="85" type="method" name="getRevision" visibility="protected" complexity="1" crap="1" count="18"/>
      <line num="86" type="stmt" count="18"/>
      <metrics loc="89" ncloc="85" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="31" coveredelements="31"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Rest/Presenter/DefaultPresenter.php">
      <class name="MediaWiki\IPInfo\Rest\Presenter\DefaultPresenter" namespace="global">
        <metrics complexity="21" methods="6" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="85" coveredstatements="84" elements="91" coveredelements="89"/>
      </class>
      <line num="68" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="21"/>
      <line num="71" type="stmt" count="21"/>
      <line num="78" type="method" name="present" visibility="public" complexity="12" crap="12" count="19"/>
      <line num="79" type="stmt" count="19"/>
      <line num="80" type="stmt" count="19"/>
      <line num="81" type="stmt" count="19"/>
      <line num="82" type="stmt" count="19"/>
      <line num="83" type="stmt" count="19"/>
      <line num="84" type="stmt" count="19"/>
      <line num="85" type="stmt" count="19"/>
      <line num="86" type="stmt" count="19"/>
      <line num="87" type="stmt" count="19"/>
      <line num="89" type="stmt" count="19"/>
      <line num="90" type="stmt" count="19"/>
      <line num="91" type="stmt" count="19"/>
      <line num="92" type="stmt" count="19"/>
      <line num="93" type="stmt" count="19"/>
      <line num="95" type="stmt" count="16"/>
      <line num="96" type="stmt" count="16"/>
      <line num="97" type="stmt" count="16"/>
      <line num="98" type="stmt" count="16"/>
      <line num="101" type="stmt" count="16"/>
      <line num="102" type="stmt" count="16"/>
      <line num="104" type="stmt" count="16"/>
      <line num="105" type="stmt" count="15"/>
      <line num="107" type="stmt" count="15"/>
      <line num="108" type="stmt" count="4"/>
      <line num="109" type="stmt" count="11"/>
      <line num="110" type="stmt" count="6"/>
      <line num="111" type="stmt" count="5"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="4"/>
      <line num="114" type="stmt" count="1"/>
      <line num="115" type="stmt" count="3"/>
      <line num="116" type="stmt" count="1"/>
      <line num="117" type="stmt" count="2"/>
      <line num="118" type="stmt" count="2"/>
      <line num="122" type="stmt" count="15"/>
      <line num="123" type="stmt" count="15"/>
      <line num="124" type="stmt" count="8"/>
      <line num="128" type="stmt" count="15"/>
      <line num="131" type="stmt" count="16"/>
      <line num="140" type="method" name="presentInfo" visibility="private" complexity="4" crap="4" count="4"/>
      <line num="141" type="stmt" count="4"/>
      <line num="142" type="stmt" count="4"/>
      <line num="143" type="stmt" count="4"/>
      <line num="145" type="stmt" count="4"/>
      <line num="146" type="stmt" count="4"/>
      <line num="147" type="stmt" count="4"/>
      <line num="148" type="stmt" count="4"/>
      <line num="150" type="stmt" count="4"/>
      <line num="151" type="stmt" count="4"/>
      <line num="152" type="stmt" count="4"/>
      <line num="153" type="stmt" count="4"/>
      <line num="154" type="stmt" count="2"/>
      <line num="155" type="stmt" count="2"/>
      <line num="156" type="stmt" count="2"/>
      <line num="157" type="stmt" count="2"/>
      <line num="158" type="stmt" count="4"/>
      <line num="159" type="stmt" count="4"/>
      <line num="160" type="stmt" count="4"/>
      <line num="161" type="stmt" count="4"/>
      <line num="162" type="stmt" count="4"/>
      <line num="163" type="stmt" count="4"/>
      <line num="164" type="stmt" count="4"/>
      <line num="165" type="stmt" count="4"/>
      <line num="166" type="stmt" count="4"/>
      <line num="167" type="stmt" count="4"/>
      <line num="170" type="stmt" count="4"/>
      <line num="177" type="method" name="presentIPoidInfo" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="178" type="stmt" count="2"/>
      <line num="179" type="stmt" count="2"/>
      <line num="180" type="stmt" count="2"/>
      <line num="181" type="stmt" count="2"/>
      <line num="182" type="stmt" count="2"/>
      <line num="183" type="stmt" count="2"/>
      <line num="184" type="stmt" count="2"/>
      <line num="185" type="stmt" count="2"/>
      <line num="192" type="method" name="presentBlockInfo" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="193" type="stmt" count="2"/>
      <line num="194" type="stmt" count="2"/>
      <line num="195" type="stmt" count="2"/>
      <line num="203" type="method" name="presentContributionInfo" visibility="private" complexity="2" crap="2.01" count="1"/>
      <line num="204" type="stmt" count="1"/>
      <line num="205" type="stmt" count="1"/>
      <line num="206" type="stmt" count="1"/>
      <line num="207" type="stmt" count="1"/>
      <line num="208" type="stmt" count="1"/>
      <line num="209" type="stmt" count="1"/>
      <line num="210" type="stmt" count="0"/>
      <line num="212" type="stmt" count="1"/>
      <metrics loc="215" ncloc="184" classes="1" methods="6" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="85" coveredstatements="84" elements="91" coveredelements="89"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/ServiceWiring.php">
      <metrics loc="107" ncloc="103" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/Special/SpecialIPInfo.php">
      <class name="MediaWiki\IPInfo\Special\SpecialIPInfo" namespace="global">
        <metrics complexity="50" methods="20" coveredmethods="17" conditionals="0" coveredconditionals="0" statements="264" coveredstatements="257" elements="284" coveredelements="274"/>
      </class>
      <line num="55" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="15"/>
      <line num="65" type="stmt" count="15"/>
      <line num="66" type="stmt" count="15"/>
      <line num="67" type="stmt" count="15"/>
      <line num="69" type="stmt" count="15"/>
      <line num="70" type="stmt" count="15"/>
      <line num="71" type="stmt" count="15"/>
      <line num="75" type="method" name="getRestriction" visibility="public" complexity="1" crap="1" count="12"/>
      <line num="76" type="stmt" count="12"/>
      <line num="80" type="method" name="execute" visibility="public" complexity="3" crap="3" count="13"/>
      <line num="81" type="stmt" count="13"/>
      <line num="83" type="stmt" count="13"/>
      <line num="84" type="stmt" count="13"/>
      <line num="85" type="stmt" count="1"/>
      <line num="86" type="stmt" count="1"/>
      <line num="87" type="stmt" count="1"/>
      <line num="88" type="stmt" count="1"/>
      <line num="89" type="stmt" count="1"/>
      <line num="90" type="stmt" count="1"/>
      <line num="93" type="stmt" count="12"/>
      <line num="96" type="method" name="didNotAcceptIPInfoAgreement" visibility="private" complexity="1" crap="1" count="13"/>
      <line num="97" type="stmt" count="13"/>
      <line num="98" type="stmt" count="13"/>
      <line num="99" type="stmt" count="13"/>
      <line num="108" type="method" name="maybeAcceptAgreement" visibility="private" complexity="3" crap="3.01" count="7"/>
      <line num="109" type="stmt" count="7"/>
      <line num="110" type="stmt" count="1"/>
      <line num="111" type="stmt" count="0"/>
      <line num="114" type="stmt" count="1"/>
      <line num="115" type="stmt" count="1"/>
      <line num="116" type="stmt" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="118" type="stmt" count="1"/>
      <line num="121" type="stmt" count="7"/>
      <line num="125" type="method" name="requiresPost" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="128" type="stmt" count="11"/>
      <line num="132" type="method" name="doesWrites" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="133" type="stmt" count="2"/>
      <line num="136" type="method" name="getSubpageField" visibility="protected" complexity="1" crap="1" count="11"/>
      <line num="137" type="stmt" count="11"/>
      <line num="140" type="method" name="getFormFields" visibility="protected" complexity="4" crap="4" count="11"/>
      <line num="141" type="stmt" count="11"/>
      <line num="142" type="stmt" count="11"/>
      <line num="143" type="stmt" count="11"/>
      <line num="144" type="stmt" count="11"/>
      <line num="145" type="stmt" count="11"/>
      <line num="146" type="stmt" count="11"/>
      <line num="147" type="stmt" count="11"/>
      <line num="148" type="stmt" count="11"/>
      <line num="149" type="stmt" count="11"/>
      <line num="150" type="stmt" count="11"/>
      <line num="152" type="stmt" count="11"/>
      <line num="155" type="stmt" count="11"/>
      <line num="159" type="stmt" count="2"/>
      <line num="160" type="stmt" count="2"/>
      <line num="162" type="stmt" count="2"/>
      <line num="163" type="stmt" count="2"/>
      <line num="164" type="stmt" count="2"/>
      <line num="165" type="stmt" count="2"/>
      <line num="166" type="stmt" count="2"/>
      <line num="167" type="stmt" count="2"/>
      <line num="170" type="stmt" count="11"/>
      <line num="173" type="method" name="alterForm" visibility="protected" complexity="2" crap="2" count="11"/>
      <line num="174" type="stmt" count="11"/>
      <line num="175" type="stmt" count="11"/>
      <line num="176" type="stmt" count="2"/>
      <line num="178" type="stmt" count="9"/>
      <line num="179" type="stmt" count="9"/>
      <line num="180" type="stmt" count="9"/>
      <line num="183" type="stmt" count="11"/>
      <line num="187" type="method" name="getDescription" visibility="public" complexity="1" crap="1" count="12"/>
      <line num="188" type="stmt" count="12"/>
      <line num="191" type="method" name="getMessagePrefix" visibility="protected" complexity="1" crap="1" count="11"/>
      <line num="194" type="stmt" count="11"/>
      <line num="197" type="method" name="getDisplayFormat" visibility="protected" complexity="1" crap="1" count="11"/>
      <line num="200" type="stmt" count="11"/>
      <line num="203" type="method" name="getShowAlways" visibility="protected" complexity="1" crap="1" count="11"/>
      <line num="204" type="stmt" count="11"/>
      <line num="220" type="method" name="onSubmit" visibility="public" complexity="8" crap="8.34" count="9"/>
      <line num="221" type="stmt" count="9"/>
      <line num="224" type="stmt" count="9"/>
      <line num="225" type="stmt" count="2"/>
      <line num="226" type="stmt" count="2"/>
      <line num="227" type="stmt" count="2"/>
      <line num="228" type="stmt" count="1"/>
      <line num="231" type="stmt" count="1"/>
      <line num="232" type="stmt" count="0"/>
      <line num="235" type="stmt" count="1"/>
      <line num="237" type="stmt" count="1"/>
      <line num="238" type="stmt" count="1"/>
      <line num="239" type="stmt" count="0"/>
      <line num="242" type="stmt" count="1"/>
      <line num="245" type="stmt" count="7"/>
      <line num="246" type="stmt" count="0"/>
      <line num="249" type="stmt" count="7"/>
      <line num="250" type="stmt" count="7"/>
      <line num="251" type="stmt" count="1"/>
      <line num="254" type="stmt" count="6"/>
      <line num="255" type="stmt" count="6"/>
      <line num="256" type="stmt" count="0"/>
      <line num="259" type="stmt" count="6"/>
      <line num="261" type="stmt" count="6"/>
      <line num="265" type="method" name="onSuccess" visibility="public" complexity="2" crap="2" count="7"/>
      <line num="266" type="stmt" count="7"/>
      <line num="267" type="stmt" count="1"/>
      <line num="269" type="stmt" count="6"/>
      <line num="279" type="method" name="getTableHeaders" visibility="private" complexity="1" crap="1" count="6"/>
      <line num="280" type="stmt" count="6"/>
      <line num="281" type="stmt" count="6"/>
      <line num="282" type="stmt" count="6"/>
      <line num="283" type="stmt" count="6"/>
      <line num="284" type="stmt" count="6"/>
      <line num="285" type="stmt" count="6"/>
      <line num="286" type="stmt" count="6"/>
      <line num="287" type="stmt" count="6"/>
      <line num="288" type="stmt" count="6"/>
      <line num="289" type="stmt" count="6"/>
      <line num="290" type="stmt" count="6"/>
      <line num="291" type="stmt" count="6"/>
      <line num="292" type="stmt" count="6"/>
      <line num="293" type="stmt" count="6"/>
      <line num="294" type="stmt" count="6"/>
      <line num="295" type="stmt" count="6"/>
      <line num="296" type="stmt" count="6"/>
      <line num="297" type="stmt" count="6"/>
      <line num="298" type="stmt" count="6"/>
      <line num="299" type="stmt" count="6"/>
      <line num="300" type="stmt" count="6"/>
      <line num="301" type="stmt" count="6"/>
      <line num="302" type="stmt" count="6"/>
      <line num="303" type="stmt" count="6"/>
      <line num="304" type="stmt" count="6"/>
      <line num="305" type="stmt" count="6"/>
      <line num="306" type="stmt" count="6"/>
      <line num="307" type="stmt" count="6"/>
      <line num="308" type="stmt" count="6"/>
      <line num="309" type="stmt" count="6"/>
      <line num="310" type="stmt" count="6"/>
      <line num="311" type="stmt" count="6"/>
      <line num="312" type="stmt" count="6"/>
      <line num="313" type="stmt" count="6"/>
      <line num="314" type="stmt" count="6"/>
      <line num="315" type="stmt" count="6"/>
      <line num="316" type="stmt" count="6"/>
      <line num="317" type="stmt" count="6"/>
      <line num="318" type="stmt" count="6"/>
      <line num="319" type="stmt" count="6"/>
      <line num="320" type="stmt" count="6"/>
      <line num="321" type="stmt" count="6"/>
      <line num="322" type="stmt" count="6"/>
      <line num="323" type="stmt" count="6"/>
      <line num="324" type="stmt" count="6"/>
      <line num="325" type="stmt" count="6"/>
      <line num="326" type="stmt" count="6"/>
      <line num="327" type="stmt" count="6"/>
      <line num="328" type="stmt" count="6"/>
      <line num="329" type="stmt" count="6"/>
      <line num="330" type="stmt" count="6"/>
      <line num="331" type="stmt" count="6"/>
      <line num="332" type="stmt" count="6"/>
      <line num="333" type="stmt" count="6"/>
      <line num="334" type="stmt" count="6"/>
      <line num="335" type="stmt" count="6"/>
      <line num="336" type="stmt" count="6"/>
      <line num="346" type="method" name="buildTableRow" visibility="private" complexity="3" crap="3.00" count="6"/>
      <line num="347" type="stmt" count="6"/>
      <line num="349" type="stmt" count="6"/>
      <line num="350" type="stmt" count="6"/>
      <line num="351" type="stmt" count="6"/>
      <line num="352" type="stmt" count="6"/>
      <line num="354" type="stmt" count="6"/>
      <line num="355" type="stmt" count="6"/>
      <line num="356" type="stmt" count="4"/>
      <line num="357" type="stmt" count="4"/>
      <line num="367" type="stmt" count="4"/>
      <line num="368" type="stmt" count="6"/>
      <line num="369" type="stmt" count="6"/>
      <line num="370" type="stmt" count="6"/>
      <line num="372" type="stmt" count="6"/>
      <line num="373" type="stmt" count="6"/>
      <line num="374" type="stmt" count="0"/>
      <line num="382" type="stmt" count="0"/>
      <line num="383" type="stmt" count="6"/>
      <line num="384" type="stmt" count="6"/>
      <line num="385" type="stmt" count="6"/>
      <line num="387" type="stmt" count="6"/>
      <line num="389" type="stmt" count="6"/>
      <line num="390" type="stmt" count="6"/>
      <line num="391" type="stmt" count="6"/>
      <line num="392" type="stmt" count="6"/>
      <line num="393" type="stmt" count="6"/>
      <line num="394" type="stmt" count="6"/>
      <line num="395" type="stmt" count="6"/>
      <line num="396" type="stmt" count="6"/>
      <line num="397" type="stmt" count="6"/>
      <line num="398" type="stmt" count="6"/>
      <line num="399" type="stmt" count="6"/>
      <line num="400" type="stmt" count="6"/>
      <line num="401" type="stmt" count="6"/>
      <line num="402" type="stmt" count="6"/>
      <line num="408" type="method" name="onSuccessForIp" visibility="private" complexity="1" crap="1" count="1"/>
      <line num="409" type="stmt" count="1"/>
      <line num="410" type="stmt" count="1"/>
      <line num="411" type="stmt" count="1"/>
      <line num="412" type="stmt" count="1"/>
      <line num="414" type="stmt" count="1"/>
      <line num="415" type="stmt" count="1"/>
      <line num="417" type="stmt" count="1"/>
      <line num="418" type="stmt" count="1"/>
      <line num="419" type="stmt" count="1"/>
      <line num="421" type="stmt" count="1"/>
      <line num="424" type="stmt" count="1"/>
      <line num="425" type="stmt" count="1"/>
      <line num="426" type="stmt" count="1"/>
      <line num="427" type="stmt" count="1"/>
      <line num="429" type="stmt" count="1"/>
      <line num="430" type="stmt" count="1"/>
      <line num="431" type="stmt" count="1"/>
      <line num="432" type="stmt" count="1"/>
      <line num="433" type="stmt" count="1"/>
      <line num="434" type="stmt" count="1"/>
      <line num="435" type="stmt" count="1"/>
      <line num="436" type="stmt" count="1"/>
      <line num="437" type="stmt" count="1"/>
      <line num="438" type="stmt" count="1"/>
      <line num="444" type="method" name="onSuccessForTempUser" visibility="private" complexity="12" crap="12" count="6"/>
      <line num="445" type="stmt" count="6"/>
      <line num="446" type="stmt" count="6"/>
      <line num="448" type="stmt" count="6"/>
      <line num="449" type="stmt" count="6"/>
      <line num="450" type="stmt" count="6"/>
      <line num="451" type="stmt" count="6"/>
      <line num="453" type="stmt" count="6"/>
      <line num="455" type="stmt" count="6"/>
      <line num="456" type="stmt" count="1"/>
      <line num="457" type="stmt" count="1"/>
      <line num="458" type="stmt" count="1"/>
      <line num="461" type="stmt" count="5"/>
      <line num="463" type="stmt" count="5"/>
      <line num="464" type="stmt" count="5"/>
      <line num="465" type="stmt" count="5"/>
      <line num="466" type="stmt" count="5"/>
      <line num="467" type="stmt" count="5"/>
      <line num="468" type="stmt" count="5"/>
      <line num="469" type="stmt" count="5"/>
      <line num="470" type="stmt" count="5"/>
      <line num="472" type="stmt" count="5"/>
      <line num="473" type="stmt" count="5"/>
      <line num="474" type="stmt" count="5"/>
      <line num="475" type="stmt" count="5"/>
      <line num="477" type="stmt" count="5"/>
      <line num="478" type="stmt" count="5"/>
      <line num="479" type="stmt" count="5"/>
      <line num="481" type="stmt" count="5"/>
      <line num="484" type="stmt" count="5"/>
      <line num="485" type="stmt" count="5"/>
      <line num="486" type="stmt" count="5"/>
      <line num="487" type="stmt" count="5"/>
      <line num="488" type="stmt" count="5"/>
      <line num="489" type="stmt" count="5"/>
      <line num="493" type="stmt" count="2"/>
      <line num="494" type="stmt" count="2"/>
      <line num="496" type="stmt" count="5"/>
      <line num="499" type="stmt" count="5"/>
      <line num="500" type="stmt" count="4"/>
      <line num="504" type="stmt" count="5"/>
      <line num="505" type="stmt" count="2"/>
      <line num="506" type="stmt" count="2"/>
      <line num="507" type="stmt" count="2"/>
      <line num="508" type="stmt" count="2"/>
      <line num="509" type="stmt" count="1"/>
      <line num="510" type="stmt" count="2"/>
      <line num="511" type="stmt" count="2"/>
      <line num="512" type="stmt" count="2"/>
      <line num="515" type="stmt" count="5"/>
      <line num="516" type="stmt" count="5"/>
      <line num="517" type="stmt" count="5"/>
      <line num="520" type="stmt" count="5"/>
      <line num="521" type="stmt" count="5"/>
      <line num="522" type="stmt" count="5"/>
      <line num="523" type="stmt" count="5"/>
      <line num="524" type="stmt" count="5"/>
      <line num="525" type="stmt" count="5"/>
      <line num="526" type="stmt" count="5"/>
      <metrics loc="529" ncloc="454" classes="1" methods="20" coveredmethods="17" conditionals="0" coveredconditionals="0" statements="264" coveredstatements="257" elements="284" coveredelements="274"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/TempUserIPLookup.php">
      <class name="MediaWiki\IPInfo\TempUserIPLookup" namespace="global">
        <metrics complexity="32" methods="6" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="251" coveredstatements="247" elements="257" coveredelements="251"/>
      </class>
      <line num="35" type="method" name="__construct" visibility="public" complexity="2" crap="2" count="31"/>
      <line num="42" type="stmt" count="31"/>
      <line num="43" type="stmt" count="31"/>
      <line num="44" type="stmt" count="31"/>
      <line num="45" type="stmt" count="31"/>
      <line num="46" type="stmt" count="31"/>
      <line num="47" type="stmt" count="31"/>
      <line num="48" type="stmt" count="31"/>
      <line num="50" type="stmt" count="31"/>
      <line num="60" type="method" name="getMostRecentAddress" visibility="public" complexity="11" crap="11" count="17"/>
      <line num="61" type="stmt" count="17"/>
      <line num="62" type="stmt" count="17"/>
      <line num="63" type="stmt" count="17"/>
      <line num="64" type="stmt" count="17"/>
      <line num="65" type="stmt" count="17"/>
      <line num="68" type="stmt" count="16"/>
      <line num="69" type="stmt" count="2"/>
      <line num="74" type="stmt" count="14"/>
      <line num="75" type="stmt" count="14"/>
      <line num="77" type="stmt" count="1"/>
      <line num="81" type="stmt" count="13"/>
      <line num="82" type="stmt" count="13"/>
      <line num="83" type="stmt" count="2"/>
      <line num="86" type="stmt" count="13"/>
      <line num="90" type="stmt" count="13"/>
      <line num="91" type="stmt" count="13"/>
      <line num="92" type="stmt" count="13"/>
      <line num="93" type="stmt" count="13"/>
      <line num="95" type="stmt" count="13"/>
      <line num="96" type="stmt" count="13"/>
      <line num="97" type="stmt" count="13"/>
      <line num="98" type="stmt" count="13"/>
      <line num="99" type="stmt" count="13"/>
      <line num="100" type="stmt" count="13"/>
      <line num="101" type="stmt" count="13"/>
      <line num="102" type="stmt" count="13"/>
      <line num="103" type="stmt" count="13"/>
      <line num="104" type="stmt" count="13"/>
      <line num="105" type="stmt" count="13"/>
      <line num="106" type="stmt" count="13"/>
      <line num="107" type="stmt" count="13"/>
      <line num="108" type="stmt" count="13"/>
      <line num="109" type="stmt" count="13"/>
      <line num="110" type="stmt" count="13"/>
      <line num="111" type="stmt" count="9"/>
      <line num="112" type="stmt" count="9"/>
      <line num="115" type="stmt" count="13"/>
      <line num="116" type="stmt" count="13"/>
      <line num="117" type="stmt" count="13"/>
      <line num="118" type="stmt" count="13"/>
      <line num="119" type="stmt" count="13"/>
      <line num="120" type="stmt" count="13"/>
      <line num="121" type="stmt" count="13"/>
      <line num="122" type="stmt" count="13"/>
      <line num="123" type="stmt" count="13"/>
      <line num="124" type="stmt" count="13"/>
      <line num="125" type="stmt" count="13"/>
      <line num="126" type="stmt" count="13"/>
      <line num="127" type="stmt" count="13"/>
      <line num="128" type="stmt" count="13"/>
      <line num="129" type="stmt" count="13"/>
      <line num="130" type="stmt" count="13"/>
      <line num="131" type="stmt" count="4"/>
      <line num="132" type="stmt" count="4"/>
      <line num="135" type="stmt" count="13"/>
      <line num="136" type="stmt" count="13"/>
      <line num="137" type="stmt" count="13"/>
      <line num="138" type="stmt" count="13"/>
      <line num="139" type="stmt" count="13"/>
      <line num="140" type="stmt" count="13"/>
      <line num="141" type="stmt" count="13"/>
      <line num="142" type="stmt" count="13"/>
      <line num="143" type="stmt" count="13"/>
      <line num="144" type="stmt" count="13"/>
      <line num="145" type="stmt" count="13"/>
      <line num="146" type="stmt" count="13"/>
      <line num="147" type="stmt" count="13"/>
      <line num="148" type="stmt" count="13"/>
      <line num="149" type="stmt" count="13"/>
      <line num="150" type="stmt" count="13"/>
      <line num="151" type="stmt" count="3"/>
      <line num="152" type="stmt" count="3"/>
      <line num="156" type="stmt" count="13"/>
      <line num="157" type="stmt" count="6"/>
      <line num="158" type="stmt" count="6"/>
      <line num="159" type="stmt" count="6"/>
      <line num="160" type="stmt" count="6"/>
      <line num="161" type="stmt" count="6"/>
      <line num="162" type="stmt" count="6"/>
      <line num="163" type="stmt" count="6"/>
      <line num="164" type="stmt" count="6"/>
      <line num="165" type="stmt" count="6"/>
      <line num="166" type="stmt" count="6"/>
      <line num="167" type="stmt" count="6"/>
      <line num="168" type="stmt" count="6"/>
      <line num="169" type="stmt" count="6"/>
      <line num="170" type="stmt" count="6"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="176" type="stmt" count="13"/>
      <line num="177" type="stmt" count="13"/>
      <line num="187" type="method" name="getAddressForRevision" visibility="public" complexity="4" crap="4" count="4"/>
      <line num="188" type="stmt" count="4"/>
      <line num="189" type="stmt" count="4"/>
      <line num="190" type="stmt" count="4"/>
      <line num="191" type="stmt" count="4"/>
      <line num="192" type="stmt" count="4"/>
      <line num="193" type="stmt" count="4"/>
      <line num="196" type="stmt" count="3"/>
      <line num="197" type="stmt" count="1"/>
      <line num="200" type="stmt" count="2"/>
      <line num="201" type="stmt" count="1"/>
      <line num="204" type="stmt" count="1"/>
      <line num="205" type="stmt" count="1"/>
      <line num="206" type="stmt" count="1"/>
      <line num="207" type="stmt" count="1"/>
      <line num="208" type="stmt" count="1"/>
      <line num="209" type="stmt" count="1"/>
      <line num="210" type="stmt" count="1"/>
      <line num="211" type="stmt" count="1"/>
      <line num="212" type="stmt" count="1"/>
      <line num="213" type="stmt" count="1"/>
      <line num="214" type="stmt" count="1"/>
      <line num="216" type="stmt" count="1"/>
      <line num="226" type="method" name="getAddressForLogEntry" visibility="public" complexity="4" crap="4" count="4"/>
      <line num="227" type="stmt" count="4"/>
      <line num="228" type="stmt" count="4"/>
      <line num="229" type="stmt" count="4"/>
      <line num="230" type="stmt" count="4"/>
      <line num="231" type="stmt" count="4"/>
      <line num="232" type="stmt" count="4"/>
      <line num="235" type="stmt" count="3"/>
      <line num="236" type="stmt" count="1"/>
      <line num="239" type="stmt" count="2"/>
      <line num="240" type="stmt" count="1"/>
      <line num="243" type="stmt" count="1"/>
      <line num="244" type="stmt" count="1"/>
      <line num="245" type="stmt" count="1"/>
      <line num="246" type="stmt" count="1"/>
      <line num="247" type="stmt" count="1"/>
      <line num="248" type="stmt" count="1"/>
      <line num="249" type="stmt" count="1"/>
      <line num="250" type="stmt" count="1"/>
      <line num="251" type="stmt" count="1"/>
      <line num="252" type="stmt" count="1"/>
      <line num="253" type="stmt" count="1"/>
      <line num="255" type="stmt" count="1"/>
      <line num="264" type="method" name="getDistinctAddressCount" visibility="public" complexity="3" crap="3" count="5"/>
      <line num="265" type="stmt" count="5"/>
      <line num="266" type="stmt" count="5"/>
      <line num="267" type="stmt" count="5"/>
      <line num="268" type="stmt" count="5"/>
      <line num="269" type="stmt" count="5"/>
      <line num="271" type="stmt" count="4"/>
      <line num="272" type="stmt" count="1"/>
      <line num="275" type="stmt" count="3"/>
      <line num="277" type="stmt" count="3"/>
      <line num="278" type="stmt" count="3"/>
      <line num="279" type="stmt" count="3"/>
      <line num="280" type="stmt" count="3"/>
      <line num="281" type="stmt" count="3"/>
      <line num="282" type="stmt" count="3"/>
      <line num="283" type="stmt" count="3"/>
      <line num="284" type="stmt" count="3"/>
      <line num="285" type="stmt" count="3"/>
      <line num="286" type="stmt" count="3"/>
      <line num="287" type="stmt" count="3"/>
      <line num="289" type="stmt" count="3"/>
      <line num="290" type="stmt" count="3"/>
      <line num="291" type="stmt" count="3"/>
      <line num="292" type="stmt" count="3"/>
      <line num="293" type="stmt" count="3"/>
      <line num="294" type="stmt" count="3"/>
      <line num="295" type="stmt" count="3"/>
      <line num="296" type="stmt" count="3"/>
      <line num="297" type="stmt" count="3"/>
      <line num="298" type="stmt" count="3"/>
      <line num="300" type="stmt" count="3"/>
      <line num="301" type="stmt" count="2"/>
      <line num="304" type="stmt" count="3"/>
      <line num="306" type="stmt" count="3"/>
      <line num="319" type="method" name="getDistinctIPInfo" visibility="public" complexity="8" crap="8" count="3"/>
      <line num="320" type="stmt" count="3"/>
      <line num="321" type="stmt" count="3"/>
      <line num="322" type="stmt" count="3"/>
      <line num="323" type="stmt" count="3"/>
      <line num="324" type="stmt" count="3"/>
      <line num="326" type="stmt" count="2"/>
      <line num="327" type="stmt" count="1"/>
      <line num="330" type="stmt" count="1"/>
      <line num="339" type="stmt" count="1"/>
      <line num="340" type="stmt" count="1"/>
      <line num="341" type="stmt" count="1"/>
      <line num="342" type="stmt" count="1"/>
      <line num="343" type="stmt" count="1"/>
      <line num="344" type="stmt" count="1"/>
      <line num="345" type="stmt" count="1"/>
      <line num="346" type="stmt" count="1"/>
      <line num="348" type="stmt" count="1"/>
      <line num="349" type="stmt" count="1"/>
      <line num="350" type="stmt" count="1"/>
      <line num="351" type="stmt" count="1"/>
      <line num="352" type="stmt" count="1"/>
      <line num="353" type="stmt" count="1"/>
      <line num="354" type="stmt" count="1"/>
      <line num="355" type="stmt" count="1"/>
      <line num="361" type="stmt" count="1"/>
      <line num="362" type="stmt" count="1"/>
      <line num="364" type="stmt" count="1"/>
      <line num="365" type="stmt" count="1"/>
      <line num="366" type="stmt" count="1"/>
      <line num="367" type="stmt" count="1"/>
      <line num="368" type="stmt" count="1"/>
      <line num="369" type="stmt" count="1"/>
      <line num="370" type="stmt" count="1"/>
      <line num="371" type="stmt" count="1"/>
      <line num="372" type="stmt" count="1"/>
      <line num="373" type="stmt" count="1"/>
      <line num="374" type="stmt" count="1"/>
      <line num="375" type="stmt" count="1"/>
      <line num="376" type="stmt" count="1"/>
      <line num="377" type="stmt" count="1"/>
      <line num="379" type="stmt" count="1"/>
      <line num="380" type="stmt" count="1"/>
      <line num="381" type="stmt" count="1"/>
      <line num="382" type="stmt" count="1"/>
      <line num="383" type="stmt" count="1"/>
      <line num="384" type="stmt" count="1"/>
      <line num="385" type="stmt" count="1"/>
      <line num="386" type="stmt" count="1"/>
      <line num="387" type="stmt" count="1"/>
      <line num="388" type="stmt" count="1"/>
      <line num="389" type="stmt" count="1"/>
      <line num="390" type="stmt" count="1"/>
      <line num="391" type="stmt" count="1"/>
      <line num="392" type="stmt" count="1"/>
      <line num="396" type="stmt" count="1"/>
      <line num="397" type="stmt" count="1"/>
      <line num="398" type="stmt" count="1"/>
      <line num="401" type="stmt" count="1"/>
      <line num="402" type="stmt" count="1"/>
      <line num="403" type="stmt" count="1"/>
      <line num="404" type="stmt" count="1"/>
      <line num="405" type="stmt" count="1"/>
      <line num="407" type="stmt" count="1"/>
      <line num="408" type="stmt" count="0"/>
      <line num="411" type="stmt" count="1"/>
      <line num="412" type="stmt" count="1"/>
      <line num="413" type="stmt" count="1"/>
      <line num="414" type="stmt" count="0"/>
      <line num="417" type="stmt" count="1"/>
      <line num="418" type="stmt" count="1"/>
      <line num="419" type="stmt" count="1"/>
      <line num="420" type="stmt" count="1"/>
      <line num="421" type="stmt" count="1"/>
      <line num="422" type="stmt" count="1"/>
      <line num="425" type="stmt" count="1"/>
      <metrics loc="428" ncloc="364" classes="1" methods="6" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="251" coveredstatements="247" elements="257" coveredelements="251"/>
    </file>
    <file name="/workspace/src/extensions/IPInfo/src/TempUserIPRecord.php">
      <class name="MediaWiki\IPInfo\TempUserIPRecord" namespace="global">
        <metrics complexity="5" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="11" coveredelements="11"/>
      </class>
      <line num="25" type="method" name="__construct" visibility="public" complexity="2" crap="2" count="4"/>
      <line num="30" type="stmt" count="4"/>
      <line num="31" type="stmt" count="4"/>
      <line num="32" type="stmt" count="4"/>
      <line num="33" type="stmt" count="4"/>
      <line num="40" type="method" name="getIp" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="41" type="stmt" count="3"/>
      <line num="48" type="method" name="getRevisionId" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="49" type="stmt" count="3"/>
      <line num="56" type="method" name="getLogId" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="57" type="stmt" count="3"/>
      <metrics loc="60" ncloc="34" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="11" coveredelements="11"/>
    </file>
    <metrics files="48" loc="4761" ncloc="3921" classes="44" methods="184" coveredmethods="157" conditionals="0" coveredconditionals="0" statements="1668" coveredstatements="1609" elements="1852" coveredelements="1766"/>
  </project>
</coverage>
