Going over a list of strings to find the string with the needed prefixWhy my merge sort implementation in Scheme is so slow?How to make a list out of a structure in racket?Scheme: How to convert a charlist to a stringTruncating a list in (constrained) RacketReturn alternate elements of 3 given lists. SchemeConvert a polynomial represented as a list of coefficients to a stringUsing string->number on a list containing strings and numbersHow to debug “List contains heterogenous data types” in Racket?Finding duplicate elements in a Scheme List using recursiontrying to write a function that returns every third element in a list in racket langauge
How should I mix small caps with digits or symbols?
Is there any mention of ghosts who live outside the Hogwarts castle?
Department head said that group project may be rejected. How to mitigate?
Story about encounter with hostile aliens
Is there a realtime, uncut video of Saturn V ignition through tower clear?
Do 'destroy' effects count as damage?
If the Charles SSL Proxy shows me sensitive data, is that data insecure/exposed?
Salesforce bug enabled "Modify All"
How could the B-29 bomber back up under its own power?
How do we properly manage transitions within a descriptive section?
Best practice for printing and evaluating formulas with the minimal coding
What does it mean for a program to be 32 or 64 bit?
Keeping the dodos out of the field
Good examples of "two is easy, three is hard" in computational sciences
why "American-born", not "America-born"?
Vehemently against code formatting
What to call a small, open stone or cement reservoir that supplies fresh water from a spring or other natural source?
Why was Houston selected as the location for the Manned Spacecraft Center?
What variables do I have to take into consideration when I homebrew armour?
What is this dime sized black bug with white on the segments near Loveland Colorodao?
Circuit construction for execution of conditional statements using least significant bit
Hotel booking: Why is Agoda much cheaper than booking.com?
How do you cope with rejection?
Farthing / Riding
Going over a list of strings to find the string with the needed prefix
Why my merge sort implementation in Scheme is so slow?How to make a list out of a structure in racket?Scheme: How to convert a charlist to a stringTruncating a list in (constrained) RacketReturn alternate elements of 3 given lists. SchemeConvert a polynomial represented as a list of coefficients to a stringUsing string->number on a list containing strings and numbersHow to debug “List contains heterogenous data types” in Racket?Finding duplicate elements in a Scheme List using recursiontrying to write a function that returns every third element in a list in racket langauge
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I need to define the function plPrefixContained
– that consumes 5 strings and
returns the first one that contains the string "pl"
as a prefix – if one such
exists, and returns #f
otherwise.
What I'm trying to do is to use the prefixes function to go over all the strings in the list and check their prefixes, put them in a new list and to output the first string as the result.
(I will handle the #f
case later) my code is down below but it keeps giving me the error-
first: contract violation
expected: (and/c list? (not/c empty?))
given: '()
any help would be appreciated
(: plPrefixContained : String String String String String -> String)
(define (plPrefixContained x y z w v)
(list-ref (prefixes (list x y z w v) '()) 0))
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (eq? (string-ref (first lis) 0) "p") (eq? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
this is how I want my output to be like-for example
(test (plPrefixContained "yypl" "opl" "lpTT" "plpl" "lol")
=>
"plpl")
racket
add a comment |
I need to define the function plPrefixContained
– that consumes 5 strings and
returns the first one that contains the string "pl"
as a prefix – if one such
exists, and returns #f
otherwise.
What I'm trying to do is to use the prefixes function to go over all the strings in the list and check their prefixes, put them in a new list and to output the first string as the result.
(I will handle the #f
case later) my code is down below but it keeps giving me the error-
first: contract violation
expected: (and/c list? (not/c empty?))
given: '()
any help would be appreciated
(: plPrefixContained : String String String String String -> String)
(define (plPrefixContained x y z w v)
(list-ref (prefixes (list x y z w v) '()) 0))
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (eq? (string-ref (first lis) 0) "p") (eq? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
this is how I want my output to be like-for example
(test (plPrefixContained "yypl" "opl" "lpTT" "plpl" "lol")
=>
"plpl")
racket
add a comment |
I need to define the function plPrefixContained
– that consumes 5 strings and
returns the first one that contains the string "pl"
as a prefix – if one such
exists, and returns #f
otherwise.
What I'm trying to do is to use the prefixes function to go over all the strings in the list and check their prefixes, put them in a new list and to output the first string as the result.
(I will handle the #f
case later) my code is down below but it keeps giving me the error-
first: contract violation
expected: (and/c list? (not/c empty?))
given: '()
any help would be appreciated
(: plPrefixContained : String String String String String -> String)
(define (plPrefixContained x y z w v)
(list-ref (prefixes (list x y z w v) '()) 0))
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (eq? (string-ref (first lis) 0) "p") (eq? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
this is how I want my output to be like-for example
(test (plPrefixContained "yypl" "opl" "lpTT" "plpl" "lol")
=>
"plpl")
racket
I need to define the function plPrefixContained
– that consumes 5 strings and
returns the first one that contains the string "pl"
as a prefix – if one such
exists, and returns #f
otherwise.
What I'm trying to do is to use the prefixes function to go over all the strings in the list and check their prefixes, put them in a new list and to output the first string as the result.
(I will handle the #f
case later) my code is down below but it keeps giving me the error-
first: contract violation
expected: (and/c list? (not/c empty?))
given: '()
any help would be appreciated
(: plPrefixContained : String String String String String -> String)
(define (plPrefixContained x y z w v)
(list-ref (prefixes (list x y z w v) '()) 0))
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (eq? (string-ref (first lis) 0) "p") (eq? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
this is how I want my output to be like-for example
(test (plPrefixContained "yypl" "opl" "lpTT" "plpl" "lol")
=>
"plpl")
racket
racket
edited Mar 23 at 21:57
Alex Knauth
5,2931823
5,2931823
asked Mar 23 at 19:34
hyuguhyugu
444
444
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
There are two problems:
- intensional equality
eq?
, instead of extensional equality such asequal?
orstring=?
- comparing string / char, instead of comparing char / char or string / string
You are using eq?
, which always makes me suspicious. eq?
uses "intensional" equality, which is basically pointer equality, meaning that a string which is allocated somewhere in memory won't necessarily be eq?
even if it has the same characters. You can see this with (eq? "abc123" (string-append "abc" "123"))
.
If you're dealing with strings, lists, or any other data which "contains" things, you should avoid eq?
. Instead you should use an "extensional" equality predicate such as equal?
, or even better, a predicate specific to the types of values you expect, such as string=?
. Here's how they behave better than eq?
:
> (eq? "abc123" (string-append "abc" "123"))
#f
> (equal? "abc123" (string-append "abc" "123"))
#t
> (string=? "abc123" (string-append "abc" "123"))
#t
Since you're comparing using the strings "p"
and "l"
, I should be able to substitute eq?
with string=?
in your code:
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (string=? (string-ref (first lis) 0) "p") (string=? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
However, this reveals the second problem, which I only spotted after seeing the error message:
string=?: contract violation
expected: string?
given: #y
argument position: 1st
other arguments...:
"p"
The string=?
isn't working because its first argument, the result of string-ref
, is a character (like #y
), not a string. To fix this, use char=?
instead of string=?
, and compare with the characters #p
and #l
instead of the strings "p"
and "l"
.
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (char=? (string-ref (first lis) 0) #p) (char=? (string-ref (first lis) 1) #l))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
first, thank a lot for the explanation! could you please tell me what might be the reason for char=?: unbound identifier in module in: char=? error?
– hyugu
Mar 29 at 19:05
What language are you working in? Is it#lang racket
,#lang typed/racket
,#lang plai-typed
,#lang pl
, or something else?
– Alex Knauth
Mar 29 at 19:31
I'm using #lang pl
– hyugu
Mar 29 at 19:44
Okay. I'm not sure why#lang pl
doesn't providechar=?
. It provides both the typesString
andChar
, and the predicatestring=?
for strings, but nochar=?
for chars. So it might just be something that slipped through the cracks when Eli was making it.
– Alex Knauth
Mar 29 at 19:59
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55317601%2fgoing-over-a-list-of-strings-to-find-the-string-with-the-needed-prefix%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
There are two problems:
- intensional equality
eq?
, instead of extensional equality such asequal?
orstring=?
- comparing string / char, instead of comparing char / char or string / string
You are using eq?
, which always makes me suspicious. eq?
uses "intensional" equality, which is basically pointer equality, meaning that a string which is allocated somewhere in memory won't necessarily be eq?
even if it has the same characters. You can see this with (eq? "abc123" (string-append "abc" "123"))
.
If you're dealing with strings, lists, or any other data which "contains" things, you should avoid eq?
. Instead you should use an "extensional" equality predicate such as equal?
, or even better, a predicate specific to the types of values you expect, such as string=?
. Here's how they behave better than eq?
:
> (eq? "abc123" (string-append "abc" "123"))
#f
> (equal? "abc123" (string-append "abc" "123"))
#t
> (string=? "abc123" (string-append "abc" "123"))
#t
Since you're comparing using the strings "p"
and "l"
, I should be able to substitute eq?
with string=?
in your code:
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (string=? (string-ref (first lis) 0) "p") (string=? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
However, this reveals the second problem, which I only spotted after seeing the error message:
string=?: contract violation
expected: string?
given: #y
argument position: 1st
other arguments...:
"p"
The string=?
isn't working because its first argument, the result of string-ref
, is a character (like #y
), not a string. To fix this, use char=?
instead of string=?
, and compare with the characters #p
and #l
instead of the strings "p"
and "l"
.
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (char=? (string-ref (first lis) 0) #p) (char=? (string-ref (first lis) 1) #l))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
first, thank a lot for the explanation! could you please tell me what might be the reason for char=?: unbound identifier in module in: char=? error?
– hyugu
Mar 29 at 19:05
What language are you working in? Is it#lang racket
,#lang typed/racket
,#lang plai-typed
,#lang pl
, or something else?
– Alex Knauth
Mar 29 at 19:31
I'm using #lang pl
– hyugu
Mar 29 at 19:44
Okay. I'm not sure why#lang pl
doesn't providechar=?
. It provides both the typesString
andChar
, and the predicatestring=?
for strings, but nochar=?
for chars. So it might just be something that slipped through the cracks when Eli was making it.
– Alex Knauth
Mar 29 at 19:59
add a comment |
There are two problems:
- intensional equality
eq?
, instead of extensional equality such asequal?
orstring=?
- comparing string / char, instead of comparing char / char or string / string
You are using eq?
, which always makes me suspicious. eq?
uses "intensional" equality, which is basically pointer equality, meaning that a string which is allocated somewhere in memory won't necessarily be eq?
even if it has the same characters. You can see this with (eq? "abc123" (string-append "abc" "123"))
.
If you're dealing with strings, lists, or any other data which "contains" things, you should avoid eq?
. Instead you should use an "extensional" equality predicate such as equal?
, or even better, a predicate specific to the types of values you expect, such as string=?
. Here's how they behave better than eq?
:
> (eq? "abc123" (string-append "abc" "123"))
#f
> (equal? "abc123" (string-append "abc" "123"))
#t
> (string=? "abc123" (string-append "abc" "123"))
#t
Since you're comparing using the strings "p"
and "l"
, I should be able to substitute eq?
with string=?
in your code:
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (string=? (string-ref (first lis) 0) "p") (string=? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
However, this reveals the second problem, which I only spotted after seeing the error message:
string=?: contract violation
expected: string?
given: #y
argument position: 1st
other arguments...:
"p"
The string=?
isn't working because its first argument, the result of string-ref
, is a character (like #y
), not a string. To fix this, use char=?
instead of string=?
, and compare with the characters #p
and #l
instead of the strings "p"
and "l"
.
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (char=? (string-ref (first lis) 0) #p) (char=? (string-ref (first lis) 1) #l))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
first, thank a lot for the explanation! could you please tell me what might be the reason for char=?: unbound identifier in module in: char=? error?
– hyugu
Mar 29 at 19:05
What language are you working in? Is it#lang racket
,#lang typed/racket
,#lang plai-typed
,#lang pl
, or something else?
– Alex Knauth
Mar 29 at 19:31
I'm using #lang pl
– hyugu
Mar 29 at 19:44
Okay. I'm not sure why#lang pl
doesn't providechar=?
. It provides both the typesString
andChar
, and the predicatestring=?
for strings, but nochar=?
for chars. So it might just be something that slipped through the cracks when Eli was making it.
– Alex Knauth
Mar 29 at 19:59
add a comment |
There are two problems:
- intensional equality
eq?
, instead of extensional equality such asequal?
orstring=?
- comparing string / char, instead of comparing char / char or string / string
You are using eq?
, which always makes me suspicious. eq?
uses "intensional" equality, which is basically pointer equality, meaning that a string which is allocated somewhere in memory won't necessarily be eq?
even if it has the same characters. You can see this with (eq? "abc123" (string-append "abc" "123"))
.
If you're dealing with strings, lists, or any other data which "contains" things, you should avoid eq?
. Instead you should use an "extensional" equality predicate such as equal?
, or even better, a predicate specific to the types of values you expect, such as string=?
. Here's how they behave better than eq?
:
> (eq? "abc123" (string-append "abc" "123"))
#f
> (equal? "abc123" (string-append "abc" "123"))
#t
> (string=? "abc123" (string-append "abc" "123"))
#t
Since you're comparing using the strings "p"
and "l"
, I should be able to substitute eq?
with string=?
in your code:
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (string=? (string-ref (first lis) 0) "p") (string=? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
However, this reveals the second problem, which I only spotted after seeing the error message:
string=?: contract violation
expected: string?
given: #y
argument position: 1st
other arguments...:
"p"
The string=?
isn't working because its first argument, the result of string-ref
, is a character (like #y
), not a string. To fix this, use char=?
instead of string=?
, and compare with the characters #p
and #l
instead of the strings "p"
and "l"
.
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (char=? (string-ref (first lis) 0) #p) (char=? (string-ref (first lis) 1) #l))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
There are two problems:
- intensional equality
eq?
, instead of extensional equality such asequal?
orstring=?
- comparing string / char, instead of comparing char / char or string / string
You are using eq?
, which always makes me suspicious. eq?
uses "intensional" equality, which is basically pointer equality, meaning that a string which is allocated somewhere in memory won't necessarily be eq?
even if it has the same characters. You can see this with (eq? "abc123" (string-append "abc" "123"))
.
If you're dealing with strings, lists, or any other data which "contains" things, you should avoid eq?
. Instead you should use an "extensional" equality predicate such as equal?
, or even better, a predicate specific to the types of values you expect, such as string=?
. Here's how they behave better than eq?
:
> (eq? "abc123" (string-append "abc" "123"))
#f
> (equal? "abc123" (string-append "abc" "123"))
#t
> (string=? "abc123" (string-append "abc" "123"))
#t
Since you're comparing using the strings "p"
and "l"
, I should be able to substitute eq?
with string=?
in your code:
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (string=? (string-ref (first lis) 0) "p") (string=? (string-ref (first lis) 1) "l"))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
However, this reveals the second problem, which I only spotted after seeing the error message:
string=?: contract violation
expected: string?
given: #y
argument position: 1st
other arguments...:
"p"
The string=?
isn't working because its first argument, the result of string-ref
, is a character (like #y
), not a string. To fix this, use char=?
instead of string=?
, and compare with the characters #p
and #l
instead of the strings "p"
and "l"
.
(: prefixes : (Listof String) (Listof String) -> (Listof String))
(define (prefixes lis em)
(cond
[(and (char=? (string-ref (first lis) 0) #p) (char=? (string-ref (first lis) 1) #l))
(cons (first lis) em)]
[else
(prefixes (rest lis) em)]))
edited Mar 23 at 22:31
answered Mar 23 at 22:18
Alex KnauthAlex Knauth
5,2931823
5,2931823
first, thank a lot for the explanation! could you please tell me what might be the reason for char=?: unbound identifier in module in: char=? error?
– hyugu
Mar 29 at 19:05
What language are you working in? Is it#lang racket
,#lang typed/racket
,#lang plai-typed
,#lang pl
, or something else?
– Alex Knauth
Mar 29 at 19:31
I'm using #lang pl
– hyugu
Mar 29 at 19:44
Okay. I'm not sure why#lang pl
doesn't providechar=?
. It provides both the typesString
andChar
, and the predicatestring=?
for strings, but nochar=?
for chars. So it might just be something that slipped through the cracks when Eli was making it.
– Alex Knauth
Mar 29 at 19:59
add a comment |
first, thank a lot for the explanation! could you please tell me what might be the reason for char=?: unbound identifier in module in: char=? error?
– hyugu
Mar 29 at 19:05
What language are you working in? Is it#lang racket
,#lang typed/racket
,#lang plai-typed
,#lang pl
, or something else?
– Alex Knauth
Mar 29 at 19:31
I'm using #lang pl
– hyugu
Mar 29 at 19:44
Okay. I'm not sure why#lang pl
doesn't providechar=?
. It provides both the typesString
andChar
, and the predicatestring=?
for strings, but nochar=?
for chars. So it might just be something that slipped through the cracks when Eli was making it.
– Alex Knauth
Mar 29 at 19:59
first, thank a lot for the explanation! could you please tell me what might be the reason for char=?: unbound identifier in module in: char=? error?
– hyugu
Mar 29 at 19:05
first, thank a lot for the explanation! could you please tell me what might be the reason for char=?: unbound identifier in module in: char=? error?
– hyugu
Mar 29 at 19:05
What language are you working in? Is it
#lang racket
, #lang typed/racket
, #lang plai-typed
, #lang pl
, or something else?– Alex Knauth
Mar 29 at 19:31
What language are you working in? Is it
#lang racket
, #lang typed/racket
, #lang plai-typed
, #lang pl
, or something else?– Alex Knauth
Mar 29 at 19:31
I'm using #lang pl
– hyugu
Mar 29 at 19:44
I'm using #lang pl
– hyugu
Mar 29 at 19:44
Okay. I'm not sure why
#lang pl
doesn't provide char=?
. It provides both the types String
and Char
, and the predicate string=?
for strings, but no char=?
for chars. So it might just be something that slipped through the cracks when Eli was making it.– Alex Knauth
Mar 29 at 19:59
Okay. I'm not sure why
#lang pl
doesn't provide char=?
. It provides both the types String
and Char
, and the predicate string=?
for strings, but no char=?
for chars. So it might just be something that slipped through the cracks when Eli was making it.– Alex Knauth
Mar 29 at 19:59
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55317601%2fgoing-over-a-list-of-strings-to-find-the-string-with-the-needed-prefix%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown