curl --request POST \
--url http://localhost:8080/decision_gateway \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"merchantId": "test_merchant",
"paymentInfo": {
"paymentId": "pay_001",
"amount": 1000,
"currency": "USD",
"paymentType": "ORDER_PAYMENT",
"paymentMethodType": "CARD",
"paymentMethod": "CREDIT",
"country": "US",
"customerId": "cust_123",
"udfs": {},
"preferredGateway": "<string>",
"metadata": "<string>",
"internalMetadata": "<string>",
"isEmi": true,
"emiBank": "<string>",
"emiTenure": 123,
"paymentSource": "<string>",
"authType": "THREE_DS",
"cardIssuerBankName": "<string>",
"cardIsin": "411111",
"cardType": "CREDIT",
"cardSwitchProvider": "<string>",
"cardProgram": "<string>",
"cardIssuerCountry": "<string>",
"channel": "<string>"
},
"eligibleGatewayList": [
"stripe",
"paypal",
"adyen"
],
"rankingAlgorithm": "SR_BASED_ROUTING",
"eliminationEnabled": false,
"enableMultiObjective": true
}
'import requests
url = "http://localhost:8080/decision_gateway"
payload = {
"merchantId": "test_merchant",
"paymentInfo": {
"paymentId": "pay_001",
"amount": 1000,
"currency": "USD",
"paymentType": "ORDER_PAYMENT",
"paymentMethodType": "CARD",
"paymentMethod": "CREDIT",
"country": "US",
"customerId": "cust_123",
"udfs": {},
"preferredGateway": "<string>",
"metadata": "<string>",
"internalMetadata": "<string>",
"isEmi": True,
"emiBank": "<string>",
"emiTenure": 123,
"paymentSource": "<string>",
"authType": "THREE_DS",
"cardIssuerBankName": "<string>",
"cardIsin": "411111",
"cardType": "CREDIT",
"cardSwitchProvider": "<string>",
"cardProgram": "<string>",
"cardIssuerCountry": "<string>",
"channel": "<string>"
},
"eligibleGatewayList": ["stripe", "paypal", "adyen"],
"rankingAlgorithm": "SR_BASED_ROUTING",
"eliminationEnabled": False,
"enableMultiObjective": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
merchantId: 'test_merchant',
paymentInfo: {
paymentId: 'pay_001',
amount: 1000,
currency: 'USD',
paymentType: 'ORDER_PAYMENT',
paymentMethodType: 'CARD',
paymentMethod: 'CREDIT',
country: 'US',
customerId: 'cust_123',
udfs: {},
preferredGateway: '<string>',
metadata: '<string>',
internalMetadata: '<string>',
isEmi: true,
emiBank: '<string>',
emiTenure: 123,
paymentSource: '<string>',
authType: 'THREE_DS',
cardIssuerBankName: '<string>',
cardIsin: '411111',
cardType: 'CREDIT',
cardSwitchProvider: '<string>',
cardProgram: '<string>',
cardIssuerCountry: '<string>',
channel: '<string>'
},
eligibleGatewayList: ['stripe', 'paypal', 'adyen'],
rankingAlgorithm: 'SR_BASED_ROUTING',
eliminationEnabled: false,
enableMultiObjective: true
})
};
fetch('http://localhost:8080/decision_gateway', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/decision_gateway",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'merchantId' => 'test_merchant',
'paymentInfo' => [
'paymentId' => 'pay_001',
'amount' => 1000,
'currency' => 'USD',
'paymentType' => 'ORDER_PAYMENT',
'paymentMethodType' => 'CARD',
'paymentMethod' => 'CREDIT',
'country' => 'US',
'customerId' => 'cust_123',
'udfs' => [
],
'preferredGateway' => '<string>',
'metadata' => '<string>',
'internalMetadata' => '<string>',
'isEmi' => true,
'emiBank' => '<string>',
'emiTenure' => 123,
'paymentSource' => '<string>',
'authType' => 'THREE_DS',
'cardIssuerBankName' => '<string>',
'cardIsin' => '411111',
'cardType' => 'CREDIT',
'cardSwitchProvider' => '<string>',
'cardProgram' => '<string>',
'cardIssuerCountry' => '<string>',
'channel' => '<string>'
],
'eligibleGatewayList' => [
'stripe',
'paypal',
'adyen'
],
'rankingAlgorithm' => 'SR_BASED_ROUTING',
'eliminationEnabled' => false,
'enableMultiObjective' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8080/decision_gateway"
payload := strings.NewReader("{\n \"merchantId\": \"test_merchant\",\n \"paymentInfo\": {\n \"paymentId\": \"pay_001\",\n \"amount\": 1000,\n \"currency\": \"USD\",\n \"paymentType\": \"ORDER_PAYMENT\",\n \"paymentMethodType\": \"CARD\",\n \"paymentMethod\": \"CREDIT\",\n \"country\": \"US\",\n \"customerId\": \"cust_123\",\n \"udfs\": {},\n \"preferredGateway\": \"<string>\",\n \"metadata\": \"<string>\",\n \"internalMetadata\": \"<string>\",\n \"isEmi\": true,\n \"emiBank\": \"<string>\",\n \"emiTenure\": 123,\n \"paymentSource\": \"<string>\",\n \"authType\": \"THREE_DS\",\n \"cardIssuerBankName\": \"<string>\",\n \"cardIsin\": \"411111\",\n \"cardType\": \"CREDIT\",\n \"cardSwitchProvider\": \"<string>\",\n \"cardProgram\": \"<string>\",\n \"cardIssuerCountry\": \"<string>\",\n \"channel\": \"<string>\"\n },\n \"eligibleGatewayList\": [\n \"stripe\",\n \"paypal\",\n \"adyen\"\n ],\n \"rankingAlgorithm\": \"SR_BASED_ROUTING\",\n \"eliminationEnabled\": false,\n \"enableMultiObjective\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/decision_gateway")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"merchantId\": \"test_merchant\",\n \"paymentInfo\": {\n \"paymentId\": \"pay_001\",\n \"amount\": 1000,\n \"currency\": \"USD\",\n \"paymentType\": \"ORDER_PAYMENT\",\n \"paymentMethodType\": \"CARD\",\n \"paymentMethod\": \"CREDIT\",\n \"country\": \"US\",\n \"customerId\": \"cust_123\",\n \"udfs\": {},\n \"preferredGateway\": \"<string>\",\n \"metadata\": \"<string>\",\n \"internalMetadata\": \"<string>\",\n \"isEmi\": true,\n \"emiBank\": \"<string>\",\n \"emiTenure\": 123,\n \"paymentSource\": \"<string>\",\n \"authType\": \"THREE_DS\",\n \"cardIssuerBankName\": \"<string>\",\n \"cardIsin\": \"411111\",\n \"cardType\": \"CREDIT\",\n \"cardSwitchProvider\": \"<string>\",\n \"cardProgram\": \"<string>\",\n \"cardIssuerCountry\": \"<string>\",\n \"channel\": \"<string>\"\n },\n \"eligibleGatewayList\": [\n \"stripe\",\n \"paypal\",\n \"adyen\"\n ],\n \"rankingAlgorithm\": \"SR_BASED_ROUTING\",\n \"eliminationEnabled\": false,\n \"enableMultiObjective\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/decision_gateway")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"merchantId\": \"test_merchant\",\n \"paymentInfo\": {\n \"paymentId\": \"pay_001\",\n \"amount\": 1000,\n \"currency\": \"USD\",\n \"paymentType\": \"ORDER_PAYMENT\",\n \"paymentMethodType\": \"CARD\",\n \"paymentMethod\": \"CREDIT\",\n \"country\": \"US\",\n \"customerId\": \"cust_123\",\n \"udfs\": {},\n \"preferredGateway\": \"<string>\",\n \"metadata\": \"<string>\",\n \"internalMetadata\": \"<string>\",\n \"isEmi\": true,\n \"emiBank\": \"<string>\",\n \"emiTenure\": 123,\n \"paymentSource\": \"<string>\",\n \"authType\": \"THREE_DS\",\n \"cardIssuerBankName\": \"<string>\",\n \"cardIsin\": \"411111\",\n \"cardType\": \"CREDIT\",\n \"cardSwitchProvider\": \"<string>\",\n \"cardProgram\": \"<string>\",\n \"cardIssuerCountry\": \"<string>\",\n \"channel\": \"<string>\"\n },\n \"eligibleGatewayList\": [\n \"stripe\",\n \"paypal\",\n \"adyen\"\n ],\n \"rankingAlgorithm\": \"SR_BASED_ROUTING\",\n \"eliminationEnabled\": false,\n \"enableMultiObjective\": true\n}"
response = http.request(request)
puts response.read_body{
"decided_gateway": "stripe",
"routing_approach": "SR_SELECTION_V3_ROUTING",
"gateway_priority_map": {
"stripe": 0.94,
"adyen": 0.87,
"paypal": 0.72
},
"routing_dimension": "<string>",
"routing_dimension_level": "<string>",
"reset_approach": "<string>",
"is_scheduled_outage": true,
"is_rust_based_decider": true,
"debit_routing_output": {
"co_badged_card_networks_info": [
{
"network": "NYCE",
"saving_percentage": 1.2
}
],
"issuer_country": "US",
"is_regulated": false,
"regulated_name": "<string>",
"card_type": "Debit"
},
"latency": 123,
"multi_objective_info": {
"outcome": "COST_WON",
"reason": "Promoted 'adyen' over 'stripe' on expected value — saves 80.00 bps for 3.00pp auth.",
"srHead": {
"psp": "adyen",
"authRate": 0.91,
"costBps": 100
},
"chosen": {
"psp": "adyen",
"authRate": 0.91,
"costBps": 100
},
"costSavedBps": 80,
"qualifiedCount": 3,
"margin": 0.2,
"evGapTop2": 0.00182
}
}Legacy Decision Gateway
Legacy compatibility route. New integrations should use /decide-gateway.
curl --request POST \
--url http://localhost:8080/decision_gateway \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"merchantId": "test_merchant",
"paymentInfo": {
"paymentId": "pay_001",
"amount": 1000,
"currency": "USD",
"paymentType": "ORDER_PAYMENT",
"paymentMethodType": "CARD",
"paymentMethod": "CREDIT",
"country": "US",
"customerId": "cust_123",
"udfs": {},
"preferredGateway": "<string>",
"metadata": "<string>",
"internalMetadata": "<string>",
"isEmi": true,
"emiBank": "<string>",
"emiTenure": 123,
"paymentSource": "<string>",
"authType": "THREE_DS",
"cardIssuerBankName": "<string>",
"cardIsin": "411111",
"cardType": "CREDIT",
"cardSwitchProvider": "<string>",
"cardProgram": "<string>",
"cardIssuerCountry": "<string>",
"channel": "<string>"
},
"eligibleGatewayList": [
"stripe",
"paypal",
"adyen"
],
"rankingAlgorithm": "SR_BASED_ROUTING",
"eliminationEnabled": false,
"enableMultiObjective": true
}
'import requests
url = "http://localhost:8080/decision_gateway"
payload = {
"merchantId": "test_merchant",
"paymentInfo": {
"paymentId": "pay_001",
"amount": 1000,
"currency": "USD",
"paymentType": "ORDER_PAYMENT",
"paymentMethodType": "CARD",
"paymentMethod": "CREDIT",
"country": "US",
"customerId": "cust_123",
"udfs": {},
"preferredGateway": "<string>",
"metadata": "<string>",
"internalMetadata": "<string>",
"isEmi": True,
"emiBank": "<string>",
"emiTenure": 123,
"paymentSource": "<string>",
"authType": "THREE_DS",
"cardIssuerBankName": "<string>",
"cardIsin": "411111",
"cardType": "CREDIT",
"cardSwitchProvider": "<string>",
"cardProgram": "<string>",
"cardIssuerCountry": "<string>",
"channel": "<string>"
},
"eligibleGatewayList": ["stripe", "paypal", "adyen"],
"rankingAlgorithm": "SR_BASED_ROUTING",
"eliminationEnabled": False,
"enableMultiObjective": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
merchantId: 'test_merchant',
paymentInfo: {
paymentId: 'pay_001',
amount: 1000,
currency: 'USD',
paymentType: 'ORDER_PAYMENT',
paymentMethodType: 'CARD',
paymentMethod: 'CREDIT',
country: 'US',
customerId: 'cust_123',
udfs: {},
preferredGateway: '<string>',
metadata: '<string>',
internalMetadata: '<string>',
isEmi: true,
emiBank: '<string>',
emiTenure: 123,
paymentSource: '<string>',
authType: 'THREE_DS',
cardIssuerBankName: '<string>',
cardIsin: '411111',
cardType: 'CREDIT',
cardSwitchProvider: '<string>',
cardProgram: '<string>',
cardIssuerCountry: '<string>',
channel: '<string>'
},
eligibleGatewayList: ['stripe', 'paypal', 'adyen'],
rankingAlgorithm: 'SR_BASED_ROUTING',
eliminationEnabled: false,
enableMultiObjective: true
})
};
fetch('http://localhost:8080/decision_gateway', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/decision_gateway",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'merchantId' => 'test_merchant',
'paymentInfo' => [
'paymentId' => 'pay_001',
'amount' => 1000,
'currency' => 'USD',
'paymentType' => 'ORDER_PAYMENT',
'paymentMethodType' => 'CARD',
'paymentMethod' => 'CREDIT',
'country' => 'US',
'customerId' => 'cust_123',
'udfs' => [
],
'preferredGateway' => '<string>',
'metadata' => '<string>',
'internalMetadata' => '<string>',
'isEmi' => true,
'emiBank' => '<string>',
'emiTenure' => 123,
'paymentSource' => '<string>',
'authType' => 'THREE_DS',
'cardIssuerBankName' => '<string>',
'cardIsin' => '411111',
'cardType' => 'CREDIT',
'cardSwitchProvider' => '<string>',
'cardProgram' => '<string>',
'cardIssuerCountry' => '<string>',
'channel' => '<string>'
],
'eligibleGatewayList' => [
'stripe',
'paypal',
'adyen'
],
'rankingAlgorithm' => 'SR_BASED_ROUTING',
'eliminationEnabled' => false,
'enableMultiObjective' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8080/decision_gateway"
payload := strings.NewReader("{\n \"merchantId\": \"test_merchant\",\n \"paymentInfo\": {\n \"paymentId\": \"pay_001\",\n \"amount\": 1000,\n \"currency\": \"USD\",\n \"paymentType\": \"ORDER_PAYMENT\",\n \"paymentMethodType\": \"CARD\",\n \"paymentMethod\": \"CREDIT\",\n \"country\": \"US\",\n \"customerId\": \"cust_123\",\n \"udfs\": {},\n \"preferredGateway\": \"<string>\",\n \"metadata\": \"<string>\",\n \"internalMetadata\": \"<string>\",\n \"isEmi\": true,\n \"emiBank\": \"<string>\",\n \"emiTenure\": 123,\n \"paymentSource\": \"<string>\",\n \"authType\": \"THREE_DS\",\n \"cardIssuerBankName\": \"<string>\",\n \"cardIsin\": \"411111\",\n \"cardType\": \"CREDIT\",\n \"cardSwitchProvider\": \"<string>\",\n \"cardProgram\": \"<string>\",\n \"cardIssuerCountry\": \"<string>\",\n \"channel\": \"<string>\"\n },\n \"eligibleGatewayList\": [\n \"stripe\",\n \"paypal\",\n \"adyen\"\n ],\n \"rankingAlgorithm\": \"SR_BASED_ROUTING\",\n \"eliminationEnabled\": false,\n \"enableMultiObjective\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/decision_gateway")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"merchantId\": \"test_merchant\",\n \"paymentInfo\": {\n \"paymentId\": \"pay_001\",\n \"amount\": 1000,\n \"currency\": \"USD\",\n \"paymentType\": \"ORDER_PAYMENT\",\n \"paymentMethodType\": \"CARD\",\n \"paymentMethod\": \"CREDIT\",\n \"country\": \"US\",\n \"customerId\": \"cust_123\",\n \"udfs\": {},\n \"preferredGateway\": \"<string>\",\n \"metadata\": \"<string>\",\n \"internalMetadata\": \"<string>\",\n \"isEmi\": true,\n \"emiBank\": \"<string>\",\n \"emiTenure\": 123,\n \"paymentSource\": \"<string>\",\n \"authType\": \"THREE_DS\",\n \"cardIssuerBankName\": \"<string>\",\n \"cardIsin\": \"411111\",\n \"cardType\": \"CREDIT\",\n \"cardSwitchProvider\": \"<string>\",\n \"cardProgram\": \"<string>\",\n \"cardIssuerCountry\": \"<string>\",\n \"channel\": \"<string>\"\n },\n \"eligibleGatewayList\": [\n \"stripe\",\n \"paypal\",\n \"adyen\"\n ],\n \"rankingAlgorithm\": \"SR_BASED_ROUTING\",\n \"eliminationEnabled\": false,\n \"enableMultiObjective\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/decision_gateway")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"merchantId\": \"test_merchant\",\n \"paymentInfo\": {\n \"paymentId\": \"pay_001\",\n \"amount\": 1000,\n \"currency\": \"USD\",\n \"paymentType\": \"ORDER_PAYMENT\",\n \"paymentMethodType\": \"CARD\",\n \"paymentMethod\": \"CREDIT\",\n \"country\": \"US\",\n \"customerId\": \"cust_123\",\n \"udfs\": {},\n \"preferredGateway\": \"<string>\",\n \"metadata\": \"<string>\",\n \"internalMetadata\": \"<string>\",\n \"isEmi\": true,\n \"emiBank\": \"<string>\",\n \"emiTenure\": 123,\n \"paymentSource\": \"<string>\",\n \"authType\": \"THREE_DS\",\n \"cardIssuerBankName\": \"<string>\",\n \"cardIsin\": \"411111\",\n \"cardType\": \"CREDIT\",\n \"cardSwitchProvider\": \"<string>\",\n \"cardProgram\": \"<string>\",\n \"cardIssuerCountry\": \"<string>\",\n \"channel\": \"<string>\"\n },\n \"eligibleGatewayList\": [\n \"stripe\",\n \"paypal\",\n \"adyen\"\n ],\n \"rankingAlgorithm\": \"SR_BASED_ROUTING\",\n \"eliminationEnabled\": false,\n \"enableMultiObjective\": true\n}"
response = http.request(request)
puts response.read_body{
"decided_gateway": "stripe",
"routing_approach": "SR_SELECTION_V3_ROUTING",
"gateway_priority_map": {
"stripe": 0.94,
"adyen": 0.87,
"paypal": 0.72
},
"routing_dimension": "<string>",
"routing_dimension_level": "<string>",
"reset_approach": "<string>",
"is_scheduled_outage": true,
"is_rust_based_decider": true,
"debit_routing_output": {
"co_badged_card_networks_info": [
{
"network": "NYCE",
"saving_percentage": 1.2
}
],
"issuer_country": "US",
"is_regulated": false,
"regulated_name": "<string>",
"card_type": "Debit"
},
"latency": 123,
"multi_objective_info": {
"outcome": "COST_WON",
"reason": "Promoted 'adyen' over 'stripe' on expected value — saves 80.00 bps for 3.00pp auth.",
"srHead": {
"psp": "adyen",
"authRate": 0.91,
"costBps": 100
},
"chosen": {
"psp": "adyen",
"authRate": 0.91,
"costBps": 100
},
"costSavedBps": 80,
"qualifiedCount": 3,
"margin": 0.2,
"evGapTop2": 0.00182
}
}Authorizations
JWT token obtained from /auth/login
Body
"test_merchant"
Show child attributes
Show child attributes
["stripe", "paypal", "adyen"]
SR_BASED_ROUTING, PL_BASED_ROUTING, NTW_BASED_ROUTING, NTW_SR_HYBRID_ROUTING "SR_BASED_ROUTING"
Per-request override for the multi-objective (cost-aware) post-step. true forces it on, false forces it off; omitted falls back to the merchant's multi_objective_routing_enabled feature flag.
Response
Gateway decision result
"stripe"
Routing approach used. SR_SELECTION_MULTI_OBJECTIVE indicates the multi-objective post-step promoted a cheaper gateway over the SR head.
"SR_SELECTION_V3_ROUTING"
Show child attributes
Show child attributes
{
"stripe": 0.94,
"adyen": 0.87,
"paypal": 0.72
}
Show child attributes
Show child attributes
Populated when the multi-objective post-step ran (multi_objective_routing_enabled feature flag or enableMultiObjective request field, outside hedging). Null otherwise.
Show child attributes
Show child attributes
Was this page helpful?