/** Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 2 ĠHigh Cap able Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠY uki Hook API . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis ĠCreated Ġby Ġf ank es Ġon Ġ 2 0 2 2 / 2 / 2 . Ċ Ġ*/ Ċ @ file : Suppress (" Member Visibility Can Be Private ", Ġ" unused ", Ġ" EXPERIMENT AL _ API _ USAGE ") Ċ Ċ package Ġcom . high cap able . y uki hook api . hook . core Ċ Ċ import Ġcom . high cap able . y uki hook api . Y uki Hook API Ċ import Ġcom . high cap able . y uki hook api . annotation . DoNot Use Method Ċ import Ġcom . high cap able . y uki hook api . hook . core . finder . Constructor Finder Ċ import Ġcom . high cap able . y uki hook api . hook . core . finder . Field Finder Ċ import Ġcom . high cap able . y uki hook api . hook . core . finder . Method Finder Ċ import Ġcom . high cap able . y uki hook api . hook . log . logger E Ċ import Ġcom . high cap able . y uki hook api . hook . log . logger I Ċ import Ġcom . high cap able . y uki hook api . hook . param . Hook Param Ċ import Ġcom . high cap able . y uki hook api . hook . param . Package Param Ċ import Ġde . rob v . android . x posed . XC _ Method Hook Ċ import Ġde . rob v . android . x posed . XC _ Method Replacement Ċ import Ġde . rob v . android . x posed . X posed Bridge Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . lang . reflect . Member Ċ Ċ /** Ċ Ġ* ĠY uki Hook Ġ æł¸å¿ĥ ç±» å®ŀçİ° æĸ¹æ³ķ Ċ Ġ* Ċ Ġ* Ġ è¿Ļ æĺ¯ä¸Ģä¸ª ĠAPI Ġå¯¹ æİ¥ ç±» Ġ- Ġ å®ŀçİ° åİŁ çĶŁ å¯¹ æİ¥ Ġ[ X posed Bridge ] Ċ Ġ* Ġ@ param Ġpackage Param ĠéľĢè¦ģ ä¼łåħ¥ Ġ[ Package Param ] Ġ å®ŀçİ° æĸ¹æ³ķ è°ĥçĶ¨ Ċ Ġ* Ġ@ param Ġhook Class Ġ è¦ģ ĠHook ĠçļĦ Ġ[ Class ] Ġ- Ġ å¿ħé¡» å·² ä½¿çĶ¨ å½ĵåīį ĠHook ĠAPP ĠçļĦ Ġ[ ClassLoader ] Ġ è£ħ è½½ Ċ Ġ*/ Ċ class ĠY uki Hook Cre ater ( private Ġval Ġpackage Param : ĠPackage Param , Ġval Ġhook Class : ĠClass <* >) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHook Ġ åħ¨éĥ¨ æĸ¹æ³ķ çļĦ æłĩè¯Ĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠHook All Members Ġ{ ĠHO OK _ ALL _ METHO DS , ĠHO OK _ ALL _ CON STRUCT ORS , ĠHO OK _ NONE Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® è¦ģ ĠHook ĠçļĦ æĸ¹æ³ķ ãĢģ æŀĦéĢł ç±» Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġhook Members Ġ= ĠHashMap < String , ĠMember Hook Cre ater >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æ³¨ åħ¥ è¦ģ ĠHook ĠçļĦ æĸ¹æ³ķ ãĢģ æŀĦéĢł ç±» ĊĠĠĠĠ Ġ* Ġ@ param Ġtag Ġåı¯ è®¾ç½® æłĩçŃ¾ Ġ- Ġåľ¨ åıĳçĶŁ éĶĻè¯¯ æĹ¶ æĸ¹ä¾¿ è¿Ľè¡Į è°ĥè¯ķ ĊĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinject Member ( tag : ĠString Ġ= Ġ" Default ", Ġinitiate : ĠMember Hook Cre ater . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ ĠMember Hook Cre ater ( tag ). apply ( init iate ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhook Members [ toString ()] Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHook Ġæī§è¡Į åħ¥ åı£ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ- Ġâ ļ ¡ æŃ¤ åĬŁèĥ½ äº¤ çĶ± æĸ¹æ³ķ ä½ĵ èĩªåĬ¨ å®ĮæĪĲ Ġ- Ġ ä½ł ä¸į åºĶè¯¥ æīĭåĬ¨ è°ĥçĶ¨ æŃ¤ æĸ¹æ³ķ ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalStateException Ġå¦Ĥæŀľ å¿ħè¦ģ åıĤæķ° æ²¡æľī è¢« è®¾ç½® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ DoNot Use Method ĊĠĠĠ Ġfun Ġhook () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Y uki Hook API . has X posed Bridge ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( hook Members . isEmpty ()) Ġerror (" Hook ĠMembers Ġis Ġempty , hook Ġaborted ") ĊĠĠĠĠĠĠĠ Ġhook Members . forEach Ġ{ Ġ(_, Ġmember ) Ġ-> Ġmember . hook () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ Ļ º èĥ½ åħ¨å±Ģ æĸ¹æ³ķ ãĢģ æŀĦéĢł ç±» æŁ¥æī¾ ç±» å®ŀçİ° æĸ¹æ³ķ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ éľĢè¦ģ ĠHook ĠçļĦ æĸ¹æ³ķ ĊĠĠĠĠ Ġ* Ġ@ param Ġtag Ġå½ĵåīį è®¾ç½® çļĦ æłĩçŃ¾ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠMember Hook Cre ater ( var Ġtag : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ[ before Hook ] Ġ åĽŀè°ĥ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġbefore Hook Callback : Ġ( Hook Param . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ[ after Hook ] Ġ åĽŀè°ĥ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġafter Hook Callback : Ġ( Hook Param . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ[ replace Any ] ãĢģ[ replace Unit ] ãĢģ[ replace To ] Ġ çŃī åĽŀè°ĥ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġreplace Hook Callback : Ġ( Hook Param . () Ġ-> ĠAny ? )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĠHook Ġ è¿ĩç¨ĭä¸Ń åĩºçİ° éĶĻè¯¯ åĽŀè°ĥ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġon Con duct Failure Callback : Ġ(( Hook Param , ĠThrowable ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĠHook Ġ å¼Ģå§ĭ æĹ¶ åĩºçİ° éĶĻè¯¯ åĽŀè°ĥ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġon Hook ing Failure Callback : Ġ(( Throwable ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ åħ¨éĥ¨ éĶĻè¯¯ åĽŀè°ĥ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġon All Failure Callback : Ġ(( Throwable ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** Ġæĺ¯åĲ¦ ä¸º æĽ¿æį¢ ĠHook Ġæ¨¡ å¼ı Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Replace Hook Mode Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ æłĩè¯Ĩ æĺ¯åĲ¦ å·²ç»ı è®¾ç½® äºĨ è¦ģ ĠHook ĠçļĦ Ġ[ member ] Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Hook Member Setup Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** Ġæĺ¯åĲ¦ ĠHook Ġ åħ¨éĥ¨ æĸ¹æ³ķ ä»¥åıĬ ç±»åŀĭ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhook All Members Ġ= ĠHook All Members . HOOK _ NONE ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ åħ¨éĥ¨ æĸ¹æ³ķ çļĦ åĲįç§° Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġall Methods Name Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æīĭåĬ¨ æĮĩå®ļ è¦ģ ĠHook ĠçļĦ æĸ¹æ³ķ ãĢģ æŀĦéĢł ç±» ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ä½łåı¯ä»¥ è°ĥçĶ¨ Ġ[ hook Class ] ĠæĿ¥ æīĭåĬ¨ æŁ¥è¯¢ è¦ģ ĠHook ĠçļĦ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġmember : ĠMember ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHook Ġ[ hook Class ] Ġä¸Ń æĮĩå®ļ Ġ[ name ] ĠçļĦ åħ¨éĥ¨ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġâ ļ ¡ èŃ¦ åĳĬ ï¼ļ æĹłæ³ķ åĩĨ ç¡® å¤ĦçĲĨ æ¯ıä¸ª æĸ¹æ³ķ çļĦ è¿ĶåĽŀ åĢ¼ åĴĮ Ġparam Ġ- Ġ å»ºè®® ä½¿çĶ¨ Ġ[ method ] Ġå¯¹ æ¯ıä¸ª æĸ¹æ³ķ åįķ çĭ¬ ĠHook ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġâ ļ ¡ å¦Ĥæŀľ Ġ[ hook Class ] Ġä¸Ń æ²¡æľī æĸ¹æ³ķ åı¯èĥ½ä¼ļ åıĳçĶŁ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġname Ġæĸ¹æ³ķ åĲįç§° ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġall Methods ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Methods Name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhook All Members Ġ= ĠHook All Members . HOOK _ ALL _ METHO DS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Hook Member Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHook Ġ[ hook Class ] Ġä¸ŃçļĦ åħ¨éĥ¨ æŀĦéĢł æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġâ ļ ¡ èŃ¦ åĳĬ ï¼ļ æĹłæ³ķ åĩĨ ç¡® å¤ĦçĲĨ æ¯ıä¸ª æŀĦéĢł æĸ¹æ³ķ çļĦ Ġparam Ġ- Ġ å»ºè®® ä½¿çĶ¨ Ġ[ constructor ] Ġå¯¹ æ¯ıä¸ª æŀĦéĢł æĸ¹æ³ķ åįķ çĭ¬ ĠHook ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġâ ļ ¡ å¦Ĥæŀľ Ġ[ hook Class ] Ġä¸Ń æ²¡æľī æŀĦéĢł æĸ¹æ³ķ åı¯èĥ½ä¼ļ åıĳçĶŁ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġall Construct ors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Methods Name Ġ= Ġ"< init >" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhook All Members Ġ= ĠHook All Members . HOOK _ ALL _ CON STRUCT ORS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Hook Member Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæŁ¥ æī¾ éľĢè¦ģ ĠHook ĠçļĦ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ä½ł åıªèĥ½ ä½¿çĶ¨ ä¸Ģæ¬¡ Ġ[ method ] ĠæĪĸ Ġ[ constructor ] Ġæĸ¹æ³ķ Ġ- Ġ åĲ¦åĪĻ ç»ĵæŀľ ä¼ļ è¢« æĽ¿æį¢ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Method Finder . Result ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġmethod ( init iate : ĠMethod Finder . () Ġ-> ĠUnit ): ĠMethod Finder . Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhook All Members Ġ= ĠHook All Members . HOOK _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Hook Member Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMethod Finder ( hook Instance Ġ= Ġthis , Ġhook Class ). apply ( init iate ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæŁ¥ æī¾ éľĢè¦ģ ĠHook ĠçļĦ æŀĦéĢł ç±» ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ä½ł åıªèĥ½ ä½¿çĶ¨ ä¸Ģæ¬¡ Ġ[ method ] ĠæĪĸ Ġ[ constructor ] Ġæĸ¹æ³ķ Ġ- Ġ åĲ¦åĪĻ ç»ĵæŀľ ä¼ļ è¢« æĽ¿æį¢ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Constructor Finder . Result ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġconstructor ( init iate : ĠConstructor Finder . () Ġ-> ĠUnit ): ĠConstructor Finder . Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhook All Members Ġ= ĠHook All Members . HOOK _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Hook Member Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConstructor Finder ( hook Instance Ġ= Ġthis , Ġhook Class ). apply ( init iate ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæŁ¥ æī¾ Ġ[ Field ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Field Finder . Result ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠHook Param . field ( init iate : ĠField Finder . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Finder ( hook Instance Ġ= Ġthis @ Member Hook Cre ater , Ġhook Class ). apply ( init iate ). build () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġåľ¨ æĸ¹æ³ķ æī§è¡Į å®ĮæĪĲ åīį ĠHook ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ replace Any ] ãĢģ[ replace Unit ] ãĢģ[ replace To ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġ[ Hook Param ] Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbefore Hook ( init iate : ĠHook Param . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Hook Callback Ġ= Ġinitiate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġåľ¨ æĸ¹æ³ķ æī§è¡Į å®ĮæĪĲ åĲİ ĠHook ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ replace Any ] ãĢģ[ replace Unit ] ãĢģ[ replace To ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġ[ Hook Param ] Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġafter Hook ( init iate : ĠHook Param . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġafter Hook Callback Ġ= Ġinitiate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæĽ ¿ æį¢ æŃ¤ æĸ¹æ³ķ åĨħå®¹ Ġ- Ġ ç»Ļ åĩº è¿ĶåĽŀ åĢ¼ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ before Hook ] ãĢģ[ after Hook ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġ[ Hook Param ] Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġreplace Any ( init iate : ĠHook Param . () Ġ-> ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Hook Callback Ġ= Ġinitiate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæĽ ¿ æį¢ æŃ¤ æĸ¹æ³ķ åĨħå®¹ Ġ- Ġæ ² ¡ æľī è¿ĶåĽŀ åĢ¼ Ġ([ Unit ]) ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ before Hook ] ãĢģ[ after Hook ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġ[ Hook Param ] Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġreplace Unit ( init iate : ĠHook Param . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Hook Callback Ġ= Ġinitiate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæĽ ¿ æį¢ æĸ¹æ³ķ è¿ĶåĽŀ åĢ¼ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ before Hook ] ãĢģ[ after Hook ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġany Ġ è¦ģ æĽ¿æį¢ ä¸º çļĦ è¿ĶåĽŀ åĢ¼ å¯¹è±¡ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġreplace To ( any : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Hook Callback Ġ= Ġ{ Ġany Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæĽ ¿ æį¢ æĸ¹æ³ķ è¿ĶåĽŀ åĢ¼ä¸º Ġtrue ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç¡® ä¿Ŀ æĽ¿æį¢ æĸ¹æ³ķ çļĦ è¿ĶåĽŀ å¯¹è±¡ ä¸º Ġ[ Boolean ] ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ before Hook ] ãĢģ[ after Hook ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġreplace To True () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Hook Callback Ġ= Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠæĽ ¿ æį¢ æĸ¹æ³ķ è¿ĶåĽŀ åĢ¼ä¸º Ġfalse ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç¡® ä¿Ŀ æĽ¿æį¢ æĸ¹æ³ķ çļĦ è¿ĶåĽŀ å¯¹è±¡ ä¸º Ġ[ Boolean ] ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ before Hook ] ãĢģ[ after Hook ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġreplace To False () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Hook Callback Ġ= Ġ{ Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæĭ ¦ æĪª æŃ¤ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ è¿Ļ å°Ĩ ä¼ļ ç¦ģ æŃ¢ æŃ¤ æĸ¹æ³ķ æī§è¡Į å¹¶ è¿ĶåĽŀ Ġnull ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åı¯ ä¸İ Ġ[ before Hook ] ãĢģ[ after Hook ] Ġ åĲĮæĹ¶ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġintercept () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Replace Hook Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Hook Callback Ġ= Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHook ĠåĪĽå»º åħ¥ åı£ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġâ ļ ¡ æŃ¤ åĬŁèĥ½ äº¤ çĶ± æĸ¹æ³ķ ä½ĵ èĩªåĬ¨ å®ĮæĪĲ Ġ- Ġ ä½ł ä¸į åºĶè¯¥ æīĭåĬ¨ è°ĥçĶ¨ æŃ¤ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ DoNot Use Method ĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ= ĠResult () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHook Ġæī§è¡Į åħ¥ åı£ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġâ ļ ¡ æŃ¤ åĬŁèĥ½ äº¤ çĶ± æĸ¹æ³ķ ä½ĵ èĩªåĬ¨ å®ĮæĪĲ Ġ- Ġ ä½ł ä¸į åºĶè¯¥ æīĭåĬ¨ è°ĥçĶ¨ æŃ¤ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ DoNot Use Method ĊĠĠĠĠĠĠĠ Ġfun Ġhook () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Y uki Hook API . has X posed Bridge ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ å®ļä¹ī æĽ¿æį¢ ĠHook Ġ åĽŀè°ĥ æĸ¹æ³ķ ä½ĵ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreplace Ment Ġ= Ġobject Ġ: ĠX C _ Method Replacement () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreplace Hook ed Method ( base Param : ĠMethod Hook Param ?): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( base Param Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHook Param ( base Param ). let Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( replace Hook Callback Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook Log Msg ( msg Ġ= Ġ" Replace ĠHook ĠMember Ġ[ ${ member Ġ?: Ġ" All ĠMember Ġ$ all Methods Name "}] Ġdone Ġ[$ tag ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Hook Callback ?. invoke ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Con duct Failure Callback ?. invoke ( param , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Failure Callback ?. invoke ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Con duct Failure Callback Ġ== Ġnull Ġ&& Ġon All Failure Callback Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook Failure Msg ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ å®ļä¹ī åīį åĲİ ĠHook Ġ åĽŀè°ĥ æĸ¹æ³ķ ä½ĵ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbefore After Hook Ġ= Ġobject Ġ: ĠX C _ Method Hook () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore Hook ed Method ( base Param : ĠMethod Hook Param ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( base Param Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHook Param ( base Param ). also Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Hook Callback ?. invoke ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( before Hook Callback Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook Log Msg ( msg Ġ= Ġ" Before ĠHook ĠMember Ġ[ ${ member Ġ?: Ġ" All Ġof Ġ\"$ all Methods Name \"" }] Ġdone Ġ[$ tag ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Con duct Failure Callback ?. invoke ( param , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Failure Callback ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Con duct Failure Callback Ġ== Ġnull Ġ&& Ġon All Failure Callback Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook Failure Msg ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter Hook ed Method ( base Param : ĠMethod Hook Param ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( base Param Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHook Param ( base Param ). also Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter Hook Callback ?. invoke ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( after Hook Callback Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook Log Msg ( msg Ġ= Ġ" After ĠHook ĠMember Ġ[ ${ member Ġ?: Ġ" All Ġof Ġ\"$ all Methods Name \"" }] Ġdone Ġ[$ tag ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Con duct Failure Callback ?. invoke ( param , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Failure Callback ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Con duct Failure Callback Ġ== Ġnull Ġ&& Ġon All Failure Callback Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook Failure Msg ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hook All Members Ġ== ĠHook All Members . HOOK _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( member Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember . also Ġ{ Ġmember Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Replace Hook Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . hook Method ( member , Ġreplace Ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠX posed Bridge . hook Method ( member , Ġbefore After Hook ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook ing Failure Callback ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Failure Callback ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Hook ing Failure Callback Ġ== Ġnull Ġ&& Ġon All Failure Callback Ġ== Ġnull ) Ġon Hook Failure Msg ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook ing Failure Callback ?. invoke ( Throwable ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Failure Callback ?. invoke ( Throwable ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Hook ing Failure Callback Ġ== Ġnull Ġ&& Ġon All Failure Callback Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger E ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Ġ= Ġif Ġ( is Hook Member Setup ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Hook ed ĠMember Ġwith Ġa Ġfinding Ġerror Ġin ĠClass Ġ[$ hook Class ] Ġ[$ tag ]" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ" Hook ed ĠMember Ġcannot Ġbe Ġnon - null Ġin ĠClass Ġ[$ hook Class ] Ġ[$ tag ]" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( hook All Members ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHook All Members . HOOK _ ALL _ METHO DS Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Replace Hook Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . hook All Methods ( hook Class , Ġall Methods Name , Ġreplace Ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠX posed Bridge . hook All Methods ( hook Class , Ġall Methods Name , Ġbefore After Hook ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHook All Members . HOOK _ ALL _ CON STRUCT ORS Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Replace Hook Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . hook All Construct ors ( hook Class , Ġreplace Ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠX posed Bridge . hook All Construct ors ( hook Class , Ġbefore After Hook ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Hook ed Ġgot Ġa Ġno Ġerror Ġpossible ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Failure Callback ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Hook ing Failure Callback Ġ== Ġnull Ġ&& Ġon All Failure Callback Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger E ( msg Ġ= Ġ" Hook ed ĠAll ĠMembers Ġwith Ġan Ġerror Ġin ĠClass Ġ[$ hook Class ] Ġ[$ tag ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHook Ġ è¿ĩç¨ĭä¸Ń å¼ĢåĲ¯ äºĨ Ġ[ Y uki Hook API . Configs . isDebug ] Ġ è¾ĵåĩº è°ĥè¯ķ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġmsg Ġ è°ĥè¯ķ æĹ¥å¿Ĺ åĨħå®¹ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġon Hook Log Msg ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Y uki Hook API . Configs . isDebug ) Ġlogger I ( msg Ġ= Ġmsg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHook Ġ å¤±è´¥ ä½Ĩ æľª è®¾ç½® Ġ[ on All Failure Callback ] Ġå°Ĩ é»ĺè®¤ è¾ĵåĩº å¤±è´¥ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġthrowable Ġ å¼Ĥå¸¸ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġon Hook Failure Msg ( throwable : ĠThrowable ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger E ( msg Ġ= Ġ" Try Ġto Ġhook Ġ$ hook Class [$ member ] Ġgot Ġan ĠException Ġ[$ tag ]", Ġe Ġ= Ġthrowable ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ"$ member $ tag # Y uki Hook " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ çĽĳåĲ¬ ĠHook Ġ ç»ĵæŀľ å®ŀçİ° ç±» ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġåı¯ åľ¨ è¿ĻéĩĮ å¤ĦçĲĨ å¤±è´¥ äºĭä»¶ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠResult Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠåĪĽå»º çĽĳåĲ¬ å¤±è´¥ äºĭä»¶ æĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġæĸ¹æ³ķ ä½ĵ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] Ġåı¯ ç»§ç»Ń åĲĳ ä¸ĭ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfailures ( init iate : ĠResult . () Ġ-> ĠUnit ) Ġ= Ġapply ( init iate ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ çĽĳåĲ¬ ĠHook Ġ è¿Ľè¡Į è¿ĩç¨ĭä¸Ń åıĳçĶŁ éĶĻè¯¯ çļĦ åĽŀè°ĥ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġ åĽŀè°ĥ éĶĻè¯¯ Ġ- Ġ([ Hook Param ] Ġå½ĵåīį ĠHook Ġ å®ŀä¾ĭ ,[ Throwable ] Ġ å¼Ĥå¸¸ ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] Ġåı¯ ç»§ç»Ń åĲĳ ä¸ĭ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Con duct Failure ( init iate : Ġ( Hook Param , ĠThrowable ) Ġ-> ĠUnit ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Con duct Failure Callback Ġ= Ġinitiate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ å¿½ çķ¥ ĠHook Ġ è¿Ľè¡Į è¿ĩç¨ĭä¸Ń åıĳçĶŁ çļĦ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] Ġåı¯ ç»§ç»Ń åĲĳ ä¸ĭ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġignored Con duct Failure () Ġ= Ġon Con duct Failure Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ çĽĳåĲ¬ ĠHook Ġ å¼Ģå§ĭ æĹ¶ åıĳçĶŁ éĶĻè¯¯ çļĦ åĽŀè°ĥ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġ åĽŀè°ĥ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] Ġåı¯ ç»§ç»Ń åĲĳ ä¸ĭ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Hook ing Failure ( init iate : Ġ( Throwable ) Ġ-> ĠUnit ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hook ing Failure Callback Ġ= Ġinitiate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ å¿½ çķ¥ ĠHook Ġ å¼Ģå§ĭ æĹ¶ åıĳçĶŁ çļĦ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] Ġåı¯ ç»§ç»Ń åĲĳ ä¸ĭ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġignored Hook ing Failure () Ġ= Ġon Hook ing Failure Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ çĽĳåĲ¬ åħ¨éĥ¨ ĠHook Ġ è¿ĩç¨ĭ åıĳçĶŁ éĶĻè¯¯ çļĦ åĽŀè°ĥ æĸ¹æ³ķ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinitiate Ġ åĽŀè°ĥ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] Ġåı¯ ç»§ç»Ń åĲĳ ä¸ĭ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon All Failure ( init iate : Ġ( Throwable ) Ġ-> ĠUnit ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Failure Callback Ġ= Ġinitiate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ å¿½ çķ¥ åħ¨éĥ¨ ĠHook Ġ è¿ĩç¨ĭ åıĳçĶŁ çļĦ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Result ] Ġåı¯ ç»§ç»Ń åĲĳ ä¸ĭ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġignored All Failure () Ġ= Ġon All Failure Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }