@opcua/for-node-red
Version:
The Node-RED node to communicate via OPC UA, powered NodeOPCUA and developed by Sterfive's team
302 lines (222 loc) • 81.8 kB
HTML
<style>
.mask-flag-dropdown .option-item{border:1px solid #ccc;cursor:pointer;display:inline-block;font-family:FontAwesome,sans-serif;font-size:16px;font-weight:900;margin-right:10px;padding:5px 10px;text-align:center;width:1em}.mask-flag-dropdown .option-item .checkbox{border:1px solid #ccc;content:"\f096";display:inline-block;height:20px;margin-right:5px;width:20px}.mask-flag-dropdown .option-item.selected .checkbox{content:"\f046"}.custom-select{background-color:#fff;border:1px solid #ccc;box-sizing:border-box;cursor:pointer;max-height:200px;overflow-y:auto;padding:5px;width:100%}.custom-select .custom-option{align-items:center;border-bottom:1px solid #eee;display:flex;padding:5px 10px}.custom-select .custom-option:last-child{border-bottom:none}.custom-select .custom-option .custom-checkbox{align-items:center;border:1px solid #ccc;display:flex;font-size:14px;height:20px;justify-content:center;margin-right:8px;width:20px}.custom-select .custom-option.selected .custom-checkbox{border-color:#007bff}.custom-select .custom-option .custom-checkbox:before{color:#007bff;content:"\f096";font-family:FontAwesome,sans-serif}.custom-select .custom-option.selected .custom-checkbox:before{content:"\f046"}.sterfive-combo-box{position:relative;width:100%}.sterfive-online-menu{height:auto;position:fixed;width:auto}.sterfive-input-error{border-color:var(--red-ui-form-input-border-error-color);border-style:solid;border-width:1px}.sterfive-typedInput-options{background:#fff;border-style:solid;border-width:1px;border:1px solid var(--red-ui-primary-border-color);box-sizing:border-box;max-height:350px;overflow-y:auto;position:absolute;white-space:nowrap;z-index:2000}.sterfive-typedInput-options a{align-items:center;border-bottom:1px solid;border-color:var(--red-ui-secondary-border-color);border-style:solid;border-width:1px;color:var(--red-ui-form-text-color);display:flex;font-size:13px;padding:6px 18px 6px 6px;text-decoration:none}.sterfive-typedInput-options a:hover{background:var(--red-ui-workspace-button-background-hover);text-decoration:none}.sterfive-typedInput-options a:focus{outline:none}.sterfive-typedInput-options a:active,.sterfive-typedInput-options a:focus{background:var(--red-ui-workspace-button-background-active);text-decoration:none}.sterfive-typedInput-options a input[type=checkbox]{margin:0 6px 0 0}.sterfive-typedInput-options .sterfive-typedInput-icon{margin-right:6px}.sterfive-typedInput-options .sterfive-typedInput-icon:not(.fa){background-color:var(--red-ui-primary-text-color);height:14px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;width:12px}.sterfive-combo-box .sterfive-dropdown{background-color:#fff;border:1px solid #ccc;display:none;left:0;max-height:400px;overflow-y:auto;position:absolute;top:100%;width:100%;z-index:1000}.sterfive-combo-box li:before{content:none}.sterfive-tree li.expandable:before,.sterfive-tree li.no-expandable:before{content:"\f0da";cursor:pointer;font-family:FontAwesome,sans-serif;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li.no-expandable:before{opacity:0}.sterfive-tree li.expanded:before{content:"\f0d7";cursor:pointer;font-family:FontAwesome,sans-serif;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li span.selected{border:.5px dotted #33f}.sterfive-tree .fa{color:#333;margin-right:10px}.sterfive-tree ul{list-style:none;padding-inline-start:2%}.sterfive-tree li{cursor:pointer;padding:5px}.sterfive-tree{list-style-type:none}.sterfive-tree,.sterfive-tree ol,.sterfive-tree ul{list-style-type:none;margin:0;padding:0}.sterfive-tree li:hover{background-color:#eee}.sterfive-tree li.loading:before{animation:fa-spin 1s linear infinite;content:"\f110";cursor:pointer;font-family:FontAwesome,sans-serif;font-weight:900;margin-right:5px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sterfive-tree .spinner{animation:spin .7s linear infinite;border:2px solid transparent;border-radius:50%;border-top-color:#666;display:inline-block;height:16px;width:16px}.sterfive-info{background-color:#fafad2;border-radius:10px;border-style:groove;display:block;font-size:10pt;margin:5px 0;padding:5px}.sterfive-info .ok{color:green}.sterfive-info .warning{color:darkred}.input-wrapper{border:0 solid #ccc;border-radius:5px;padding:0}.sterfive-input-group{border:1px solid #ccc;border-radius:5px;display:flex;overflow:hidden}.sterfive-input-group button,.sterfive-input-group input{border:none;outline:none;padding:10px}.sterfive-input-group input{flex:1}.sterfive-input-group button{background-color:var(--red-ui-form-button-background);color:#7b7a7a;cursor:pointer}.sterfive-input-group button:hover{background-color:var(--red-ui-secondary-background-hover)}.sterfive-info-text{color:#777;font-size:12px;margin-left:10px;margin-top:5px}.custom-checkbox{cursor:pointer;display:inline-block;font-family:FontAwesome,sans-serif;font-size:16px;font-weight:900;margin-right:10px;text-align:center;width:1em}.custom-checkbox.unchecked:before{content:"\f096"}.custom-checkbox.checked:before{content:"\f046"}.validate-cancel-buttons{background-color:#fff;position:sticky;right:0;top:0;z-index:1001}.cancel-button,.validate-button{cursor:pointer;font-size:16px;margin:5px}.sterfive-combo-box .sterfive-dropdown{position:relative}.floating-buttons{position:fixed;z-index:1003}
/*# sourceMappingURL=OpcUa-Client2-Browse.css.map */
</style>
<!-- HTML CONTENTS -->
<script type="text/x-red" data-template-name="OpcUa-Client2-Browse">
<style>
.my-checkbox-label {
width: fit-content;
cursor: pointer;
user-select: none;
}
.my-checkbox-input {
visibility: hidden;
}
.my-checkbox-mark {
margin-left: 20px;
font-family: "FontAwesome", serif;
font-size: 24px;
}
.my-checkbox-input:checked ~ .my-checkbox-mark::before {
content: "\f205";
/* fa-toggle-on */
}
.my-checkbox-input:not(:checked) ~ .my-checkbox-mark::before {
content: "\f204";
/* fa-toggle-off */
}
</style>
<h3>Opc-UA Browse</h3>
<div class="form-row">
<label for="node-input-name"><i class="icon-tasks"></i><span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name" />
</div>
<div class="form-row">
<label for="node-input-endpoint"><i class="icon-tasks"></i> Endpoint</label>
<input type="text" id="node-input-endpoint" placeholder="opc.tcp://localhost:4334" />
</div>
<div class="form-row">
<label for="node-input-nodeId" style="width: 100%">
<i class="fa fa-tag"></i>
<span>NodeId</span>
</label>
<input type="text" id="node-input-nodeId" placeholder="ns=2;s=Variable1 or empty" />
</div>
<div class="form-row">
<label for="node-input-referenceTypeId" style="width: 100%">
<i class="fa fa-tag"></i>
<span>ReferenceTypeId</span>
</label>
<input type="text" id="node-input-referenceTypeId" placeholder="ns=2;s=Variable1 or empty" />
</div>
<div class="form-row">
<label class="my-checkbox-label" for="node-input-includeSubtypes"><i class="fa fa-play"></i>Include Subtypes </label>
<label>
<input type="checkbox" checked class="my-checkbox-input" id="node-input-includeSubtypes" />
<span class="my-checkbox-mark"></span>
</label>
</div>
<div class="form-row">
<label for="node-input-browseDirection" style="width: 150px">Browse Direction</label>
<select type="text" id="node-input-browseDirection" style="width: 150px">
<option selected value="Forward">Forward</option>
<option value="Inverse">Inverse</option>
<option value="Both">Both</option>
</select>
</div>
<div class="form-row">
<label for="node-input-nodeClassMask" style="width: 100%">
<span>Node Class Mask</span>
</label>
<div>
<input type="text" id="node-input-nodeClassMask" placeholder="Object | Variable" />
</div>
</div>
<div class="form-row">
<label for="node-input-resultMask" style="width: 100%">
<span>Result Mask</span>
</label>
<div>
<input type="text" id="node-input-resultMask" placeholder="NodeClass | BrowseName |DisplayName" />
</div>
</div>
</script>
<!-- MARKDOWN CONTENTS -->
<script type="text/markdown" data-help-name="OpcUa-Client2-Browse">
## Browse OPC UA Node
Use this node to extract references.
This node is equivalent to the [OPC UA Browse Service](https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.2) and automatically handles continuations using [BrowseNext](https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.3).
### Properties
- **Name**: The name of this node.
- **Endpoint**: The predefined endpoint of the OPC UA server to connect to.
- **NodeId**: The OPC UA Node ID for which you want to explore the references.
- **ReferenceTypeId**: The type of reference you want to follow, selected in the ReferenceType hierarchy.
- **IncludeSubType**: A flag that indicates whether to strictly follow (when false) the reference type specified by ReferenceTypeId or also consider any subtype of the ReferenceTypeId (when true).
- **BrowseDirection**: indicates whever to follow forward or backward references or both.
- **Node Class Mask**: allows to filter which type of target node to consider based on NodeClass. Only target nodes with the selected NodeClasses are returned.
- Object
- Variable
- Method
- ObjectType
- VariableType
- ReferenceType
- DataType
- View
- **Result Mask**: Specifies the fields in the ReferenceDescription structure that should be returned.
- ReferenceType
- IsForward
- NodeClass
- BrowseName
- DisplayName
- TypeDefinition
- (NodeId is always provided)
## browse action
you can either
- Inject your OPC UA address (NodeId) by the `nodeId` or `topic` or `payload` property of an injected message or
- use the nodeId attribute defined in the OpcUa-Read node itself
## Input
The read operation is triggered when the node receive an input message.
### input message
#### specifying the nodeId
The nodeId to read can be specified in the following ways, in priority order:
1. :msg.payload.nodeId (string):
2. :msg.nodeId (string): the nodeId to read
3. :msg.topic (string): the nodeId to read
or, if `msg.nodeId` is not defined:
4. :parameter.nodeId (string): the nodeId to read defined in the node configuration itself.
#### specifying the reference type
The reference type to follow can be specified in the following ways, in priority order:
1. :msg.payload.referenceTypeId (string): the reference type to follow
2. :msg.referenceTypeId (string): the reference type to follow
or, if `msg.referenceTypeId` is not defined:
3. :parameter.referenceTypeId (string): the reference type to follow defined in the node configuration itself.
#### specifying the browse direction
The browse direction can be specified in the following ways, in priority order:
1. :msg.payload.browseDirection (string): the browse direction to follow
2. :msg.browseDirection (string): the browse direction to follow
or, if `msg.browseDirection` is not defined:
3. :parameter.browseDirection (string): the browse direction to follow defined in the node configuration itself.
Valid values for the browse direction are:
- "Forward" or 0 (default): follow forward references
- "Inverse" or 1: follow backward references
- "Both" or 2s: follow both forward and backward references
#### specifying the node class mask
The node class mask can be specified in the following ways, in priority order:
1. :msg.payloadnodeClassMask (string): the node class mask to apply
2. :msg.nodeClassMask (string): the node class mask to apply
or, if `msg.nodeClassMask` is not defined:
3. :parameter.nodeClassMask (string): the node class mask to apply defined in the node configuration itself.
Valid values for the node class mask can be specified in two ways:
1. as a number: the node class mask is a bitmask, where each bit represents a node class.
2. as a string: the node class mask can be specified as a separated list of node classes.
Valid values for the node class flags are:
- "Object" or 1: Object
- "Variable" or 2: Variable
- "Method" or 4: Method
- "ObjectType" or 8: ObjectType
- "VariableType" or 16: VariableType
- "ReferenceType" or 32: ReferenceType
- "DataType" or 64: DataType
- "View" or 128: View
For instance:
- to read only Object and Variable nodes, you can set the node class mask to `3` (1 + 2) or `"Object,Variable"`.
- to read only Method nodes, you can set the node class mask to `4` or `"Method"`.
- to read only ObjectType and VariableType nodes, you can set the node class mask to `24` (8 + 16) or `"ObjectType,VariableType"`.
Note: the node class mask is a bitmask, so you can combine multiple node classes using the `+` operator or by specifying them as a comma-separated string.
Note: when the node class mask is a string you can use `|` , `,` or `;` to separate the values.
Note: a NodeClassMask of `0` means "all node classes", so it will return all nodes regardless of their class.
#### specifying the result mask
The result mask can be specified in the following ways, in priority order:
1. :msg.payload.resultMask (string): the result mask to apply
2. :msg.resultMask (string): the result mask to apply
or, if `msg.resultMask` is not defined:
3. :parameter.resultMask (string): the result mask to apply defined in the node configuration itself.
Valid values for the result mask can be specified in two ways:
1. as a number: the result mask is a bitmask, where each bit represents a
field in the ReferenceDescription structure.
2. as a string: the result mask can be specified as a separated list of fields.
Valid values for the result mask flags are:
- "ReferenceType" or 1: ReferenceType
- "IsForward" or 2: IsForward
- "NodeClass" or 4: NodeClass
- "BrowseName" or 8: BrowseName
- "DisplayName" or 16: DisplayName
- "TypeDefinition" or 32: TypeDefinition
For instance:
- to read only the ReferenceType and IsForward fields, you can set the result mask to `3` (1 + 2) or `"ReferenceType,IsForward"`.
- to read only the NodeClass and BrowseName fields, you can set the result mask to `12` (4 + 8) or `"NodeClass,BrowseName"
- to read all fields except TypeDefinition, you can set the result mask to `63` (1 + 2 + 4 + 8 + 16) or `"ReferenceType,IsForward,NodeClass,BrowseName,DisplayName"`.
- to read all fields, you can set the result mask to `63` (1 + 2 + 4 + 8 + 16 + 32) or `"ReferenceType,IsForward,NodeClass,BrowseName,DisplayName,TypeDefinition"`.
- Note: the NodeId is always provided in the output message, that's why it is not included in the result mask flags.
### Output Message
**msg.payload**:
the payload of the output message is an array of objects, each object containing the following properties:
- **nodeId**: The NodeId of the target node. (always provided)
- **browseName**: The BrowseName of the target node. (if `resultMask` includes `BrowseName`)
- **displayName**: The DisplayName of the target node. (if `resultMask` includes `DisplayName`))
- **nodeClass**: The NodeClass of the target node as a String. (if `resultMask` includes `NodeClass`)
- **referenceTypeId**: The NodeId of the reference type (if `resultMask` includes `ReferenceType`).
- **isForward**: A boolean indicating whether the reference is forward (true) or backward (false). (if `resultMask` includes `IsForward`))
- **typeDefinition**: The TypeDefinition of the target node. (if `resultMask` includes `TypeDefinition`)
for example, the output message payload could look like this:
```json
[
{
"nodeId": "ns=0;i=61",
"browseName": "FolderType",
"displayName": "FolderType",
"nodeClass": "ObjectType",
"isForward": true,
"referenceTypeId": "ns=0;i=40(HasTypeDefinition)"
}
// etc...
]
```
### Reference
- Browse Service: https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.2
- Brosse Next Service: https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.3
</script>
<!-- END OF CONTENTS -->
<script type="text/javascript">
function _0x12dc(_0x5c66e4,_0x12c93a){_0x5c66e4=_0x5c66e4-0x108;const _0x182cc8=_0x182c();let _0x12dccd=_0x182cc8[_0x5c66e4];return _0x12dccd;}function _0x182c(){const _0x2ae48e=['disarmClick','already\x20fetched','toString','suppressed','error',':visible','$selectTrigger','isNaN','12px\x2050px\x2012px\x2015px','aliased\x20NodeId:\x20','<div\x20class=\x22custom-select\x22></div>','BrowsePath','icon','Organizes','css','_delay','focus','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','after','slideUp','nodeId_nsu','bannerCss','rgba(61,\x2060,\x204,\x200.525)','aliasedBrowsePath','_showTypeMenu','40px','_initMenu','nodeClass','#1976D2','this\x20node\x20will\x20not\x20process\x20messages\x20until\x20you\x20','buttonCss','replaceWith','referenceTypeId','#node-input-endpoint','references','getTime','nodes','toggle','parentNode','<span>','nodeId','parent','ns=0;i=35','fa-folder','pageX','Variable','tabindex','settings','<strong>✅\x20Registration\x20complete</strong>\x20—\x20','2688610sIdVFO','relativePath','change','$toggleTreeBtn','<span\x20class=\x22custom-checkbox\x22></span>','pageY','rgba(0,\x200,\x200,\x200.05)','first','position','absolute','rgb(','.red-ui-tray-content','buttonText','transparent','scrollTop','!!failure!!','sterfive_opcua_nodered_doc','preventDefault','$verifyBtn','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20','26383VnXJxs','SteelBlue','__parentNode','.tree-text:first','blur(20px)','#dc3545','selected','has-node-help-widget','attr','bp_indexed','button','push','You\x20are\x20using\x20the\x20<strong>Free\x20Version</strong>\x20with\x20limited\x20functionality.\x20','element','removeClass','offset','expandable','<div\x20class=\x22sterfive-info-text\x22></div>','/onboarding/status','statusCode','off','VariableType','$input','bannerClass','log','<i\x20class=\x22fa\x20fa-id-card\x22/> \x20','column','Aliased\x20Browse\x20Path','21mimYKZ','trim','1px\x20solid\x20rgba(255,\x20255,\x20255,\x200.3)','addClass','licenceInfo','warn','sterfive.nodeBrowser','filter','nodeId_aliased','ns=0;i=34','opcua-for-nodered-last-overlay-shown','#f57c00','requestedNodeId','8px','<a\x20href=\x22','licence-activation-overlay','HasProperty','<div\x20class=\x22spinner\x22></div>','<li\x20key=\x22','mode','14px','prependTo','DarkOrange','keydown','227350zAyrrT','/images/small-sterfive.png','<img>','mousedown','#721c24','flagEditor','namesToBits','space-between','#node-input-resultMask','white','\x22\x20target=\x22_blank\x22\x20','expiryDate','Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20licence\x20overlay','10px','\x20|\x20','next','</div>','Failed\x20to\x20check\x20licence\x20status:','endpoint','browsePath','27GKZdBx','.onboarding-required-banner','fa-object-group','licence-prof-expired-banner','ns=0;i=47','#f8d7da','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','$dropdown','TRIAL','0\x2020px\x2050px\x20rgba(0,0,0,0.25)','red-ui-typedInput-icon','Get\x20a\x20license\x20now','FAILED','fadeOut','HasComponent','\x20day','options','show','fetched','target','2px\x20solid\x20#28a745','hasClass','12px','#e9ecef','i=61','20px','$combo','#c82333','wrap','displayName','NodeId\x20with\x20namespace\x20Urn','length','HasTypeDefinition','ns=0;i=40','nsu','translateY(-50%)','already\x20loading','30px','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','Unspecified','call','stopPropagation','.custom-option','opcUaEndpoint2Config','NodeId','bp_aliased','Your\x20<strong>Professional\x20License</strong>\x20has\x20expired.\x20Please\x20renew\x20your\x20license\x20to\x20ensure\x20continued\x20access\x20to\x20support\x20and\x20updates.','ReferenceType','#856404','16px','catch',':focus','</span><ul></ul></li>','ns=0;i=61','50px','15px','grey','all\x200.2s','nodeIds','slideDown','Your\x20trial\x20period\x20has\x20ended.\x20To\x20continue\x20using\x20this\x20node,\x20please\x20purchase\x20a\x20professional\x20license\x20or\x20contact\x20our\x20support\x20team\x20for\x20assistance.','trigger','messageHtml','<a\x20href=\x22javascript:void(0)\x22\x20title=\x22Click\x20to\x20visit\x20documentation\x22\x20style=\x22position:absolute;\x20top:10px;\x20right:10px;\x20z-index:1000;\x20color:#0066cc;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<i\x20class=\x22fa\x20fa-question-circle\x22\x20style=\x22font-size:18px;\x22></i>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</a>','prop','currentParent','onboarded','failure','assign','581vYyZtM','64px','opacity','verify','Method','endpointNode','setMode','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','<a\x20href=\x22#\x22></a>','ns=0;i=45','><i\x20class=\x22fa\x20','append','10px\x2015px','fa-list-alt','OPCUA\x20Browse','browseResult','closest','SuppressedError','i=31','Objects','isSelectable','Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20licence\x20banner','html','center','stringify','msg','1px\x20solid\x20#ccc','HasChild','ObjectType','Invalid','mask-image:\x20url(','disconnect','RED.settings[\x22','180px','selectedMenuItem','text','150px','setItem','name','$inputGroup','node','prev','json','DisplayName','inputs','0.0.0','licence-activated','nsu\x20nodeId:\x20','IsForward','POST','browse','https://opcua-for-node-red.doc.sterfive.com','_showMenu','left','li\x20>\x20.tree-text','10px\x2020px','sterfive-input-error','opcua-for-node-red-fix-me','width=1200,height=800','OpcUa-Client2-Browse','<i>','match','checked','opts','500','5px\x2010px','Inverse','[value=\x27','join','ns=0;i=85','expanded','#node-input-nodeId','application/json','buttonHoverCss','namespaceAliases','340288mDWTQk','<button>','pointer','input[type=\x22checkbox\x22]','#155724','animate','val','Renew\x20Now','_createMenu','HasSubtype','toggleClass','placeholder','0\x202px\x208px\x20rgba(0,0,0,0.1)','keyCode','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','number','callback','then','expandable\x20expanded','url','/support-frame.html','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','background-color','×','<a>','<div/>','#ccc','removeEventListener','addEventListener','docs/','Good','value','sterfive-info','Register\x20now','SandyBrown','indexOf','type','sterfive-input-group','parentElement','fa-cog','Object','opacity\x200.2s','</span>','2px\x20solid\x20#ffc107','.red-ui-tray-body',':first','Unknown\x20bit\x20name','relative','I\x20accept\x20to\x20switch\x20to\x20the\x20free\x20version\x20(limited\x20features)','replace','keys','updateValue','#ff9800','Value\x20is\x20not\x20verified','fadeIn','reset','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','$selectLabel','aliasedNodeId','empty','Forward','mousedown.red-ui-typedInput-close-property-select','50%','isTypeRef','find','statusCode:\x20','#2196F3','insertAfter','typeDefinition','statusText','each','_blank','rgba(255,\x20255,\x20255,\x200.9)','nodeBrowser','thank\x20you!\x20Please\x20re-deploy\x20your\x20flows\x20to\x20activate\x20all\x20nodes.','fetching\x20failed\x20with\x20error','<p>','right','browseName','<iframe></iframe>','DataType','blur','red-ui-typedInput-focus','sterfive-combo-box','sterfive.flagEditor','click','localeCompare','children','sort','/licenceInfo','500px','message','widget','remove','ns=0;i=46','Unknown\x20Product','1px\x20solid\x20#ced4da','1973832iScytn','prepend','../../icons/opcuanodeLogo.png','/config','blur(10px)','/config#buy','permanent','</strong>.\x20','auto','status','$tree','throw','nsuNodeID','backgroundColor','licence-continue-button','open','fa-question','reference','\x22}><span\x20class=\x22tree-text\x22\x20title=','<div>','<h2>','data','View','title','complete\x20registration</a>.','label','100%','_hideMenu','span','function','apiRootUrl','onboarding-required-banner','mousedown.red-ui-typedInput-focus-block','resolveParentNode','supportUrl','licence-freemium-banner','CadetBlue','none','\x22]\x20is\x20not\x20set,\x20using\x20default\x20API\x20namespace.\x20Available\x20keys:\x20','startsWith','#999','$elementDiv','msg.','NodeClass','$uiSelect','loading','1.6','Both','before','top','height','5px','node_label_italic','21882tUQQYZ','entries','<button><i\x20class=\x22fa\x20fa-eye\x22></i></button>','TypeDefinition','$info','EXPIRED','min','multiple','DodgerBlue','mouseenter','121252Idjuqb','mouseleave','> \x20','flex','hide','#663c00','SeaGreen','opc.tcp://opcuademo.sterfive.com:26543','FREEWARE','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','$menu','<ul\x20class=\x22sterfive-tree\x22></ul>','BrowseName','node\x20class:\x20','bold','appendTo'];_0x182c=function(){return _0x2ae48e;};return _0x182c();}(function(_0x5bc359,_0x17724d){const _0x4fc2f9=_0x12dc,_0x2b2dda=_0x5bc359();while(!![]){try{const _0x2ff6da=parseInt(_0x4fc2f9(0x179))/0x1+parseInt(_0x4fc2f9(0x251))/0x2+parseInt(_0x4fc2f9(0x195))/0x3*(parseInt(_0x4fc2f9(0x124))/0x4)+parseInt(_0x4fc2f9(0x1ad))/0x5+-parseInt(_0x4fc2f9(0x11a))/0x6*(-parseInt(_0x4fc2f9(0x206))/0x7)+parseInt(_0x4fc2f9(0x2b2))/0x8+parseInt(_0x4fc2f9(0x1c1))/0x9*(-parseInt(_0x4fc2f9(0x165))/0xa);if(_0x2ff6da===_0x17724d)break;else _0x2b2dda['push'](_0x2b2dda['shift']());}catch(_0x459577){_0x2b2dda['push'](_0x2b2dda['shift']());}}}(_0x182c,0x301ab),(function(){'use strict';const _0x16336e=_0x12dc;function _0x47bb91(_0x5c5633){const _0x2590fc=_0x12dc;!_0x5c5633[_0x2590fc(0x10c)]('/')&&(_0x5c5633='/'+_0x5c5633);const _0x3d7fba=_0x2590fc(0x1ec);let _0x2d9e36=RED[_0x2590fc(0x163)][_0x3d7fba];if(!_0x2d9e36){const _0x36b9b4=Object[_0x2590fc(0x283)](RED[_0x2590fc(0x163)])['sort']()[_0x2590fc(0x24a)](',\x20');console[_0x2590fc(0x19a)](_0x2590fc(0x226)+_0x3d7fba+_0x2590fc(0x10b)+_0x36b9b4),_0x2d9e36=_0x2590fc(0x23f);}const _0x1e7496=RED[_0x2590fc(0x163)][_0x2590fc(0x2d0)]||'',_0xd5b100=''+_0x1e7496+_0x2d9e36+_0x5c5633;return _0xd5b100;}const _0x406858=()=>{const _0xcb6445=_0x12dc,_0x34ab13=$(_0xcb6445(0x27d));if(_0x34ab13[_0xcb6445(0x1e0)]){const _0x5164aa=$(_0xcb6445(0x2a0),{'src':_0x47bb91(_0xcb6445(0x265)),'scrolling':'no','style':'background-color:transparent;overflow:hidden;border:3px','allowtransparency':'true','width':_0xcb6445(0x227),'height':_0xcb6445(0x1f7)});_0x34ab13[_0xcb6445(0x211)](_0x5164aa),_0x5164aa[_0xcb6445(0x142)]({'position':_0xcb6445(0x16e),'right':'20px','bottom':_0xcb6445(0x1f2)});}},_0x2206be=()=>{const _0x57e5fe=_0x12dc,_0x15b0cc=$(_0x57e5fe(0x155)),_0x5a16b5=_0x15b0cc[_0x57e5fe(0x257)](),_0x581647=RED[_0x57e5fe(0x158)][_0x57e5fe(0x22e)](_0x5a16b5);if(!_0x581647)return undefined;const {endpoint:_0x5d07f1,securityMode:_0x720a9d,securityPolicy:_0x416315,userIdentityType:_0x450d1d,credentials:_0x8b8b36,namespaceAliases:_0x4d9054}=_0x581647,_0x4c5915={'endpoint':_0x5d07f1,'securityMode':_0x720a9d,'securityPolicy':_0x416315,'userIdentityType':_0x450d1d,'credentials':_0x8b8b36,'namespaceAliases':_0x4d9054};return _0x4c5915;},_0x1e5412=()=>{const _0x438f0a=_0x12dc,_0x155ade=$(_0x438f0a(0x155)),_0x563131=_0x155ade['val'](),_0x37090e=_0x2206be();if(!_0x37090e)return undefined;const _0x5839b1=_0x37090e[_0x438f0a(0x250)];return Object[_0x438f0a(0x205)]({'namespaceAliases':_0x5839b1,'id':_0x563131},_0x37090e);},_0x1f309e=()=>{return{'endpointNode':_0x1e5412};};function _0x23a500(_0x438cac,_0x219250,_0x4d69a5,_0x45dc9a){function _0x1c2ef4(_0x7514cc){return _0x7514cc instanceof _0x4d69a5?_0x7514cc:new _0x4d69a5(function(_0x4406d6){_0x4406d6(_0x7514cc);});}return new(_0x4d69a5||(_0x4d69a5=Promise))(function(_0x2f3b26,_0x460c7d){const _0xaa741c=_0x12dc;function _0x430078(_0x52b10d){const _0x4ca26f=_0x12dc;try{_0x45b4b1(_0x45dc9a[_0x4ca26f(0x1bc)](_0x52b10d));}catch(_0x506eb0){_0x460c7d(_0x506eb0);}}function _0x575a18(_0x4836e1){const _0x37c7bc=_0x12dc;try{_0x45b4b1(_0x45dc9a[_0x37c7bc(0x2bd)](_0x4836e1));}catch(_0x4b0a04){_0x460c7d(_0x4b0a04);}}function _0x45b4b1(_0x361c3b){const _0x25fb8f=_0x12dc;_0x361c3b['done']?_0x2f3b26(_0x361c3b[_0x25fb8f(0x270)]):_0x1c2ef4(_0x361c3b[_0x25fb8f(0x270)])[_0x25fb8f(0x262)](_0x430078,_0x575a18);}_0x45b4b1((_0x45dc9a=_0x45dc9a['apply'](_0x438cac,_0x219250||[]))[_0xaa741c(0x1bc)]());});}typeof SuppressedError===_0x16336e(0x2cf)?SuppressedError:function(_0x5281dc,_0x4774b1,_0x1085a4){const _0x581b74=_0x16336e;var _0xed6613=new Error(_0x1085a4);return _0xed6613[_0x581b74(0x22c)]=_0x581b74(0x217),_0xed6613[_0x581b74(0x138)]=_0x5281dc,_0xed6613[_0x581b74(0x137)]=_0x4774b1,_0xed6613;};function _0x3c8a9f(){return _0x23a500(this,void 0x0,void 0x0,function*(){const _0x594591=_0x12dc,_0x323c1a=_0x47bb91(_0x594591(0x2aa)),_0x44aff8=yield fetch(_0x323c1a,{'method':'GET'}),_0x5d391b=new Date()['toISOString'](),_0x4f2674={'status':_0x594591(0x1cd),'type':_0x594591(0x12c),'productName':_0x594591(0x2b0),'productVersion':_0x594591(0x233),'licenceInfo':{'licenceId':'00000000-0000-0000-0000-000000000000','licenceType':'<unknown>','expiryDate':_0x5d391b,'onPremiseServerHost':'','expired':!![],'userCompany':'','userEmail':'','userName':''}};if(_0x44aff8['status']!==0xc8)return console[_0x594591(0x191)](_0x594591(0x29c),_0x44aff8[_0x594591(0x2bb)],_0x44aff8[_0x594591(0x296)]),_0x4f2674;const _0x61ddba=yield _0x44aff8[_0x594591(0x230)]();return _0x61ddba;});}const _0xe6ce49=_0x16336e(0x19f);function _0x34c98b(){return _0x23a500(this,void 0x0,void 0x0,function*(){const _0x4e5388=_0x12dc;try{const _0x27d71f=_0x47bb91(_0x4e5388(0x18b)),_0x2eac8b=yield fetch(_0x27d71f);if(!_0x2eac8b['ok'])return{'onboarded':!![]};return yield _0x2eac8b[_0x4e5388(0x230)]();}catch(_0x3eb948){return{'onboarded':!![]};}});}function _0x3cd974(_0x4e5b15){const _0x1951d2=_0x16336e;_0x1db62f({'bannerClass':_0x1951d2(0x2d1),'bannerCss':{'backgroundColor':'#fff3cd','borderBottom':'2px\x20solid\x20#ff9800'},'messageHtml':'<strong>⚠️\x20Registration\x20required</strong>\x20—\x20'+_0x1951d2(0x151)+(_0x1951d2(0x1a3)+_0x4e5b15+_0x1951d2(0x1b7))+'style=\x22color:#1565C0;\x20text-decoration:underline;\x20font-weight:bold\x22>'+_0x1951d2(0x2ca),'messageCss':{'color':_0x1951d2(0x129)},'buttonText':_0x1951d2(0x272),'buttonCss':{'backgroundColor':_0x1951d2(0x285)},'buttonHoverCss':{'backgroundColor':_0x1951d2(0x1a0)},'supportUrl':_0x4e5b15});const _0x4405a9=setInterval(()=>_0x23a500(this,void 0x0,void 0x0,function*(){const _0x1f39f8=_0x1951d2;try{const _0x474f54=yield _0x34c98b();if(_0x474f54[_0x1f39f8(0x203)]){clearInterval(_0x4405a9);const _0x57a9c=$(_0x1f39f8(0x1c2));_0x57a9c[_0x1f39f8(0x1e0)]>0x0&&(_0x57a9c['css']({'backgroundColor':'#d4edda','borderBottom':_0x1f39f8(0x1d5)}),_0x57a9c[_0x1f39f8(0x291)]('span')[_0x1f39f8(0x21c)](_0x1f39f8(0x164)+_0x1f39f8(0x29b)),_0x57a9c[_0x1f39f8(0x291)](_0x1f39f8(0x2ce))[_0x1f39f8(0x142)]({'color':_0x1f39f8(0x255)}),_0x57a9c[_0x1f39f8(0x291)](_0x1f39f8(0x183))[_0x1f39f8(0x2ae)](),setTimeout(()=>{const _0x5b41d4=_0x1f39f8;_0x57a9c[_0x5b41d4(0x147)](0x12c,()=>_0x57a9c['remove']());},0x1388));}}catch(_0x21f760){}}),0xbb8),_0x2b0f17=new MutationObserver(()=>{const _0x4d2b8a=_0x1951d2;$(_0x4d2b8a(0x1c2))[_0x4d2b8a(0x1e0)]===0x0&&(clearInterval(_0x4405a9),_0x2b0f17[_0x4d2b8a(0x225)]());}),_0x366e31=$(_0x1951d2(0x170))[_0x1951d2(0x16c)]();_0x366e31[_0x1951d2(0x1e0)]>0x0&&_0x366e31[0x0]&&_0x2b0f17['observe'](_0x366e31[0x0],{'childList':!![],'subtree':!![]});}function _0x325872(){return _0x23a500(this,arguments,void 0x0,function*(_0x5aab68={}){const _0x400fe3=_0x12dc,_0x24a90f=_0x47bb91(_0x400fe3(0x2b7)),{delay:delay=0x5dc,supportUrl:supportUrl=_0x24a90f,shouldShowOverlay:shouldShowOverlay=_0x2a15fb=>_0x2a15fb['status']==='EXPIRED'&&_0x2a15fb[_0x400fe3(0x275)]===_0x400fe3(0x1c9)}=_0x5aab68;try{const _0x5b19fb=yield _0x34c98b();if(!_0x5b19fb[_0x400fe3(0x203)])return yield _0x357972(Math[_0x400fe3(0x120)](delay,0x1f4)),_0x3cd974(_0x47bb91(_0x400fe3(0x2b5))),!![];const _0x21d894=yield _0x3c8a9f();if(shouldShowOverlay(_0x21d894)){const _0x2e74a3=Date['now'](),_0x2c28cf=parseInt(localStorage['getItem'](_0xe6ce49)||'0',0xa),_0x5a5b2f=0x3c*0x3c*0x3e8;return _0x2e74a3-_0x2c28cf>_0x5a5b2f?(yield _0x357972(delay),_0x3c1096(supportUrl),localStorage[_0x400fe3(0x22b)](_0xe6ce49,_0x2e74a3[_0x400fe3(0x136)]())):_0x36e0c9(supportUrl),!![];}if(_0x21d894[_0x400fe3(0x275)]==='TRIAL'&&_0x21d894[_0x400fe3(0x2bb)]!==_0x400fe3(0x11f)){const _0x37880b=_0x3183b2(_0x21d894);if(_0x37880b<=0xa&&_0x37880b>0x0)return yield _0x357972(delay),_0x2cf3b0(supportUrl,_0x37880b),!![];}if(_0x21d894[_0x400fe3(0x275)]==='PROFESSIONAL'&&_0x21d894['status']===_0x400fe3(0x11f))return yield _0x357972(delay),_0x1ec3a5(supportUrl),!![];return![];}catch(_0x3191a2){return console['error'](_0x400fe3(0x1be),_0x3191a2),![];}});}function _0x3c1096(_0x4fbf52,_0x3de631=0xbb8){const _0xdbc8b9=_0x16336e,_0x31d86f=$(_0xdbc8b9(0x170))[_0xdbc8b9(0x16c)]();if(_0x31d86f[_0xdbc8b9(0x1e0)]===0x0){console[_0xdbc8b9(0x19a)](_0xdbc8b9(0x1b9));return;}const _0x9ebc82=$(_0xdbc8b9(0x2c5),{'class':_0xdbc8b9(0x1a4),'css':{'position':_0xdbc8b9(0x16e),'top':0x0,'left':0x0,'right':0x0,'bottom':0x0,'zIndex':0x2710,'backgroundColor':_0x31d86f['css'](_0xdbc8b9(0x267))[_0xdbc8b9(0x282)](_0xdbc8b9(0x16f),'rgba(')[_0xdbc8b9(0x282)](')',',\x200.7)'),'backdropFilter':_0xdbc8b9(0x2b6),'WebkitBackdropFilter':'blur(10px)','display':_0xdbc8b9(0x127),'flexDirection':_0xdbc8b9(0x193),'alignItems':'center','justifyContent':_0xdbc8b9(0x21d),'padding':_0xdbc8b9(0x14d)}}),_0x35d940=$('<div>',{'css':{'backgroundColor':_0xdbc8b9(0x299),'backdropFilter':_0xdbc8b9(0x17d),'WebkitBackdropFilter':'blur(20px)','borderRadius':'16px','padding':_0xdbc8b9(0x14d),'maxWidth':_0xdbc8b9(0x2ab),'textAlign':'center','boxShadow':_0xdbc8b9(0x1ca),'border':_0xdbc8b9(0x197)}}),_0x5a987c=$(_0xdbc8b9(0x1af),{'src':_0x47bb91(_0xdbc8b9(0x1ae)),'css':{'maxWidth':_0xdbc8b9(0x22a),'height':'auto','marginBottom':_0xdbc8b9(0x1da)}}),_0x1cd30d=$('<div>',{'css':{'fontSize':_0xdbc8b9(0x207),'marginBottom':_0xdbc8b9(0x1da)}})[_0xdbc8b9(0x229)]('⚠️'),_0x60974f=$(_0xdbc8b9(0x2c6),{'css':{'color':'#f44336','fontSize':'24px','fontWeight':_0xdbc8b9(0x132),'marginBottom':_0xdbc8b9(0x1f8)}})['text']('Trial\x20License\x20Expired'),_0x526e56=$(_0xdbc8b9(0x29d),{'css':{'color':'#333','fontSize':'16px','lineHeight':_0xdbc8b9(0x113),'marginBottom':_0xdbc8b9(0x1e6)}})[_0xdbc8b9(0x21c)](_0xdbc8b9(0x1fd)),_0x187885=$('<button>',{'css':{'backgroundColor':'#2196F3','color':'white','border':_0xdbc8b9(0x10a),'padding':'15px\x2030px','fontSize':'16px','fontWeight':_0xdbc8b9(0x132),'borderRadius':_0xdbc8b9(0x1a2),'cursor':_0xdbc8b9(0x253),'marginBottom':_0xdbc8b9(0x1f8),'width':_0xdbc8b9(0x2cc),'transition':'background-color\x200.2s'}})[_0xdbc8b9(0x229)]('Get\x20Support\x20&\x20Activate\x20License')['on']('mouseenter',function(){const _0x1878e8=_0xdbc8b9;$(this)[_0x1878e8(0x142)](_0x1878e8(0x2bf),'#1976D2');})['on'](_0xdbc8b9(0x125),function(){const _0x4d4d90=_0xdbc8b9;$(this)[_0x4d4d90(0x142)](_0x4d4d90(0x2bf),_0x4d4d90(0x293));})['on']('click',()=>{const _0x224616=_0xdbc8b9;window['open'](_0x4fbf52,_0x224616(0x298),_0x224616(0x240));}),_0x2bdbb5=$(_0xdbc8b9(0x252),{'class':_0xdbc8b9(0x2c0),'css':{'backgroundColor':_0xdbc8b9(0x172),'color':'#555','border':_0xdbc8b9(0x220),'padding':_0xdbc8b9(0x23d),'fontSize':_0xdbc8b9(0x1a9),'borderRadius':_0xdbc8b9(0x1a2),'cursor':'pointer','marginTop':_0xdbc8b9(0x1ba),'width':_0xdbc8b9(0x2cc),'transition':_0xdbc8b9(0x1fa),'display':_0xdbc8b9(0x10a)}})[_0xdbc8b9(0x229)](_0xdbc8b9(0x281))['on'](_0xdbc8b9(0x123),function(){const _0x4a879c=_0xdbc8b9;$(this)[_0x4a879c(0x142)]({'backgroundColor':_0x4a879c(0x16b),'borderColor':_0x4a879c(0x10d)});})['on']('mouseleave',function(){const _0x47a84c=_0xdbc8b9;$(this)['css']({'backgroundColor':'transparent','borderColor':_0x47a84c(0x26b)});})['on'](_0xdbc8b9(0x2a6),()=>{const _0x3a628e=_0xdbc8b9;_0x9ebc82[_0x3a628e(0x1ce)](0x12c,()=>{const _0x1a3f08=_0x3a628e;_0x9ebc82[_0x1a3f08(0x2ae)]();});});setTimeout(()=>{const _0x404540=_0xdbc8b9;_0x2bdbb5[_0x404540(0x287)]();},_0x3de631),_0x35d940[_0xdbc8b9(0x211)](_0x5a987c),_0x35d940['append'](_0x1cd30d),_0x35d940[_0xdbc8b9(0x211)](_0x60974f),_0x35d940[_0xdbc8b9(0x211)](_0x526e56),_0x35d940[_0xdbc8b9(0x211)](_0x187885),_0x35d940[_0xdbc8b9(0x211)](_0x2bdbb5),_0x9ebc82['append'](_0x35d940),_0x31d86f[_0xdbc8b9(0x142)](_0xdbc8b9(0x16d),_0xdbc8b9(0x280)),_0x31d86f[_0xdbc8b9(0x211)](_0x9ebc82),window[_0xdbc8b9(0x26d)](_0xdbc8b9(0x2ac),function _0x563328(_0x3ad095){const _0x5f47dc=_0xdbc8b9;_0x3ad095[_0x5f47dc(0x2c7)]&&_0x3ad095[_0x5f47dc(0x2c7)][_0x5f47dc(0x275)]===_0x5f47dc(0x234)&&(_0x9ebc82[_0x5f47dc(0x1ce)](0x12c,()=>{const _0x3bc27e=_0x5f47dc;_0x9ebc82[_0x3bc27e(0x2ae)]();}),window[_0x5f47dc(0x26c)](_0x5f47dc(0x2ac),_0x563328));});}function _0x357972(_0xa1d52a){return new Promise(_0x309960=>setTimeout(_0x309960,_0xa1d52a));}function _0x3183b2(_0x49c903){const _0x3bf8f4=_0x16336e,_0x61c211=_0x49c903[_0x3bf8f4(0x199)][_0x3bf8f4(0x1b8)];if(!_0x61c211||_0x61c211===_0x3bf8f4(0x2b8))return Infinity;const _0x59e2ee=new Date(_0x61c211),_0x2049ee=new Date(),_0x5903f5=_0x59e2ee['getTime']()-_0x2049ee[_0x3bf8f4(0x157)](),_0x5e8eab=Math['ceil'](_0x5903f5/(0x3e8*0x3c*0x3c*0x18));return _0x5e8eab;}function _0x2cf3b0(_0x540709,_0x5e1460){const _0x430cfd=_0x16336e,_0x14bea6=$('.red-ui-tray-content')[_0x430cfd(0x16c)]();if(_0x14bea6[_0x430cfd(0x1e0)]===0x0){console[_0x430cfd(0x19a)](_0x430cfd(0x21b));return;}if(_0x14bea6[_0x430cfd(0x291)]('.licence-expiry-banner')[_0x430cfd(0x1e0)]>0x0)return;const _0x2fc340=$(_0x430cfd(0x2c5),{'class':'licence-expiry-banner','css':{'position':_0x430cfd(0x280),'backgroundColor':'#fff3cd','borderBottom':_0x430cfd(0x27c),'padding':_0x430cfd(0x13c),'display':_0x430cfd(0x127),'alignItems':_0x430cfd(0x21d),'gap':_0x430cfd(0x1d7),'boxShadow':_0x430cfd(0x25d),'zIndex':0x3e8}}),_0x279e5c=$(_0x430cfd(0x2c5),{'css':{'fontSize':_0x430cfd(0x1da),'flexShrink':0x0}})[_0x430cfd(0x229)]('⚠️'),_0xb60e0f=$(_0x430cfd(0x2c5),{'css':{'flex':0x1,'fontSize':_0x430cfd(0x1a9),'color':_0x430cfd(0x1f1)}}),_0x5a77d4=$(_0x430cfd(0x15b),{'css':{'fontWeight':_0x430cfd(0x246)}})[_0x430cfd(0x21c)]('Your\x20trial\x20license\x20expires\x20in\x20<strong>'+_0x5e1460+_0x430cfd(0x1d0)+(_0x5e1460!==0x1?'s':'')+_0x430cfd(0x2b9)),_0x4ffe0a=$(_0x430cfd(0x269),{'href':'#','css':{'color':_0x430cfd(0x293),'textDecoration':'underline','cursor':_0x430cfd(0x253)}})[_0x430cfd(0x229)](_0x430cfd(0x1cc))['on']('click',_0x6d2480=>{const _0x31152e=_0x430cfd;_0x6d2480['preventDefault'](),window['open'](_0x540709,'_blank',_0x31152e(0x240));});_0xb60e0f[_0x430cfd(0x211)](_0x5a77d4),_0xb60e0f[_0x430cfd(0x211)](_0x4ffe0a);const _0x534536=$(_0x430cfd(0x252),{'css':{'position':_0x430cfd(0x16e),'right':_0x430cfd(0x1ba),'top':_0x430cfd(0x28f),'transform':_0x430cfd(0x1e4),'backgroundColor':_0x430cfd(0x172),'border':_0x430cfd(0x10a),'fontSize':_0x430cfd(0x1da),'color':_0x430cfd(0x1f1),'cursor':_0x430cfd(0x253),'padding':_0x430cfd(0x247),'lineHeight':0x1,'opacity':0.7,'transition':_0x430cfd(0x27a)}})[_0x430cfd(0x21c)](_0x430cfd(0x268))['on'](_0x430cfd(0x123),function(){const _0xe9cec7=_0x430cfd;$(this)[_0xe9cec7(0x142)](_0xe9cec7(0x208),0x1);})['on'](_0x430cfd(0x125),function(){const _0x109dea=_0x430cfd;$(this)[_0x109dea(0x142)](_0x109dea(0x208),0.7);})['on'](_0x430cfd(0x2a6),()=>{const _0x452f7b=_0x430cfd;_0x2fc340[_0x452f7b(0x147)](0xc8,()=>{_0x2fc340['remove']();});});_0x2fc340[_0x430cfd(0x211)](_0x279e5c),_0x2fc340[_0x430cfd(0x211)](_0xb60e0f),_0x2fc340[_0x430cfd(0x211)](_0x534536),_0x14bea6[_0x430cfd(0x2b3)](_0x2fc340);}function _0x1db62f(_0xdfadd5){const _0x126a29=_0x16336e,_0x3b16c1=$(_0x126a29(0x170))['first']();if(_0x3b16c1['length']===0x0){console['warn']('Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20banner\x20.'+_0xdfadd5['bannerClass']);return;}if(_0x3b16c1[_0x126a29(0x291)]('.'+_0xdfadd5[_0x126a29(0x190)])['length']>0x0)return;const _0x30ac1a=$(_0x126a29(0x2c5),{'class':_0xdfadd5['bannerClass'],'css':Object['assign']({'position':'relative','padding':_0x126a29(0x212),'display':_0x126a29(0x127),'alignItems':_0x126a29(0x21d),'justifyContent':_0x126a29(0x1b4),'gap':_0x126a29(0x1f8),'zIndex':0x3e8},_0xdfadd5[_0x126a29(0x149)])}),_0x28da3a=$(_0x126a29(0x2c5),{'css':Object['assign']({'fontSize':_0x126a29(0x1a9)},_0xdfadd5['messageCss'])}),_0x4c86af=$('<span>')[_0x126a29(0x21c)](_0xdfadd5[_0x126a29(0x1ff)]);_0x28da3a[_0x126a29(0x211)](_0x4c86af);const _0x2bd28b=$(_0x126a29(0x252),{'css':Object[_0x126a29(0x205)]({'color':_0x126a29(0x1b6),'border':_0x126a29(0x10a),'padding':'6px\x2012px','fontSize':'13px','fontWeight':_0x126a29(0x132),'borderRadius':_0x126a29(0x118),'cursor':_0x126a29(0x253),'flexShrink':0x0,'transition':'background-color\x200.2s'},_0xdfadd5['buttonCss'])})['text'](_0xdfadd5[_0x126a29(0x171)])['on']('mouseenter',function(){const _0x25bb01=_0x126a29;$(this)['css'](_0xdfadd5[_0x25bb01(0x24f)]);})['on'](_0x126a29(0x125),function(){const _0xc1a653=_0x126a29;$(this)[_0xc1a653(0x142)](_0xdfadd5[_0xc1a653(0x152)]);})['on'](_0x126a29(0x2a6),_0x16a6e5=>{const _0xd2c952=_0x126a29;_0x16a6e5[_0xd2c952(0x176)](),window[_0xd2c952(0x2c1)](_0xdfadd5[_0xd2c952(0x2d4)],'_blank',_0xd2c952(0x240));});_0x30ac1a[_0x126a29(0x211)](_0x28da3a),_0x30ac1a[_0x126a29(0x211)](_0x2bd28b),_0x3b16c1[_0x126a29(0x2b3)](_0x30ac1a);}function _0x36e0c9(_0x2dd7e9){const _0xc180a3=_0x16336e;_0x1db62f({'bannerClass':_0xc180a3(0x108),'bannerCss':{'backgroundColor':_0xc180a3(0x1d8),'borderBottom':_0xc180a3(0x2b1)},'messageHtml':_0xc180a3(0x185),'messageCss':{'color':'#495057'},'buttonText':'Upgrade','buttonCss':{'backgroundColor':_0xc180a3(0x293)},'buttonHoverCss':{'backgroundColor':_0xc180a3(0x150)},'supportUrl':_0x2dd7e9});}function _0x1ec3a5(_0x478400){const _0x5de8d6=_0x16336e;_0x1db62f({'bannerClass':_0x5de8d6(0x1c4),'bannerCss':{'backgroundColor':_0x5de8d6(0x1c6),'borderBottom':'1px\x20solid\x20#f5c6cb'},'messageHtml':_0x5de8d6(0x1ef),'messageCss':{'color':_0x5de8d6(0x1b1)},'buttonText':_0x5de8d6(0x258),'buttonCss':{'backgroundColor':_0x5de8d6(0x17e)},'buttonHoverCss':{'backgroundColor':_0x5de8d6(0x1dc)},'supportUrl':_0x478400});}const _0x326517=_0x16336e(0x15e),_0x2a632c=_0x16336e(0x1f6),_0x32e50b=_0x16336e(0x1c5),_0x365183=_0x16336e(0x2af),_0x53d3e6=_0x16336e(0x19e),_0x15721c=_0x16336e(0x20f),_0x11231f=_0x16336e(0x1e2);var _0x463e43;(function(_0xd8f6d2){const _0x29da7b=_0x16336e;_0xd8f6d2[_0xd8f6d2[_0x29da7b(0x28d)]=0x0]=_0x29da7b(0x28d),_0xd8f6d2[_0xd8f6d2[_0x29da7b(0x248)]=0x1]=_0x29da7b(0x248),_0xd8f6d2[_0xd8f6d2['Both']=0x2]=_0x29da7b(0x114),_0xd8f6d2[_0xd8f6d2[_0x29da7b(0x223)]=0x3]='Invalid';}(_0x463e43||(_0x463e43={})));var _0x18a120;(function(_0x14a4f4){const _0x328918=_0x16336e;_0x14a4f4[_0x14a4f4['Unspecified']=0x0]=_0x328918(0x1e8),_0x14a4f4[_0x14a4f4['Object']=0x1]=_0x328918(0x279),_0x14a4f4[_0x14a4f4[_0x328918(0x161)]=0x2]=_0x328918(0x161),_0x14a4f4[_0x14a4f4[_0x328918(0x20a)]=0x4]=_0x328918(0x20a),_0x14a4f4[_0x14a4f4[_0x328918(0x222)]=0x8]=_0x328918(0x222),_0x14a4f4[_0x14a4f4[_0x328918(0x18e)]=0x10]=_0x328918(0x18e),_0x14a4f4[_0x14a4f4['ReferenceType']=0x20]=_0x328918(0x1f0),_0x14a4f4[_0x14a4f4[_0x328918(0x2a1)]=0x40]=_0x328918(0x2a1),_0x14a4f4[_0x14a4f4[_0x328918(0x2c8)]=0x80]='View';}(_0x18a120||(_0x18a120={})));var _0x144247;(function(_0xf5827){const _0x53367b=_0x16336e;_0xf5827[_0xf5827[_0x53367b(0x279)]=0x1]=_0x53367b(0x279),_0xf5827[_0xf5827[_0x53367b(0x161)]=0x2]=_0x53367b(0x161),_0xf5827[_0xf5827['Method']=0x4]=_0x53367b(0x20a),_0xf5827[_0xf5827['ObjectType']=0x8]='ObjectType',_0xf5827[_0xf5827[_0x53367b(0x18e)]=0x10]=_0x53367b(0x18e),_0xf5827[_0xf5827['ReferenceType']=0x20]=_0x53367b(0x1f0),_0xf5827[_0xf5827[_0x53367b(0x2a1)]=0x40]=_0x53367b(0x2a1),_0xf5827[_0xf5827[_0x53367b(0x2c8)]=0x80]=_0x53367b(0x2c8);}(_0x144247||(_0x144247={})));function _0x335f23(_0x315b49,_0x578ffd){const _0x43f5d5=_0x16336e;if(typeof _0x578ffd==='number')return _0x578ffd;const _0x27a405=parseInt(_0x578ffd,0xa);if(!Number[_0x43f5d5(0x13b)](_0x27a405))return _0x27a405;const _0xe9ece5=_0x578ffd['split'](/\||;|,/)['map'](_0x2a1140=>_0x2a1140[_0x43f5d5(0x196)]());let _0x2c9a26=0x0;for(const _0x27dc4d of _0xe9ece5){_0x2c9a26|=_0x315b49[_0x27dc4d];}return _0x2c9a26;}function _0x47274e(_0x390b28,_0x1e98d8){const _0x1dbbe6=_0x16336e;_0x1e98d8=_0x335f23(_0x390b28,_0x1e98d8);const _0x1fc319=[];if(!_0x390b28)return _0x1fc319[_0x1dbbe6(0x24a)](_0x1dbbe6(0x1bb));for(const [_0x149967,_0x579253]of Object[_0x1dbbe6(0x11b)](_0x390b28)){typeof _0x1e98d8===_0x1dbbe6(0x260)&&((_0x1e98d8&_0x579253)===_0x579253&&_0x1fc319[_0x1dbbe6(0x184)](_0x149967));}return _0x1fc319[_0x1dbbe6(0x24a)](_0x1dbbe6(0x1bb));}var _0x182737;(function(_0x47363d){const _0x379f13=_0x16336e;_0x47363d[_0x47363d[_0x379f13(0x1f0)]=0x1]='ReferenceType',_0x47363d[_0x47363d['IsForward']=0x2]=_0x379f13(0x236),_0x47363d[_0x47363d[_0x379f13(0x110)]=0x4]=_0x379f13(0x110),_0x47363d[_0x47363d[_0x379f13(0x130)]=0x8]=_0x379f13(0x130),_0x47363d[_0x47363d[_0x379f13(0x231)]=0x10]=_0x379f13(0x231),_0x47363d[_0x47363d[_0x379f13(0x11d)]=0x20]=_0x379f13(0x11d);}(_0x182737||(_0x182737={})));function _0x56f2ce(_0x53b761){const _0x40534a=_0x16336e;switch(_0x53b761){case'Organizes':return _0x326517;case _0x40534a(0x1a5):return _0x365183;case _0x40534a(0x1cf):return _0x32e50b;case _0x40534a(0x221):return _0x53d3e6;case _0x40534a(0x25a):return _0x15721c;case _0x40534a(0x1e1):return _0x11231f;}}const _0x4a37d0=()=>{const _0x12c103=_0x16336e;$[_0x12c103(0x2ad)](_0x12c103(0x2a5),{'options':{'namesToBits':{},'value':0x0},'_create'(){const _0x46c5bd=_0x12c103;var _0x4c5496;const _0x3aa662=this;_0x3aa662[_0x46c5bd(0x18f)]=this['element'],_0x3aa662[_0x46c5bd(0x1db)]=$(_0x46c5bd(0x26a)),_0x3aa662[_0x46c5bd(0x1db)][_0x46c5bd(0x198)](_0x46c5bd(0x2a4)),(_0x4c5496=this[_0x46c5bd(0x186)][0x0][_0x46c5bd(0x277)])===null||_0x4c5496===void 0x0?void 0x0:_0x4c5496['replaceChild'](_0x3aa662['$combo'][0x0],this[_0x46c5bd(0x186)][0x0]),_0x3aa662[_0x46c5bd(0x22d)]=$('<div/>')[_0x46c5bd(0x198)]('input-group'),_0x3aa662[_0x46c5bd(0x1db)]['append'](_0x3aa662['$inputGroup']),_0x3aa662[_0x46c5bd(0x22d)]['append'](_0x3aa662['$input']),_0x3aa662[_0x46c5bd(0x168)]=$(_0x46c5bd(0x11c)),_0x3aa662['$inputGroup'][_0x46c5bd(0x211)](_0x3aa662['$toggleTreeBtn']),_0x3aa662[_0x46c5bd(0x168)]['on'](_0x46c5bd(0x2a6),()=>{const _0x34ea83=_0x46c5bd;_0x3aa662[_0x34ea83(0x1c8)]['toggle'](),_0x3aa662[_0x34ea83(0x1c8)]['is'](_0x34ea83(0x139))&&(_0x412c6f(),_0x3aa662['$combo']['find'](_0x34ea83(0x1eb))[_0x34ea83(0x297)](function(){const _0x2d51e4=_0x34ea83,_0x1c567f=$(this)[_0x2d51e4(0x229)](),_0x56dae6=_0x3aa662[_0x2d51e4(0x1d1)]['namesToBits'][_0x1c567f];if(_0x56dae6===undefined)throw new Error(_0x2d51e4(0x27f));(_0x3aa662[_0x2d51e4(0x1d1)][_0x2d51e4(0x270)]&_0x56dae6)===_0x56dae6?$(this)[_0x2d51e4(0x198)](_0x2d51e4(0x17f)):$(this)[_0x2d51e4(0x187)](_0x2d51e4(0x17f));}),_0x3aa662[_0x34ea83(0x284)]());}),_0x3aa662[_0x46c5bd(0x1c8)]=$(_0x46c5bd(0x13e))[_0x46c5bd(0x128)]()[_0x46c5bd(0x294)](this[_0x46c5bd(0x186)]),$[_0x46c5bd(0x297)](this[_0x46c5bd(0x1d1)][_0x46c5bd(0x1b3)],_0x302e1c=>{const _0x30edec=_0x46c5bd,_0x4d0abe=$('<div\x20class=\x22custom-option\x22\x20data-value=\x22'+_0x302e1c+'\x22>'+_0x30edec(0x169)+_0x302e1c+_0x30edec(0x1bd));_0x3aa662['$dropdown'][_0x30edec(0x211)](_0x4d0abe);}),_0x3aa662[_0x46c5bd(0x1c8)]['on'](_0x46c5bd(0x2a6),'.custom-option',function(){const _0x53fe29=_0x46c5bd;$(this)['toggleClass'](_0x53fe29(0x17f));const _0xa13d57=$(this)['data'](_0x53fe29(0x270));$(this)[_0x53fe29(0x1d6)](_0x53fe29(0x17f))?_0x23979b(_0xa13d57):_0x4601e3(_0xa13d57),_0x3aa662[_0x53fe29(0x284)]();}),_0x3aa662[_0x46c5bd(0x1db)][_0x46c5bd(0x211)](_0x3aa662[_0x46c5bd(0x1c8)]);const _0x412c6f=()=>{const _0x3c4421=_0x46c5bd,_0xea7af0=this[_0x3c4421(0x186)][_0x3c4421(0x257)]();_0x3aa662[_0x3c4421(0x1d1)]['value']=_0x335f23(_0x3aa662[_0x3c4421(0x1d1)]['namesToBits'],_0xea7af0);},_0x23979b=_0x5a1471=>{const _0x37df4d=_0x46c5bd,_0x56f62b=_0x3aa662[_0x37df4d(0x1d1)][_0x37df4d(0x1b3)][_0x5a1471];if(_0x56f62b===undefined)throw new Error(_0x37df4d(0x27f));this[_0x37df4d(0x1d1)][_0x37df4d(0x270)]|=_0x56f62b;},_0x4601e3=_0x4825e6=>{const _0x4ce0ff=_0x46c5bd,_0x376302=_0x3aa662['options'][_0x4ce0ff(0x1b3)][_0x4825e6];if(_0x376302===undefined)throw new Error(_0x4ce0ff(0x27f));this['options'][_0x4ce0ff(0x270)]&=~_0x376302,this[_0x4ce0ff(0x186)]['val'](_0x47274e(_0x3aa662[_0x4ce0ff(0x1d1)]['namesToBits'],this[_0x4ce0ff(0x1d1)]['value']));};_0x412c6f();},'updateValue'(){const _0x229e9b=_0x12c103,_0xdd4e43=this;this[_0x229e9b(0x186)][_0x229e9b(0x257)](_0x47274e(_0xdd4e43['options']['namesToBits'],this['options'][_0x229e9b(0x270)]));},'_destroy'(){const _0x55853a=_0x12c103,_0x3561be=this;_0x3561be[_0x55853a(0x1c8)][_0x55853a(0x2ae)]();}});},_0x23083b=(_0x3c4c69,_0x329741,_0x2e3bec)=>_0x23a500(void 0x0,[_0x3c4c69,_0x329741,_0x2e3bec],void 0x0,function*({endpointNode:_0x49e412,endpoint:_0x29b66f},_0x15de29,_0x50e5b9){const _0x296c3a=_0x16336e,_0x2c96a1=Object[_0x296c3a(0x205)](Object[_0x296c3a(0x205)]({},_0x50e5b9),{'nodeId':_0x15de29,'resultMask':0x3f}),_0x92be2b=_0x47bb91('/browse'),_0x10202=yield fetch(_0x92be2b,{'method':_0x296c3a(0x237),'body':JSON[_0x296c3a(0x21e)]({'endpointNode':_0x49e412,'endpoint':_0x29b66f,'browseDescription':_0x2c96a1}),'headers':{'Content-Type':'application/json'}});if(_0x10202[_0x296c3a(0x2bb)]!==0xc8)return console[_0x296c3a(0x191)](_0x296c3a(0x29c),_0x10202[_0x296c3a(0x2bb)],_0x10202['statusText']),{'references':[]};const _0x182832=yield _0x10202[_0x296c3a(0x230)](),_0x356505=_0x182832[_0x296c3a(0x215)][_0x296c3a(0x156)]||[];return{'references':_0x356505};}),_0x3ef5c9=_0x3181ba=>{const _0x407297=_0x16336e;switch(_0x3181ba[_0x407297(0x14f)]){case _0x407297(0x279):if(_0x3181ba[_0x407297(