1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465openUrimoduleDerived=structopenSexplib0.Sexp_convtypecomponent=[|`Scheme|`Authority|`Userinfo(* subcomponent of authority in some schemes *)|`Host(* subcomponent of authority in some schemes *)|`Path|`Query|`Query_key|`Query_value|`Fragment|`Generic|`Customof(component*string*string)][@@derivingsexp]typet={scheme:stringoption[@defaultNone][@sexp_drop_default.sexp];userinfo:stringoption[@defaultNone][@sexp_drop_default.sexp];host:stringoption[@defaultNone][@sexp_drop_default.sexp];port:intoption[@defaultNone][@sexp_drop_default.sexp];path:string[@default""][@sexp_drop_default.sexp];query:(string*stringlist)list[@sexp.list];fragment:stringoption[@defaultNone][@sexp_drop_default.sexp]}[@@derivingsexp]endopenDerivedletcomponent_of_sexp=component_of_sexpletsexp_of_component=sexp_of_componentlett_of_sexpsexp=lett=t_of_sexpsexpinUri.make?scheme:t.scheme?userinfo:t.userinfo?host:t.host?port:t.port~path:t.path~query:t.query?fragment:t.fragment()letsexp_of_tt=sexp_of_t{scheme=schemet;userinfo=userinfot;host=hostt;port=portt;path=patht;query=queryt;fragment=fragmentt}typecomponent=Uri.componentletcompareab=Uri.compareabletequalab=Uri.equalabtypet=Uri.t