Thanks to visit codestin.com
Credit goes to GitHub.com

Skip to content

HikVision DS-7732NI-I4 Non-Compliant ONVIF Profiles? #369

@nebev

Description

@nebev

Describe the bug
Hi there. Love the library. Have used it in a few projects.

I've got a HikVision DS-7732NI-I4 (Firmware V4.60.005 build 230307), which from what I can tell should be fairly ONVIF compliant.

I'm not seeing issues on Firmware V4.40.017 build 210721, so it looks like their implementation has changed in the new firmware. There is the possibility this could be the streams configured on this NVR though.

I'm seeing an error Unrecognized configuration when getting RTSP URIs. I believe this is caused by

if (profile.videoSourceConfiguration.sourceToken === videoSrcToken || profile.videoSourceConfiguration.sourceToken === profile.videoSourceConfiguration.name) {

I have many streams on this NVR, and they all follow the same pattern, where XXX is the stream number.

  • Profiles token = ProfileTokenXXX
  • VideoSourceConfiguration token = VideoSourceConfigurationTokenXXX
  • VideoSourceConfiguration SourceToken = VideoSourceTokenXXX

Before the if condition, I have added:

console.log('profile.videoSourceConfiguration.sourceToken=', profile.videoSourceConfiguration.sourceToken, 'videoSrcToken=', videoSrcToken, 'profile.videoSourceConfiguration.name=', profile.videoSourceConfiguration.name);

And get:

profile.videoSourceConfiguration.sourceToken= VideoSourceToken006 videoSrcToken= VideoSourceToken001 profile.videoSourceConfiguration.name= VideoSourceConfigurationName006
profile.videoSourceConfiguration.sourceToken= VideoSourceToken006 videoSrcToken= VideoSourceToken001 profile.videoSourceConfiguration.name= VideoSourceConfigurationName006

I have 4 NVRs in total with 2 firmwares. I can't say for certain it's not related to the streams or stream order, but:

  • NVR1 - Firmware V4.40.017 build 210721 - OK
  • NVR2 - Firmware V4.40.017 build 210721 - OK
  • NVR3 - Firmware V4.60.005 build 230307 - Crash
  • NVR4 - Firmware V4.60.005 build 230307 - Crash

I've replicated on another NVR with the same firmware version. The same issue occurs.

I'm not as familiar with the ONVIF standard here - Is HikVision's implementation perhaps just non-compliant and shouldn't be supported?

If I remove the filter, I'm able to get RTSP URIs (which all work).

From the NVR UI, I can't see any specific settings around ONVIF, other than an "Enable ONVIF" checkbox.

To Reproduce

await cam.connect();
const profiles = await cam.getProfiles();

Debug SOAP-messages for request and response

Request

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
  xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <Security s:mustUnderstand="1"
      xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <UsernameToken>
        <Username>xxxxx</Username>
        <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">xxxxxxxxxxxxxxxxx</Password>
        <Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">xxxxxxxxxxxxxxxxx</Nonce>
        <Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2025-09-15T05:46:32.496Z</Created>
      </UsernameToken>
    </Security>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <GetVideoSources xmlns="http://www.onvif.org/ver10/media/wsdl"/>
  </s:Body>
</s:Envelope>

Response

Limited to first 7 profiles. There were 63.

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
  xmlns:trt="http://www.onvif.org/ver10/media/wsdl"
  xmlns:tt="http://www.onvif.org/ver10/schema">
  <soap:Body>
    <trt:GetProfilesResponse>
      <trt:Profiles token="ProfileToken001" fixed="true">
        <tt:Name>ProfileName001</tt:Name>
        <tt:VideoSourceConfiguration token="VideoSourceConfigurationToken001">
          <tt:Name>VideoSourceConfigurationName001</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>VideoSourceToken001</tt:SourceToken>
          <tt:Bounds x="0" y="0" width="1280" height="720"/>
        </tt:VideoSourceConfiguration>
        <tt:AudioSourceConfiguration token="AudioSourceConfigurationToken001">
          <tt:Name>AudioSourceConfigurationName001</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>AudioSourceToken001</tt:SourceToken>
        </tt:AudioSourceConfiguration>
        <tt:AudioEncoderConfiguration token="AudioEncoderConfigurationToken001">
          <tt:Name>AudioEncoderConfigurationName001</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:Encoding>G711</tt:Encoding>
          <tt:Bitrate>64</tt:Bitrate>
          <tt:SampleRate>8</tt:SampleRate>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>8862</tt:Port>
            <tt:TTL>128</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:AudioEncoderConfiguration>
        <tt:Extension>
          <tt:AudioOutputConfiguration token="AudioOutputConfigurationToken">
            <tt:Name>AudioOutputConfigurationName</tt:Name>
            <tt:UseCount>2</tt:UseCount>
            <tt:OutputToken>AudioOutputToken</tt:OutputToken>
            <tt:SendPrimacy>www.onvif.org/ver20/HalfDuplex/Server</tt:SendPrimacy>
            <tt:OutputLevel>10</tt:OutputLevel>
          </tt:AudioOutputConfiguration>
          <tt:AudioDecoderConfiguration token="AudioDecoderConfigToken">
            <tt:Name>AudioDecoderConfig</tt:Name>
            <tt:UseCount>2</tt:UseCount>
          </tt:AudioDecoderConfiguration>
        </tt:Extension>
      </trt:Profiles>
      <trt:Profiles token="ProfileToken002" fixed="true">
        <tt:Name>ProfileName002</tt:Name>
        <tt:VideoSourceConfiguration token="VideoSourceConfigurationToken002">
          <tt:Name>VideoSourceConfigurationName002</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>VideoSourceToken002</tt:SourceToken>
          <tt:Bounds x="0" y="0" width="1280" height="720"/>
        </tt:VideoSourceConfiguration>
        <tt:AudioSourceConfiguration token="AudioSourceConfigurationToken002">
          <tt:Name>AudioSourceConfigurationName002</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>AudioSourceToken002</tt:SourceToken>
        </tt:AudioSourceConfiguration>
        <tt:AudioEncoderConfiguration token="AudioEncoderConfigurationToken002">
          <tt:Name>AudioEncoderConfigurationName002</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:Encoding>G711</tt:Encoding>
          <tt:Bitrate>64</tt:Bitrate>
          <tt:SampleRate>8</tt:SampleRate>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>8862</tt:Port>
            <tt:TTL>128</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:AudioEncoderConfiguration>
        <tt:Extension>
          <tt:AudioOutputConfiguration token="AudioOutputConfigurationToken">
            <tt:Name>AudioOutputConfigurationName</tt:Name>
            <tt:UseCount>2</tt:UseCount>
            <tt:OutputToken>AudioOutputToken</tt:OutputToken>
            <tt:SendPrimacy>www.onvif.org/ver20/HalfDuplex/Server</tt:SendPrimacy>
            <tt:OutputLevel>10</tt:OutputLevel>
          </tt:AudioOutputConfiguration>
          <tt:AudioDecoderConfiguration token="AudioDecoderConfigToken">
            <tt:Name>AudioDecoderConfig</tt:Name>
            <tt:UseCount>2</tt:UseCount>
          </tt:AudioDecoderConfiguration>
        </tt:Extension>
      </trt:Profiles>
      <trt:Profiles token="ProfileToken003" fixed="true">
        <tt:Name>ProfileName003</tt:Name>
        <tt:VideoSourceConfiguration token="VideoSourceConfigurationToken003">
          <tt:Name>VideoSourceConfigurationName003</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>VideoSourceToken003</tt:SourceToken>
          <tt:Bounds x="0" y="0" width="1280" height="720"/>
        </tt:VideoSourceConfiguration>
        <tt:AudioSourceConfiguration token="AudioSourceConfigurationToken003">
          <tt:Name>AudioSourceConfigurationName003</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>AudioSourceToken003</tt:SourceToken>
        </tt:AudioSourceConfiguration>
        <tt:AudioEncoderConfiguration token="AudioEncoderConfigurationToken003">
          <tt:Name>AudioEncoderConfigurationName003</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:Encoding>G711</tt:Encoding>
          <tt:Bitrate>64</tt:Bitrate>
          <tt:SampleRate>8</tt:SampleRate>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>8862</tt:Port>
            <tt:TTL>128</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:AudioEncoderConfiguration>
        <tt:Extension>
          <tt:AudioOutputConfiguration token="AudioOutputConfigurationToken">
            <tt:Name>AudioOutputConfigurationName</tt:Name>
            <tt:UseCount>2</tt:UseCount>
            <tt:OutputToken>AudioOutputToken</tt:OutputToken>
            <tt:SendPrimacy>www.onvif.org/ver20/HalfDuplex/Server</tt:SendPrimacy>
            <tt:OutputLevel>10</tt:OutputLevel>
          </tt:AudioOutputConfiguration>
          <tt:AudioDecoderConfiguration token="AudioDecoderConfigToken">
            <tt:Name>AudioDecoderConfig</tt:Name>
            <tt:UseCount>2</tt:UseCount>
          </tt:AudioDecoderConfiguration>
        </tt:Extension>
      </trt:Profiles>
      <trt:Profiles token="ProfileToken004" fixed="true">
        <tt:Name>ProfileName004</tt:Name>
        <tt:VideoSourceConfiguration token="VideoSourceConfigurationToken004">
          <tt:Name>VideoSourceConfigurationName004</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>VideoSourceToken004</tt:SourceToken>
          <tt:Bounds x="0" y="0" width="1280" height="720"/>
        </tt:VideoSourceConfiguration>
        <tt:AudioSourceConfiguration token="AudioSourceConfigurationToken004">
          <tt:Name>AudioSourceConfigurationName004</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>AudioSourceToken004</tt:SourceToken>
        </tt:AudioSourceConfiguration>
        <tt:AudioEncoderConfiguration token="AudioEncoderConfigurationToken004">
          <tt:Name>AudioEncoderConfigurationName004</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:Encoding>G711</tt:Encoding>
          <tt:Bitrate>64</tt:Bitrate>
          <tt:SampleRate>8</tt:SampleRate>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>8862</tt:Port>
            <tt:TTL>128</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:AudioEncoderConfiguration>
        <tt:Extension>
          <tt:AudioOutputConfiguration token="AudioOutputConfigurationToken">
            <tt:Name>AudioOutputConfigurationName</tt:Name>
            <tt:UseCount>2</tt:UseCount>
            <tt:OutputToken>AudioOutputToken</tt:OutputToken>
            <tt:SendPrimacy>www.onvif.org/ver20/HalfDuplex/Server</tt:SendPrimacy>
            <tt:OutputLevel>10</tt:OutputLevel>
          </tt:AudioOutputConfiguration>
          <tt:AudioDecoderConfiguration token="AudioDecoderConfigToken">
            <tt:Name>AudioDecoderConfig</tt:Name>
            <tt:UseCount>2</tt:UseCount>
          </tt:AudioDecoderConfiguration>
        </tt:Extension>
      </trt:Profiles>
      <trt:Profiles token="ProfileToken005" fixed="true">
        <tt:Name>ProfileName005</tt:Name>
        <tt:VideoSourceConfiguration token="VideoSourceConfigurationToken005">
          <tt:Name>VideoSourceConfigurationName005</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>VideoSourceToken005</tt:SourceToken>
          <tt:Bounds x="0" y="0" width="1280" height="720"/>
        </tt:VideoSourceConfiguration>
        <tt:AudioSourceConfiguration token="AudioSourceConfigurationToken005">
          <tt:Name>AudioSourceConfigurationName005</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>AudioSourceToken005</tt:SourceToken>
        </tt:AudioSourceConfiguration>
        <tt:AudioEncoderConfiguration token="AudioEncoderConfigurationToken005">
          <tt:Name>AudioEncoderConfigurationName005</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:Encoding>G711</tt:Encoding>
          <tt:Bitrate>64</tt:Bitrate>
          <tt:SampleRate>8</tt:SampleRate>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>8862</tt:Port>
            <tt:TTL>128</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:AudioEncoderConfiguration>
        <tt:Extension>
          <tt:AudioOutputConfiguration token="AudioOutputConfigurationToken">
            <tt:Name>AudioOutputConfigurationName</tt:Name>
            <tt:UseCount>2</tt:UseCount>
            <tt:OutputToken>AudioOutputToken</tt:OutputToken>
            <tt:SendPrimacy>www.onvif.org/ver20/HalfDuplex/Server</tt:SendPrimacy>
            <tt:OutputLevel>10</tt:OutputLevel>
          </tt:AudioOutputConfiguration>
          <tt:AudioDecoderConfiguration token="AudioDecoderConfigToken">
            <tt:Name>AudioDecoderConfig</tt:Name>
            <tt:UseCount>2</tt:UseCount>
          </tt:AudioDecoderConfiguration>
        </tt:Extension>
      </trt:Profiles>
      <trt:Profiles token="ProfileToken006" fixed="true">
        <tt:Name>ProfileName006</tt:Name>
        <tt:VideoSourceConfiguration token="VideoSourceConfigurationToken006">
          <tt:Name>VideoSourceConfigurationName006</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>VideoSourceToken006</tt:SourceToken>
          <tt:Bounds x="0" y="0" width="640" height="480"/>
        </tt:VideoSourceConfiguration>
        <tt:AudioSourceConfiguration token="AudioSourceConfigurationToken006">
          <tt:Name>AudioSourceConfigurationName006</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>AudioSourceToken006</tt:SourceToken>
        </tt:AudioSourceConfiguration>
        <tt:VideoEncoderConfiguration token="VideoEncoderConfigurationToken006">
          <tt:Name>VideoEncoderConfigurationName006</tt:Name>
          <tt:UseCount>1</tt:UseCount>
          <tt:Encoding>H264</tt:Encoding>
          <tt:Resolution>
            <tt:Width>1280</tt:Width>
            <tt:Height>960</tt:Height>
          </tt:Resolution>
          <tt:Quality>5</tt:Quality>
          <tt:RateControl>
            <tt:FrameRateLimit>12</tt:FrameRateLimit>
            <tt:EncodingInterval>1</tt:EncodingInterval>
            <tt:BitrateLimit>2048</tt:BitrateLimit>
          </tt:RateControl>
          <tt:H264>
            <tt:GovLength>25</tt:GovLength>
            <tt:H264Profile>Baseline</tt:H264Profile>
          </tt:H264>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>0</tt:Port>
            <tt:TTL>0</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:VideoEncoderConfiguration>
        <tt:AudioEncoderConfiguration token="AudioEncoderConfigurationToken006">
          <tt:Name>AudioEncoderConfigurationName006</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:Encoding>G711</tt:Encoding>
          <tt:Bitrate>64</tt:Bitrate>
          <tt:SampleRate>8</tt:SampleRate>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>8862</tt:Port>
            <tt:TTL>128</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:AudioEncoderConfiguration>
        <tt:Extension>
          <tt:AudioOutputConfiguration token="AudioOutputConfigurationToken">
            <tt:Name>AudioOutputConfigurationName</tt:Name>
            <tt:UseCount>2</tt:UseCount>
            <tt:OutputToken>AudioOutputToken</tt:OutputToken>
            <tt:SendPrimacy>www.onvif.org/ver20/HalfDuplex/Server</tt:SendPrimacy>
            <tt:OutputLevel>10</tt:OutputLevel>
          </tt:AudioOutputConfiguration>
          <tt:AudioDecoderConfiguration token="AudioDecoderConfigToken">
            <tt:Name>AudioDecoderConfig</tt:Name>
            <tt:UseCount>2</tt:UseCount>
          </tt:AudioDecoderConfiguration>
        </tt:Extension>
      </trt:Profiles>
      <trt:Profiles token="ProfileToken007" fixed="true">
        <tt:Name>ProfileName007</tt:Name>
        <tt:VideoSourceConfiguration token="VideoSourceConfigurationToken007">
          <tt:Name>VideoSourceConfigurationName007</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>VideoSourceToken007</tt:SourceToken>
          <tt:Bounds x="0" y="0" width="1280" height="720"/>
        </tt:VideoSourceConfiguration>
        <tt:AudioSourceConfiguration token="AudioSourceConfigurationToken007">
          <tt:Name>AudioSourceConfigurationName007</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:SourceToken>AudioSourceToken007</tt:SourceToken>
        </tt:AudioSourceConfiguration>
        <tt:AudioEncoderConfiguration token="AudioEncoderConfigurationToken007">
          <tt:Name>AudioEncoderConfigurationName007</tt:Name>
          <tt:UseCount>2</tt:UseCount>
          <tt:Encoding>G711</tt:Encoding>
          <tt:Bitrate>64</tt:Bitrate>
          <tt:SampleRate>8</tt:SampleRate>
          <tt:Multicast>
            <tt:Address>
              <tt:Type>IPv4</tt:Type>
              <tt:IPv4Address>0.0.0.0</tt:IPv4Address>
            </tt:Address>
            <tt:Port>8862</tt:Port>
            <tt:TTL>128</tt:TTL>
            <tt:AutoStart>false</tt:AutoStart>
          </tt:Multicast>
          <tt:SessionTimeout>PT30S</tt:SessionTimeout>
        </tt:AudioEncoderConfiguration>
        <tt:Extension>
          <tt:AudioOutputConfiguration token="AudioOutputConfigurationToken">
            <tt:Name>AudioOutputConfigurationName</tt:Name>
            <tt:UseCount>2</tt:UseCount>
            <tt:OutputToken>AudioOutputToken</tt:OutputToken>
            <tt:SendPrimacy>www.onvif.org/ver20/HalfDuplex/Server</tt:SendPrimacy>
            <tt:OutputLevel>10</tt:OutputLevel>
          </tt:AudioOutputConfiguration>
          <tt:AudioDecoderConfiguration token="AudioDecoderConfigToken">
            <tt:Name>AudioDecoderConfig</tt:Name>
            <tt:UseCount>2</tt:UseCount>
          </tt:AudioDecoderConfiguration>
        </tt:Extension>
      </trt:Profiles>
      <!-- ... More profiles ... -->
    </trt:GetProfilesResponse>
  </soap:Body>
</soap:Envelope>

Capabilities information:

{
  "network": {
    "IPFilter": false,
    "ZeroConfiguration": false,
    "IPVersion6": true,
    "DynDNS": true,
    "Dot11Configuration": false,
    "Dot1XConfigurations": 0,
    "HostnameFromDHCP": false,
    "NTP": 1,
    "DHCPv6": false
  },
  "security": {
    "TLS1.0": false,
    "TLS1.1": false,
    "TLS1.2": false,
    "OnboardKeyGeneration": false,
    "AccessPolicyConfig": false,
    "DefaultAccessPolicy": false,
    "Dot1X": false,
    "RemoteUserHandling": false,
    "X.509Token": false,
    "SAMLToken": false,
    "KerberosToken": false,
    "UsernameToken": true,
    "HttpDigest": true,
    "RELToken": true,
    "MaxUsers": 32
  },
  "system": {
    "DiscoveryResolve": false,
    "DiscoveryBye": true,
    "RemoteDiscovery": false,
    "SystemBackup": false,
    "SystemLogging": true,
    "FirmwareUpgrade": false,
    "HttpFirmwareUpgrade": true,
    "HttpSystemBackup": false,
    "HttpSystemLogging": false,
    "HttpSupportInformation": false
  }
}

Information:

  • Device manufacturer: HikVision
  • Device model: DS-7732NI-I4
  • Firmware version: V4.60.005 build 230307
  • Node.js version: Node 22.7.0; Bun 1.2.18

Happy to do more troubleshooting if it helps.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions