OB1 to OB2 Code conversion

Hello, can anyone convert this code to OpenBullet 2?
pls help me

LoliCode OB1

IF "<REQ>" DoesNotExist ""
SET GVAR "REQ" "True"
ENDIF
IF "<REQ>" EqualTo "True"

#Check_ip REQUEST GET "https://api.ipify.org/?format=json" 
  
  HEADER "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" 
  HEADER "Pragma: no-cache" 
  HEADER "Accept: */*" 

#ip PARSE "<SOURCE>" JSON "ip" CreateEmpty=FALSE -> CAP "ip" 

#Check_ip KEYCHECK 
  KEYCHAIN Success OR 
    KEY "<ip>" EqualTo "5.216.152.26" 

SET GVAR "REQ" "False"
ENDIF

hi how are you u want just get ip ?

BLOCK:HttpRequest
url = “https://api.ipify.org/?format=json
customHeaders = {(“Accept”, “text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9”), (“Accept-Encoding”, “gzip, deflate, br”), (“Accept-Language”, “fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7”), (“Cache-Control”, “max-age=0”), (“Connection”, “keep-alive”), (“Host”, “api.ipify.org”), (“sec-ch-ua”, “"Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"”), (“sec-ch-ua-mobile”, “?0”), (“sec-ch-ua-platform”, “"Windows"”), (“Sec-Fetch-Dest”, “document”), (“Sec-Fetch-Mode”, “navigate”), (“Sec-Fetch-Site”, “none”), (“Sec-Fetch-User”, “?1”), (“Upgrade-Insecure-Requests”, “1”), (“User-Agent”, “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36”)}
TYPE:STANDARD
$“”
“application/json”
ENDBLOCK

BLOCK:Parse
LABEL:ip
input = @data.SOURCE
jToken = “ip”
MODE:Json
=> VAR @ip
ENDBLOCK

BLOCK:Keycheck
KEYCHAIN SUCCESS OR
STRINGKEY @data.SOURCE EqualTo “5.216.152.26”
ENDBLOCK

Hello, yes, and I want block Check Ip to be executed only once

I did it in OB1 with the global variable, but it gives an error in OB2
If you convert the above code completely for me, you have done a great favor

BLOCK:ConstantBool
LABEL:REQ TRUE
value = True
=> VAR @REQ
ENDBLOCK

BLOCK:Keycheck
KEYCHAIN SUCCESS OR
BOOLKEY @REQ Is True
ENDBLOCK

BLOCK:HttpRequest
url = “https://api.ipify.org/?format=json
customHeaders = {(“Accept”, “text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9”), (“Accept-Encoding”, “gzip, deflate, br”), (“Accept-Language”, “fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7”), (“Cache-Control”, “max-age=0”), (“Connection”, “keep-alive”), (“Host”, “api.ipify.org”), (“sec-ch-ua”, “"Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"”), (“sec-ch-ua-mobile”, “?0”), (“sec-ch-ua-platform”, “"Windows"”), (“Sec-Fetch-Dest”, “document”), (“Sec-Fetch-Mode”, “navigate”), (“Sec-Fetch-Site”, “none”), (“Sec-Fetch-User”, “?1”), (“Upgrade-Insecure-Requests”, “1”), (“User-Agent”, “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36”)}
TYPE:STANDARD
$“”
“application/json”
ENDBLOCK

BLOCK:Parse
LABEL:ip
input = @data.SOURCE
jToken = “ip”
MODE:Json
=> CAP @ip
ENDBLOCK

BLOCK:Keycheck
KEYCHAIN SUCCESS OR
STRINGKEY @data.SOURCE EqualTo “5.216.152.26”
ENDBLOCK

BLOCK:ConstantBool
LABEL:REQ FALSE
=> VAR @REQ
ENDBLOCK

lIKE THIS ,???

Untitled

I want the ip check block to run only once
And if successful, check the rest of the blocks

Code OB1

IF "<REQ>" DoesNotExist ""
SET GVAR "REQ" "True"
ENDIF
IF "<REQ>" EqualTo "True"

#Blocks to be executed only once
#Blocks to be executed only once
#Blocks to be executed only once

SET GVAR "REQ" "False"
ENDIF

ACQUIRELOCK globals
TRY
var globalsDict = ((IDictionary<String, object>)globals);
if (!globalsDict.ContainsKey("IP"))
{
  // Put the blocks to get the IP inside here, e.g. set a variable called IP
  globals.IP = IP;
}
CATCH
throw;
FINALLY
RELEASELOCK globals
END

// Now you can use globals.IP wherever you want in the rest of the config

Thank you very mutch :sparkling_heart: