No subject
Fri Dec 14 15:48:43 EST 2012
2952<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2952> # set the locale-b=
ased default preferred location
2953<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2953> if (!$query->parse=
_tree->find_filter('preferred_language')) {
2954<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2954> $parser->defau=
lt_preferred_language( $args{preferred_language} );
2955<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2955>
2956<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2956> if (!$parser->=
default_preferred_language) {
2957<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2957> my $ses_lo=
cale =3D $client->session ? $client->session->session_locale : '';
2958<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2958> $parser->d=
efault_preferred_language( $locale_map{ lc($ses_locale) } );
2959<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2959> }
2960<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2960>
2961<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2961> if (!$parser->=
default_preferred_language) { # still nothing...
2962<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2962> my $tmp_dp=
l =3D $config->config_value(
2963<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2963> apps =
=3D> 'open-ils.search' =3D> app_settings =3D> 'default_preferred_language'
2964<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2964> ) || $conf=
ig->config_value(
2965<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2965> apps =
=3D> 'open-ils.storage' =3D> app_settings =3D> 'default_preferred_language'
2966<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2966> );
2967<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2967>
2968<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2968> $parser->d=
efault_preferred_language( $tmp_dpl )
2969<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2969> }
2970<http://git.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/=
src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f291=
26a6c3c3df121586c3afcb92416033f0235;hb=3DHEAD#l2970> }
In my exploration this section of code always seems to end in the last if s=
ection and sets the default_preferred_language there and it is always eng. =
I traced this to the fact that $client->session->session_locale is of the=
form fr_CA and the codes in $locale_map which are populated from the conf=
ig.i18n_locale table are of the form fr-CA.
I am not sure if this section of code is important to what I am going for h=
ere or not but I wanted input on these findings too. I also forced this by=
hard coding $ses_locale =3D 'fr-CA' before the parser call for the defaul=
t language. $parser->default_preferred_language ends up equaling "fre" as=
expected but again this does not trigger the translation.
Any thoughts? I do very much appreciate all the help I have received.
A broader point, for which I'd like input from as many as would care to loo=
k at it, is that while I'm certain we can make things work the way my WIP c=
ode is heading, I wonder if it would simply be better to make a rule for me=
thod_lookup() stating that if it is called as a class method it returns a b=
are, blessed coderef (pre-patch behavior), but if called as an instance met=
hod it returns a subrequest object (post-patch behavior). The reasoning be=
hind that is that when called as a class method you are either doing someth=
ing outside of a session context (as is the case with O::Application::handl=
er -- the session is separate from the method and only then are they joined=
into a request object), or you don't care about the session and are perfor=
ming some utility function (such as in direct_loader.pl<http://direct_loade=
r.pl>, or the filtered metarecord constituent lookup in O::A::Circ::Holds. =
In every instance-method case I could find in both the OpenSRF and Evergre=
en code bases, the very next thing you do with the method is call run(). S=
o, I think the rule I outline above is already in force for all practical p=
urposes, and it would point to a simpler implementation overall, IMO. In t=
he least it would remove the need to unwrap the subrequest in handler() as =
the attached patch does.
Thoughts, anyone?
I am not even going to pretend to have enough knowledge to comment on this =
intelligently.
Thanks
Dan
I do appreciate you taking the time to look at this, I am not trying to be =
difficult. I just have very little experience with this code base at this =
point and have actually never had the need to dive into the OpenSRF portion=
.
Thanks
From: open-ils-dev-bounces at list.georgialibraries.org<mailto:open-ils-dev-bo=
unces at list.georgialibraries.org> [mailto:open-ils-dev-bounces at list.georgial=
ibraries.org<mailto:open-ils-dev-bounces at list.georgialibraries.org>] On Beh=
alf Of Mike Rylander
Sent: Monday, March 31, 2014 1:14 PM
To: Evergreen Development Discussion List
Subject: Re: [OPEN-ILS-DEV] ***SPAM*** RE: Boolean Search Feature Questions
Dan,
While I can't definitively discount the possibility that the patch (which,=
as I mentioned, is untested) might be involved, the code reported in the e=
rror was not something I touched. Specifically, the session() sub containi=
ng line 83 of Application.pm is separate from the AppSubrequest class altog=
ether, which has its own session() sub.
You asked before about the OpenSRF version, so I wonder what, exactly, you =
did to install the patch and why you felt you needed to rebuild Evergreen -=
- it should have been a simple change to two files already installed on the=
system.
On Mon, Mar 31, 2014 at 3:47 PM, Dan Reuther <dReuther at catalystitservices.c=
om<mailto:dReuther at catalystitservices.com>> wrote:
Mike,
Sorry to keep bugging you. I tried the patch out and I get the following =
errors when I restart OpenSRF and rebuild Evergreen.
Updating fieldmapper
Exception: OpenSRF::DomainObject::oilsServerError 2014-03-31T12:27:01 OpenI=
LS::Utils::Cronscript /usr/local/share/perl/5.14.2/OpenILS/Utils/Cronscript=
.pm:276 <500> Internal Server Error
Can't use string ("OpenSRF::Application::Settings") as a HASH ref while "st=
rict refs" in use at /usr/local/share/perl/5.14.2/OpenSRF/Application.pm li=
ne 83.
-> /openils/var/web/opac/common/js//fmall.js
Updating web_fieldmapper
Exception: OpenSRF::DomainObject::oilsServerError 2014-03-31T12:27:01 OpenI=
LS::Utils::Cronscript /usr/local/share/perl/5.14.2/OpenILS/Utils/Cronscript=
.pm:276 <500> Internal Server Error
Can't use string ("OpenSRF::Application::Settings") as a HASH ref while "st=
rict refs" in use at /usr/local/share/perl/5.14.2/OpenSRF/Application.pm li=
ne 83.
-> /openils/var/web/opac/common/js//fmcore.js
Updating OrgTree
Exception: OpenSRF::DomainObject::oilsServerError 2014-03-31T12:27:02 OpenI=
LS::Utils::Cronscript /usr/local/share/perl/5.14.2/OpenILS/Utils/Cronscript=
.pm:276 <500> Internal Server Error
Can't use string ("OpenSRF::Application::Settings") as a HASH ref while "st=
rict refs" in use at /usr/local/share/perl/5.14.2/OpenSRF/Application.pm li=
ne 83.
This is the code from Application.pm
sub session {
my $self =3D shift;
my $session =3D shift;
if($session) {
$self->{session} =3D $session;
}
#line 83---> return $self->{session};
}
I am trying to follow the ins and outs of OpenSRF but I figured I would run=
it by you.
From: open-ils-dev-bounces at list.georgialibraries.org<mailto:open-ils-dev-bo=
unces at list.georgialibraries.org> [mailto:open-ils-dev-bounces at list.georgial=
ibraries.org<mailto:open-ils-dev-bounces at list.georgialibraries.org>] On Beh=
alf Of Mike Rylander
Sent: Monday, March 31, 2014 10:32 AM
To: Evergreen Development Discussion List
Subject: Re: [OPEN-ILS-DEV] ***SPAM*** RE: Boolean Search Feature Questions
Dan,
I wrote it in a clone of the master branch, but it will apply (perhaps with=
fuzz) to pretty much any version ... the code being touched is ancient.
--
Mike Rylander
| Director of Research and Development
| Equinox Software, Inc. / Your Library's Guide to Open Source
| phone: 1-877-OPEN-ILS (673-6457)
| email: miker at esilibrary.com<mailto:miker at esilibrary.com>
| web: http://www.esilibrary.com<http://www.esilibrary.com/>
On Mon, Mar 31, 2014 at 12:50 PM, Dan Reuther <dReuther at catalystitservices.=
com<mailto:dReuther at catalystitservices.com>> wrote:
Mike,
What version of openSRF did you write this patch for? I currently have 2.2=
.0. Do I need to upgrade or do you see an issue with the version I have?
Thanks
From: open-ils-dev-bounces at list.georgialibraries.org<mailto:open-ils-dev-bo=
unces at list.georgialibraries.org> [mailto:open-ils-dev-bounces at list.georgial=
ibraries.org<mailto:open-ils-dev-bounces at list.georgialibraries.org>] On Beh=
alf Of Mike Rylander
Sent: Tuesday, March 25, 2014 2:08 PM
To: Evergreen Development Discussion List
Subject: Re: [OPEN-ILS-DEV] ***SPAM*** Boolean Search Feature Questions
Dan,
The code you mention isn't involved (it's not dealing with the layer that k=
nows about the client-selected locale, and that comment is referring to the=
disconnect between MARC-prescribed language codes and everyone-else-in-the=
-world locale codes), but I think I see the issue. The short version is th=
at method_lookup() in OpenSRF does not return an object that knows about th=
e current session, which is needed to find the locale, thus the locale is f=
orgotten at that point in the process. Attached is an OpenSRF patch for you=
try out ... note that it is entirely untested, but it should be something =
in the right direction. The point of it is to create the OpenSRF::AppSubre=
quest shim earlier, and stash the session there for use in the eventual cal=
l to run().
If that works out for you I'll create a launchpad bug and post a pullreques=
t branch. OpenSRF 2.4 is planned for Soon(tm).
On Tue, Mar 25, 2014 at 1:35 PM, Dan Reuther <dReuther at catalystitservices.c=
om<mailto:dReuther at catalystitservices.com>> wrote:
This question is in regards to https://bugs.launchpad.net/evergreen/+bug/11=
52863
I am tracking a bug in this implementation and could use some assistance. =
The feature seems to work as expected for English language searches. The p=
roblem is when we switch to say French Canadian the operators are not trans=
lated. I admit to not fully understanding how the localization system work=
s in Evergreen. Does Evergreen currently have the ability to translate sea=
rch queries?
The behavior I am expecting is the following. Language is set to en-US an=
d the user enters book or moon on the Boolean search tab and they a=
re given the results that match book and the results that match moon. =
If the language is set to fr-CA and the user enters book ou moon =
they should see the same results. Currently the first works as expect=
ed the second returns no matches.
I set the language to French (Canada) and then trace the locale through th=
e program. I find that it switches to en-US in Application::Search::Biblio:=
:multiclass_query.
At line 950 in OpenILS/Application/Search/Biblio.pm I find the following co=
mments
# XXX This stops the session locale from doing the right thing.
# XXX Revisit this and have it translate to a lang instead =
of a locale.
#$arghash->{preferred_language} =3D $U->get_org_locale($arg=
hash->{org_unit})
# unless $arghash->{preferred_language};
So I am curious if this is a known bug or just an unimplemented feature in =
Evergreen at this time and I am chasing a bug for functionality that does n=
ot exist?
Any help would be appreciated. Thanks
Dan Reuther
Developer
[Catalyst Logo]
--
Mike Rylander
| Director of Research and Development
| Equinox Software, Inc. / Your Library's Guide to Open Source
| phone: 1-877-OPEN-ILS (673-6457)
| email: miker at esilibrary.com<mailto:miker at esilibrary.com>
| web: http://www.esilibrary.com
--
Mike Rylander
| Director of Research and Development
| Equinox Software, Inc. / Your Library's Guide to Open Source
| phone: 1-877-OPEN-ILS (673-6457)
| email: miker at esilibrary.com<mailto:miker at esilibrary.com>
| web: http://www.esilibrary.com
--_000_5F63DC695B58C44DBF1DB0996C2AB9A77E50B9CORPEXCH01catalys_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";}
span.EmailStyle20
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle21
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D">I have a couple other iss=
ues I am encountering as well. The first is that it seems which ever =
type of search I try first ends up being the default for all
future searches. For example if one searches for book ||=
moon on the basic search tab that works correctly. But t=
hen searching on the Boolean tab with book or moon =
will return incorrect results. But book || moon&nbs=
p; works. If you restart evergreen
and try this in the reverse order you get the opposite result. In sh=
ort the first one tried works as intended and then the other one is broken.=
I could use some guidance on this. There is code to reset the =
operators and I have logged and tracked them and
they seem to be changing as one would expect. It looks to me like th=
e parser operators is a singleton object? Is that correct?
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D">The second issue could be=
more serious. Disregarding the first issue if you search on the Bool=
ean tab with say book or moon it works correctly&nb=
sp; but then
book || moon does not. This seems to be work=
ing as intended since the operators in the query parser are set to the Engl=
ish words and not symbols. But the symbols should work as well.=
Is there a way to overload the operators in the query parser? =
From
what I have looked at it seems one would have to add another set of plain =
language operators and then put or statements throughout the query parser t=
o facilitate both operators, ie or and ||, working correc=
tly. The plain language operators would still
need to be localized.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D">This brings the problem o=
f now a basic search would also interpret plain language operators as Boole=
an and not words, unless a flag was passed into the parser
to limit that behavior. I get the feeling this is a decent sized cha=
nge to the query parser and wonder if there is an easier way. Could w=
e not just use a reg ex in say query_parser_fts_wrapper in metabib.pm to co=
nvert the plain language operators to the
symbols and then pass that into the parser. We could do the localiza=
tion at this point as well.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D">I know this is similar to=
the original way this feature was implemented and there was pushback again=
st that so I want to get feedback and guidance on this before
I set about implementing it. It is entirely possible I am miss=
ing something trivial that fixes all of this.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D">Thanks<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </o:p></span><=
/p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><b><span style=3D"font-si=
ze:10.0pt;font-family:"Tahoma","sans-serif"">From:</spa=
n></b><span style=3D"font-size:10.0pt;font-family:"Tahoma","=
sans-serif""> open-ils-dev-bounces at list.georgialibraries.org [mailto:o=
pen-ils-dev-bounces at list.georgialibraries.org]
<b>On Behalf Of </b>Dan Reuther<br>
<b>Sent:</b> Tuesday, April 01, 2014 3:41 PM<br>
<b>To:</b> Evergreen Development Discussion List<br>
<b>Subject:</b> Re: [OPEN-ILS-DEV] ***SPAM*** RE: Boolean Search Feature Qu=
estions<o:p></o:p></span></p>
</div>
</div>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><o:p> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in">I'm sorry if it sounded =
like I was questioning the need to restart services -- I wasn't.<o:p></o:p>=
</p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><o:p> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in">Part of the reason that =
I and others have been nudging you toward the list is so that others can ei=
ther jump in to help, or learn from our discussion. I'll try to be mo=
re explicit.<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><o:p> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in">With that in mind, I'm a=
ll for automating repetitive tasks, but I want to make sure that =
both you and anyone following along at home doesn't get the impression that=
a full rebuild would be necessary for this sort
of change. For testing out a WIP patch that just touches the Perl, s=
imply dropping the patch in place and restarting services (and, if mod_perl=
code is touched, apache) is enough.<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"> <o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">I also apologize if I came off as defensive, I appreciate any guidance yo=
u provide, I find it extremely valuable.
<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><o:p> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in">That's a symptom, yes. &=
nbsp;The ultimate cause is that method_lookup() can be called as a class me=
thod, so the invocant $self is a package name instead of an instance, but s=
ession() assumes it is being called as an
instance method. The class method is a legitimate use case, so I've =
restructured the patch a little to account for that, and to try to make sur=
e that calling code gets everything it needs by unwrapping the subrequest i=
n one case.<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><span style=3D"color:#1F=
497D"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">I have tried out this latest patch and OpenSRF will start now but I am st=
ill not getting the locale to propagate as expected. Looking
in OpenILS/WWW/EGCatLoader/Search.pm <o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"> <o:p></o:p></=
span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l434"><span style=3D"color:#999999;text-decoration:none">=
434</span></a>
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l435"><span style=3D"color:#999999;text-decoration:none">=
435</span></a>
my=
$method =3D 'open-ils.search.biblio.multiclass.query';<o:p>=
</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l436"><span style=3D"color:#999999;text-decoration:none">=
436</span></a>
$m=
ethod .=3D '.staff' if $ctx->{is_staff};<o:p></o:p><=
/span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l437"><span style=3D"color:#999999;text-decoration:none">=
437</span></a>
$m=
ethod =3D~ s/biblio/metabib/ if $is_meta;<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l438"><span style=3D"color:#999999;text-decoration:none">=
438</span></a>
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l439"><span style=3D"color:#999999;text-decoration:none">=
439</span></a>
my=
$ses =3D OpenSRF::AppSession->create('open-ils.search');=
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l440"><span style=3D"color:#999999;text-decoration:none">=
440</span></a>
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l441"><span style=3D"color:#999999;text-decoration:none">=
441</span></a>
$s=
elf->timelog("Firing off the multiclass query&q=
uot;);<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l442"><span style=3D"color:#999999;text-decoration:none">=
442</span></a>
my=
$req =3D $ses->request($method, $args, $query,=
1);<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l443"><span style=3D"color:#999999;text-decoration:none">=
443</span></a>
$r=
esults =3D $req->gather(1);<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/WWW/EGCatLoader/Search.pm;h=3D3a69fb1937402bc0f5eecde6f149cce7f=
ec0d59d;hb=3DHEAD#l444"><span style=3D"color:#999999;text-decoration:none">=
444</span></a>
$s=
elf->timelog("Returned from the multiclass quer=
y");<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">I believe the call to OpenSRF on line 439 is what kicks this whole proces=
s off. $ctx->{locale} is correct at this point, reflecting
the settings selected on the web interface. $ses->{session_=
locale} is always en_US regardless. Looking at the call I notic=
e that the locale is never passed into OpenSRF. Does this have to hap=
pen here? On a whim I did try this .. $ses->{session_locale}
=3D $ctx->{locale} This has the effect of having the =
correct language setting propagate down into metabib. Of course this =
still does not fix the issue so I am continuing to look.<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">That brings the question, where is this translation supposed to happen?&n=
bsp; In the Query Parser? I have not been able to locate the code
that handles this task. <o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">I have also found another issue, which may or may not be related to this.=
From OpenILS/Application/Storage/Publisher/metabib.pm<o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2952"><span style=3D"color:#999999;text-d=
ecoration:none">2952</span></a>
# set the locale-based default=
preferred location<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2953"><span style=3D"color:#999999;text-d=
ecoration:none">2953</span></a>
if (!$query->parse_tree->find_filter('p=
referred_language')) {<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2954"><span style=3D"color:#999999;text-d=
ecoration:none">2954</span></a>
$parser->default_prefer=
red_language( $args{preferred_language} );<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2955"><span style=3D"color:#999999;text-d=
ecoration:none">2955</span></a>
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2956"><span style=3D"color:#999999;text-d=
ecoration:none">2956</span></a>
if (!$parser->defa=
ult_preferred_language) {<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2957"><span style=3D"color:#999999;text-d=
ecoration:none">2957</span></a>
my=
$ses_locale =3D $client->session ? $client->=
;session->session_locale : '';<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2958"><span style=3D"color:#999999;text-d=
ecoration:none">2958</span></a>
$p=
arser->default_preferred_language( $locale_map{ lc($ses_locale=
) } );<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2959"><span style=3D"color:#999999;text-d=
ecoration:none">2959</span></a>
}<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2960"><span style=3D"color:#999999;text-d=
ecoration:none">2960</span></a>
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2961"><span style=3D"color:#999999;text-d=
ecoration:none">2961</span></a>
if (!$parser->defa=
ult_preferred_language) { # still nothing...<o:p></o:p>=
</span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2962"><span style=3D"color:#999999;text-d=
ecoration:none">2962</span></a>
my=
$tmp_dpl =3D $config->config_value(<o:p></o:p></span></p=
>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2963"><span style=3D"color:#999999;text-d=
ecoration:none">2963</span></a>
&n=
bsp; apps =3D> 'open-ils.search' =3D>=
app_settings =3D> 'default_preferred_language'<o:p></o:p=
></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2964"><span style=3D"color:#999999;text-d=
ecoration:none">2964</span></a>
)&=
nbsp;|| $config->config_value(<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2965"><span style=3D"color:#999999;text-d=
ecoration:none">2965</span></a>
&n=
bsp; apps =3D> 'open-ils.storage' =3D>=
; app_settings =3D> 'default_preferred_language'<o:p></o:=
p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2966"><span style=3D"color:#999999;text-d=
ecoration:none">2966</span></a>
);=
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2967"><span style=3D"color:#999999;text-d=
ecoration:none">2967</span></a>
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2968"><span style=3D"color:#999999;text-d=
ecoration:none">2968</span></a>
$p=
arser->default_preferred_language( $tmp_dpl )<o:p></o:p></span=
></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2969"><span style=3D"color:#999999;text-d=
ecoration:none">2969</span></a>
}<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in;background:white"><span st=
yle=3D"font-family:"Courier New";color:black"><a href=3D"http://g=
it.evergreen-ils.org/?p=3DEvergreen.git;a=3Dblob;f=3DOpen-ILS/src/perlmods/=
lib/OpenILS/Application/Storage/Publisher/metabib.pm;h=3D6f29126a6c3c3df121=
586c3afcb92416033f0235;hb=3DHEAD#l2970"><span style=3D"color:#999999;text-d=
ecoration:none">2970</span></a>
}<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">In my exploration this section of code always seems to end in the last if=
section and sets the default_preferred_language there and
it is always eng. I traced this to the fact that $client->s=
ession->session_locale is of the form fr_CA and the codes in $loca=
le_map which are populated from the config.i18n_locale table are of the for=
m fr-CA.<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">I am not sure if this section of code is important to what I am going for=
here or not but I wanted input on these findings too. I
also forced this by hard coding $ses_locale =3D ‘fr-CA’ =
before the parser call for the default language. $parser->default_=
preferred_language ends up equaling “fre” as expected but=
again this does not trigger the translation.
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">Any thoughts? I do very much appreciate all the help I have receive=
d.<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in">A broader point, for whi=
ch I'd like input from as many as would care to look at it, is that while I=
'm certain we can make things work the way my WIP code is heading, I wonder=
if it would simply be better to make
a rule for method_lookup() stating that if it is called as a class method =
it returns a bare, blessed coderef (pre-patch behavior), but if called as a=
n instance method it returns a subrequest object (post-patch behavior). &nb=
sp;The reasoning behind that is that
when called as a class method you are either doing something outside of a =
session context (as is the case with O::Application::handler -- the session=
is separate from the method and only then are they joined into a request o=
bject), or you don't care about
the session and are performing some utility function (such as in <a href=
=3D"http://direct_loader.pl">
direct_loader.pl</a>, or the filtered metarecord constituent lookup in O::A=
::Circ::Holds. In every instance-method case I could find in both the=
OpenSRF and Evergreen code bases, the very next thing you do with the meth=
od is call run(). So, I think the rule
I outline above is already in force for all practical purposes, and it wou=
ld point to a simpler implementation overall, IMO. In the least it wo=
uld remove the need to unwrap the subrequest in handler() as the attached p=
atch does.<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><o:p> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in">Thoughts, anyone?<o:p></=
o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"font-size:=
11.0pt;font-family:"Calibri","sans-serif";color:#1F497D=
">I am not even going to pretend to have enough knowledge to comment on thi=
s intelligently.<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><o:p> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"color:#1F4=
97D">Thanks
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"color:#1F4=
97D"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"color:#1F4=
97D">Dan <o:p>
</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"><span style=3D"color:#1F4=
97D"><o:p> </o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:.5in"> <o:p></o:p></p>
</div>
<blockquote style=3D"border:none;border-left:solid #CCCCCC 1.0pt;padding:0i=
n 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-=
bottom:5.0pt">
<div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">I do appreciate you taking the time to look at t=
his, I am not trying to be difficult. I just have very little experie=
nce with this code base at this point and have actually never
had the need to dive into the OpenSRF portion.</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Thanks</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<b><span style=3D"font-size:10.0pt;font-family:"Tahoma","san=
s-serif"">From:</span></b><span style=3D"font-size:10.0pt;font-family:=
"Tahoma","sans-serif"">
<a href=3D"mailto:open-ils-dev-bounces at list.georgialibraries.org" target=3D=
"_blank">open-ils-dev-bounces at list.georgialibraries.org</a> [mailto:<a href=
=3D"mailto:open-ils-dev-bounces at list.georgialibraries.org" target=3D"_blank=
">open-ils-dev-bounces at list.georgialibraries.org</a>]
<b>On Behalf Of </b>Mike Rylander<br>
<b>Sent:</b> Monday, March 31, 2014 1:14 PM</span><o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><br>
<b>To:</b> Evergreen Development Discussion List<o:p></o:p></p>
</div>
<div>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><b>Subject:</b> Re: [OPE=
N-ILS-DEV] ***SPAM*** RE: Boolean Search Feature Questions<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
Dan,<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
While I can't definitively discount the possibility that the patch (w=
hich, as I mentioned, is untested) might be involved, the code reported in =
the error was not something I touched. Specifically, the session() su=
b containing line 83 of Application.pm is
separate from the AppSubrequest class altogether, which has its own sessio=
n() sub.<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
You asked before about the OpenSRF version, so I wonder what, exactly, you =
did to install the patch and why you felt you needed to rebuild Evergreen -=
- it should have been a simple change to two files already installed on the=
system.<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;margin-bottom:12.0p=
t;margin-left:1.0in">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
On Mon, Mar 31, 2014 at 3:47 PM, Dan Reuther <<a href=3D"mailto:dReuther=
@catalystitservices.com" target=3D"_blank">dReuther at catalystitservices.com<=
/a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Mike,</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Sorry to keep bugging you. I tried the pat=
ch out and I get the following errors when I restart OpenSRF and rebu=
ild Evergreen.</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Updating fieldmapper</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Exception: OpenSRF::DomainObject::oilsServerErro=
r 2014-03-31T12:27:01 OpenILS::Utils::Cronscript /usr/local/share/perl/5.14=
.2/OpenILS/Utils/Cronscript.pm:276 <500> Internal Server
Error</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Can't use string ("OpenSRF::Application::Se=
ttings") as a HASH ref while "strict refs" in use at /usr/lo=
cal/share/perl/5.14.2/OpenSRF/Application.pm line 83.</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">-> /openils/var/web/opac/common/js//fmall.js<=
/span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Updating web_fieldmapper</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Exception: OpenSRF::DomainObject::oilsServerErro=
r 2014-03-31T12:27:01 OpenILS::Utils::Cronscript /usr/local/share/perl/5.14=
.2/OpenILS/Utils/Cronscript.pm:276 <500> Internal Server
Error</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Can't use string ("OpenSRF::Application::Se=
ttings") as a HASH ref while "strict refs" in use at /usr/lo=
cal/share/perl/5.14.2/OpenSRF/Application.pm line 83.</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">-> /openils/var/web/opac/common/js//fmcore.js=
</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Updating OrgTree</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Exception: OpenSRF::DomainObject::oilsServerErro=
r 2014-03-31T12:27:02 OpenILS::Utils::Cronscript /usr/local/share/perl/5.14=
.2/OpenILS/Utils/Cronscript.pm:276 <500> Internal Server
Error</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Can't use string ("OpenSRF::Application::Se=
ttings") as a HASH ref while "strict refs" in use at /usr/lo=
cal/share/perl/5.14.2/OpenSRF/Application.pm line 83.</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">This is the code from Application.pm</span><o:p>=
</o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">sub session {</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> =
my $self =3D shift;</span><o:p><=
/o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> =
my $session =3D shift;</span><o:=
p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> =
if($session) {</span><o:p></o:p>=
</p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> =
&nb=
sp; $self->{=
session} =3D $session;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> =
}</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">#line 83-</span><span style=3D"font-size:11.0pt;=
font-family:Wingdings;color:#1F497D">=E0</span><span style=3D"font-size:11.=
0pt;font-family:"Calibri","sans-serif";color:#1F497D">&=
nbsp;
return $self->{session};</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">}</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">I am trying to follow the ins and outs of OpenSR=
F but I figured I would run it by you.</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<b><span style=3D"font-size:10.0pt;font-family:"Tahoma","san=
s-serif"">From:</span></b><span style=3D"font-size:10.0pt;font-family:=
"Tahoma","sans-serif"">
<a href=3D"mailto:open-ils-dev-bounces at list.georgialibraries.org" target=3D=
"_blank">open-ils-dev-bounces at list.georgialibraries.org</a> [mailto:<a href=
=3D"mailto:open-ils-dev-bounces at list.georgialibraries.org" target=3D"_blank=
">open-ils-dev-bounces at list.georgialibraries.org</a>]
<b>On Behalf Of </b>Mike Rylander<br>
<b>Sent:</b> Monday, March 31, 2014 10:32 AM</span><o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<br>
<b>To:</b> Evergreen Development Discussion List<o:p></o:p></p>
</div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<b>Subject:</b> Re: [OPEN-ILS-DEV] ***SPAM*** RE: Boolean Search Feature Qu=
estions<o:p></o:p></p>
<div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
Dan,<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
I wrote it in a clone of the master branch, but it will apply (perhaps with=
fuzz) to pretty much any version ... the code being touched is ancient.<o:=
p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<br>
-- <br>
Mike Rylander<br>
| Director of Research and Development<br>
| Equinox Software, Inc. / Your Library's Guide to Open Source<br>
| phone: 1-877-OPEN-ILS (673-6457)<br>
| email: <a href=3D"mailto:miker at esilibrary.com" target=3D=
"_blank">miker at esilibrary.com</a><br>
| web: <a href=3D"http://www.esilibrary.com/" target=3D"_b=
lank">http://www.esilibrary.com</a><o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
On Mon, Mar 31, 2014 at 12:50 PM, Dan Reuther <<a href=3D"mailto:dReuthe=
r at catalystitservices.com" target=3D"_blank">dReuther at catalystitservices.com=
</a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Mike,</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">What version of openSRF did you write this patch=
for? I currently have 2.2.0. Do I need to upgrade or do you se=
e an issue with the version I have?</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D">Thanks</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"font-size:11.0pt;font-family:"Calibri","sans-=
serif";color:#1F497D"> </span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<b><span style=3D"font-size:10.0pt;font-family:"Tahoma","san=
s-serif"">From:</span></b><span style=3D"font-size:10.0pt;font-family:=
"Tahoma","sans-serif"">
<a href=3D"mailto:open-ils-dev-bounces at list.georgialibraries.org" target=3D=
"_blank">open-ils-dev-bounces at list.georgialibraries.org</a> [mailto:<a href=
=3D"mailto:open-ils-dev-bounces at list.georgialibraries.org" target=3D"_blank=
">open-ils-dev-bounces at list.georgialibraries.org</a>]
<b>On Behalf Of </b>Mike Rylander<br>
<b>Sent:</b> Tuesday, March 25, 2014 2:08 PM<br>
<b>To:</b> Evergreen Development Discussion List<br>
<b>Subject:</b> Re: [OPEN-ILS-DEV] ***SPAM*** Boolean Search Feature Questi=
ons</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
Dan,<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
The code you mention isn't involved (it's not dealing with the layer that k=
nows about the client-selected locale, and that comment is referring to the=
disconnect between MARC-prescribed language codes and everyone-else-in-the=
-world locale codes), but I think
I see the issue. The short version is that method_lookup() in OpenSR=
F does not return an object that knows about the current session, which is =
needed to find the locale, thus the locale is forgotten at that point in th=
e process. Attached is an OpenSRF patch
for you try out ... note that it is entirely untested, but it should be so=
mething in the right direction. The point of it is to create the Open=
SRF::AppSubrequest shim earlier, and stash the session there for use in the=
eventual call to run().<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
If that works out for you I'll create a launchpad bug and post a pullreques=
t branch. OpenSRF 2.4 is planned for Soon(tm).<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
</div>
</div>
</div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;margin-bottom:12.0p=
t;margin-left:1.0in">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
On Tue, Mar 25, 2014 at 1:35 PM, Dan Reuther <<a href=3D"mailto:dReuther=
@catalystitservices.com" target=3D"_blank">dReuther at catalystitservices.com<=
/a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
This question is in regards to <a href=3D"https://bugs.launchpad.net/evergr=
een/+bug/1152863" target=3D"_blank">
https://bugs.launchpad.net/evergreen/+bug/1152863</a><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
I am tracking a bug in this implementation and could use some assistance.&n=
bsp; The feature seems to work as expected for English language searches.&n=
bsp; The problem is when we switch to say French Canadian the operators are=
not translated. I admit to not fully understanding
how the localization system works in Evergreen. Does Evergreen curre=
ntly have the ability to translate search queries?
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
The behavior I am expecting is the following. Language is set to en-U=
S and the user enters book or moon =
; on the Boolean search tab and they are given the results that=
match book and the results that match moon. =
If the language is set to fr-CA
and the user enters book ou moon=
they should see the same results. =
; Currently the first works as expected the second returns no matches=
.
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
I set the language to French (Canada) and then trace the locale throu=
gh the program. I find that it switches to en-US in Application::Search::Bi=
blio::multiclass_query.
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
At line 950 in OpenILS/Application/Search/Biblio.pm I find the following co=
mments<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in;text-indent:.5in">
# XXX This stops the session locale from doing the right thing.<o:p></o:p><=
/p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
&n=
bsp; # XXX Revisit this and have it translate to a lang instead =
of a locale.<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
&n=
bsp; #$arghash->{preferred_language} =3D $U->get_org_locale($ar=
ghash->{org_unit})<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
&n=
bsp; # unless $arghash->{preferred_language=
};<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
So I am curious if this is a known bug or just an unimplemented feature in =
Evergreen at this time and I am chasing a bug for functionality that does n=
ot exist?<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
Any help would be appreciated. Thanks <o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
Dan Reuther<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
Developer<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<img border=3D"0" width=3D"225" height=3D"75" id=3D"_x0000_i1025" src=3D"ci=
d:image001.png at 01CF4F3A.AA842C40" alt=3D"Catalyst Logo"><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"color:#888888"> </span><o:p></o:p></p>
</div>
</div>
</div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"color:#888888"><br>
<br clear=3D"all">
</span><o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"color:#888888"> </span><o:p></o:p></p>
</div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<span style=3D"color:#888888">-- <br>
Mike Rylander<br>
| Director of Research and Development<br>
| Equinox Software, Inc. / Your Library's Guide to Open Source<br>
| phone: 1-877-OPEN-ILS (673-6457)<br>
| email: <a href=3D"mailto:miker at esilibrary.com" target=3D"_bla=
nk">miker at esilibrary.com</a><br>
| web: <a href=3D"http://www.esilibrary.com" target=3D"_blank">=
http://www.esilibrary.com</a>
</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<br>
<br clear=3D"all">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<br>
<br clear=3D"all">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
<o:p></o:p></p>
</div>
<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;margin-left:1.0in">
-- <br>
Mike Rylander<br>
| Director of Research and Development<br>
| Equinox Software, Inc. / Your Library's Guide to Open Source<br>
| phone: 1-877-OPEN-ILS (673-6457)<br>
| email: <a href=3D"mailto:miker at esilibrary.com" target=3D"_bla=
nk">miker at esilibrary.com</a><br>
| web: <a href=3D"http://www.esilibrary.com" target=3D"_blank">=
http://www.esilibrary.com</a>
<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><br>
<br clear=3D"all">
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal" style=3D"margin-left:1.0in"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>
--_000_5F63DC695B58C44DBF1DB0996C2AB9A77E50B9CORPEXCH01catalys_--
--_004_5F63DC695B58C44DBF1DB0996C2AB9A77E50B9CORPEXCH01catalys_
Content-Type: image/png; name="image001.png"
Content-Description: image001.png
Content-Disposition: inline; filename="image001.png"; size=11795;
creation-date="Thu, 03 Apr 2014 20:06:41 GMT";
modification-date="Thu, 03 Apr 2014 20:06:41 GMT"
Content-ID: <image001.png at 01CF4F3A.AA842C40>
Content-Transfer-Encoding: base64
iVBORw0KGgoAAAANSUhEUgAAAOEAAABLCAIAAAAJVnelAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAC2oSURBVHhe7Z0FWFVZ18ev37z9zoxjix1jd6CI
NTpjtwhKSYkt2KJiJyUKgt3d3YU11thd2GKhgAgiOn6/c/bheuAGV2b05fve+3/Ocz1n77XXXnvt
/1p77xui+WiGGZkbZo6akdlh5qgZmR1mjpqR2WHmqBmZHWaOmpHZYeaoGZkdZo6akdlh5qgZmR1m
jpqR2SFxNPnD77GJyS/fvPtyV3zSe9FfukhOTk5ISIiLjY2JiXmVAu5jY2PfvHnz7t07Rc6M/xpo
EpPfT9l3s9KE/dkHbfsi18CtvDab/uupuy9/VzrVD6h54fyFmeEzunp4WFW3rFi2XNWKlbiqVKxY
vnQZbhw7dQoKCDhx/ERiYqLSxoz/Amh8N174vu9GjceqL3t1WVVxzK6z918q3erg5o0bfb284GXJ
YsWLFSpcqviPdWrVgpTODg52NjaWVav+WKRo4fwFShQtVqVCxX7e3leuXFFa/p/C778bj1Mz9ECT
3WutxmOZxmO5psuXudyXSa9uS7/xXDF49ZkP+iZpz+7dta2soGb+PHmLFy4CL/fs3iMWdxAfH//y
5av1a9fVr1O3oIVFoXz5ixQo2LZ162tXryntVYAEb2WwK0h+l8wl3SQnK9X68OHDB2S08iZeQi1t
FS0yKCHHJyUlcaOV+agacbocRYAmesXo69PQUP/u3Yf3qXo3gt8//I681CS1wYDCxIQEnAzwNQ5n
QaMXutAKcyN6VHvAlEtvj58LjcZtscZ9yRe53LgW/73rMvl+cRb3Jbbhh95/SOv9E8eP17S0FOQj
ffoOHfrs6TOlToXfP3w4dfJU5QoVClrkg8r5cuV2dXaWGJAar1+/Xrd2bei0kOCgKVOnBE8Lnjol
MGjOrNm3bt5SJFKDyTt/7jwyXIH+AQF+/torKCCQ5lzo4V5dhSQXaq9evaookify3NlzIVOnIY82
0XX49LDfTp1SJHQ4yhxGv3jx/PnzJ1FPzp45e+jgoQ1r16H25s2bioQKT548Wb50mRgaFwYsWrDw
wf0HSrVhREdHr1m1ZtKEiSuXL3/x4oUofP/+/dOnT3ft3OU3aXLPbt1cnJzcXVxwqZO9PfdDBw+h
i6NHjgrhO5F3sIrhpPEDj8LJYrDqqkA//+DAoMkTJx06eFAoyTA0GteFX+pynp/Ha2X3Rcf+6rGY
+yyuC23DDqTh6LNnz+zt7ERqLFqwYEdb2+gX0UqdDkhR/pMnlytVumyp0iWKFG1Y/6crVz5RRIDA
ZcPqP9mvbatWZUqWKv1jCbYHZUuWGunrq0ikBlO1bOkyUniZEiWrV65So2o17VW5fAVihosqNhjq
qioVKxUvVLh2TavNmzYrimRE3o4MCwlljulRtGVc3T27vk9WjoxpOHr50qV2rdvUta5tZVmjUrny
FcqUZVwN6tbbvWu3IqECee7wocNTAgLbtGzJjohxFStc2Lt3n/jX8YqEPiQnv2eLj2TZUqWmBQeL
rMa6NHfOnMYNf8Y/dFqvdm2o2cXNzaZdO8sqVSnhAJA3R84Rw4YLJQcjIqxr1GS7VTm1Hzgk4JxS
xUswUvZp6qrqVaoyU7myZfebNEkoyTA0Gpf5X+Rympu1+5Jxm86O23z2L24LeMziMt8ubL+ao/hr
88ZNjLxogYJkRwa8bes2pU4vfv8Y9TjqwP4D+/ft37tnL1EeGxOrVKkA7VitLl26VMeqFuznssiV
+6e69S5fvKRIqIDwwvkLCuS18PTwuHTxEllNXARPWOj0/Lnz5MudB8MWLliorYp+/uLggQjb9jaw
ih2IokgGI3qbmHj71q0ubu40FF3XrG65bctWIZCGo0QUWfT+vXvz585rUK8eTfLkyFm7Rs2d23co
EqmBtazLV69ckfTnys16AlOnBAZSrkikBt1t27q1aqVKcMW7T5+4uDgKIehI3xFs7umu8c+/bNm0
+WX0S9YfYgAB7llYFsyb39G2Q4C/v9BzYP/+cqVK/Vz/JyaI4WtdsWH9ek60BfJYZP33tz6Dh2jL
uW7evDWgX79///3vY0eNFkoyDDg658+/nGd/4za3x6IjL16/HbTyRBbXORqnWVlc5tiF7VNzNCYm
pk+vXkULFuKCJa1btNBduw1B745NDZbdcqVLk8aYRfE6criSFdSgx1kzZlpZWrLlUIpSsHTxEiIH
w2pWq75p4yalNAVMLZmDSVKeVbhx/Xqjhg3pVA6/QjCpq0cXkUoNmU22mz1zZt6cuRCuW8t6146d
SoUBXLp40aZNW2zjImmtXrVKqUiNX48erWddO/v3WZ3sHe7LuwIM2LplCwTN+UO2Zo2bHPv1mF6L
ID0bU+37J/v27sVFLOviUQvyq2W1qoXzFcj23fcTxo1XSlNw+rffyL6GVjDTodF0nv0nX86zNE4z
m/hvfxH/NjYhqeGkLXLJrCydZ9tN36vmKBssVhnmkovFa8SwYUrFHwbnrWE+Q2GYVXXLbp6e6Cdn
6E2lCQmJixYuHD506NvEt0qRDCaJ3Z7gKCRYlzpfgiuXL3fv2vXoUWXHpgWknz1zFumQoUHNIgUK
QDuW8nSWCJkHubPnMJGjYM+u3TWqVcNCUnXLps3OnT2rVKTg+rVr9h075vg+a9NfGsFFUQjt2JiS
ViHuoP4DRGG6OHPmzKABAzjaKs8pwGbLqgpHx44eo5SmgBw0eeLEBfPmKc8ZhUbjPONPvuzDSg1a
cTJSOvc8jU2oMHSVxjGcK4vzDLvQ3WqO3r1zh30MMc3FHoj1TqkwAcbz6OnfTpcuUaJ0iZJhoaER
+w+w3WTZ/VFfKkUPZ1jdN1zT5egHOdPoJn4WblsbG4ucuYb5+Ny8ceOXBg3pGuYRKtpdqV7s37fv
szj6Xg6G4kWKFJKNJGA4eyl1Hz9yP3jAQJIl+8u1a9Zo3cVIx48dR0dcTp3sHz96LMqNg2GyfdId
rHGOAnyblJSkPGQUcDT8z7wcpmfrPm/x4etC+90Xr//pMZtCjVNYFudwu9BdWo7ite1bt4mFWHCU
faGoMgVGOCqSKHPQqEHDV69ecZL1cHODKIZSqV6ky1G9wKqN6zeQpdge7Nwh7SnDp4fTL1etGjWN
p9LPzaMAIg4ZPLhAnryMjoWIpCVolPwueUZ4eOH8+YsXLhLg56ferX748DtncCxkf4Xnvft4PYl6
otR9PtLl6J8CzV+cp+te3ziFZnEM/R8n6fpGp9bQpXEI+ZfrjJFrjyclK2+JHb8V9Q8XkmgIev7q
PL1T6A41RzkwqTnKPl1UmQIj77qJJEqGnhqs7J/27tnDlDCRYldqhN9aZIyjJFF7OzsYQFQIupw/
f76WZQ0llXbpAnuEpC4ywFFw4/oNR3t7WmFq1YoVly1ZQr/slcuWLMV+o5+X95v4N4poCtik1rW2
Rh63k4Nbt2y1fev2uNg43TQpgLsMeewrcfSfTiG613cu07O7h/PK/V/tp37TKfgvnYK54fqbA9e0
vztO+4d0fWpCCVXtArfEJ376SH3d8Rvfdp4u5P/lFOIYsj055W1nSMZBJBVHU/KocIpx0Fy5U4G2
HE4njJPWMhbZqMdRQuHTp0/dXV1FKm1Qrz5bSQqVNvpALRNGXldxdK2syWArUbVh3XoIirz2PSn2
ZGNHjYJD+Uml7ErlA75oogaF+/Z84uhOmaNKnWFIHXz8ePjQIbExZXTtW7cNnTaNExvbTXu7jvfu
3kujh0fCj+xQy9ISz5ODcX6pYj82bdQ4PCzs2tVrrOkpij81NOTtfXv2qDgqnd+VuvQgqzcVmhxO
U9VXdsfgnM7TrH2Wdpuxs53f+vZ+G6oPXFiix6winuEFPcIKeITldQnJ4xKSy3ladsepPzgEf9cp
SFz/tgus7bPkwQvp3Q2BpHfvgzadQFs2h+BsqHWa6h6yTc1R1j41R+el7EeVcRgADdVQSmXQ9tat
W3itRJFi48eOFdoEdu/cVaxgISaSBBMydaooVJrpgKoMcPTevbtKEnV1eyd/90WUnzp5slK58oxR
TqWe2io1KMkAR4EQW7J4MbttuvixSNHSP5aArE1+/uXokSN6lVCI344d/dXZ0VF88ow8I+W+aqXK
nPP27dlHWkVMSKqhqJBB7VfiaF7HKbpXAeeplXvP6j1jR8SFuw9fxD2Nib/2MPrI5fu7z0QGbzzh
t+Zovzl7HPw2NBu5vHS38JKeYYVcp1XpMzvighS1WrxJSh65JMLCaUpuh6Dc9kHceIZsFRwVVt6J
jJTe5c5fAJpyvpk0caLczqRxpvEXoCEHAjZbnFfq165z8eJFoU1ASqUurswip+DmTZo+lT/KUlrq
gKrP4qgo37BunbQTrV5965YtQlggLi5u7KjR6JF2pZY1tm+TdqWioRaUZIyjAElOb5zWSdVsaeiF
3fCa1atFlZBJA8pBbEzs7l27PdzcK5evQLIQmRgN5UqV7mhryzquDSddbwOqvhJH8zsG6V4WDoH5
HIKKukwt3y2s5YjlgWuP3nj04s3bd+9TbE1Kfs/j64SkV/GJz2PfnLj26OztqDR9v3yd2H7cqlwd
/fPaB+S1DyzgFNQ9ZIuao1FRUfWspfee8AuXp7s7vhC16UIvR0miUISDwnAfHx4FtEZt3LCRXuBK
uVJlOO+LQqVxalD+uRwVSRSSdWEnKm86tf2C306dqlKhokilHMC175VqwWOGOQoQPn7sGAFAFzmz
ZuvTs5c4JynV+kCtALuj82fPBUz2a9qoEakUDQyZV3L/tOBgcSr/D3M0n2OgoQtuwbA89gGFnIPK
dJ1uM371/F1nbj56+c7oeyhaxMYndp22uZjb1PyOgTnt/PLa+3edtknN0ZhXr/AmvBHfJoGv4tNn
MYzPAq2kJDp1KpmAbcOUgECmfM+u3Szx0rVrV8SBCM5AFcuWoztkjKdSyk3nqCjcsH69Ra5cZUqU
HDxwIH3Ro9L1zl379+5bv25dJ1s7SVuevNY1am7ftj2NKh7/IEcJAxrCrRzf/9Dfu6+JzRETeJeU
9OzZsxXLl7ds1ozpQA/Wsi+aHhJiKHFQ+JU4WtAhwPhVwN4/Xye/vHaT89v7F3MOqtg1tFfolrWH
Lj16EZuYZPCUCjAlNv7tztM3vcK3Ve8140fX4B4hm9UcJdbJbaS9oilb0vlzlaO9PJDPAE1IorVq
1ICCJIDaNa3qWNWqrbqkx5pWLGrivdJypY2lUgo/i6OPH0d5unsgyaSSzPR0bVWrehXp64WYpzeV
cv8HOXryxAk6Ehzt28frc5sLQMcHDx6MGO77Y1HJ1Dw5crZs1vzsmTNUKaIqUPiVOFrI3s/Eq2An
v3x2kyxsJxV28C/hHFS5a4hX6OadJ29ARON9QuVnMfFrDl6cv+N0smoN4ubRo0cN6tWDNII6eER8
MUcImAipC3knmjdHLrLU8ePHUfL8+XMSgxoUnjl9ms0Auws5lTZ5ZiCVUmgiR0Xhgf0HihQsWLFM
uVnhM6Kjo/V0/fz5uXPnRCqFhbqplHsTOSr1J0N5lsHjH+GoFrLij48ePmJ9y5szV8G80pcoVq9c
qVcbhV+Jo4U7+X3uVbDj5Py2k/J1mFjE3u9Hp4B2I5a8Nfy2nxrvU+9qKCFw161ZK22D8uXHv5xJ
/SZPNrS4GALCt+UkWiCPhburq9STASS9TQryDyAY4Aong/Dp00W5oigFlJjOUSgIJ7J/n9WmTduY
VzFCTC9Wr1wFBfWmUm5M5CjnmNiYGF6VZxkI/ykcBTQEy5ctY0SQr3zpMgsXSO8JKtUqUPi18min
SRm+8tlOsOgwwXniqjQ7VM5SB89HHjh769ytR69eJ7IxjU+EHsks9IqNKUCY0+WwIT6s+Pi3kEU+
yypVN2/clJT06dNzRVQFpSIFJNHpIaEc2Gmr/VabIpoalF+/dq1GtWpSKs2Vu0XTpjBMV5gSUzgq
SkiiRQsVYi7nzJolSpTq1KA8MjKyYwfbgnktdFMpN2qO7tq5S68eCrdt21a/Tt2IAwfUAtybzlGq
tFCKVBDl8+bOy5H1B1xav06d/fv2GZL8ShwtYDcxw1e+DhNgav9w5R0lgfiEpOHzdpbsHFDCOaC0
S2BZtymVukxtM2JR50krQ9cffa+TI3mEKN69vcTbH4Us8lcqX36kr2/U4ygOlUJAF5STS8Tp9eHD
h61btMifx8LV2dl4DqYqISEh0N9fSqV5LSCW3lTKo4kcFUk0x/dZmzduKr5GrdTpQFSJVFpMJ5Xy
quUoVBMc1QWSQQGBFcuV37UzVaLl3nSOcjx68+aNcJReXL1y1cneMW+OnLmyZe/n5f32rZQvlMYq
UPiVOJrPbnyGr9w2Y4s5TYZ5H1I+4eRm+b5zRRwn5Wg3OpfN2Fztx+RsNyZn+zFI5rcb3y14nfbM
pAYl0S+ix40eA2nEZpHtKfvUUSNGMHMsbXFxcbj1TXz867g49naXLlzctGFj+PSwO5GR0HTl8hUw
iTP78qXLZCuMeYraa1evQjum0yJHrmaNmzx9+jRNEx7h6IJ581ELaaSvZaxdI+lViYn7/fv2YyqH
oUkTJmgLDYFaUqmdTQdO92Rxq+qW2vdKeWWkuX7ITlRwdgydFsJIX6sQz9hfvyZ9Nqxf38qyhlgu
hFrAPRzlUEjsZfv2e+/efdS1alC+a+cOZweH9evW37x5UziWhYh0wCudHv/1WGcnZ8xjFsj6Fy9I
bzMrjVODcjhavUoV0krWf387ZtQoQ5K6QNJ0aCxsx2X4ytl+dInOfmsPXlCUffwYcf525a5TKU8j
mbv9GIsOYz2D1urlKKAwISEx4kCEp7s7kyQ+f2IDwFaVx7rW1riVi3zJLr5KhYrsJps2anzj+g1O
XW1btWJVsmnbVnw6omg0AASYlUD/gCIFCpBK0aN7wOde5FEtR3XzKPdS+ieJZpW+/IYl6lq9EAKr
VqxEp/S90tx5enTtRkeSXsFR+ase0lsT5cu3b9PGw9XVrXNncXVxc7PrYFO1UiWoU792nX17U62/
3Gs5mv27rH37GOMoB4A8OXKQDhj7T3XrOdnbIz9pwkSvXr1aNm1GYSn5y/neffqIX4wpLXVAlZaj
P3z73RfMo3ltxmT4yt5mZGkX/6OX7gpdtx+9aDZkbs52o/K0TyuZu91oiw5jPIPWGOIoEEpIF2fP
nA0Lnd6zW7eWzZrhLLxWoWzZSuXKk/wgoouT06ABAzjFH/v1GEn03NlzcLeLu8f6dcrXPhR1hoEM
+axbly6osrez035qqlTLAuydyVXODvZO9p2YvCOHDuvKRN6+jRL7jh2npXx5RakzDGTu37/vO2x4
Z0cnBzs7n0GDtb8cPHvmTMcOHaCjq3Pnzo6O2CbfO4uLe0oYaSdbWzZCdyLv0ERRKqtln92/b18a
2ra3mRkerq5Vg/Irl6+wQPXu2ZMwsK5phWOrVapcvXIV65o127RsyYhmzphx5coV0irChvQAqrAZ
59Bph3btli1ZYkQ4DWTFpkKTq/3oDF/ft/It6xbw5OVrFMXEJ/YKWU9hjnaj1DLiytF2VG6b0R6B
q41wFMgmSWCvKa/t8bGxsa9eSoiOjn4Z/ZK1iULcJz6mA7Rii6n+kqJQlS6EfrGM8qg0TgEldEE9
Ekiqz9GKhIxEkr+8UHKvVKeGEFODQpoIzXSt1Uy8Uc7mT2uYGGzCmzfcAO2Kz3jZTdJE0SjrpLm2
IXpklQoUoRTQll4SEt4gGfPqFY6Nlt+r419K1J4UULToA52iSkJiIguCUmoCFNWmQZO97agMX/9q
PrxClymcXOg1cPXB3B3GfN9qZDYdMa4fWo+Epu7+6XBUQFgG0jymAVXMFiSWOPr2reTxmBhII1oZ
h6IiNZhg8d+iMNW6MqIhsyLxQCYN3dEpE6StTQPBG2lnGReHWoQpEdrU0AozEG3saaFbIkAT2AYd
BSOV0hTIKiWIR2QIdRjJjSjRC2xIxIMJCQwNg/EtByxFkQ5EE4bPuGQ/pAoM4xBtTYTmH21GZuz6
W+sR/2g90nbiMkJ6z9lbOTuO/6bF8DQy2utvrUb8s+1IR/9VpnAUIAMVli1ZOnvmTL1HdUqeP3s2
euTI3j169uzena0be4Nunp4Tx42jSlfeCBCmi8uXLo8fM8a7d2/0hBv4CIoSMvqMsDB2h909Pft6
eXE2Hztq9KOHj/QKM83z5871cHHx9PDo5+3tO3QY53qmU6/wvXv3hg4ZMrBfv/Pnz/MoZHZs2x4o
//BNiKlB4dMnT9moiJ2GUqoPd+7cCfDzZ1x9evZk18hWSleekvfJ7w9FHOzr1Qdn4gcW8QF9+4rf
hyhCKkjy798fO/orGw8kOUXMnzvPyHqSBoiZDs3/tPbN2KVpOfyv7Ub2CN90LvJx8a5TNM2GphFQ
Xwh/08a3o98K0zkqf/NydH9vb0McvXvnjs/gwVevXJ07Zy6Henx0+NAh9mRU6cobgVDl7uLC2Tzm
Vczjx4/PnD5tSAPG3Lh+Hc7BJ1LptWvXFi1YyBZTrzzCt27d8nBzY/MHNdetXlPbymrWjBl6hZly
+Sdy1j6Dh4j3Se5ERg4eOGi+/HsgRUgFCu/dvcdG0NPdQ68AoDzydqSbi0u3Lp5Pop5cvnzZ2cGx
v3df3S+1AEpIiv6T/Vo2a3771m2S6MGIg3q/pQUoZOxsnSE9M4Ul165cM7KkpAFipkOjaQmBMnQ1
G/at7Vjv2Vt/8Z2vaTFcutIIqK/mw7O09LWb/HkcHTNyVD8vL70cBWyAWEm5WbFseYUy5ZYtkd54
IvuKWtNBqwf379vZ2DRv0uTwocOsdOKsrVSnBuVPnzwZ1H+A77BhpI27d+8e2L8fC5Xq1EAYxvfz
7kuyYZHdunmLlaUlaVivcgqZ44njxtetZf3bqd943Lpli5ODg/h9tiKkAoUww6Ztuy5u7noFAOXb
tm6ta229MeX3q2gjDpVqHSAwd/bsFk2bRUVFPXv6DDN035gToJBzp1tnl44dbI8fO/467rUoFLXp
AknTodE0H5bh65tWvrnsJ2RpkbZcz9V0KGJ2k+CongjWBTLG8yiQzJeXabYEFcuWX7JosShRqk2G
UHLh3HkSUo1q1R06doJMhmhK4ZMnTwb262/XocO8uXMHDxgQ6Ocn9WpA+NGjR/379mvbqhXbgwb1
6oeFhj5/Jv0yTpFIDcpJ4Q3q1p08cSJpjJQ2Z/ZsI8JyHm1vPI+uWL68SoWKByMiuNdCqdYBVQvn
L6hepcqsmTOHDfEZ5uOj93M4AZx2/tx59lc1LS07Ozrt3bP3XZKer2/rhWSEydBomgzRNPPJ+NV0
iHSlKdS9mgzJ0tzHdsLSP4ujFPJKOUvkH+QoEA1JY+xK+3l517OuTUIVhYpECiiJevxY5FHk79+7
d+TIEWGMLhB++OAhwmwMQqaFWFW3jNif6jPMNKCKk/2EcePJjrNnziJBih/EKdWpQbkpHN2xfXu1
SpXS/IBYqdYBVXNmzWKtJ7TYeV+9fEV8xUfvAGVNktOuX73KkaB+nTppPv0yAtHWRGi+aT5U03iw
QrUvdzUayGv3kPXvP2etH+U7gv14uhyFnWVKlGJfyKOupCkga3KOZcvIFnPnjh21rWqJb3XoaqME
jsLjwQMHIh/94sWJ4ycunJc+xVAkVKDwwf0HXr37TBw/nvOTV6/ebVq2Yu+rV1iAKlJpw3r1q1So
EBwUZFzy7p27bVu1ZsE1JEb5gwcP3F1c7W3t2JbgUk73bIeMBBXb5cY//xJ5+3b869cnT5wUCViv
/Lt37+JiY/EYfiAG6lhZibeolWqjQMx0aHpP3/CvVsM1P/XTNOj/Ba+f+hVwmBBxXvmPwRRLDQMZ
abGbNHm4j0+6HF2zanUdK+tVK6SvkOlKpgua3Lt7t3ePHpzTe3Tr5tCpU8jUaWyw9KqikOVv+NCh
TRs14tjb1cPDrXPn7Sk/SlaEUkDJ40ePh/kMFWfzixcvsuiPG6P8flIRSg3K2bmy1rdu0ZLjjiEx
QBUB4OLkbOSTT4FrV6/17Na9XZs2LEoc7RcvWpSYIL0DpVSrQOGqlSurVapMXhzYr1+71q2F5boc
pfDmzZsjhg/v6uGO65zs7YMDg0z/XiVipkPzOiFxwMwtOW1GZ2vtm63tyD//ajOCq2avkA1HLn34
3aQkKoBfxJvSynNqqL3GckOWepv4Vnn+fJBHX0ZHi08KQNJbY++h0DVWSZ8rKJ8sRIt3KPWCEEJY
nO0AmYzYE/eGQNcoJD8pz4aBcpHGlGd9kCZZ/u8Enz9/Liw2kkcBzpQGJQPOCeV65cmj4iMA4Toa
0pFSlx6EVSZC+r/GE5PeRce+eREb/+Wu2PhEhklfio2mQbZQfxO114QYUJ4/H0p7FZQKfVAkUkOp
04FSLQsodybYqcilJ6kImSymhVKhD4qEChTq5ahSrYJSYQKUBqYhk/7Nhs8dxpeG2R7jkHj3xUxS
OJoJx6zcZQ6Y7TEO7PlyJpk5ahLM9hgH9nw5kzLpWm+GGVqYOWpGZoeZo2ZkdnziaKba4piNMYLM
5pwvbY+Zo+kjUxkDMptzvrQ9Cke1PYkbIMr/CLRKkpOT3+v7/rkRfJA///yawNp3KT+GFo/iBvwp
3vgTgT3GTWIg4ntbwJCkUKILUSVkTIG21ZeDhg4EIWJiYo4cObJt27a7d++KXtP0rdcUCg2V8/r2
7dujR4+Gh4cvWrTo1q1bukxVt5U1fXo0haZqeaB+TFOlhtSNCpRER0cz8MDAQOy8efOmumvxEQs3
WmFdGCoHulV6hSXVMpRnne7U92kgJAH3cXFxe/fuDQoKmj179tmzZ7VMBUJAQCvMjG/atGmPjC1b
thw6dAgaCBkga03br26hiTOVBkqFCZA4Ku4OHz7cvHnz6tWrL1y4UJ1OEuQ/1Cfs4JUqXrU3cncS
y3EHEBHMI8Lcr1y5sk2bNr/88kvDhg0dHByOy39fBnnxQbwQ41E0kTVJqrSatfey7k/QlguT1Noo
B0Kt9h4wCqZEW6UFj0+fPh0/fnzt2rUxsm7dus7OzsQV2oRCZNR6kpKS0MPQuEeAcl6REfdCIRa+
ln/4JreQxChRJ2lRIgp5lexIAbVCJzc8cqO9pxyIG9FWVIlaXjFsxowZDKG+jHbt2kE7ZIQeBHil
rSjh8f79+0OHDkXyZxkNGjQYPHiwyFBaMcCN6I5CqTMZlKvdLmSEGK/CQi14FKrUEHpMgcJRVC9Y
sKBatWpVqlQZPny4+AILWfDAgQMjR44cOHDgqlWriLDr168vXbr0xIkTv/7664oVK0iNiGHByZMn
Cdzp06dPnToVNz14IP0Xja9evXJ0dPzpp5/wFMHds2fPDRs24MeIiAh0DhkyBAYzyIcPH86aNQsN
wvQLFy6QzK5evUrv+/bto7tz585RQjKmC17XrVv322+/UX769Gl4gHIcPWzYsO3bt9OEhsuXLxeO
Rmz16tXov3HjxuTJkwcMGIDN6i+WC+M3b95cp04dV1dXssjMmTNr1qw5aNAg2pJZL1++jBgGoOfO
nTuMizF6e3vPmTPn8ePH165dw4yLFy9CXAa4Zs0a8b+RLV68GI/B+zNnzmASuQqz8cy8efMQpoRY
ZciiEMcKkwToBTHGCMt5RAPDuXdP+s+Hjx07hgOZAoZMpsSSJUuWYIMYCKCjpk2btmjRgqSIhnr1
6hFv+JNx7dixAyNZLtavX79//34RP8zFqVOnmC9BUBTyCPNogm0ogV7C/rCwsODgYEaNAB4TUwNP
cBQm0YTFB/4gNm3aNG4oJNPhTKaMMdI7MvQoe12BbLJJUPajeLx///4tW7bs0aMHCY8ZQsvu3bub
NGnCAFq3bk2KZS4ZYaNGjaZMmeLn50fJTvk7rQyeksqVKxPB1JI4mVTK8Yi9vb2VldXGjRsx8eXL
l7gGncg0a9aMvqytrXElo61QoQJjIxYBs45zKSck4DG+YxY7d+5MgqcLGE+sM3JyHh4h9yOMQixk
emDJ1q1ba9So4e/vjx/nz59PLoGXMJgeGZqNjQ3kkEes5B7E0INyPMvjlStXOnToQHcUMtlQjXCF
oHZ2dsTJuHHj6Mjd3b19+/ZMLfrpdNmyZYyOOOnYsSNswDOYZGtry+jQQyDRqnz58riRFIAewht3
kQswG/f26tVL+zek8SRmlCxZEmsRo4SR0hb2QBdchD9xJuFUrFgx2lpaWjJZ8AZJhrN27Vr8M0n+
24eEiqenJzIUkh3o6/z587dv33ZycvLx8YmN/fT3AWE5w2HWCEgembWxY8cWLFiQvmAFSWT06NHl
ypVDM/bjTzIUnGvcuDEEAHTBI/NVq1Yt1iJKXFxcfH19SU/IV61alXJMImGhXOJmCuTOTYLCUSIb
F0+YMIEcwHiYbBZHbMULIhXBJCKYe3xNZAQEBDCFWo6SpUg/ISEhTAmpggClnOknJWA3wMonT55Q
woDRiTYSJ4yBNzidCaOtlqOsPgQDfoSOzDcBQzrp168fboJwZBrM457tI2oJDBID+R7vdOvWDWeh
DergODIQXGFq6YgJYw6wjSTBfGOecJPgKHwiEnhkZcC5TDyF+AFTSQl05+HhQepi2gCTRGImYcMn
tjEwlUTIxNOQe/rCDCaeVMT8ERJUYSQWQmsmDJmJEyfiRrFEQFCRMsGjR49ITgwZjpK0KCEwihcv
Tjzjsblz55IX8QyvBBJt6QILBSkZDnZCHXrhkdCC/ZiHQ0j8hQsXZjYPHjwIX4lYaokrgMMZCxwl
9gRH8Q9BiJ24jsyNf8gUzAjTRF7EEvzQp08f7MfDtN21axczAm1IDXQhRgRhaEs8QBIM4JGFWhip
BY8mQuIo2ZtkQMaCggQlXsaJwu94mV4xlMkjsTGReAE+YSijwj6aw1EeyZe9e/cm4tV/M5jECauI
UZIB0U8kiA0QAYqDvLy8iEvGgKNpKDgKsRg/zICjGAAXcQQBI6KCcwBqyejkUTg6YsQIppOcwey6
ublhOVFBFWt3ly5diGbcjTAhBHG7d+9OYGgJKtzE0JhpOMrGg0eMh2oQkUImiVboIVR4hRyhoaEM
k1zIdgU95GxI0LZtWyKNTsmazCI2jBkzhoGwRDI6kii0Y8gwknK8xxkFd1GCKxis2C8J4B9GQRO2
JTADF+Eccjydwi2a42FK6IixCHl8xQJIdzySMpkvwVF8QhPBUXZWJEJiGHZCL7I49KKWe3gJw0hP
rVq1EhwVAYkNXbt2JYuz+pFWsBa1GMDY8QxBiA3MC5QgN5OSGB0+pAkxSQyjhzAgNvAk4cojED7X
QhSaAomj9EEGZcFltOyioAVGYDFzDL1IGEwzVrKAEi6UCI5yQ3DTnNkSHBVJXv3zcNhPAEEg3ESc
QSlWT9xKAEDfvn37ajkqPAsER+mRGRKEZpDcky2go1jXqCWi4ChqcT27wKioKDwLXch/nTp1YjLI
DSw0uBJaQ3dyP01gOcQSHQnAUZiHAXiZRyYMjjITTCQ8YL9FMoCpNGRfwcKHB+ABKRazCSRMIrXA
YJQLjsJsJpixs1jDVyaY7IJzGFSlSpXwM9ZiOWsL+rGKmRaWgCVLlqCH3Imj8AxTwEhhD8OBRjgQ
VkFxLUfxBmpZYfAzj3AUUrJx5J61lTxK5OBPbID68J6ZxZ8Yyd4ddzHLTC6bXcZLL6yTDHDUqFEI
4w2yNRpwCJNLnEBB/ID9NMEMhkx0sZJgAHxgccByjKQvAhgDCBLEmAuxk5FpmQoUmgiJo5CAYeNB
ZgLmsWrjILwD4ZgPcg8CzByOwyYEWD2xmzzKUBkVSxWms5yxl4d8xJZwGZPBxpmJRAbiooo4g6N4
inTF0o+bSK4IsHFhnOiBi8wTfiRhM0jcysJH72igCzSIGGWekGGmmX5mBW04DnLAJ3rEUxjPWlmk
SBEGQj7DEgzjWAOhCW7uoaYwkkWA1AubiQHChsHiBCaAFMIUklxZYfAMax/k5iCMkexncD15CAMg
KB0xzaQ9JpUcQ5zAbJzAuKiFhawGpE8UUkUqwhjGQhWk5x6FIguyESTjkvDIPQyKpYBlDT9AINIe
zGOPiANxMh2xdcEn3MN+ApXmgOnAtzCD5Ed6Qw9zxBpNqDN3bDZQxaLP3NEXFuIHnAA1MQxJmjBA
mAABaMuk4EmWbNIW1mIzIYcevI0PSQHc4C5kWHVZBumaRINOwoO0xfxCcXq8dEn6w4IKMVUQNpsC
6VyP9wkUVl4CNzIyEncwJaytTB7Mw2icTkSSHihhq8cgkSGwSCeYSMyxmBLljAT34UcROmQvBoMG
8iVxjwaSEBSEdizBzDHTwKhIxhyGiELCgCkk7gkDuCUOTPTOZACqeMRlaGbZpTtsYBZxKERntaUW
opPesJBQ5mjPpg1ywDMsZwiEFp6FMWw/GB0bL9kDUjbClZAeGcjHDUbCMKaEjggVRoTNsJ95wip6
oYoNAH7AAxhMaKEWJXgSiqCBIeMNuoMZ5DlKoALyTCSkYUUiKggq3EXiIVdhBntuwoMSFHLwIiDp
ghyPK44ePUoQMi68TXwSimXKlGHUyJDICUgxEFIy0QW36BEPszgwTCjCzFJCPDB9rJbwTBwYBIRm
8ige48yHxwgAVnySNyFN1JFWIDGeZ21hEvE5jCQ2mFOGiWewlkCFM9iD/cwFqYQ4IchpKPwseKmG
6N0UaFiLmUWooF0E2YBCIBhAMsetGErH9EdGIVKZSIIbKjBzuI+ZIM8z6wjgdGzCg9rQgawkY2IU
78NjYhfvoJmGqGVe2QbgIzwLOZhRIp5OYQaqaEIgEqmoggRQBEeLPROuxI9MNpse+IeL6RdPPXjw
gGMBYhyzCGUEcDRpj7MdxyCoT8oho2MtIxIbFYAHOHUxqWJzyVKIkazUjHTPnj0IsO1mFEwS/TIx
0AIiQikigUlCOeYRbPSF8XRHLbPFcJhpoovtBwMhdXFi4wbasRyxL2LI+AEnkBfohR7FqoLluIXk
hAGs+yy+9EWuxWwClexLysc58BVjmDVxHAHIYCQUIXLgHBpIZiQ2PIPP2dOT7wkJBohVyAuiUEhH
EJeTDXSH0Iya/Iq1jIiAhOhEC4HEgkYtO06mDEuwgbTCiOADmZ4bsi8jYhSsXXQBeVgZxOhkWqaC
ZLFp0DAwFj404hpRhH04nSGhSAyM3R4CLIu4gxJxgwxzSbKkOSU8smxRwiuqtHZQjpUsIuI9OcAN
jxRSxSMGaNtyQyuai3cfUY4AJcjQBV1jmxBAUswNhWjDgwjwKKqEAQhTS1tumCqxu0eMJRLfia2t
AMJwiDwEOYRaMUBxjzZsRgmqxDLKq9AvZIQPRV+UE4qowmk0pDlVYlyAG8SEw7VDFq0wTLhOMkhu
hQyvdC0KhRnilYbatlQJ5eKG3gkVkiJtRQnyQBaRflIHxL0AGjAJMByq0MmNaCjKacurMFI8ckPv
dMEigzyWC3dpCSB8om6oC7owEZ8+ZwKf29gI9KrSW5gu0rQydJ8GhqqYBnIz2Qj38Sip1pFUl+jW
6sKIjCnNQbo9Gu9CC6VIH9S1QlhAKUoNQ+WmQ61B7ictlDoTIHHUOBBS7jIK0ZPyIEO3RBfpCmhh
ijYgZAhrUhGvuk1MUQJM7+s/BXr/Cgb8wS6EkaYgfY7+/4MYufJgxn8IYhZMwX8jR83IDFAIaAKU
z0LNMCPTwsxRMzI7zBw1I7PDzFEzMjvMHDUjc+Pjx/8FmI4ILOPWvl0AAAAASUVORK5CYII=
--_004_5F63DC695B58C44DBF1DB0996C2AB9A77E50B9CORPEXCH01catalys_--
More information about the Open-ils-dev
mailing list