From 470dc00686c3667dfbbb05c68822c0b3c37e8dcb Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:16:30 +0200 Subject: [PATCH] [docx] split commit for file 4600 Signed-off-by: Ari Archer --- .../filters/EarlybirdTimeRangeFilter.docx | Bin 0 -> 39648 bytes .../filters/EarlybirdTimeRangeFilter.java | 205 ----- .../FullArchiveProtectedOperatorFilter.docx | Bin 0 -> 38900 bytes .../FullArchiveProtectedOperatorFilter.java | 167 ---- .../FullArchiveServingRangeProvider.docx | Bin 0 -> 37436 bytes .../FullArchiveServingRangeProvider.java | 64 -- .../InitializeRequestContextFilter.docx | Bin 0 -> 37487 bytes .../InitializeRequestContextFilter.java | 66 -- ...IsUserProtectedMetadataTrackingFilter.docx | Bin 0 -> 37666 bytes ...IsUserProtectedMetadataTrackingFilter.java | 80 -- .../filters/MarkTweetSourceFilter.docx | Bin 0 -> 37290 bytes .../filters/MarkTweetSourceFilter.java | 49 -- .../filters/MetadataTrackingFilter.docx | Bin 0 -> 38132 bytes .../filters/MetadataTrackingFilter.java | 119 --- .../NamedMultiTermDisjunctionStatsFilter.docx | Bin 0 -> 37381 bytes .../NamedMultiTermDisjunctionStatsFilter.java | 45 -- .../filters/NullcastTrackingFilter.docx | Bin 0 -> 37653 bytes .../filters/NullcastTrackingFilter.java | 81 -- .../PostCacheRequestTypeCountFilter.docx | Bin 0 -> 36792 bytes .../PostCacheRequestTypeCountFilter.java | 10 - .../PreCacheRequestTypeCountFilter.docx | Bin 0 -> 36790 bytes .../PreCacheRequestTypeCountFilter.java | 10 - .../filters/QueryLangStatFilter.docx | Bin 0 -> 37955 bytes .../filters/QueryLangStatFilter.java | 114 --- .../filters/QueryOperatorStatFilter.docx | Bin 0 -> 38654 bytes .../filters/QueryOperatorStatFilter.java | 194 ----- .../filters/QueryTokenizerFilter.docx | Bin 0 -> 37976 bytes .../filters/QueryTokenizerFilter.java | 92 --- .../filters/RealtimeServingRangeProvider.docx | Bin 0 -> 37304 bytes .../filters/RealtimeServingRangeProvider.java | 60 -- .../RejectRequestsByQuerySourceFilter.docx | Bin 0 -> 37974 bytes .../RejectRequestsByQuerySourceFilter.java | 94 --- ...equestContextToEarlybirdRequestFilter.docx | Bin 0 -> 37166 bytes ...equestContextToEarlybirdRequestFilter.java | 33 - .../filters/RequestResultStatsFilter.docx | Bin 0 -> 38412 bytes .../filters/RequestResultStatsFilter.java | 185 ----- .../filters/RequestSuccessStatsFilter.docx | Bin 0 -> 37574 bytes .../filters/RequestSuccessStatsFilter.java | 79 -- .../filters/RequestTypeCountFilter.docx | Bin 0 -> 37943 bytes .../filters/RequestTypeCountFilter.java | 105 --- .../filters/ResponseCodeStatFilter.docx | Bin 0 -> 37244 bytes .../filters/ResponseCodeStatFilter.java | 50 -- .../filters/ResultTierCountFilter.docx | Bin 0 -> 38159 bytes .../filters/ResultTierCountFilter.java | 114 --- ...rGatherWithExperimentRedirectsService.docx | Bin 0 -> 37327 bytes ...rGatherWithExperimentRedirectsService.java | 59 -- .../SearchPayloadSizeLocalContextFilter.docx | Bin 0 -> 37398 bytes .../SearchPayloadSizeLocalContextFilter.java | 43 -- .../SensitiveResultsTrackingFilter.docx | Bin 0 -> 38199 bytes .../SensitiveResultsTrackingFilter.java | 140 ---- .../ServiceExceptionHandlingFilter.docx | Bin 0 -> 37067 bytes .../ServiceExceptionHandlingFilter.java | 27 - .../ServiceResponseValidationFilter.docx | Bin 0 -> 37605 bytes .../ServiceResponseValidationFilter.java | 81 -- .../filters/ServingRangeProvider.docx | Bin 0 -> 36878 bytes .../filters/ServingRangeProvider.java | 12 - .../StratoAttributionClientIdFilter.docx | Bin 0 -> 37110 bytes .../StratoAttributionClientIdFilter.java | 30 - .../TopLevelExceptionHandlingFilter.docx | Bin 0 -> 37015 bytes .../TopLevelExceptionHandlingFilter.java | 24 - .../filters/UnsetSuperRootFieldsFilter.docx | Bin 0 -> 37062 bytes .../filters/UnsetSuperRootFieldsFilter.java | 30 - .../filters/VeryRecentTweetsFilter.docx | Bin 0 -> 37201 bytes .../filters/VeryRecentTweetsFilter.java | 44 -- .../search/earlybird_root/img/serving.png | Bin 60951 -> 0 bytes .../mergers/AccumulatedResponses.docx | Bin 0 -> 38381 bytes .../mergers/AccumulatedResponses.java | 176 ----- .../search/earlybird_root/mergers/BUILD | 26 - .../search/earlybird_root/mergers/BUILD.docx | Bin 0 -> 36964 bytes .../EarlyTerminateTierMergePredicate.docx | Bin 0 -> 36853 bytes .../EarlyTerminateTierMergePredicate.java | 9 - .../EarlybirdResponseDebugMessageBuilder.docx | Bin 0 -> 38609 bytes .../EarlybirdResponseDebugMessageBuilder.java | 176 ----- .../mergers/EarlybirdResponseMerger.docx | Bin 0 -> 44060 bytes .../mergers/EarlybirdResponseMerger.java | 604 --------------- .../mergers/FacetResponseMerger.docx | Bin 0 -> 40573 bytes .../mergers/FacetResponseMerger.java | 353 --------- .../mergers/PartitionResponseAccumulator.docx | Bin 0 -> 37202 bytes .../mergers/PartitionResponseAccumulator.java | 44 -- .../mergers/RecencyResponseMerger.docx | Bin 0 -> 43728 bytes .../mergers/RecencyResponseMerger.java | 638 --------------- .../mergers/RelevanceResponseMerger.docx | Bin 0 -> 40076 bytes .../mergers/RelevanceResponseMerger.java | 268 ------- .../mergers/ResponseAccumulator.docx | Bin 0 -> 39854 bytes .../mergers/ResponseAccumulator.java | 356 --------- .../mergers/StrictRecencyResponseMerger.docx | Bin 0 -> 40591 bytes .../mergers/StrictRecencyResponseMerger.java | 297 ------- .../mergers/SuperRootResponseMerger.docx | Bin 0 -> 44108 bytes .../mergers/SuperRootResponseMerger.java | 688 ----------------- .../mergers/TermStatisticsResponseMerger.docx | Bin 0 -> 37845 bytes .../mergers/TermStatisticsResponseMerger.java | 90 --- .../mergers/ThriftTermResultsMerger.docx | Bin 0 -> 42580 bytes .../mergers/ThriftTermResultsMerger.java | 472 ------------ .../mergers/TierResponseAccumulator.docx | Bin 0 -> 37682 bytes .../mergers/TierResponseAccumulator.java | 97 --- .../mergers/TopTweetsResponseMerger.docx | Bin 0 -> 37505 bytes .../mergers/TopTweetsResponseMerger.java | 65 -- .../earlybird_root/mergers/TrimStats.docx | Bin 0 -> 37152 bytes .../earlybird_root/mergers/TrimStats.java | 71 -- .../twitter/search/earlybird_root/quota/BUILD | 15 - .../search/earlybird_root/quota/BUILD.docx | Bin 0 -> 36832 bytes .../quota/ClientIdQuotaManager.docx | Bin 0 -> 36996 bytes .../quota/ClientIdQuotaManager.java | 22 - .../quota/ConfigBasedQuotaConfig.docx | Bin 0 -> 38848 bytes .../quota/ConfigBasedQuotaConfig.java | 161 ---- .../quota/ConfigRepoBasedQuotaManager.docx | Bin 0 -> 37442 bytes .../quota/ConfigRepoBasedQuotaManager.java | 65 -- .../earlybird_root/quota/QuotaInfo.docx | Bin 0 -> 37347 bytes .../earlybird_root/quota/QuotaInfo.java | 78 -- ...tractRecencyAndRelevanceRequestRouter.docx | Bin 0 -> 41336 bytes ...tractRecencyAndRelevanceRequestRouter.java | 442 ----------- .../search/earlybird_root/routers/BUILD | 25 - .../search/earlybird_root/routers/BUILD.docx | Bin 0 -> 36958 bytes .../routers/FacetsRequestRouter.docx | Bin 0 -> 37143 bytes .../routers/FacetsRequestRouter.java | 35 - .../routers/FacetsRequestRouterModule.docx | Bin 0 -> 37135 bytes .../routers/FacetsRequestRouterModule.java | 33 - .../routers/RecencyRequestRouter.docx | Bin 0 -> 37642 bytes .../routers/RecencyRequestRouter.java | 73 -- .../routers/RecencyRequestRouterModule.docx | Bin 0 -> 37322 bytes .../routers/RecencyRequestRouterModule.java | 74 -- .../routers/RelevanceRequestRouter.docx | Bin 0 -> 38079 bytes .../routers/RelevanceRequestRouter.java | 100 --- .../routers/RelevanceRequestRouterModule.docx | Bin 0 -> 37323 bytes .../routers/RelevanceRequestRouterModule.java | 74 -- .../earlybird_root/routers/RequestRouter.docx | Bin 0 -> 38124 bytes .../earlybird_root/routers/RequestRouter.java | 144 ---- .../routers/RequestRouterUtil.docx | Bin 0 -> 38085 bytes .../routers/RequestRouterUtil.java | 107 --- .../routers/TermStatsRequestRouter.docx | Bin 0 -> 39481 bytes .../routers/TermStatsRequestRouter.java | 238 ------ .../routers/TermStatsRequestRouterModule.docx | Bin 0 -> 37369 bytes .../routers/TermStatsRequestRouterModule.java | 60 -- .../routers/TopTweetsRequestRouter.docx | Bin 0 -> 37146 bytes .../routers/TopTweetsRequestRouter.java | 35 - .../routers/TopTweetsRequestRouterModule.docx | Bin 0 -> 37139 bytes .../routers/TopTweetsRequestRouterModule.java | 32 - .../search/earlybird_root/validators/BUILD | 9 - .../earlybird_root/validators/BUILD.docx | Bin 0 -> 36773 bytes .../validators/FacetsResponseValidator.docx | Bin 0 -> 37095 bytes .../validators/FacetsResponseValidator.java | 39 - .../PassThroughResponseValidator.docx | Bin 0 -> 36848 bytes .../PassThroughResponseValidator.java | 12 - .../validators/SearchResultsValidator.docx | Bin 0 -> 37148 bytes .../validators/SearchResultsValidator.java | 37 - .../validators/ServiceResponseValidator.docx | Bin 0 -> 36793 bytes .../validators/ServiceResponseValidator.java | 10 - .../validators/TermStatsResultsValidator.docx | Bin 0 -> 37008 bytes .../validators/TermStatsResultsValidator.java | 23 - .../validators/TopTweetsResultsValidator.docx | Bin 0 -> 36999 bytes .../validators/TopTweetsResultsValidator.java | 22 - .../search/earlybird_root/visitors/BUILD | 13 - .../search/earlybird_root/visitors/BUILD.docx | Bin 0 -> 36828 bytes ...ltiTermDisjunctionPerPartitionVisitor.docx | Bin 0 -> 38314 bytes ...ltiTermDisjunctionPerPartitionVisitor.java | 136 ---- .../search/feature_update_service/BUILD | 86 --- .../search/feature_update_service/BUILD.docx | Bin 0 -> 37538 bytes .../FeatureUpdateController.docx | Bin 0 -> 39967 bytes .../FeatureUpdateController.java | 245 ------ .../FeatureUpdateResponseClassifier.docx | Bin 0 -> 37351 bytes .../FeatureUpdateResponseClassifier.java | 43 -- .../FeatureUpdateServiceThriftServer.docx | Bin 0 -> 38697 bytes .../FeatureUpdateServiceThriftServer.java | 149 ---- .../FeatureUpdateServiceThriftServerMain.docx | Bin 0 -> 36861 bytes .../FeatureUpdateServiceThriftServerMain.java | 12 - .../search/feature_update_service/README.docx | Bin 0 -> 36756 bytes .../search/feature_update_service/README.md | 6 - .../feature_update_service/filters/BUILD | 22 - .../feature_update_service/filters/BUILD.docx | Bin 0 -> 36951 bytes .../filters/ClientIdWhitelistFilter.docx | Bin 0 -> 37474 bytes .../filters/ClientIdWhitelistFilter.java | 60 -- .../feature_update_service/modules/BUILD | 48 -- .../feature_update_service/modules/BUILD.docx | Bin 0 -> 37186 bytes .../modules/ClientIdWhitelistModule.docx | Bin 0 -> 37081 bytes .../modules/ClientIdWhitelistModule.java | 30 - .../modules/EarlybirdUtilModule.docx | Bin 0 -> 36896 bytes .../modules/EarlybirdUtilModule.java | 13 - .../FeatureUpdateServiceDiffyModule.docx | Bin 0 -> 37172 bytes .../FeatureUpdateServiceDiffyModule.java | 35 - .../modules/FinagleKafkaProducerModule.docx | Bin 0 -> 37457 bytes .../modules/FinagleKafkaProducerModule.java | 62 -- .../modules/FuturePoolModule.docx | Bin 0 -> 37574 bytes .../modules/FuturePoolModule.java | 57 -- .../modules/TweetypieModule.docx | Bin 0 -> 37573 bytes .../modules/TweetypieModule.java | 62 -- .../search/feature_update_service/stats/BUILD | 11 - .../feature_update_service/stats/BUILD.docx | Bin 0 -> 36820 bytes .../stats/FeatureUpdateStats.docx | Bin 0 -> 37639 bytes .../stats/FeatureUpdateStats.java | 111 --- .../search/feature_update_service/util/BUILD | 11 - .../feature_update_service/util/BUILD.docx | Bin 0 -> 36826 bytes .../util/FeatureUpdateValidator.docx | Bin 0 -> 37202 bytes .../util/FeatureUpdateValidator.java | 41 - .../feature_update_service/whitelist/BUILD | 13 - .../whitelist/BUILD.docx | Bin 0 -> 36839 bytes .../whitelist/ClientIdWhitelist.docx | Bin 0 -> 37706 bytes .../whitelist/ClientIdWhitelist.java | 77 -- src/java/com/twitter/search/img/foryou.png | Bin 91995 -> 0 bytes .../com/twitter/search/img/in-network.png | Bin 33193 -> 0 bytes src/java/com/twitter/search/img/indexing.png | Bin 38051 -> 0 bytes src/java/com/twitter/search/img/serving.png | Bin 60951 -> 0 bytes .../com/twitter/search/img/top-search.png | Bin 151902 -> 0 bytes src/java/com/twitter/search/ingester/BUILD | 30 - .../com/twitter/search/ingester/BUILD.docx | Bin 0 -> 36947 bytes .../com/twitter/search/ingester/README.docx | Bin 0 -> 37043 bytes .../com/twitter/search/ingester/README.md | 10 - .../com/twitter/search/ingester/model/BUILD | 28 - .../twitter/search/ingester/model/BUILD.docx | Bin 0 -> 37051 bytes .../search/ingester/model/IndexerStatus.docx | Bin 0 -> 36853 bytes .../search/ingester/model/IndexerStatus.java | 13 - .../model/IngesterThriftVersionedEvents.docx | Bin 0 -> 37174 bytes .../model/IngesterThriftVersionedEvents.java | 50 -- .../ingester/model/IngesterTweetEvent.docx | Bin 0 -> 36907 bytes .../ingester/model/IngesterTweetEvent.java | 19 - .../model/IngesterTwitterMessage.docx | Bin 0 -> 37486 bytes .../model/IngesterTwitterMessage.java | 73 -- .../search/ingester/model/KafkaRawRecord.docx | Bin 0 -> 36865 bytes .../search/ingester/model/KafkaRawRecord.java | 22 - .../ingester/model/PromiseContainer.docx | Bin 0 -> 36839 bytes .../ingester/model/PromiseContainer.java | 21 - .../ingester/model/VisibleTokenRatioUtil.docx | Bin 0 -> 37271 bytes .../ingester/model/VisibleTokenRatioUtil.java | 42 - .../search/ingester/pipeline/app/BUILD | 31 - .../search/ingester/pipeline/app/BUILD.docx | Bin 0 -> 37013 bytes .../app/IngesterPipelineApplication.docx | Bin 0 -> 38910 bytes .../app/IngesterPipelineApplication.java | 195 ----- .../pipeline/app/PipelineExceptionImpl.docx | Bin 0 -> 37031 bytes .../pipeline/app/PipelineExceptionImpl.java | 30 - .../pipeline/app/PipelineExceptionImplV2.docx | Bin 0 -> 37025 bytes .../pipeline/app/PipelineExceptionImplV2.java | 29 - .../app/RealtimeIngesterPipelineV2.docx | Bin 0 -> 38084 bytes .../app/RealtimeIngesterPipelineV2.java | 111 --- .../AudioSpaceCoreFetcher.docx | Bin 0 -> 37345 bytes .../AudioSpaceCoreFetcher.java | 56 -- .../AudioSpaceParticipantsFetcher.docx | Bin 0 -> 37191 bytes .../AudioSpaceParticipantsFetcher.java | 36 - .../ingester/pipeline/strato_fetchers/BUILD | 20 - .../pipeline/strato_fetchers/BUILD.docx | Bin 0 -> 36958 bytes .../strato_fetchers/NamedEntityFetcher.docx | Bin 0 -> 37359 bytes .../strato_fetchers/NamedEntityFetcher.java | 47 -- .../twitter/AsyncPinkUrlsResolver.docx | Bin 0 -> 37475 bytes .../twitter/AsyncPinkUrlsResolver.java | 67 -- .../search/ingester/pipeline/twitter/BUILD | 74 -- .../ingester/pipeline/twitter/BUILD.docx | Bin 0 -> 37559 bytes .../CollectComparableObjectsStage.docx | Bin 0 -> 38748 bytes .../CollectComparableObjectsStage.java | 176 ----- .../twitter/ComputeTweetSignatureStage.docx | Bin 0 -> 37144 bytes .../twitter/ComputeTweetSignatureStage.java | 38 - .../ConvertDelayedMessageToThriftStage.docx | Bin 0 -> 38079 bytes .../ConvertDelayedMessageToThriftStage.java | 95 --- .../twitter/ConvertMessageToThriftStage.docx | Bin 0 -> 38221 bytes .../twitter/ConvertMessageToThriftStage.java | 117 --- .../ConvertToThriftVersionedEventsStage.docx | Bin 0 -> 37590 bytes .../ConvertToThriftVersionedEventsStage.java | 83 -- .../pipeline/twitter/EventBusReaderStage.docx | Bin 0 -> 38687 bytes .../pipeline/twitter/EventBusReaderStage.java | 185 ----- .../pipeline/twitter/FieldStatExporter.docx | Bin 0 -> 38455 bytes .../pipeline/twitter/FieldStatExporter.java | 150 ---- .../FilterEventsBySafetyTypeStage.docx | Bin 0 -> 39397 bytes .../FilterEventsBySafetyTypeStage.java | 279 ------- .../FilterRetweetsAndRepliesStage.docx | Bin 0 -> 37624 bytes .../FilterRetweetsAndRepliesStage.java | 79 -- .../twitter/FilterTwitterMessageStage.docx | Bin 0 -> 37471 bytes .../twitter/FilterTwitterMessageStage.java | 77 -- .../LookupUserPropertiesBatchedStage.docx | Bin 0 -> 37309 bytes .../LookupUserPropertiesBatchedStage.java | 60 -- .../pipeline/twitter/NamedEntityHandler.docx | Bin 0 -> 37999 bytes .../pipeline/twitter/NamedEntityHandler.java | 101 --- .../PopulateCodedLocationsBatchedStage.docx | Bin 0 -> 37667 bytes .../PopulateCodedLocationsBatchedStage.java | 79 -- .../ResolveCompressedUrlsBatchedStage.docx | Bin 0 -> 40836 bytes .../ResolveCompressedUrlsBatchedStage.java | 387 ---------- .../twitter/ResolveCompressedUrlsPink.docx | Bin 0 -> 38078 bytes .../twitter/ResolveCompressedUrlsPink.java | 113 --- .../twitter/ResolveCompressedUrlsUtils.docx | Bin 0 -> 38462 bytes .../twitter/ResolveCompressedUrlsUtils.java | 116 --- .../twitter/RetrieveCardBatchedStage.docx | Bin 0 -> 40319 bytes .../twitter/RetrieveCardBatchedStage.java | 288 ------- ...RetrieveNamedEntitiesSingleTweetStage.docx | Bin 0 -> 37435 bytes ...RetrieveNamedEntitiesSingleTweetStage.java | 75 -- .../RetrieveSpaceAdminsAndTitleStage.docx | Bin 0 -> 38887 bytes .../RetrieveSpaceAdminsAndTitleStage.java | 246 ------ .../twitter/RetrieveSpaceIdsStage.docx | Bin 0 -> 37789 bytes .../twitter/RetrieveSpaceIdsStage.java | 99 --- ...ngleTweetExtractAndGeocodeLatLonStage.docx | Bin 0 -> 38020 bytes ...ngleTweetExtractAndGeocodeLatLonStage.java | 99 --- .../TextFeatureExtractionWorkersStage.docx | Bin 0 -> 38460 bytes .../TextFeatureExtractionWorkersStage.java | 148 ---- .../TextQualityEvaluationWorkerStage.docx | Bin 0 -> 38931 bytes .../TextQualityEvaluationWorkerStage.java | 181 ----- .../TextUrlsFeatureExtractionStage.docx | Bin 0 -> 37273 bytes .../TextUrlsFeatureExtractionStage.java | 53 -- .../twitter/ThriftTweetParserStage.docx | Bin 0 -> 38994 bytes .../twitter/ThriftTweetParserStage.java | 178 ----- .../ThriftVersionedEventsConverter.docx | Bin 0 -> 37940 bytes .../ThriftVersionedEventsConverter.java | 132 ---- .../twitter/TweetEventDeserializerStage.docx | Bin 0 -> 38450 bytes .../twitter/TweetEventDeserializerStage.java | 137 ---- .../pipeline/twitter/TwitterBaseStage.docx | Bin 0 -> 40541 bytes .../pipeline/twitter/TwitterBaseStage.java | 360 --------- .../twitter/TwitterBatchedBaseStage.docx | Bin 0 -> 39874 bytes .../twitter/TwitterBatchedBaseStage.java | 309 -------- .../ingester/pipeline/twitter/filters/BUILD | 13 - .../pipeline/twitter/filters/BUILD.docx | Bin 0 -> 36864 bytes .../filters/IngesterValidMessageFilter.docx | Bin 0 -> 37349 bytes .../filters/IngesterValidMessageFilter.java | 50 -- .../ingester/pipeline/twitter/kafka/BUILD | 32 - .../pipeline/twitter/kafka/BUILD.docx | Bin 0 -> 37066 bytes .../DeleteUpdateEventsKafkaProducerStage.docx | Bin 0 -> 37414 bytes .../DeleteUpdateEventsKafkaProducerStage.java | 66 -- .../twitter/kafka/KafkaConsumerStage.docx | Bin 0 -> 38939 bytes .../twitter/kafka/KafkaConsumerStage.java | 245 ------ .../twitter/kafka/KafkaProducerStage.docx | Bin 0 -> 39400 bytes .../twitter/kafka/KafkaProducerStage.java | 259 ------- .../kafka/KafkaRawRecordConsumerStage.docx | Bin 0 -> 37172 bytes .../kafka/KafkaRawRecordConsumerStage.java | 36 - ...ndReplyUpdateEventsKafkaProducerStage.docx | Bin 0 -> 37007 bytes ...ndReplyUpdateEventsKafkaProducerStage.java | 24 - ...riftVersionedEventsKafkaProducerStage.docx | Bin 0 -> 37892 bytes ...riftVersionedEventsKafkaProducerStage.java | 108 --- .../pipeline/twitter/thriftparse/BUILD | 32 - .../pipeline/twitter/thriftparse/BUILD.docx | Bin 0 -> 37138 bytes .../ThriftTweetParsingException.docx | Bin 0 -> 36766 bytes .../ThriftTweetParsingException.java | 7 - .../thriftparse/TweetEventParseHelper.docx | Bin 0 -> 44235 bytes .../thriftparse/TweetEventParseHelper.java | 727 ------------------ .../pipeline/twitter/userupdates/BUILD | 34 - .../pipeline/twitter/userupdates/BUILD.docx | Bin 0 -> 37088 bytes .../userupdates/UserUpdateIngester.docx | Bin 0 -> 39990 bytes .../userupdates/UserUpdateIngester.java | 292 ------- .../userupdates/UserUpdatesPipeline.docx | Bin 0 -> 39208 bytes .../userupdates/UserUpdatesPipeline.java | 222 ------ .../userupdates/UserUpdatesPipelineStage.docx | Bin 0 -> 37353 bytes .../userupdates/UserUpdatesPipelineStage.java | 51 -- .../search/ingester/pipeline/util/BUILD | 41 - .../search/ingester/pipeline/util/BUILD.docx | Bin 0 -> 37178 bytes .../pipeline/util/BatchedElement.docx | Bin 0 -> 36858 bytes .../pipeline/util/BatchedElement.java | 21 - .../pipeline/util/BatchingClient.docx | Bin 0 -> 37809 bytes .../pipeline/util/BatchingClient.java | 105 --- .../ingester/pipeline/util/CardFieldUtil.docx | Bin 0 -> 37344 bytes .../ingester/pipeline/util/CardFieldUtil.java | 48 -- .../pipeline/util/IngesterStageTimer.docx | Bin 0 -> 37130 bytes .../pipeline/util/IngesterStageTimer.java | 35 - .../util/ManhattanCodedLocationProvider.docx | Bin 0 -> 38207 bytes .../util/ManhattanCodedLocationProvider.java | 110 --- .../pipeline/util/PenguinVersionsUtil.docx | Bin 0 -> 37253 bytes .../pipeline/util/PenguinVersionsUtil.java | 47 -- .../util/PipelineExceptionHandler.docx | Bin 0 -> 36853 bytes .../util/PipelineExceptionHandler.java | 15 - .../pipeline/util/PipelineStageException.docx | Bin 0 -> 36836 bytes .../pipeline/util/PipelineStageException.java | 19 - .../util/PipelineStageRuntimeException.docx | Bin 0 -> 36757 bytes .../util/PipelineStageRuntimeException.java | 7 - .../ingester/pipeline/util/PipelineUtil.docx | Bin 0 -> 37163 bytes .../ingester/pipeline/util/PipelineUtil.java | 26 - .../util/PipelineV2CreationException.docx | Bin 0 -> 36757 bytes .../util/PipelineV2CreationException.java | 7 - .../util/ResponseNotReturnedException.docx | Bin 0 -> 36785 bytes .../util/ResponseNotReturnedException.java | 7 - .../pipeline/util/UserPropertiesManager.docx | Bin 0 -> 41483 bytes .../pipeline/util/UserPropertiesManager.java | 446 ----------- .../search/ingester/pipeline/wire/BUILD | 52 -- .../search/ingester/pipeline/wire/BUILD.docx | Bin 0 -> 37350 bytes .../pipeline/wire/IngesterPartitioner.docx | Bin 0 -> 37023 bytes .../pipeline/wire/IngesterPartitioner.java | 27 - .../pipeline/wire/ProductionWireModule.docx | Bin 0 -> 40690 bytes .../pipeline/wire/ProductionWireModule.java | 363 --------- .../wire/StratoMetaStoreWireModule.docx | Bin 0 -> 38201 bytes .../wire/StratoMetaStoreWireModule.java | 119 --- .../pipeline/wire/TweetyPieWireModule.docx | Bin 0 -> 38227 bytes .../pipeline/wire/TweetyPieWireModule.java | 110 --- .../ingester/pipeline/wire/WireModule.docx | Bin 0 -> 38976 bytes .../ingester/pipeline/wire/WireModule.java | 226 ------ .../twitter/search/ingester/util/jndi/BUILD | 9 - .../search/ingester/util/jndi/BUILD.docx | Bin 0 -> 36784 bytes .../search/ingester/util/jndi/JndiUtil.docx | Bin 0 -> 37550 bytes .../search/ingester/util/jndi/JndiUtil.java | 70 -- .../recap_earlybird/feature_config.docx | Bin 0 -> 37484 bytes .../configs/recap_earlybird/feature_config.py | 83 -- .../rectweet_earlybird/feature_config.docx | Bin 0 -> 37464 bytes .../rectweet_earlybird/feature_config.py | 74 -- .../timelines/scripts/models/earlybird/BUILD | 23 - .../scripts/models/earlybird/BUILD.docx | Bin 0 -> 36890 bytes .../scripts/models/earlybird/README.docx | Bin 0 -> 38531 bytes .../scripts/models/earlybird/README.md | 63 -- .../scripts/models/earlybird/__init__.docx | Bin 0 -> 36611 bytes .../scripts/models/earlybird/__init__.py | 0 .../scripts/models/earlybird/constants.docx | Bin 0 -> 36972 bytes .../scripts/models/earlybird/constants.py | 21 - .../models/earlybird/earlybird_features.png | Bin 360811 -> 0 bytes .../models/earlybird/example_weights.docx | Bin 0 -> 37297 bytes .../models/earlybird/example_weights.py | 43 -- 393 files changed, 20103 deletions(-) create mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdTimeRangeFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdTimeRangeFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/FullArchiveProtectedOperatorFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/FullArchiveProtectedOperatorFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/FullArchiveServingRangeProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/FullArchiveServingRangeProvider.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/InitializeRequestContextFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/InitializeRequestContextFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/IsUserProtectedMetadataTrackingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/IsUserProtectedMetadataTrackingFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/MarkTweetSourceFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/MarkTweetSourceFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/MetadataTrackingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/MetadataTrackingFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/NamedMultiTermDisjunctionStatsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/NamedMultiTermDisjunctionStatsFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/NullcastTrackingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/NullcastTrackingFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/PostCacheRequestTypeCountFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/PostCacheRequestTypeCountFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/PreCacheRequestTypeCountFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/PreCacheRequestTypeCountFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/QueryLangStatFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/QueryLangStatFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/QueryOperatorStatFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/QueryOperatorStatFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/QueryTokenizerFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/QueryTokenizerFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/RealtimeServingRangeProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/RealtimeServingRangeProvider.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/RejectRequestsByQuerySourceFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/RejectRequestsByQuerySourceFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestContextToEarlybirdRequestFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestContextToEarlybirdRequestFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestResultStatsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestResultStatsFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestSuccessStatsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestSuccessStatsFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestTypeCountFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/RequestTypeCountFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ResponseCodeStatFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ResponseCodeStatFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ResultTierCountFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ResultTierCountFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ScatterGatherWithExperimentRedirectsService.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ScatterGatherWithExperimentRedirectsService.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/SearchPayloadSizeLocalContextFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/SearchPayloadSizeLocalContextFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/SensitiveResultsTrackingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/SensitiveResultsTrackingFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ServiceExceptionHandlingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ServiceExceptionHandlingFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ServiceResponseValidationFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ServiceResponseValidationFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ServingRangeProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ServingRangeProvider.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/StratoAttributionClientIdFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/StratoAttributionClientIdFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/TopLevelExceptionHandlingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/TopLevelExceptionHandlingFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/UnsetSuperRootFieldsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/UnsetSuperRootFieldsFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/VeryRecentTweetsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/VeryRecentTweetsFilter.java delete mode 100644 src/java/com/twitter/search/earlybird_root/img/serving.png create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/AccumulatedResponses.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/AccumulatedResponses.java delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/EarlyTerminateTierMergePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/EarlyTerminateTierMergePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/EarlybirdResponseDebugMessageBuilder.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/EarlybirdResponseDebugMessageBuilder.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/EarlybirdResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/EarlybirdResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/FacetResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/FacetResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/PartitionResponseAccumulator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/PartitionResponseAccumulator.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/RecencyResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/RecencyResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/RelevanceResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/RelevanceResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/ResponseAccumulator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/ResponseAccumulator.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/StrictRecencyResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/StrictRecencyResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/SuperRootResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/SuperRootResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TermStatisticsResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TermStatisticsResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/ThriftTermResultsMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/ThriftTermResultsMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TierResponseAccumulator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TierResponseAccumulator.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TopTweetsResponseMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TopTweetsResponseMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TrimStats.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/mergers/TrimStats.java delete mode 100644 src/java/com/twitter/search/earlybird_root/quota/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/quota/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/quota/ClientIdQuotaManager.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/quota/ClientIdQuotaManager.java create mode 100644 src/java/com/twitter/search/earlybird_root/quota/ConfigBasedQuotaConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/quota/ConfigBasedQuotaConfig.java create mode 100644 src/java/com/twitter/search/earlybird_root/quota/ConfigRepoBasedQuotaManager.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/quota/ConfigRepoBasedQuotaManager.java create mode 100644 src/java/com/twitter/search/earlybird_root/quota/QuotaInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/quota/QuotaInfo.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/AbstractRecencyAndRelevanceRequestRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/AbstractRecencyAndRelevanceRequestRouter.java delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/routers/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouter.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouterModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouterModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouter.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouterModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouterModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouter.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouterModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouterModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/RequestRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/RequestRouter.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/RequestRouterUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/RequestRouterUtil.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouter.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouterModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouterModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouter.java create mode 100644 src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouterModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouterModule.java delete mode 100644 src/java/com/twitter/search/earlybird_root/validators/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/validators/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/validators/FacetsResponseValidator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/validators/FacetsResponseValidator.java create mode 100644 src/java/com/twitter/search/earlybird_root/validators/PassThroughResponseValidator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/validators/PassThroughResponseValidator.java create mode 100644 src/java/com/twitter/search/earlybird_root/validators/SearchResultsValidator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/validators/SearchResultsValidator.java create mode 100644 src/java/com/twitter/search/earlybird_root/validators/ServiceResponseValidator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/validators/ServiceResponseValidator.java create mode 100644 src/java/com/twitter/search/earlybird_root/validators/TermStatsResultsValidator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/validators/TermStatsResultsValidator.java create mode 100644 src/java/com/twitter/search/earlybird_root/validators/TopTweetsResultsValidator.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/validators/TopTweetsResultsValidator.java delete mode 100644 src/java/com/twitter/search/earlybird_root/visitors/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/visitors/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/visitors/MultiTermDisjunctionPerPartitionVisitor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/visitors/MultiTermDisjunctionPerPartitionVisitor.java delete mode 100644 src/java/com/twitter/search/feature_update_service/BUILD create mode 100644 src/java/com/twitter/search/feature_update_service/BUILD.docx create mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateController.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateController.java create mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateResponseClassifier.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateResponseClassifier.java create mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateServiceThriftServer.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateServiceThriftServer.java create mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateServiceThriftServerMain.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/FeatureUpdateServiceThriftServerMain.java create mode 100644 src/java/com/twitter/search/feature_update_service/README.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/README.md delete mode 100644 src/java/com/twitter/search/feature_update_service/filters/BUILD create mode 100644 src/java/com/twitter/search/feature_update_service/filters/BUILD.docx create mode 100644 src/java/com/twitter/search/feature_update_service/filters/ClientIdWhitelistFilter.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/filters/ClientIdWhitelistFilter.java delete mode 100644 src/java/com/twitter/search/feature_update_service/modules/BUILD create mode 100644 src/java/com/twitter/search/feature_update_service/modules/BUILD.docx create mode 100644 src/java/com/twitter/search/feature_update_service/modules/ClientIdWhitelistModule.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/modules/ClientIdWhitelistModule.java create mode 100644 src/java/com/twitter/search/feature_update_service/modules/EarlybirdUtilModule.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/modules/EarlybirdUtilModule.java create mode 100644 src/java/com/twitter/search/feature_update_service/modules/FeatureUpdateServiceDiffyModule.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/modules/FeatureUpdateServiceDiffyModule.java create mode 100644 src/java/com/twitter/search/feature_update_service/modules/FinagleKafkaProducerModule.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/modules/FinagleKafkaProducerModule.java create mode 100644 src/java/com/twitter/search/feature_update_service/modules/FuturePoolModule.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/modules/FuturePoolModule.java create mode 100644 src/java/com/twitter/search/feature_update_service/modules/TweetypieModule.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/modules/TweetypieModule.java delete mode 100644 src/java/com/twitter/search/feature_update_service/stats/BUILD create mode 100644 src/java/com/twitter/search/feature_update_service/stats/BUILD.docx create mode 100644 src/java/com/twitter/search/feature_update_service/stats/FeatureUpdateStats.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/stats/FeatureUpdateStats.java delete mode 100644 src/java/com/twitter/search/feature_update_service/util/BUILD create mode 100644 src/java/com/twitter/search/feature_update_service/util/BUILD.docx create mode 100644 src/java/com/twitter/search/feature_update_service/util/FeatureUpdateValidator.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/util/FeatureUpdateValidator.java delete mode 100644 src/java/com/twitter/search/feature_update_service/whitelist/BUILD create mode 100644 src/java/com/twitter/search/feature_update_service/whitelist/BUILD.docx create mode 100644 src/java/com/twitter/search/feature_update_service/whitelist/ClientIdWhitelist.docx delete mode 100644 src/java/com/twitter/search/feature_update_service/whitelist/ClientIdWhitelist.java delete mode 100644 src/java/com/twitter/search/img/foryou.png delete mode 100644 src/java/com/twitter/search/img/in-network.png delete mode 100644 src/java/com/twitter/search/img/indexing.png delete mode 100644 src/java/com/twitter/search/img/serving.png delete mode 100644 src/java/com/twitter/search/img/top-search.png delete mode 100644 src/java/com/twitter/search/ingester/BUILD create mode 100644 src/java/com/twitter/search/ingester/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/README.docx delete mode 100644 src/java/com/twitter/search/ingester/README.md delete mode 100644 src/java/com/twitter/search/ingester/model/BUILD create mode 100644 src/java/com/twitter/search/ingester/model/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/model/IndexerStatus.docx delete mode 100644 src/java/com/twitter/search/ingester/model/IndexerStatus.java create mode 100644 src/java/com/twitter/search/ingester/model/IngesterThriftVersionedEvents.docx delete mode 100644 src/java/com/twitter/search/ingester/model/IngesterThriftVersionedEvents.java create mode 100644 src/java/com/twitter/search/ingester/model/IngesterTweetEvent.docx delete mode 100644 src/java/com/twitter/search/ingester/model/IngesterTweetEvent.java create mode 100644 src/java/com/twitter/search/ingester/model/IngesterTwitterMessage.docx delete mode 100644 src/java/com/twitter/search/ingester/model/IngesterTwitterMessage.java create mode 100644 src/java/com/twitter/search/ingester/model/KafkaRawRecord.docx delete mode 100644 src/java/com/twitter/search/ingester/model/KafkaRawRecord.java create mode 100644 src/java/com/twitter/search/ingester/model/PromiseContainer.docx delete mode 100644 src/java/com/twitter/search/ingester/model/PromiseContainer.java create mode 100644 src/java/com/twitter/search/ingester/model/VisibleTokenRatioUtil.docx delete mode 100644 src/java/com/twitter/search/ingester/model/VisibleTokenRatioUtil.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/app/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/app/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/app/IngesterPipelineApplication.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/app/IngesterPipelineApplication.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/app/PipelineExceptionImpl.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/app/PipelineExceptionImpl.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/app/PipelineExceptionImplV2.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/app/PipelineExceptionImplV2.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/app/RealtimeIngesterPipelineV2.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/app/RealtimeIngesterPipelineV2.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/AudioSpaceCoreFetcher.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/AudioSpaceCoreFetcher.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/AudioSpaceParticipantsFetcher.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/AudioSpaceParticipantsFetcher.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/NamedEntityFetcher.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/strato_fetchers/NamedEntityFetcher.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/AsyncPinkUrlsResolver.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/AsyncPinkUrlsResolver.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/CollectComparableObjectsStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/CollectComparableObjectsStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ComputeTweetSignatureStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ComputeTweetSignatureStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ConvertDelayedMessageToThriftStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ConvertDelayedMessageToThriftStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ConvertMessageToThriftStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ConvertMessageToThriftStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ConvertToThriftVersionedEventsStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ConvertToThriftVersionedEventsStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/EventBusReaderStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/EventBusReaderStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FieldStatExporter.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FieldStatExporter.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FilterEventsBySafetyTypeStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FilterEventsBySafetyTypeStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FilterRetweetsAndRepliesStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FilterRetweetsAndRepliesStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FilterTwitterMessageStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/FilterTwitterMessageStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/LookupUserPropertiesBatchedStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/LookupUserPropertiesBatchedStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/NamedEntityHandler.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/NamedEntityHandler.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/PopulateCodedLocationsBatchedStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/PopulateCodedLocationsBatchedStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ResolveCompressedUrlsBatchedStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ResolveCompressedUrlsBatchedStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ResolveCompressedUrlsPink.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ResolveCompressedUrlsPink.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ResolveCompressedUrlsUtils.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ResolveCompressedUrlsUtils.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveCardBatchedStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveCardBatchedStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveNamedEntitiesSingleTweetStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveNamedEntitiesSingleTweetStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveSpaceAdminsAndTitleStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveSpaceAdminsAndTitleStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveSpaceIdsStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/RetrieveSpaceIdsStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/SingleTweetExtractAndGeocodeLatLonStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/SingleTweetExtractAndGeocodeLatLonStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TextFeatureExtractionWorkersStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TextFeatureExtractionWorkersStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TextQualityEvaluationWorkerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TextQualityEvaluationWorkerStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TextUrlsFeatureExtractionStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TextUrlsFeatureExtractionStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ThriftTweetParserStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ThriftTweetParserStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ThriftVersionedEventsConverter.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/ThriftVersionedEventsConverter.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TweetEventDeserializerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TweetEventDeserializerStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TwitterBaseStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TwitterBaseStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TwitterBatchedBaseStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/TwitterBatchedBaseStage.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/filters/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/filters/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/filters/IngesterValidMessageFilter.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/filters/IngesterValidMessageFilter.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/DeleteUpdateEventsKafkaProducerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/DeleteUpdateEventsKafkaProducerStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/KafkaConsumerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/KafkaConsumerStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/KafkaProducerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/KafkaProducerStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/KafkaRawRecordConsumerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/KafkaRawRecordConsumerStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/RetweetAndReplyUpdateEventsKafkaProducerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/RetweetAndReplyUpdateEventsKafkaProducerStage.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/TweetThriftVersionedEventsKafkaProducerStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/kafka/TweetThriftVersionedEventsKafkaProducerStage.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/thriftparse/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/thriftparse/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/thriftparse/ThriftTweetParsingException.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/thriftparse/ThriftTweetParsingException.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/thriftparse/TweetEventParseHelper.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/thriftparse/TweetEventParseHelper.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/UserUpdateIngester.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/UserUpdateIngester.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/UserUpdatesPipeline.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/UserUpdatesPipeline.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/UserUpdatesPipelineStage.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/twitter/userupdates/UserUpdatesPipelineStage.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/BatchedElement.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/BatchedElement.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/BatchingClient.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/BatchingClient.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/CardFieldUtil.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/CardFieldUtil.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/IngesterStageTimer.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/IngesterStageTimer.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/ManhattanCodedLocationProvider.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/ManhattanCodedLocationProvider.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PenguinVersionsUtil.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PenguinVersionsUtil.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineExceptionHandler.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineExceptionHandler.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineStageException.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineStageException.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineStageRuntimeException.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineStageRuntimeException.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineUtil.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineUtil.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineV2CreationException.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/PipelineV2CreationException.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/ResponseNotReturnedException.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/ResponseNotReturnedException.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/util/UserPropertiesManager.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/util/UserPropertiesManager.java delete mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/BUILD create mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/IngesterPartitioner.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/IngesterPartitioner.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/ProductionWireModule.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/ProductionWireModule.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/StratoMetaStoreWireModule.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/StratoMetaStoreWireModule.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/TweetyPieWireModule.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/TweetyPieWireModule.java create mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/WireModule.docx delete mode 100644 src/java/com/twitter/search/ingester/pipeline/wire/WireModule.java delete mode 100644 src/java/com/twitter/search/ingester/util/jndi/BUILD create mode 100644 src/java/com/twitter/search/ingester/util/jndi/BUILD.docx create mode 100644 src/java/com/twitter/search/ingester/util/jndi/JndiUtil.docx delete mode 100644 src/java/com/twitter/search/ingester/util/jndi/JndiUtil.java create mode 100644 src/python/twitter/deepbird/projects/timelines/configs/recap_earlybird/feature_config.docx delete mode 100644 src/python/twitter/deepbird/projects/timelines/configs/recap_earlybird/feature_config.py create mode 100644 src/python/twitter/deepbird/projects/timelines/configs/rectweet_earlybird/feature_config.docx delete mode 100644 src/python/twitter/deepbird/projects/timelines/configs/rectweet_earlybird/feature_config.py delete mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/BUILD create mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/BUILD.docx create mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/README.docx delete mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/README.md create mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/__init__.docx delete mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/__init__.py create mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/constants.docx delete mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/constants.py delete mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/earlybird_features.png create mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/example_weights.docx delete mode 100644 src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird/example_weights.py diff --git a/src/java/com/twitter/search/earlybird_root/filters/EarlybirdTimeRangeFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/EarlybirdTimeRangeFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..13998018a987106b354ad04b3f9c8d014bce76f5 GIT binary patch literal 39648 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

&9us+&&y1V^#!zRJ4c{g7i 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 { - - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdTimeRangeFilter.class); - - private static final EarlybirdResponse ERROR_RESPONSE = - new EarlybirdResponse(EarlybirdResponseCode.PERSISTENT_ERROR, 0) - .setSearchResults(new ThriftSearchResults()); - - private final ServingRangeProvider servingRangeProvider; - private final Optional queryRewriter; - - private static final Map FAILED_REQUESTS; - static { - final Map tempMap = - Maps.newEnumMap(EarlybirdRequestType.class); - for (EarlybirdRequestType requestType : EarlybirdRequestType.values()) { - tempMap.put(requestType, SearchCounter.export( - "time_range_filter_" + requestType.getNormalizedName() + "_failed_requests")); - } - FAILED_REQUESTS = Collections.unmodifiableMap(tempMap); - } - - public static EarlybirdTimeRangeFilter newTimeRangeFilterWithQueryRewriter( - ServingRangeProvider servingRangeProvider, - SearchDecider decider) { - - return new EarlybirdTimeRangeFilter(servingRangeProvider, - Optional.of(new EarlybirdTimeFilterQueryRewriter(servingRangeProvider, decider))); - } - - public static EarlybirdTimeRangeFilter newTimeRangeFilterWithoutQueryRewriter( - ServingRangeProvider servingRangeProvider) { - - return new EarlybirdTimeRangeFilter(servingRangeProvider, Optional.empty()); - } - - /** - * Construct a filter that avoids forwarding requests to unrelated tiers - * based on requests' since / until / since_id / max_id. - * @param provider Holds the boundary information. - */ - EarlybirdTimeRangeFilter( - ServingRangeProvider provider, - Optional rewriter) { - - this.servingRangeProvider = provider; - this.queryRewriter = rewriter; - } - - public ServingRangeProvider getServingRangeProvider() { - return servingRangeProvider; - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - - Query parsedQuery = requestContext.getParsedQuery(); - if (parsedQuery != null) { - // Only perform filtering if serialized query is set. - try { - IdTimeRanges queryRanges = IdTimeRanges.fromQuery(parsedQuery); - if (queryRanges == null) { - // No time ranges in query. - return issueServiceRequest(service, requestContext); - } - - ServingRange servingRange = - servingRangeProvider.getServingRange( - requestContext, requestContext.useOverrideTierConfig()); - - if (queryDoesNotOverlapWithServingRange(queryRanges, servingRange)) { - return Future.value(tierSkippedResponse(requestContext.getEarlybirdRequestType(), - servingRange)); - } else { - return issueServiceRequest(service, requestContext); - } - } catch (QueryParserException e) { - LOG.warn("Unable to get IdTimeRanges from query: " + parsedQuery.serialize()); - // The failure here is not due to a miss-formed query from the client, since we already - // were able to successfully get a parsed Query from the request. - // If we can't determine the time ranges, pass the query along to the tier, and just - // restrict it to the timeranges of the tier. - return issueServiceRequest(service, requestContext); - } - } else { - // There's no serialized query. Just pass through like an identity filter. - return issueServiceRequest(service, requestContext); - } - } - - private boolean queryDoesNotOverlapWithServingRange(IdTimeRanges queryRanges, - ServingRange servingRange) { - // As long as a query overlaps with the tier serving range on either side, - // the request is not filtered. I.e. we want to be conservative when doing this filtering, - // because it is just an optimization. We ignore the inclusiveness / exclusiveness of the - // boundaries. If the tier boundary and the query boundry happen to be the same, we do not - // filter the request. - return queryRanges.getSinceIDExclusive().or(0L) - > servingRange.getServingRangeMaxId() - || queryRanges.getMaxIDInclusive().or(Long.MAX_VALUE) - < servingRange.getServingRangeSinceId() - || queryRanges.getSinceTimeInclusive().or(0) - > servingRange.getServingRangeUntilTimeSecondsFromEpoch() - || queryRanges.getUntilTimeExclusive().or(Integer.MAX_VALUE) - < servingRange.getServingRangeSinceTimeSecondsFromEpoch(); - } - - private Future issueServiceRequest( - Service service, - EarlybirdRequestContext requestContext) { - - try { - EarlybirdRequestContext request = requestContext; - if (queryRewriter.isPresent()) { - request = queryRewriter.get().rewriteRequest(requestContext); - } - return service.apply(request); - } catch (QueryParserException e) { - FAILED_REQUESTS.get(requestContext.getEarlybirdRequestType()).increment(); - String msg = "Failed to add time filter operators"; - LOG.error(msg, e); - - // Note that in this case it is not clear whether the error is the client's fault or our - // fault, so we don't necessarily return a CLIENT_ERROR here. - // Currently this actually returns a PERSISTENT_ERROR. - if (requestContext.getRequest().getDebugMode() > 0) { - return Future.value( - ERROR_RESPONSE.deepCopy().setDebugString(msg + ": " + e.getMessage())); - } else { - return Future.value(ERROR_RESPONSE); - } - } - } - - /** - * Creates a tier skipped response, based on the given request type. - * - * For recency, relevance, facets and top tweets requests, this method returns a SUCCESS response - * with no search results and the minSearchedStatusID and maxSearchedStatusID appropriately set. - * For term stats response, it returns a TIER_SKIPPED response, but we need to revisit this. - * - * @param requestType The type of the request. - * @param servingRange The serving range of the tier that we're skipping. - */ - @VisibleForTesting - public static EarlybirdResponse tierSkippedResponse( - EarlybirdRequestType requestType, - ServingRange servingRange) { - String debugMessage = - "Tier skipped because it does not intersect with query time boundaries."; - if (requestType == EarlybirdRequestType.TERM_STATS) { - // If it's a term stats request, return a TIER_SKIPPED response for now. - // But we need to figure out the right thing to do here. - return new EarlybirdResponse(EarlybirdResponseCode.TIER_SKIPPED, 0) - .setDebugString(debugMessage); - } else { - // minIds in ServingRange instances are set to tierLowerBoundary - 1, because the - // since_id operator is exclusive. The max_id operator on the other hand is inclusive, - // so maxIds in ServingRange instances are also set to tierUpperBoundary - 1. - // Here we want both of them to be inclusive, so we need to increment the minId by 1. - return EarlybirdResponseUtil.tierSkippedRootResponse( - servingRange.getServingRangeSinceId() + 1, - servingRange.getServingRangeMaxId(), - debugMessage); - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/FullArchiveProtectedOperatorFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/FullArchiveProtectedOperatorFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..388c361fff9fae1cbc5ff05c464a0ca8277f7f53 GIT binary patch literal 38900 zcmagFWmsHWwl0jjdvJGmcL?t81Sdct!QFzp1$TFMcZc9^!GpWs%HG|5y8GPweSa1Y zbFJ~p7^|k$EG1cR2n-Mq5Eu}sG%l@5mBP3rP!NzYC=d{IV5_be!0wxw-8VxucY8A@ zeMUE1o5m!0#Wi7+?-y^F$xMR8o?^(DWxMv&_VjVM;??PQ+}g`bXL4Xq4->p$>a$8A zP>gXIsSn) zra3{G_iFli4bg%xM00cklC+*cqNyrlG|-5Kf?-qy#vnth^JlqoJIL(SR8B^y_UJ74 z$CO;&CVX8%DK#>`ro*-QbN>i4x>T3^ZqyJz;8g1}NmuV^q3%$()?0|= zHUtkq`T5JXhtYLhlkEhmt~ByiRc8~;I{4Qa;A;?N&D;@qmga{YU(V^82AySxj&`(~ zx7A6Y6t2gE7*fV*PXG;7J&ArIR2pkXOr=-QL;u4AO<@eV;L~!b!NdHVyzPX#-w5(| z4t1egm3EPs-n`$A(6qebq!xoT)PT!%@9?eHgY zQ`-&Fwn>Y)BSR84qkP~r*B}<8+e9DKrKvxk6{!*xH>9&rewy$%b8X6n zPGiinH_Yg)F6YI6CMfhfys8!OHJ=402o;zhQ-Fz*Bf#E?$pqkN_U9$fj2~C%XGW2D z@RFF9*9f~ofsv4=1w9Fuk;3p_ZoOyckhdAn;+)*tE3nncp>rYJ;v2rP7u?`#Yz8+8 zjt?dZiM#MO4Tsmpd|&&5wf>SNLCaH_6x4Uo^E`J=X~AnU))S$OivU-X1umV=qA#}? z%1bs-$H6}TeTpQrMWrbBNK_S7e&xG{a6EMz86xpM2F$=FNCs+2 zE@)WtfU(?^0mR&LIc%WgjtzthZk3MW?$M?$3+`GI;@Y>Gwr7)T7GEC%9mJsDp9hUp z4l>NBYoJ*1&s?4$5s*RIgq2fOTw63)x5Lkz938f%UBLCr5t>5~kdi;;&YqQ22nXcC ztn0dL0tO0ehv(;a*BP8B{Di)lwy@Qpzcr0>Q>7UDWNhRj4Z8|hgurGdKHOeev7{$T zV-$;IKuEVq{iN@j%sZ<0{rLR;X&ImHk?RTq=fncZfM(8B?ESUx8t*^ra=W&MeG06L z4Fm`X%D>me*xvrHvZ#&Qtudo?ywE}De+##Q7E#8D4_FkL72CkAiO*=BA0w5CgJ@;h z_3?fR#pLI%#*bK%fuBSw7rue-SoFrB;m~l&!Tn(d#{;SGhvC}F13#X zmq|*E%bP!xnH9s!!QZMa%iT++1vozM-JNJBCm|w9f*HTDL5#bXTT!osN@B|s%ur2H}b0=wEo_S8a27(>l za9U5ST34zWdL4BZ+pQ%soWsKb{w78pIr@_<$=VpudyAT_<-hI_+j3uD$`^|ydyfS1 z%qP11iX~3FDh91X5S!4HitbxG2Dtgn#f^|qc@3@w8h-ujLJyF;Sf29qT+dstd(Vuum)KK7a}` z@v8ui(q|W)U7`m|+&2`)D_fSs?I&je_!CzsZl9KVSi+PuSev)e$ZCc<7uV?GJ%8m8j)h)UsMv^%n%btE*M6rPnmic=WLS`gugUtf@ z^D@{x?l{>fin+zdi-B|#=nWb!X~@(isLe_;;Re@+r}I@v3^Ex}6fAZkue|lnh3H#cXp6nBXc4vKT}FD zA2}I)2C6d;dIb|fO4L}zRxu-uBF@7YRnlI#ARLcV7z(oH$D=Ahy2;==HB4gNMFA&AcYUM|$XN1}UffH38b??l=jmYxgQ0PMkB7h41 zNvacwy&&P!=%meDCzR!D0)KBas1;#rxOCM{63-PVGyFj8ceXZxMy?iaIo=iSoz_u> zzP-7PA3lRu5I*JvcHmoV$WdN_UQRK?NetY1ZBp6GP<^{UVB_6)()pvb`&inUq^*-ay{y47CKWt zcjhtqd8|sr82(U(T2`phg85mErM82j3WkVM|}yKsLLA?CMU9Sg805WhvEb(|GfNE z(Pd~pubcBGP!ZBzHKB;#Rj7M{%m|wV$l?oq3}BI-jI~Fg`{|PdVyqTdFpjzjY$W30=G%%9udVzfp-2Lbn0#rCW!zu2o?}dLxqh~3gaJ1 z(HL<$AhMM9o24PiFB%1M1XcJv4$@w#m5|yGa*1`KIn7I^A(6Ti)Wk|#UO0-w2p1p> z72d5A6VGGB9NU{hZNC6#`{~&#xsL?=rW#?vS_L~Q7VU!2qxD`~nT#pTS-i0z%^bT~ z!z3JbrLfSLxCK=mWG_zvBMNk+F;1^ z4vROs1J;JN+K1-Z!F$=JZDV?-N2O}_38(Jey;<=}lR~?n9IK^FM6rSeE*h1jThJo+ zt^(ZKVAx7a*YW(Cr<^RfeT?*{!|a*E7mt^%jYYE;q@$IVj;>a~QhVdUo9!?!4YnWm zFA+$xLeaJ<=LEB=udmBh_oQuEbNWy?gMoqjf&NNjW~Z9@$B1AXR!0!@Pc>&5*B`T) zgwU6ZJ7GJX9%A`u2DGiWcGQ8 zcA!vo+mu&M=?(GtS%2pqOIVV&SKLysJ3%5z;-?)HE~5s42Y8-SE9g-)xI`K;qV--E zJWR?Bpv4{3MOjWLl&795Fy(bEfhg*3S*GfgF^e9@59KU~o5iZpf#`~t1wC+fS?W5D zn~{syP^eC&HB*wcNwZSR(nei34;6 z>%9bxfBCKM7NJ{Ve?R|`xnEW6YKI2hjdmd?tn%+0I1PGnuNvJaIZlHdeFb8SD!TDh zZt22+)r!@cJFw(?lKIN1DVoqT7!z-VHL~S1UqyWajHSFGgDP*L2S^5(if2&Woy>`L zkkQ4bw92!U=q9s@2pehq=?2OX7HTF5+a^#;ubF(rW3RPMFTp0%<(7bu^ap1rd)s7! z%jC@i+xrx=cNBsFLQlfegCaB2x2_u^GFQ=G1Q6`AsE3U)#bgO*`@3Q^78_PB-yOC!~Olq_#t zp5k3*9!y?u_mdbGrHj1!Z+gqQGMS*1Oz`%kfH6ti8p&;3FCFPFe*U$$#_X-^JBT%& zPw_^&wvXT~jMgdRUF7sDKL??p+fSIZ3*{Hc?`fj+=r@czk`kZFaq7Bkv(tDezKCHx zWg$(5@X~yTPqp7p2PF*G;j`9insyo%p)P*rmbC4<`M*X)CFb?qt-D zmAWgT_W3j-`QzIi(G}Jp*tDbU!nufuf*{SS^S)J;2bXFS3v#A5_=tlxx4zBTq^9Gj@_Dfdvysm|q>4ivGyqzLLF zW}Vh_i%;|>nz84^PRKKrf^ZZNOE<2Q4*NYm3oBh;Z}c==&d`RoJe`MvbH8kVrA{H zpv6<3(OF3m<$4)w=k4j?;#Fh_hKqFW6Ih;Lz4Q3%S3}-8e&3bhRq{Z|9;5UlevAqSO3`zzxqOz+75IbF8%!$V^QuA|0*>nMESI_j_K z^544v|2}E{dq*HqL@|&V=ljJwTwibkMv+~_r{8&$?X;5BgPbCdU~i<^8nbPX~A+>v0&7<0i&W@!8t$SJ2i^-}60Un_}Wd24z(JD2%I z40gA&&K~S4$02?=Fv`i zHCfei-C6NnB21*NqOKuR7GKBLmxZN7v#*(%pl0^= zmhIbNbKzr16rKKdzQNVsjo8(yd!g}CJb8Z84)A%y@#1?rICs-I&q`iCJ+pYG{DK5bmJr!2I;9L^ozwTFc4ow&c%@xR-Cv~316`K%HdBo|*! z_aBC&?C*@Poi>-hjh|jOxUbuA6$=qn^!9Wre&-2|toyjNs@L&+Sy&tQa19swu-5|g zqdv6n-5lJxeL5>2u{3-LDPHRLX%r;vxA0lX8urw-b6GO}u3(&#GI>%XbS{+njwLAP z`1wj{XE-GA(U58F1t`jO%Xjk(d3^ZndBdA~=1oX+Qs7K;6S!Go>&YwWOXwp=?n~)A z_yK?4K6iC~>N>t>UH^n5g9z=m5@gbueHNYma+!2@?UqKsHGUi6x|@Mp!%u%OKo=VcAJjAo+;8o$otK-q?I}V&?h$J3UVLZhB-LTD zw>8L+g(2r?ywf4|$RX8LLT@#O-r7Rm+`&v8?J;J-*uHP?hyCWhFmJaTZ{O1NUTb_- zI=1))DqSzmLsGcTv$zybKfDbtd<3ep?Up{!2fC6YTUNWz6b{#70K1RBK5BKkCA09l z+H@s3pJ<+YI6WR%D5%~a*A85`4&ix9uLeKbL-8r^zeu|qFy-TP<7vR9?ZVXk*popt zE=S%eL1s}Q>Qg8BQXx1X?j1_w6*}kR?9z2Rd}cLB1!ti46c#Y2=99NgmXuB1BEC-r zN2mmB>ZKD>t^ol5JD`6Xu>SO+|2QGF3@vDV0YJlT(jj}g<+y?{pB@f>2Tk{sRFB@e_{Tz|KR54_`KgKgPkt86~9n3>ZAX_ zt&A|^hFU!ker0C=k;3IVHjxVkYz}U3g8I1h+719H=;n>8&;isRTl#VE8#UPY+KUHTDH3hCFZ3+OWHutEmFp9!87D`Y;2jmEY=rvYsKx_wOLC&9>mcW}> z|GWvYLk<8H`N#8Bjkpwy5KQjyBYo1FVE@EEV~+=h5(A&3`72Zhh!zaQ{g2SUsUS+J zF04u1{)^y3nGDzh_m_&~4oK77|0VH%pkh6)tFQu6fKUCqFc&V48-sZ z|0R)u7>3Fn9_BCA^9invC>?*E`d3qdlUT!)OM4f(K^CvL&H`~4p@y^f#S^HnwyzG+ zVtZ1L44j023RPlkNlTMk*OqT9y6&>A6TZ0C{DDLJ%J8_&JAI@8qi*u+#o)%vopYI8n6SF5`-Dl3w%$ zM;z|Qi#>uEgZs1*3jKO1LB`hLI`RFvkIQm~E8^f<7o+cRwv_FuWBg(3?}2bY^{#(a z3`(huH#L9X&66YjiNmMW%PqdeIa{uFrj*meIIQXMUnX4edYdfrE`+9?fw{O_1PTXX z*72Pt#ru0KPapf<%42XBEU!1tzFw{uEeYhvg_};HHH&u)s%r$~V{MU|%L!QR)^%i) zt?#`XaYM@Yv}*m1N$Z;@XKt(A1JTJ3If*~7DY?79xvE-DA&p{%o|ZMZfkO<_s$=bx z8ZM>>yuA-x7AYQ%vu=JP4C{~{OIMK@Pv3rxFXMuw5nH^Fm*yp6t)FxMDv~67w&_1`TeZ5AWNB5rR-chW3QU^92oYNm|Uz$~aF$%qQ zb;8N;$qf$e?)%DeVtrC=b@0hk529jnwQA2d!fiKyoyGb3 z{hcsyVr?Hr;WL|$(vMln6uQ!=G4us(#`)&KJ97BB1bR@#FQ%2x8FVWa`ulofWEtbI zl>M#4PE{Rrtq7WqsCuIZZShgZGEKQvrq2CI7?}e*ykUXIr&}Wf+nXYZ0R?? zYnM5wOM#L<2-#1*L-RblDGkZe4*e@hZ zs<5M2IxW``nH-}oNi9&`4myu8PIeE(h`5wL=kt7rmv3QY@BNl5&825q5d%+SUj-WI zgoxs0HFj4>Q^X|Sz9Wn7?FGw1V9cXaR514B5u%Mg*-l)Hjyml9{mXfO_l4@bck!>R zy>tG;E!mAhKxx^I2H)ecLpsJBQS;UX>BoE8eEYQP^X>5U`}NSENBf(DyU)XW(#PW2 z^W5?4i9NG%$9s!V<~`Hv^f08yI|%Yhx_gTtgyB|ubIR}?$&*Ul3y0BqP=3j|lM|AJ z{5a)!_I(PHR3u(ohuV3TN~>%jV5Vx}ry4>e5U1(W*W=h; z$Sd9aqUlkU!fsN0FW0PsJb<=IV|Ef{-q`qKFwYcW=!9cjg?^CPR`QzZ!2(o*#kw^& z5>-F|V;)~~OG1x2MKhYtfIgBYcB?$n5*G`vQVjk2tD_Tp5nDNBvYPm%x7KvSm$bo^ zu#?qh4#4IqJkIe6tCrPJK+b-wV#Y`93Rbt9qQN|wNQu{}x_$Cai5~|()FO)B7-e6TF?v1KnBNoV_DOlTtD23P zN1??iC8-go^L8<6ohngx5c{$}YvjEphDOVVcu$2^sOV?$lG!e0AvoN{97G$qt z{Wp#eJiJ9Gg4((N*+4SMAFr?uVBqbmikMbdK5#+BqP9-(Lqw%DoD_g!(eH-DLB zSsc7uFn8_+Uz0FWANTTbw^pdoGqB^=8JJg*O{J{FQdrkp`1$QuXeq^alOvBOhgRO- zsdwcmM@ghHZ9X8uC9Dm-%OLnP#BHZ;fD6lv8pch$@BQPNcRC^{U9lZ{cQYu(p%zA1dg6y;1pK z7B0HpDASx|-B)rhj3Ra1%rd$cW>#wy62(=I?#7LMnU7!P&ZMsS#TNz~I}8}ZPh6U* zOso|b)>J6B=_X+$%7r#Sxkc-C zOW-vse7`0aoUN;@wMsQPwHvh;aji(}IO_o`NVvV{#xR+POpDM)uWuG*%w~8KwLY@x(S!*e};0e0DE9ccxA7x0k0yyTq=7n~7 zys75+b$xsV0o}^Z=2)zNrFDq-i`t5`&)-MX+eeM!>2FHXZbTw!FHH0VFg?WRsPsx1 zK+;<0Dt+09v+V#%3kis`b1V~YYbZG^?DaU2P)MKIQtnb)Co0c1yu2~_9O>xfFbhh` zVmeo#l}nWs9qx;C@a{X!DNPeNG`Jxocpe;Ur2e zatIUVibz+UDos-hZIQVL<%FYcc^`>D=wS>VI4Rln-W$ zq+)r~G|7IP4*Fa{J!R(m{L=yac4v~YVc@xQb=Wu1`!zSmCt)oS1DrIZNw>8FR^Z zBMe}lH~DcN(p`ysm=u9|V1Wy7Se@&gU5$Qj-EKg5eM$LxGiQ#6-g)$3eMj8&Ba)~nyfu5Ok>EYY^rRK!~c(D1_RJ@}Cjd(l$%#h%vxKjnx5sNvc4*KINLVTOVm|xIx zL;4zI2dJ$JcC1866us=oB#!0oiox~^k7ax|+e_qz5@tc@rk3tD&QVk+x`NX!r?btH zi`y2aGfXF}7Y&s3c2Yl@$DBhn_9avUkAW~&E>|6WE|*D97*WvWFHXLqUg>*l!&$tt z0E}6@uf>AkowZ!QzeaBkozK@{|AsJih3%9-ym_)5^Hj12tHw{BNso5w@Z-vvyaKC( z>5Maj?Mww%(A#>Dl(YY0QFV{iX-q4H+KD;6Y@Ww;@4uFo->keXH_YY&)|T{(*Kd;& zd?{7C0~(U*a?BXE^O$=W-VJ;epNTkP22UG^&9XfJ-w`Hc9Dq*c)L4Cls4fzIWJ~^i zQ<5@|%ahxo$O(w!e~6UBWg)0bueTW(fbOp37VmI-Sc+(Uk4VBuXCHRy(cAgkXLS|6 zmpfZ1mDTMK+(>q$S4VP+P~Yn`AHAwBFTvkieR88Y6sg~6GFlutdBXfi4q<19hwC6a%MV7;}Xs&o7#t>Cu=F08`X4svc#OgBPPWJE8r1K5j@;_0Y=ubdbo!(;J$=pZG zw67qHoR$X5V=DuI;aCXXlAV8rm;57q{$Jrof5HO^MLWy9IdAQLf?s=Bzs*U^r`KCI zIZI?KGeLGJ^`M^=@`xj+lwse+pT*h~2Y9%5M*S?o-dqkrBV<@5s`jbVj{9 zs7SMYnzfjh1!cmx4Dzr-n(Z$2^UtN;8C{n6%7MQm# z3oPNXSgq`}8 z^#4v^qGQ~5tehER-aQPd=}+} z#3~omZ*`+K^ELrV;jZ%lL{{38P%8c^(?}IxEn4Fr_#5kAvKV(NHO5Qo?m|U1O0WZznbxdkw#j0`d=7+o+3ny?JBcsjq%D?FDtH{UeJ6d%bpuJ zJfQ}=UY#zE@VmUfQG=jg&RCs>i-e;EgNvd2R5;I=9ZpF3nX4J5MAofbUEt)mxPpW* zucv<>37^oBj(9#PF{EKauP{}lC6Fp0lE|%T_&h7Mv&;%L_Fp^@msU(%mO)D&TydtMyhL;c42P$@PrO5e%fl+$r%IGJp{c7 z=&B#K6h^Cthd_b+f7pz}|BH>s`TvuRdc@72>xybAuKv)nxY}9=f_%#|>BQ={(;X)0 z=pp-6D{r`8M}69ygz%&GBru6~pvCpL<)4G^ATS6tUFHNc8RR991M}0j(3KJ{HEaSj z_G&wUglDiN#{5d$N~lWxFBik61=^QZx)9`R(yIzZ#3oPm#A{(^oc7OUMH0f-Q5vOL zLxP$nio(}C0$x?oq&aj-5FPkFauUKpq{IaJ4F56*N6;uQ(G!g=FcD>EhpLovsZs6$ z6HJ8(x<>Q=%qH~+MAn5{;OWS5KxBIB|D|}$;eJ9@*_;3-qO26f9RjQvD8X*8l#VKU z#!Iscj-(GeiY<}b^k$cP%S$J?AJE&YZ4C%YrTRK>1=oxW5KTTxDhTSYzi9ETx)P}0 zzT^mQ&1D)MSV7KAZtY$(hPj03aOrYpnxw(qj~0NfQebx zHGI&h>Lf|-%@I>q7YPD)V+r+11NDuC*?0kfWqT93Qh_&pz#Y5)$kb3Fn7d;iuE)Aq}9Z~9$NAtwKX;$ zZ~JJ#2v_Jup9?8}CG0_`?#FKLDL)ptkWZ$T90?v{z?Ij8Rm0a@c@h+woP;S5N8-=f zpaVV8_9^-%0B;M=GjgQ+bw{J$KErwGnvQK%*7tCAYv6@MMhA2v*7|B51Pk z$4yu+Z%o1lG3s{K4d^K|6#O|?F~H)$Qbma!K~!PH5kdz?;7PIOFtNnqRuoJZA;BD> z+00^opRh%ceCFzz4I4c2+%-|9m#k)kZZu^X%)fA>hw=d-to2mqzkN%L0wIAHmKtxCp8=tR-+~8~OqfMm8wJyK$ZQ_e^f$%*8cc1+RSg;`lW zb;?HCJ!C&;w$m^Y*U7m=4p|W!>nGc#hgeiD%3y_DmTy~2c+bEe~*p*`lre){%+VwlOn6|FWB|HAK~Al`%TAmxN=%P)0E&ol(C= z9LQbl)24Zlv0!LZ)=WnQY)s&`SW<}}Fts%rx7^JD22K4P#Qnd6k|y^V?hdX8c*2~} z4*yX7s6e#2l+QpPe;nY6V*BLLfp%CS(fH@S3!W*;;k@F*SVsLdHHhpRHOOwpU+oMO z(sGMXO(s-RVP;;t8AGWE0tR7Di+MVK?zbbdhB}=TdzwvYyW0mA`q+azDE!r)9B<0W zlDfp7%}tej73PF%!FuaPF{K@0{g)EX5#p)R?DHfZi+vWnhtAf)*IalPYzJ5}i&qRdJn*5WzWuH}@9&d7Z>gWC}$RwFY7`%%H~ zqM@Yu*WkUfwHM|Q6LU7paOrpMRi^sT+{nxVC|YXBmm*ovBe3`f=t3y8zHrl{*4Z~3 zOQ+Y)S!jL9*_<^3PQ~j5JXNjktzT*&?lcyRV4FA0v66c{ZPDm^gDF~l^i#DOc1R3( z=zG!njl=#>%l<`;2Be0T{WJTXXx&^yOg8$9+QoDnNX^IjH}y{n^a!N?2lZ9g0BlEC zw&A8%>*r1**pte#UNpP8EP8r>*WV;s0Ub@`?WaQM5oB(mnnqt|SB3tIyqSd^J%aK7K|X6Fz5NuOvbFB`5Ar@E z=_eJx%9WsIMF-+n?LskX*3bs8FMb^5moJT|bk!DSMBv>lDfiEVS?WMrrU|o&_XK<-^V0XZc-*!vRs7SV&O_1Y z;J<<0c+Q#rW%8K4@~&&BZLVSUpC)B>PdW?3{x%ts^v5JO{2!B@w*P-7x#hohPq!bi zSNZ@=q8C|x@Y-ax5D?~LW8(5fryHA5I^Y9$ldM=nk4a264vjO>Zh>whWCOpWJ+`XOwxs#Co-7QRZ|fcywXFVcX5{TCE2hB~S5?UwZ>JJ)|{XNv=5S!-m`04=xV0 zIycZwsF+JplHZ5-Us!g2FE*qaBlp6i(4cgH#DVv~qp%QnfMAn{VgG`>gJh!S*gIx6 z@N-AlfxK@99?+S@>N8lRG!X7o=jiA;8%`XAzx0s{!VZ^z3>dYU%7sN@`z=!W4x%D# zYYpm1tWOM_X1IYeN}(~0z@NYxD4oL18h3!);Pk=EF{MM_kXSU5kN=OjD3L$naDpyH zufC3qe%a>vT|>muPuSoCN(}ku0$m5ZKsEV*(o4C#1vKPzZ9^8GjS>vOGslp0^cY|; zUrP$U=rSdzG`9JG-e@dbg1LrxU@`T$mY^F@pSz|{L7ONnw*!-RRt8Mo84UD@zfB9o ze|Wxd<^uG*0<`KW#%9Ikse34fA@1{0axbqA=#9H3*Oi(1QcXrO9>&?&)GZ=H7#)XSqHNhb+xE9?1LpQzH-hV zThzaNe#23n(u6&wg4l&UInTfhyej=hyF+^dxF>n%z@t%PT3=8@M`At~X1P(swX96U!^!IaKCJhJSiFy0e7Ld zbrgq5;qyw%%V;(r^@|kw%M=P0;y8b4SF*V!);0!6gc2fE9KmKTnv`cRictv4ps4Mh zx`kCIu{nGbc|L#^zT4>{ShhU~r;TeZ0pTP@lCOcMa-L%{Ud=!lWV=(hEmQyf6l zSCGYLPmKqzb~(57BA3+QeezKftA|6nMPwz z4uN34-ro7B7IkcL3t_&>F+AoT3VV0@!TFR76#;I;M?}JxB%U{`ZsFS$TD^5~Xf+SdsP7hf^`Z>n^WmA6VOfZHQi$sSyek z1>%kf;&sR0J!VX-#5kK!2+bSH%w~WaQsPZfKX#*-cj2p|#1(kv=yEwoZUg?hHjv@o zVRdx;3v_&J!QSX??%pfLK8K|`{P6<_klrh-DOG#mj{g9nsQtQ|=Ph(JSK)*~kAt2W zZO_%Ne>@~NlAv7twp;dg%jFX*#4v2MD{3@f7hl7&{JpJ)0u{GGy~v-veu-!Y67EgR z{|0bS`~z?j_7{NtgKNMZ#Be*z@L3OG^zxP)Z$*ZJeTR8qB$x$nRv2E;cFWcM5i&kN zCbiRVuVqZlZ*Q<42hJYf3kAIQO0d^qXS3oT3UmW!2MCTkv9Y!Sp)p zoy`()Zzi&Of(|<*m4XaMRK~;G&i}f#G&{__(@*V?-FnO2cdMLrcXcCP|Vry(yD8}+7i8KL0Fu@&W$ib3Liw%+2*%@NgAI$+bj zFJ3E;cy{Z)8&q0iKO?b7zqv9s1B7&J5tIwS3R@?~Px-Kix=n^c< z28W9HHJ~m4G8GdL8kE5CGHEnVsX;j`$!cOOAnf9)gRy0BLZKp3OB-5i#m$C+{vH>{ z{6qYU8QL*N@w%RoKI78(7%nq&Eo)|l|Ipa$tQV^VfZbF+)V7Y5=|_~sZ;9m!T?!4# z>9O!PTlWft&4XmEPpov~cU5C@!bpip`_FUcP>tH9*tS|Abm%xqTB%bNHW=5eE}aZ( zN;OUua>OoSNzRE$QLk4c=Gn+2Hu=&Oa-^LHiRtNRj47vPW{5aHv{Drog-y(|PS>2` zklN4c>w*v6*{*aMEX+<2ik8uS3>$4{`iJ!rv*CcgGEN&ohmoR=G>*{q;{OW*`+#Lh`}%0wbNWCK%1;T z+?k0yY`%=NsXrS?XC-0siQQ;@>JVYCWi{1EK7CG3_0yxK8+Ue@Lg4*UXwYCx;#pJn znL?w8h3=-a2XQ$;sR`5KP%BmVHyYh3HC_GCxy?k?2rJ$Uusl-LJo^VlLF4;r4@L_B zqc3K_LIRMJPu&GQRaw7^+BhRGj^I7n)Qz{Pe=)nRs8}Y>7#`d9?h8vIsb>XMAe|nA z*e3n=ih>E*d))`6zCl$2GutF1Qc=NIVRIh64vOc&@`8f?Z;T$=+Tc)>8bt{lGg{ir z4;eh|Y*0YPge1tD!AK_s-cyaRq_CR0BXLSW%m~BapVi}2c6o-Gf;pvEMO%#u{Ds3@ z+LbxYrGROh`)_^gKijqDBa@uC5=Hof^$(ZYmBpv@_BDswD1(9^43k&A6A zvG4>fCiAls?oEHmH=_0_cNPtfuS&Bj0RfasE9GJ<w(TcA{fp$D8#4gwk#N|b({Fd$-XdvC(f-h$JzZ?%^Llt?0Rd`W9B>Rn1=+j9}r zsBPpaON5m~uuHa|ySUJ%)NMr}eX$S(IKfRetuvK!3yM{6X?yT!QPqy1)hxTD6}EEv zma`f0!zf)F#e&xn&2mI@k;z0L1K`qxA(<{IGcp~4B52ic+(9jbAa68IgWxEl1b-@l zZte%>h%)7f!e`<=Lt%n_wLxAkPGr^`Swg~eIU=(OWpt2~NF$ zZhEX-gvFF`$u7ZLY^BVoQfFY{lKh`!Qdd|D1d7)$#(za+3v!c>+XD{gjy0u!4kZ?{W_ zwnx<44rL>nlD@kSCNWJ_)lCv|nSU@p>NyX=I=N4kwd$#QbW>s(MMN2Rq&f2e(upzC z1F{<>nk#%~K60dgl1>7Phr(Hcj#pxfZH-JY0qmZp?NsKpy_7!Kz6PP#xMIjj;Mc?B zTSX~zi z#KF(m+GGXH!0*P*`$-QL)$`*-!I2|eZN4$%O)tY&Xaj*%{sDyf2T1o{K(>E?=6xqR zeWY^VEf!&DA~#CSBKU2vWB)?nF9-H54oo)aG{Aj7QWfeI*i=cl%gopy3>cdEaE!!z zxW*8S6Cnj1p@P4BU`YD25!AcpGkfacL}B2%X?2i+e-$FopAKBdj1wJ|9AQ`S0|b#5 z2utNE6y!9imk0pkP>Y{Q{&rx5Of{AG)`;W87CtKl%*3E>vC>Oerw1WpMJR^My+~0U zm=_T_38W~TGbv_NE6dKr&!T8=)>iwf&dHKA4T2=gs3~e*;6u)q`AKFNa)JV{o&kq{mPqD3R zPQyr{kMF+kZth(#-mM#zoTm?42p^n}2X?JK%luV~*;~Fh7lwNPs;%|2`-r=}UH5u} zu8)K1{qyvXr;Cs0_fyyQx9sWh4gKqvyYu$yYUGQH?0ewR{>{!c0e%KUtoH8C3c{xJ zjf1&&0CIYYYr0~#2J*P8A=lcl>y!~U_iOjk*@1EE8pY5-#N9>2##?D?3ZmgxrihT6 z4`--A>FWn;Z>zogXwK?!XUFR~^Ow41DqlMxs_tbUch5IYs~hK9LvKBS>U-ZJ+ou$B zA79^(CVgL5>%Fyc?}F|p##a9eA76Jt!;aFnd$;`J51x-N<4y^~*+JbPUuwmRt8b~?80j@7Yk z+qP||W7|##cjtY-^WE<~|GDQMd!+VA)vEc-Iak%%t5(&j=XABphTW!WX;Hx$(I0c|M$8xi`um+uEu&X`KN6`(VDKUc4sz(bY|Exfg*->>V8D0k6kZfDs zADM}#-j|6{OS>P~_y->)1Hluk?%tl+l91mn@$&fa6044L)3s`~^ZQ;MUdj&d$lJne z1hH+(PHAxwP^9qT-#_Zsw_EZ?rM}UkA6NclFK=KYtv_JEMz~{Z)(9 zv=OpKg-X|`^K`JIX5Bc&K9zP})MRp@Y(&F;NbmfFCu03uC)~Dz)}VzmOEcio7y;pz z;3%lk!h%|N{7Eg1Zm983GzPIcxi1(bYBk{HBed%u8tPbQ$C3jiUqim^jY|@t3VGfKek})&ws{vaAJJL~+sdk`!94 z^bzoTQ|-p;5uwqIuoXSn`l-at6iiu)o6?7J9yzWT?JR0N7>o>uR*55eQyU39y0kH(&$7IbcIHU_-S? zGq~-)A#fIObNCLix`E|B3QHv%p|&0=G@h z{SCq)HDe8o17X$#1n(aJ0Au|J*MCv^4RS(@WCJJ$4Jc;uuVURc)?c<5gd09_)>hOJlomy0YKlrXaR=^Bx9-_~=uzB9(+`KyqbzEwY+}2hn9l|_++tJrzLPuGl%ob1y_sb$DzgSiNynJ#n3MMmm-%j1oZbO*Jr46dynI{ zwTwHkd1AIp_!F_Ah+@yM)=rUT&mbu|@l(t9;E(%>S>?cy4L_HFBxrjjqT2oencH}@IpsC)=3%%YZ&n71j3IAkhM~vlydaFOb7{|+DOepb*um?I3DB@?7Nmop=Q3fm$F(6w zfDr+`Z@mt@Sr*!?HEaHlh-l|OU}i-&(S^Q6s&KNh#5~^!UA4u{ObAYY!>uS^ATV$7 zlm^|35vPm(46ZZbO?Rkv-~t z>fi13U%o^P=@59Sg4+2x8=(sI(JFB(1l|vosYL9Wi_{a>N$hIL>$eaXB(N5n!>g|r-fS?=bdvt-oxy)*SB4+3^yIwp3dDkp7)wzI4AoR&*#_I zC}G~TeXm=Mx4GTX+ShtMZ8jXKQo7gXl}mPd99nAxn}>Oplt|_4PT3*Xtrjnj=jOFc z{g?u~K0)im*cu)(>l{3hl#0E>3C=^6m5R)%+e!2W@K>@gCwld=oN^sw_)VO0%%|1e zJ2zL2lD1AENa&&r=r@MWlL&_)r$6-AY0etQ3rg)haP4g>STigptqq-^6cL$az8T}# zk8^w*l=_1tAP~@e4`nxkv;#u80447@7Fngp2zl=+;m_x6+PsK~ZM=D_xSFlwKg2WF zCRf*YIfrvwQ$;LE}AOrx$gur_bak;>=}PeqEv zVtE`cIFbi$=U#*{(Sf~6pSh=Xo0mZ0Z8EY=y_~rI{kZGp>2g9!*u;-(QypeqU>6Q5 z-=f`w-nr}g3OmkaCBH=L0s|?3z&x}r998>W;_7`7;HJmgvCHp*`v-l}pOmy;#11SMrq^!9H0cM{^U+xc9-i%wY%33d44K@yaF4 zVckS<%8*8=#@d$R>y^;P=;Ey(rrs?l-*csHuK*7fz^!aMuGY%MK8ZWJ=}=*3xpOU# zIexlY*6m8Hi?_GW6%s${Ni`z7xZZCq8hCNg7{0%90hJ;>Pl&BJP!h`DrgOmM%Y<)k zwLGg|G$OS)%o!6(oG5Iw~Nf;-`8vat3| zTW<}e@>srTAFm?ycM%?|RnXF1@v27DyQiyBL9U=Iy4pfUUSeCF`6zyssn;mC;$}wT z*NjxWd(DfPQcCZWnZcrVji^Y?(;2tfJM%XcWN=Q$<9+11*7{K=!`b^F*SVIq(u22W ztX<!W%$o71a??4fQjEoS42J7)K z73~eB{`kUr#NkxqUOewaKc_|{2G5BT6{TI*UKT^3yVp8v87b8ubYQBL+cU+h#^^nZ z4hRlJg;s5XoHeD@R$a>;8mdAEF=s_66#t?i#jRS#PJ#g%e{W7FJwr;MCvCZd9{}G` z0*nJBbE~3ElT91htqTT53OdK`>Wr49Y{!nkiJjC) z4Efr}1z=~OoMtcz#{FqNb5rk#Mk{Ndt|;n5Gkh7*wRdl;jXWtC1rx4UeY}xY$L_U~ z-1kr@^Zi+orWkm3s_gjlV)p)-ZpAX|>xs@r&TWtBR)VAHd)!G=ua_9iRq943t+CMZ z`tKI1XE`M=x+;_O*;W};H!&uoEGW@ID;vYnRyEdyF}}k?cg1n9akPA@b1@MndU@~m z44TxYW4fXhuYGs+lM0IvgwIDkSklO9N;gG71k7Jv9fE`Q<|rZ3 z&UfuKUC~dXWoiZ|Fb&tzJ$KTG1$fCcl`I05_DjtU(hKD)5*D~HfA1p*oxc{&PE!6f z)I00EH1Zl>E%7dH@}L@0f5N((hOeENt(n(OG@qw{I&A?ixZ7{TrBj!^>2hBqWpRHE@L}*xGqcj3Qr9ymp@>D zhY8__rDA(oIK%Xw&sIDg3K=XyZwvXMZN#_Rc38N1G~v?`0uLS#*mW0RmeML*I@~)s ztKg==+v7L*^~h9vTh{nZ-KUh(BKcgUQ zv(p<&=w8)B^jfz3=p{J92SeT5UtJOJseIJCh)hyR*u4m1CQhm9xV?Zi$yRs&K!q~w zEAW*Rgi*K3S2%;G$xE=c@abt}gjyjLgjlVP@v;Zl>$)@Ex%PEZBA0i_LeteA8STesQ@wzuP$wJH+u zfHCAHBJw9TaU91DSrYC>9H5#^^R>z z{0q1>Z2MvJyhME$UCf364^Y^~2!Uqyw}S;Qlt5y#DrX1L?F}_90JjM8tqnuwDCgM@ z%z+I@9)nAWrEHmxwX~7$M`IcFuHrWK^z*(BUk^ceb*uTmq$b+h{3Z3VaH*Xuyic4( z@5Y?o1?3{5ppSoRBOGik&5~_Srj`A|c1IfY!P?eI?$6`T(Q-WSq5nJ?NSbm}xj)OBAR8WA2LF5ox~ z8{{QxxU0i8dOLt2RtE{z(zI_+IKtbjldH=BHL(Gx35AOZ*|PP{(IU=t)klL`v&C@n zC+nu9o~)=Ap1Ss)mQ0%>7G&|q1=iLCyq!Mp0r~f4*QXn|HaE$}3=g*8tu?>qq+5{R zwPp+nO;efNa8YSZQA@`cWfi3EO9JcEIg1U5)z+pfrI9&)u&L z%Vnzaq*UQ_Xgt(+NAd^AGYLydjmYts^!msxX343yXtO%LYO8IvQqW*eXGwFP32ZVhXbR%gJ;E_v)dXeGfCwsW zQc02JIjxW<`5N4m*inA1w7D}k6)m(=tBBw>x?RC~T!DI(I8^~-Qvq!w%^Tbl3A+w= z2vnr)xLu)sT%iY#!3FvIVG$@i(KqL$Lb*_M%H0B`WoEm=h~9$7q2=k0nS{ReY+mrU zldFZay9HqGl;S|IrbVx2oUC{y@wRIpMIqawW8;XX}^yS4_Njhhr30LAT!5fing7`~2e*z@@? zx^`CT4%TsC!9)Jl4J@A-CI+RBhS9xyb(;txhi~l-XGRf+3Fui~L53Ac8SY}C2sRbs zHWfZiowceg7AHb3Usb|7^)~` z&O@A%W)AC})lTjx_(6q8!a(G)Q0evZ_3-k`xu(F;Jt0ceF&@E1K(E-Xz{{mRr6xa( z$M|w?diReur9y#Bec)!2-GdGJiiAKwg3Jv4 zD09p{OK7jRnC_NQIGzhP8uY zbA#ehjGm8MVWH^oC_+;;pAd0u^JG@;(AlAWSitUPyNeWf0a{4}w@o_nO!rez`5t zkxB?i*AyZs+xPg`97S*q$evXY6p;NNfl6+nt?MAD+Lv$N z!3G1Mp29lD#%*I3jSiZ`{vg+B=DU?3`Zfdi4EWCheFuX=TF!yCox)hBRyj{q#v(#w z&T&|orDC|LvVuZ#G=#YgggQ&C?cmuHqiV)(zH=B0Jt`3*J3+In zE!KbMBOwT;Pv%IcsR1tX-T+7F7b&IJiRk-H5rero5HlRncOVLuOZQS^wgeH_CkGQl z|HKSOM4O}ev%q^4j%vpJdEg(#>jgRp1g7G-?DOsO z$?8GEf2W53Gc?ebG_^XR*&BSDxav_SYtO~fUeD6m%+k>=HX0l#2~~W%b*1CWg@37& zLX3@y%%B`U6n^#^K2JH^MD%M8J3)!IC8_0^;B83jpmr!6wMS~1O5<4YdqhFTNX0>a zmiEK0#UwwDA; z=Wu=XI7`3Qw^t{k zvcCq=Q_vDq4$!d-j#fPxuv{&xHswvsuUog(_PDDM*Nb#!BlOw zYX>Z4JycU4+?#xJc6}Rkee>ncl9f1-Y)-(ApD(O3lrbJtWumCrre2A=c`>5xJq=#k z3|XS*BgN7&)KD`{)iDjvv6&-)5>Y**klfUADuk%Y>O1{g*wSX_(k0*wrc%GE72Up1 zTLLhh!+Yp&e=nDWuiC_@^2U-i7WhSTu52x*kk%Q?nL?{GlHDIvWhgs(n$!SQg|F>R ztljk*Z|WIirk7&omBSd+iAsfaC~4MrYSa7gD6LEQgWDvj@ieY0c~>tJr^2ppLrmYl zYkw4+AhvtOwZC5*@ zSjY8kWy}=jNyfjY+0g%nnw_FVT4y9(=_fp@Khr*!(%A?qaAN)cL(d8P{uk|@f9kRE z#*`#(ggZSY(Kx!lHM-6d+eo_K+1~rY`P^3vM=7gn?xHa1yd}`VIYep-^P= zOXGemwLO+oX%5gz?0~h$++!Lxdehn-z|f77fd0-T z?9fjdVtfw-ni6CRfr3GrYS*bDqE3L8tNy?gVvIOJkb3VBh;HEXt+XF{W?Vb@JBz=m z@!`!9u$a^L-Wl#$#EEgFB!bihP*_8(TueFLc+){uot2#OD%cqs4@@EEPmGtA-Y~{) zJk;7iQ)7B5!c+m4I)~>|pnNXE?IT>X5aWXoNyLd0Uh^+0Zkv)a`i2t9eW(h!ball%KSm>AZ1$ zl*mbNI*8$B#&PTbeT;A2{Dp+6z~Cakj60J}ohe-ad_Lntun?x|1uo@_gco%VJ&?YF zj1#8*+Cj<1#Qa-~{r^*psVd7KvxYLtloV|N1v2J88XDXuYIwDrSLmf0S>0LG78#%& z6B?SBzd2ug445bz;D1y~B~jC@ue#Q4T+VXVc&Jr)Nw?j-y^ZbgrJW#Vy;N;A;o?(zoGmT5f4px*Ot=U&e2WIj+NT2d-fM_= z+7ht+f}Sd3`^AYv_NT34h@yMXjwL<`I!O~!w(kKI6V8QKqa}%e6L5gYk@ZoK9SS3; zb|bQOL{z?vTiKVE14?>fR8_f+-oQfnjqj)xYqdLwa@vy*0&W6s*uYp6RYY^!7basO z$nog>rU5r1cD;xzEB!a3=Q-_I_~IEiDoJ`{irS%Amf7urU!?Qe1Fazg6tfQjI^G@r zOUL`jS}haN|3bnkS3TW(;QmD}Q9=9XUsilg{sY)Y}Uj*n>C> zu8q4f_at!}9lKt^8dx&#)PrsM<^|+j5&cG!W+N`CU&44Ys!_0#bX0(ZZ4zu=C*}dDdBG^Z`j?BXkdkP?5yyC%`{~p8iA+shT#w- zx-uMnDsvfZrp>iCJmbB3+PEh~A}_`WRj_hQsSJPq)s5Wl&kj(m!WfDp#`|~*ywQOa z6f>f+Sgmtt9gd*A-)O9PK29Ki->+!}UlE#?9Mt&QQ{;%{Xn}lRu{?0KHw>pbBdmn^ z`s9-WfB2lB>(+AC6;E#3g?a{9L<kDmw{%XfdLW1ii2n_UcOzd zvL&ZN?V|=-6O^yu$Fani5ARRYB9a0b!kP|6i)zu2JgO-`-A1<<0*Bd;6~e0Fvk)cE zu30Wm3F%j&&2@xmfkEZVimKE~yU4=#Z?5ttLpkMjpfwQsaN-g8c9jNV;DqY-5g@_< zF-RIziy;Z$Yy4E4f0QF(Gkq$m2P(tQvu;$&Qy7L(>~NeWTx96%swsR>EgDEg3j)@M zgAC9>w&0-Z=Zr_)Az0)uCoGX6zaDAAY`8QWVU;))DBl(`b(_S>A<|Zv9<2;x)fa>S z1dl+|y*HSjK(kPiV9+m3g6HbT3X;&3UKq6wW1T<%?Z<+LY9Lv(oo92Rut@t3FilWF zRXP0>L!m)AQ7eyvrXNctATg9xf1kV}JK+bqMSl>iK3qQ*ZTHDgaT@JnF$%(<52wEYTHm7Acmx5a=C-qLRf&kdpuKL&bB=_=TM(%h|i4yh!>J3_1HwF*TL zKA**|xC(o|8V6O_<;C*CKklW%&U&ZES*&F?O}~RuR`XY;W{a|kseeVOXYjy;rp5W} z?A0rwa55?}kqg2BdSKClq#g=)(cQTO0`Uz{p~YR9U&Ztx_zX$p^&)-Au*AQb>=M8~ zlPALo$?p=EC=Q&28oHH=$;ZGdF?wK1<5s!igiG4vb1j5rEB$~)bx=s?RDvCiH6?{}Yt}K8O^5zM3o0f+z!9S7L+d^*~V3lUXN;$9t^FrQ& zAT9h>_)%GTW4V;eCxw!VLQztV_)+VUX7+5-ApGq{h>lbNlmTPGqW_ID z5y(F&b0kk0TWSxa>axiRM?{gxqH^+@KUzOM7w??xj zkyq(X$qmy(o5m7bThqzEY7Rt4L}4GasC?g{^eOszHIDFcZ4a!9D>>|>0yicBa`E*n zD*;7o1_+n{8=p^7fr|Qw={4mTXLQ^V(VSpDo_s!nyf2%@BfeCLc(zr^-pKdCsFv~z z3w;u=`m&E{ry(yWq7_%n+oaeES$IbBTMa}2HWd2{4;2*qcmC6wOSo-_t(YnlT%o*J z_HnBO>$4F)391d-I6JrJpsdR>(7HhRvxtDc+fX>8K{YXsXxq`-WOxzKDnofYm~a82 zg$n*tg%m6B-$~+z)YI)+8yb3`xn}0iu>8HpLMj?xNz+}C1LcR;b)szvwzYybY=>}= z;iEyIi!Qh9dI?~ko_)ZPBfq)zh?C-2Gttp+U)}x$v8s9gD`w2ddd~PBJTxS-jN9xm z;6j6x@@@^pAbOaZYPwYkOa4=75DY*mi4s7mj2tg$v@KT*?S>e%35u-5hKBwDM5m5^GI`hK;P6Obmyss7m5e*wylzy z9R+ncf3I(V;>oToL}!vXc!H)U+kQAG3669Kf^Em# z(6AWf$gcy8+!*~Q^q)@A3EDIp0O*VP2Fy8J3FR?FE@v{uA*c~-FDr_MDfMoX?cN~6 z^KGg^8h^=K#)b~gyGapLe}+YdCrQ6Cr2HJnT?rd4?#3Xo--fEEOZXz1{WC?217u=s zzZZ#(AoWY|6c9f`{l--ic1R5$YUq-Qb1ys`?rS_%# zf0zOlz*CdT!l*3y>tU&~fW>zJ>)U3^_Mp|wI;(6fmdF%V+DMivWW({GfyD=#<9hKtl=v*plPDE<9 zuyxFfU?mj}%!!DHR(e^;D*XpS0^EC zWnXh*i7ca@y$?sgzWI>*-{BY4S!Kf`C}BsMcNoJKt^77l`tGxR7kLy-JZ zYHCmb=ca8vgcoQjgg2S7Ykn6YlK*vEp&#=avL7GOJDbJt z$shPSm;!!1`i&5`te9s9Vap_huU@M1z<;LO;Lj#JUsUOA2!jcdcXxV&$t2Oc&yznK zhwv-#HRK#)=o28y``YrgC67VUrD4l@2p=F2-`|0FekD#`LmFy*2b2xw?#FM%^1jNW z7+3wlK|lXIOBllElSTNh3)YefA;6$-5=bfr6!rwVgOFV3JfZ%{ts1x}gpc4|mrDf6 z8>nC!|NECd+d(?5e)~4S|CLDI3>y;L{3gWd?_t2P z1$g!!Qiy$@`k?-HjQ=&K>>83hb>KPP^)Qg@LmBLE$1nsc+jZHp>iFnzuWyT~BA^`5 zt|7&3*II8+!fDuLF4jBBW7Ej+N|EPZ}nRyZf40?%Yb4*YL4i>XgJ*O1t@fZEtWC^P`bk%M_dgg>Z@m339K zX5T^RX5B$B9;XKYHZOZUn>DP~`NJQtwDp7nvK>-yfPZTtHKqwGOa^^0R~3F_^t589B!N8!CpR_-;Wo($X6M-uUMzLo537I zM7`_jPGO^ZkdL=3+Qo@>i=t1yv0wgSXM{mlwLGW{Ru!|dmd3VxJs5W?;^%`$l5Ha9 z?y{N5%Dw1ydgv#em~!oI5iN z{wl+qZp<<9bNScLp=+EbLt&q}HTojAla|iYYky!F2bYWk08G&*Owr#kKV*uY6~=Hs z_tQ*2Fhc~(qjcD4S=kN%Kx4`{;5+Nn-vqy3H;s=hh(5wpd)u z2)0>PnWIBx9K>^Ov5Qi&hdDo`zNWKnSDbg>Lt0ufUjxL=N z>jsmBn{1N?bXSLS+IEW3!%8|S;4;^-^MUp1MKTn76Z%qXp0`F74vvftvx-gHJ0Da>Y4=eRKKjPX4$Oe|+7yx4WTZ_^9x-dR0LY zjyW0C7q$zi?Z!}w?G5~oH2v${>u!WW)of=W44#qn|Cc&e-`2(J7rj)GDCJ!11Q9Lfh2kS5NV2e zB`<9p&`67{MS<=2!|vzjw`--?f0s9c9~Iy3&7>qJsu-gn{|reE2+4VzWREPH%Rp6T z;@SrNozvGIWM2r@#+ZtHw}#ne`4W!Vf>407C7n%~lM>cUuY(icTAtGk)Im;Wk6>x^ zVHSelk(zvlA{p!qOo%4P$lo4$uz)cvy;&vL! zy%32*9;Ytw=Cv(;8Y+Ml*lNrWM53Q~_TO_Z~*R)834M;D{E0B4bS`y7UOqmrVeOuaB& zE`BM%UZHuKV?SR`gIE;nb?t^OVTM@eoN4K$7|>l5K>&0YncSgR5cczRM#WJEy~a0| zZX2?*)1j!z*TQ1I&7+NqtHysdIhz_hgTkzX!ikR?GgC~6`xhrRX7_p@P6~4SXbbW@ z(Jw$VnKOL|eIXgl5d+nhax%twwkS2=bc@6SoQ#5;l$4bk07~;}fqzpH62d`Ll@W5p z#M~Fk{|OCPxKWV5DahaBE zi!qG?3|n?oZo*^=O@152B+7wP^3O6)fLkOj8O=(h)J|TkUQbbvzFO~)3VJ!|fv|Iu zlw}xxiD-0SwC4uOoQR5le}0GvNUh*Jr^9Wlsr|Gh!zovsMRK*NTEIdTtropJB^8-+09A2WKP=XF>4* zu)Rhz;$D4J0}{WCun3bndhRd&Ns6x{X4{zddv|0G*u#{=C9(3+inx38QMtDL9XZSV zGI{Deuqz<&w|^0E+p61(CxYhr7Xh+;2u@VY5j&O)4-jElDUzZLZOB;?6m8Rl>L>ke$O`Nyp9BEHUxpMW zf&%!6FQo-AJM%=OOfL)BYXItrvqPL3-X6xj)DYm3=*MaY4LzMmP2sbU*foKz0f8>FNwlh`47SeUljo7nbI)6-H5?PYUxe!@brd zbk0r?{53*SN59fd$jXZh99BNo8E+JWvXazI1i%n}2o#nuX|2u>7Rl2^4sXH7p_z@A zsZSJ^`L^V;5}uY)Q8qT_kwtm(otnn1-?%O4aa(v5L4i>;-JC6Y!~Gu-}O zJ=|F>b{vn=ST{T!wdV7tPkq|cLj-p$WTC#doW(^atK%!&IIG&KzQ+UGhxwsZ<0}jp z1_41+Pnx0_Bci;)^c4mi&0%M7Veu2VdfZ{@Q-}Vss$J>`@MvaY#Nk|82wU+k2Ln!^ADTFG?`l$zm>ogA95d@&v{H1%dgnp%1q1+EeQa~h_r zzG{**oPQI_=T3K3d}t#c*8=)!9AkBt@bE|^x=o><M;F2)d?d0Uv-wS0CgNt z9X@X-sQ(5t+Ald0WS#vs{ILMb;lkH zn{OBt%I~#dbThRAl+8$HI^p z63RfS%gg11`Lp%?e3zG1m)1N5*d387iClTua;;SFh7eD&YGtZ_OCK` z4i$q1d!cF?aw6w?$lwA@XKTaH)r&;uTH&0u4J`In8RAq+78>6lcWLi9?KI;GXe{7+ z*^tPwFb)U;R}_re+23_K2%GO^oG(#pcE?Z8`?kXE9~D%q&<^ttVdE1?G5pc{Q)Ht< zd2L_)^Oly;G1{nW>;ez;rqf@>;ke0T(A={F$zE*J!RhDPBBE1KU=IYxja?(cU&u)D z&*pFi4#6?f~Q`RHu$(u3p8aKX?s%oT+fG7BvLz)A6t>*4#4bA~{($ zC0DM%&GcIsBd5LoyLMkNWH82TwZ0+N--Kc{1UNYuQ|GdGY|02`#qXFmd*3S)$?|`c z7*%LER{b(R-c|19xS%PiMu_)lDG6KCgkG~1m7^`4;$FW4%=+bR5bH9A#TV;a7eViT zvbYF=>|e$f9PxZYz})0>b~NE~DGx-IFE#S4fj$%zVb{dwVh+LTZ* zY{(nYX>3jUQQE3NXJj3M?c8_+8GOunlNjHK`Unq*dAZ<9zh(lJmmD;DTeNTVY1q4hwAE=cUVZX%qOLX_1aJ_7#BuDX1C& zf1mlq|4KpSVx+J5A18dobdPx-11!+AM`!O|tm3X=IOF$NCJfxRc!5R)TO3lx2Eb&f ziI+!abvBH)J2Jv!!jcVdtO>d;@tn{3_Dm2eJK1ORhWMAk>jr}qP~1=vXsKr~@#m}g z+NIzx@ZUos`ib;Qm}EOH#=%`y!o{U%F$%WCsTa zSwM(p@qV~!bp!rS$Nq3;I~V{GQvZPg0z&>T$BY5_*Om12E&s|&y`I=({hI-2@bYIU zMN+ziWn2Ra64hW({TMv92hdlXYP8jubN-guKa<>+Q4HtR;%#?U(eCHe<0Qa-P?(N_ zVxWYaA5+izA9ruK8ci-VwPZq6RLz&&Shh61pp5yRd))Xh9b-WTlo8K}qJCdDQ;_!8 z8tFCWj47H`5?eCL$i8@blsm0C{y+_f?kgqJ?~TBK8L4JVvfpE(;Ul{?B2Wuw#hng0 zNeKgLu64k63kib~#EMoW62sW$>ex&mVT$xCV~kiBwQ>(xRT|c#5$2C)(lnMo7-HDB zz&<+1V8jy35h}JYW_}J;pmyK}I}QA{c`zH?`zG9@%-Nv$ABH;DD}UVNYfQhDx*0H zjSNpM23{`jnWUO-+I9v%A1|>{^_wrM`QaPLdF-!gJy-~QMz^J!13|+>Rcbf>Gf^V5WUWaJUZLMT&$TZI~95>{ny#7 z0Yiko=#3aXCxc!%{%N2kqX_5^FvM?7jBOmbWM;|&rv(uqv%?wWrqwj28P?*{@TS9E zFu(QR9T-0vn!9wyyRvw#rC@)(PTi0pi~lMg#b$8hj$SvrN#twP-cr)F-Rnub3`FRM(zZQXN`T;75rb$X5Uh+aU0=}bTBAaLMi0!4+f-vlR^#=J@a^W=_p(+oCf0o z{|T{^dVA2=S8#(P*ery97&>q8@P8jz#M%ORfhU<4J#V1gu~@45(F{`sh3*C=);v|! z-M9~fq(zy~OdCwtB?P)R)`Db&hjJ4WAqnpf8M{baVBWGuZ8?HM8e{e4d zm^~r+ZxznhItfNmapD*hA(~vN>H9vu3_1Zs3AKgeWmk+_<(K>Wu{1NY(o`1kEA6VK zbLH7K^6lxy0%7WBlzXqTS#j}bkO3C(SjVvl`*pFngu+DGx{YH;tW&a7jiACz**Plq zQ*7n0(%%HZ=XJdsfwj``;ZkQs9Kj2R^* zYwHzes`BQ=(w*&yB8%zK409pz6&90D>(`-CmLc`AvXSaZE5AVFF?o^*G{f}t$Ihou z+#bfO`K-c1=34#4;aAs>T z3+2=4vx`lpX9Li1T=%B;%UP37mzEErc>ift*4y>Y%BceLJebV(+f`+Z%6`G-mQqirufB9(Fs7w=!4_i^JeHV5v8eha23WP0WBtp5v>31W1 zqDwQUT90k86EL)jDJc?6?)C_bUX7k5F^s!#`f&t4;I6kR?Z><0!K6sAT$roITY6aS zo){VUz7x_K6{A-BeZ9|M2`Aj#xEIC&RlXxgY6L2`-?@~~*gfsUWtmT<>(;PMa@8{7 zO{OtsX_NP@n`=F&UQe&K=+EkR{?;-lN{6f9nR&MD{!I}k-zksZZnE5$W+uf&wB-_I zmxk_3p%>n_ZR;~mQ<{#e*m~cc2ja6=wQPK}QU{O6R`O;{dG^BSbA741%zwv+tNp@Z z#()PA86a0{Zli(sJfzlXfg$yzYOez4#=K&NlBDU!`rL|kir>9{ zHpT0qi|lBQJO2KS4I9O5G`fA+RuOx+qF(nPE%>SxNU=4Wjg~#LGv;UDLys}mf1Dh0 zi$E(ZH4-fz(ks8tLWGA&53h%CXeBh#UBeZYvYm{QmNh7wEojVZBs?mI9gQGvo3eaw zWDs%Fr)qFwF`#O5Btl$u$^c~``Pv9t;B+F-#g#k;s_yjOZRlGv#iUGsbpVp+b!k)V zu>D;O1bq@lhPrD*$Z;h+WM9^!C;Mi`c2uOS_QyHyZ@Qw|^wox z84R#ej(XbB07;{^FItw5DeZH~O7SW{waJvAK;Pf4_yqry400xs?@U=r?kP*1Z87Sq zvFU9y1vCzfZ+uuUNi4W#Lw#AcjFSo+|NUK^f+5)?HJaWB5%HdR=me6yiuj3KCen3}Joxphle**`)dzkgP=2gE>-z zs{l_b_@pbdvw^GEtP$;k-5lL&?vL#h8fg0{j<>2GPmurYi)H$7EfoQN@E`!a*ROzY z11ASZ8!I&{OL{X$BdfoD_A0__V0sx)fF8YsM`A|`xk6Cp6cEXga$qXOUw%Wxw#Vk{ ze{6(wZMnMG4jouYzk}ejaLF_Yi#yoDc$|yK;6L6T@ZTZ^o(2j)rdJ}GDw>F@J2kt4 z6Uu_3Q;m$E>}oNh&4Z}~fSA~pz#UbDK)(&!V$}P6EgkR+vs6v=AZuX35~V*dBkfx8 zR>8%PLwcdBgy7ISub|CbCk?D>hDkHD4_H|FZ@PF#_ZK<r*OVyi=zu->%P$b=$C?Ex8N<-09mS@cw6NWs@uNwJO2Tt!e!rVZSWM+Yl! zgtBG{8qPaa%2X zhUuy5+mH=7g71@SSVDUaFqg%q5Z_g#m8DABRQTSO-a!6Yp$%*_;lNxUi)QTpy7&Bbak zjU&JXo0S@{OqE;}TGdYPAV&%lk!y*mjY9edHctCnE^d^V}2~w2avI>Yu5s@ZE zdNoL|(jkTxz|gxCL68L`k#7wwbtwjs4k`#p5QwzUQAC6Ajjk?|WBy3a%$etRXKv2D z^FHr;X71@73YV5L7#Hsbp8FqYMO6ETtQqt53@p*3x1!HXTtFyv06%=^_&X=F_;=D*jq$QE z?)1i04<7EyC@{@#4hQ5LOgftSG+|L9sET(9V5YJLF1Hv~>;zHM2Wl`w3pE#%Gcy=k z?i?|FV%X+m{JL0L$fVUpODDINi>|72$dILloXB3jXL{691ExEr%iH6VDiyn^cs~AR}SCV?kiR1 z3Y@$?p-MXi)lztyv=ZNJYE{Xx3o)A>S{xa^gTLTqR{~*0Yw5dn(ps^aq#8Aq7ip7h za3X(emmz9)8_Jp$1ND1q-aCm(;B~nsF3HrEEX(Ft)Fus{OWgsFpW5`*HpqR*13i1c z|K%AyZNB`F)?EE?#pIL%h@E^!Vg*#pDVKRu;><(9)E;X#cn=93;LElGP`!IyFiHzvk5 z$AU`cCGm978aNtXNWQM*Z?%6pafOU?AbEdsXoS|xqwz_Cclnu{b+jBr1~%0yGyi#a zBOBAA6Eymvozbm%aC)_Q{hEyix_MoFioVU-%({~p6M99G&a;3EHr~w9(iYDucZZs} z)oDr3;^_l?7VDV-v9DWek$d})rzheaP)g|)rt;{TFWehp55U)D7Bp^uxkW8oQB=cq zBLRqZV|)Ukvv22CdhhF(jD?M(eb)2`9l0+~^}#lA){10?7CNYH^IWwL-JGEuX+bS7 z?BWz(;|9(IzRQ4tT*JhotqYXXTf=+FZ@6rO%)+LQhr{M8lkV)dfb}$)`T3_I^i&2m zR-b~bH~ev%)2c9Q3EA|5JG;2aa$%3?KKa)(f)B7`pA%=i6*^qphpGPc9vm zkm_hU_NJBD&&{rwkIvQZvTUz%%$Uf2F<~Ekc*ZK}8i6;{ftA_~-i=3?X4gSJbrVS;3sVou^$l*Bt7iES%>!6|j8icGVeu=+EuknXOtTu9_X;C&ZK0f#OU3xm!g;aPa%LuuA{tRmf- ze?@T!l>?-DQY1^+v8iL_eL&66 zNBwij2{(uB5j$(=Oj!1cJHt8ePC4>q8doUYY--Ua<2IB03CIQY8uT{!Gp}u_1b2~m zc3!2&hElbPTiLNV4zq^t<6VEHVmU7Ni^;<=#ta#-*E??sPnJ>dTR+kt$>egq=D>QU zOcQ^e?AraR-YM&zq+x+>R_IsZ?VOf#0tVZs=QL{**x(-5{04=`ufA3yB3U1!@kFf< zEBw!Y!=>XYldRD_cGMynNLp#;(;-do;y@NOADCP=WCPWXjMI%Oa{^1D zCWJWOQ7u4MF=GtPl=xppYjaDdhc(ToFv(Ewe z9Ci0eb1KAb;O@O9++4-KmV7r5`-&f%6+%bCfvBSJQsYu>2JXCWIZl6SKa+Lh^F8Vu zE4sjUah;Ghs*Az1^sMu(ExmKAXaE+zD!y5vW&{(6em%Op|HfS=mdH+)Z>&YEzW-Yt z{*sH7&{}%GQvB8XrEbyW`SSb77WJ@k%y_^m|BaJpD$+>#m}OXl+2S%3FLD=Hrq zOLg(O>yYhQx?b?DEq7zKh)SCDiwlL)eMBajYYDnC@yIhMJtUlNaP2{ehONKYlp=IX ztsN>!lS2j<-lXTKeb0s%6-GSHWweA8#tYfdEabgULh04W7TLFeQkp&oFJb+`g?i;B zLy18)i;C1%1XlFkBp=#_fZWihUWRCp)oO7&%^)z(u<;2agw$B;%dwyVM@^P>b|^iI zclS*MF5;wgsI&XZ|K50UjX@MJc7+S?X7Wu+hdAuY_60rN22a-UN5!wwIWi@R`rczR z7wX{4T@d6=tlz9Wxo7Wep0o}N?@oCo$GObQB+=m`F&$KBcf0q<0=)w<4&8HZ_^2&$ zIN3HcweD8OTn1y-%A`{J*E5oB6X85j zg>C*kGVuo?xXx`JldMA6dO-*$tA1VX>9GAMpd9k}Q_$3+SAQ6J^3zv%q*CPc4E7)E zFJF^Y_e%n#TaRX_xLCiTi4~3(3bEknP%yrmx<2b0(2>BsXk8VXJYbogWJRGvGb7_;UySkQNUA42p;{}`~6jj{}Yx+NV;P# z5AOc;J3@J}`Hi=gTR5dX&b-$Q#!Au1MZd>c4q2oSOz z63zpA{=4@$dij3OL{rK?Oib{Q0J%F22*i3w9trIEPj2t+{kyZif&-pK22Qu_CS~I} zKu3J98~}&_58&E=C-+3~v&#UD_W(@^9BTYIa4FyA|6cj8kl*$Kx{CXcL`e|H#)KBc za)=}g{2kv(e*VGk&fm+Glzl+?Ldl);Xeq6$`X`%%B=B$o(1tkPnkoeL{R$g0|Z0dZ{0X0fYRt5 z0Dv3gFLwTSwwIDc=^YPPW2j$Qhn*xPh0 { - private static final Logger LOG = - LoggerFactory.getLogger(FullArchiveProtectedOperatorFilter.class); - private static final SearchOperator EXCLUDE_PROTECTED_OPERATOR = - new SearchOperator(SearchOperator.Type.EXCLUDE, SearchOperatorConstants.PROTECTED); - private static final SearchOperator FILTER_PROTECTED_OPERATOR = - new SearchOperator(SearchOperator.Type.FILTER, SearchOperatorConstants.PROTECTED); - private static final SearchCounter QUERY_PARSER_FAILURE_COUNT = - SearchCounter.export("protected_operator_filter_query_parser_failure_count"); - - private final DropAllProtectedOperatorVisitor dropProtectedOperatorVisitor; - private final SearchDecider decider; - - @Inject - public FullArchiveProtectedOperatorFilter( - DropAllProtectedOperatorVisitor dropProtectedOperatorVisitor, - SearchDecider decider) { - this.dropProtectedOperatorVisitor = dropProtectedOperatorVisitor; - this.decider = decider; - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - Query query = requestContext.getParsedQuery(); - if (query == null) { - return service.apply(requestContext); - } - - QueryTreeIndex queryTreeIndex = QueryTreeIndex.buildFor(query); - List nodeList = queryTreeIndex.getNodeList(); - // try to find a protected operator, returns error response if more than one protected - // operator is detected - SearchOperator protectedOperator = null; - for (Query node : nodeList) { - if (node instanceof SearchOperator) { - SearchOperator searchOp = (SearchOperator) node; - if (SearchOperatorConstants.PROTECTED.equals(searchOp.getOperand())) { - if (protectedOperator == null) { - protectedOperator = searchOp; - } else { - return createErrorResponse("Only one 'protected' operator is expected."); - } - } - } - } - - Query processedQuery; - if (protectedOperator == null) { - // no protected operator is detected, append '[exclude protected]' by default - processedQuery = QueryNodeUtils.appendAsConjunction(query, EXCLUDE_PROTECTED_OPERATOR); - } else { - // protected operator must be in the query root node - if (queryTreeIndex.getParentOf(protectedOperator) != query) { - return createErrorResponse("'protected' operator must be in the query root node"); - } - // the query node that contains protected operator must not be negated - if (query.mustNotOccur()) { - return createErrorResponse("The query node that contains a 'protected' operator must not" - + " be negated."); - } - // the query node that contains protected operator must be a conjunction - if (!query.isTypeOf(Query.QueryType.CONJUNCTION)) { - return createErrorResponse("The query node that contains a 'protected' operator must" - + " be a conjunction."); - } - // check the existence of 'followedUserIds' and 'searcherId' if it is a positive operator - if (isPositive(protectedOperator)) { - if (!validateRequestParam(requestContext.getRequest())) { - return createErrorResponse("'followedUserIds' and 'searcherId' are required " - + "by positive 'protected' operator."); - } - } - processedQuery = query; - } - // update processedQuery if 'getProtectedTweetsOnly' is set to true, it takes precedence over - // the existing protected operators - if (requestContext.getRequest().isGetProtectedTweetsOnly()) { - if (!validateRequestParam(requestContext.getRequest())) { - return createErrorResponse("'followedUserIds' and 'searcherId' are required " - + "when 'getProtectedTweetsOnly' is set to true."); - } - try { - processedQuery = processedQuery.accept(dropProtectedOperatorVisitor); - } catch (QueryParserException e) { - // this should not happen since we already have a parsed query - QUERY_PARSER_FAILURE_COUNT.increment(); - LOG.warn( - "Failed to drop protected operator for serialized query: " + query.serialize(), e); - } - processedQuery = - QueryNodeUtils.appendAsConjunction(processedQuery, FILTER_PROTECTED_OPERATOR); - } - - if (processedQuery == query) { - return service.apply(requestContext); - } else { - EarlybirdRequestContext clonedRequestContext = - EarlybirdRequestContext.copyRequestContext(requestContext, processedQuery); - return service.apply(clonedRequestContext); - } - } - - private boolean validateRequestParam(EarlybirdRequest request) { - List followedUserIds = request.followedUserIds; - Long searcherId = (request.searchQuery != null && request.searchQuery.isSetSearcherId()) - ? request.searchQuery.getSearcherId() : null; - return followedUserIds != null && !followedUserIds.isEmpty() && searcherId != null; - } - - private boolean isPositive(SearchOperator searchOp) { - boolean isNegateExclude = searchOp.mustNotOccur() - && searchOp.getOperatorType() == SearchOperator.Type.EXCLUDE; - boolean isPositive = !searchOp.mustNotOccur() - && (searchOp.getOperatorType() == SearchOperator.Type.INCLUDE - || searchOp.getOperatorType() == SearchOperator.Type.FILTER); - return isNegateExclude || isPositive; - } - - private Future createErrorResponse(String errorMsg) { - EarlybirdResponse response = new EarlybirdResponse(EarlybirdResponseCode.CLIENT_ERROR, 0); - response.setDebugInfo(new EarlybirdDebugInfo().setHost("full_archive_root")); - response.setDebugString(errorMsg); - return Future.value(response); - } - -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/FullArchiveServingRangeProvider.docx b/src/java/com/twitter/search/earlybird_root/filters/FullArchiveServingRangeProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..681e2fc995ccd06f7f9daf62c8d84af7efd9a732 GIT binary patch literal 37436 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/FullArchiveServingRangeProvider.java b/src/java/com/twitter/search/earlybird_root/filters/FullArchiveServingRangeProvider.java deleted file mode 100644 index e7ec96963..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/FullArchiveServingRangeProvider.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import java.util.Date; -import java.util.concurrent.TimeUnit; - -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.partitioning.snowflakeparser.SnowflakeIdParser; -import com.twitter.search.common.util.date.DateUtil; -import com.twitter.search.earlybird.config.ServingRange; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; - -public class FullArchiveServingRangeProvider implements ServingRangeProvider { - - public static final Date FULL_ARCHIVE_START_DATE = DateUtil.toDate(2006, 3, 21); - private static final int DEFAULT_SERVING_RANGE_BOUNDARY_HOURS_AGO = 48; - - private final SearchDecider decider; - private final String deciderKey; - - public FullArchiveServingRangeProvider( - SearchDecider decider, String deciderKey) { - this.decider = decider; - this.deciderKey = deciderKey; - } - - @Override - public ServingRange getServingRange( - final EarlybirdRequestContext requestContext, boolean useBoundaryOverride) { - return new ServingRange() { - @Override - public long getServingRangeSinceId() { - // we use 1 instead of 0, because the since_id operator is inclusive in earlybirds. - return 1L; - } - - @Override - public long getServingRangeMaxId() { - long servingRangeEndMillis = TimeUnit.HOURS.toMillis( - (decider.featureExists(deciderKey)) - ? decider.getAvailability(deciderKey) - : DEFAULT_SERVING_RANGE_BOUNDARY_HOURS_AGO); - - long boundaryTime = requestContext.getCreatedTimeMillis() - servingRangeEndMillis; - return SnowflakeIdParser.generateValidStatusId(boundaryTime, 0); - } - - @Override - public long getServingRangeSinceTimeSecondsFromEpoch() { - return FULL_ARCHIVE_START_DATE.getTime() / 1000; - } - - @Override - public long getServingRangeUntilTimeSecondsFromEpoch() { - long servingRangeEndMillis = TimeUnit.HOURS.toMillis( - (decider.featureExists(deciderKey)) - ? decider.getAvailability(deciderKey) - : DEFAULT_SERVING_RANGE_BOUNDARY_HOURS_AGO); - - long boundaryTime = requestContext.getCreatedTimeMillis() - servingRangeEndMillis; - return boundaryTime / 1000; - } - }; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/InitializeRequestContextFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/InitializeRequestContextFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..fed999a150ee124577f9663180fc598a54f3c824 GIT binary patch literal 37487 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 { - - @VisibleForTesting - static final SearchCounter FAILED_QUERY_PARSING = - SearchCounter.export("initialize_request_context_filter_query_parsing_failure"); - - private final SearchDecider decider; - private final TwitterContextProvider twitterContextProvider; - private final Clock clock; - - /** - * The constructor of the filter. - */ - @Inject - public InitializeRequestContextFilter(SearchDecider decider, - TwitterContextProvider twitterContextProvider, - Clock clock) { - this.decider = decider; - this.twitterContextProvider = twitterContextProvider; - this.clock = clock; - } - - @Override - public Future apply( - EarlybirdRequest request, - Service service) { - - EarlybirdRequestUtil.recordClientClockDiff(request); - - EarlybirdRequestContext requestContext; - try { - requestContext = EarlybirdRequestContext.newContext( - request, decider, twitterContextProvider.get(), clock); - } catch (QueryParserException e) { - FAILED_QUERY_PARSING.increment(); - return QueryParsingUtils.newClientErrorResponse(request, e); - } - - return service.apply(requestContext); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/IsUserProtectedMetadataTrackingFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/IsUserProtectedMetadataTrackingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..58570b9133e415bc43e27fbe3a113693a8b2ce69 GIT binary patch literal 37666 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 { - private static final String COUNTER_PREFIX = "is_user_protected_metadata_count_filter_"; - @VisibleForTesting - final Map totalCounterByRequestTypeMap; - @VisibleForTesting - final Map isProtectedCounterByRequestTypeMap; - - public IsUserProtectedMetadataTrackingFilter() { - this.totalCounterByRequestTypeMap = new EnumMap<>(EarlybirdRequestType.class); - this.isProtectedCounterByRequestTypeMap = new EnumMap<>(EarlybirdRequestType.class); - for (EarlybirdRequestType requestType : EarlybirdRequestType.values()) { - this.totalCounterByRequestTypeMap.put(requestType, - SearchCounter.export(COUNTER_PREFIX + requestType.getNormalizedName() + "_total")); - this.isProtectedCounterByRequestTypeMap.put(requestType, - SearchCounter.export(COUNTER_PREFIX + requestType.getNormalizedName() + "_is_protected")); - } - } - - @Override - public Future apply( - EarlybirdRequestContext request, - Service service) { - Future response = service.apply(request); - - EarlybirdRequestType requestType = request.getEarlybirdRequestType(); - response.addEventListener(new FutureEventListener() { - @Override - public void onSuccess(EarlybirdResponse response) { - if (!response.isSetSearchResults() || response.getSearchResults().getResults().isEmpty()) { - return; - } - List searchResults = response.getSearchResults().getResults(); - int totalCount = searchResults.size(); - int isUserProtectedCount = 0; - for (ThriftSearchResult searchResult : searchResults) { - if (searchResult.isSetMetadata() && searchResult.getMetadata().isSetExtraMetadata()) { - ThriftSearchResultExtraMetadata extraMetadata = - searchResult.getMetadata().getExtraMetadata(); - if (extraMetadata.isIsUserProtected()) { - isUserProtectedCount++; - } - } - } - IsUserProtectedMetadataTrackingFilter.this - .totalCounterByRequestTypeMap.get(requestType).add(totalCount); - IsUserProtectedMetadataTrackingFilter.this - .isProtectedCounterByRequestTypeMap.get(requestType).add(isUserProtectedCount); - } - - @Override - public void onFailure(Throwable cause) { } - }); - - return response; - } - -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/MarkTweetSourceFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/MarkTweetSourceFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..3a08263eb1e94fc0c610fb8e9da201b0012866b0 GIT binary patch literal 37290 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

g`P>O18Fp)>wH`^SL|+FX|B{&rsu8H9f~5ZZ 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 { - private final SearchCounter searchResultsNotSet; - - private final ThriftTweetSource tweetSource; - - public MarkTweetSourceFilter(ThriftTweetSource tweetSource) { - this.tweetSource = tweetSource; - searchResultsNotSet = SearchCounter.export( - tweetSource.name().toLowerCase() + "_mark_tweet_source_filter_search_results_not_set"); - } - - @Override - public Future apply( - final EarlybirdRequestContext requestContext, - Service service) { - return service.apply(requestContext).map(new Function() { - @Override - public EarlybirdResponse apply(EarlybirdResponse response) { - if (response.getResponseCode() == EarlybirdResponseCode.SUCCESS - && requestContext.getEarlybirdRequestType() != EarlybirdRequestType.TERM_STATS) { - if (!response.isSetSearchResults()) { - searchResultsNotSet.increment(); - } else { - for (ThriftSearchResult searchResult : response.getSearchResults().getResults()) { - searchResult.setTweetSource(tweetSource); - } - } - } - return response; - } - } - ); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/MetadataTrackingFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/MetadataTrackingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..8c8f5a20ebb6d66def040a2546717307b8f76940 GIT binary patch literal 38132 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Π-A>390{OM63}(De}!s; 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

LP(SB>k=&S+(5+#*^r{>IFmMBzm#V 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/MetadataTrackingFilter.java b/src/java/com/twitter/search/earlybird_root/filters/MetadataTrackingFilter.java deleted file mode 100644 index 8a1b29fc6..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/MetadataTrackingFilter.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import java.util.List; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.metrics.SearchMovingAverage; -import com.twitter.search.earlybird.common.ClientIdUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird_root.common.EarlybirdRequestType; -import com.twitter.util.Future; -import com.twitter.util.FutureEventListener; - -/** - * Filter that is tracking the engagement stats returned from Earlybirds. - */ -public class MetadataTrackingFilter extends SimpleFilter { - - private static final String SCORING_SIGNAL_STAT_PREFIX = "scoring_signal_"; - private static final String SCORE_STAT_PATTERN = "client_id_score_tracker_for_%s_x100"; - - @VisibleForTesting - static final SearchMovingAverage SCORING_SIGNAL_FAV_COUNT = - SearchMovingAverage.export(SCORING_SIGNAL_STAT_PREFIX + "fav_count"); - - @VisibleForTesting - static final SearchMovingAverage SCORING_SIGNAL_REPLY_COUNT = - SearchMovingAverage.export(SCORING_SIGNAL_STAT_PREFIX + "reply_count"); - - @VisibleForTesting - static final SearchMovingAverage SCORING_SIGNAL_RETWEET_COUNT = - SearchMovingAverage.export(SCORING_SIGNAL_STAT_PREFIX + "retweet_count"); - - @VisibleForTesting - static final LoadingCache CLIENT_SCORE_METRICS_LOADING_CACHE = - CacheBuilder.newBuilder().build(new CacheLoader() { - public SearchMovingAverage load(String clientId) { - return SearchMovingAverage.export(String.format(SCORE_STAT_PATTERN, clientId)); - } - }); - - @Override - public Future apply(final EarlybirdRequest request, - Service service) { - - Future response = service.apply(request); - - response.addEventListener(new FutureEventListener() { - @Override - public void onSuccess(EarlybirdResponse earlybirdResponse) { - EarlybirdRequestType type = EarlybirdRequestType.of(request); - - if (earlybirdResponse.responseCode == EarlybirdResponseCode.SUCCESS - && type == EarlybirdRequestType.RELEVANCE - && earlybirdResponse.isSetSearchResults() - && earlybirdResponse.getSearchResults().isSetResults()) { - - List searchResults = earlybirdResponse.getSearchResults() - .getResults(); - - long totalFavoriteAmount = 0; - long totalReplyAmount = 0; - long totalRetweetAmount = 0; - double totalScoreX100 = 0; - - for (ThriftSearchResult result : searchResults) { - if (!result.isSetMetadata()) { - continue; - } - - ThriftSearchResultMetadata metadata = result.getMetadata(); - - if (metadata.isSetFavCount()) { - totalFavoriteAmount += metadata.getFavCount(); - } - - if (metadata.isSetReplyCount()) { - totalReplyAmount += metadata.getReplyCount(); - } - - if (metadata.isSetRetweetCount()) { - totalRetweetAmount += metadata.getRetweetCount(); - } - - if (metadata.isSetScore()) { - // Scale up the score by 100 so that scores are at least 1 and visible on viz graph - totalScoreX100 += metadata.getScore() * 100; - } - } - - // We only count present engagement counts but report the full size of the search results. - // This means that we consider the missing counts as being 0. - SCORING_SIGNAL_FAV_COUNT.addSamples(totalFavoriteAmount, searchResults.size()); - SCORING_SIGNAL_REPLY_COUNT.addSamples(totalReplyAmount, searchResults.size()); - SCORING_SIGNAL_RETWEET_COUNT.addSamples(totalRetweetAmount, searchResults.size()); - // Export per client id average scores. - String requestClientId = ClientIdUtil.getClientIdFromRequest(request); - String quotaClientId = ClientIdUtil.getQuotaClientId(requestClientId); - CLIENT_SCORE_METRICS_LOADING_CACHE.getUnchecked(quotaClientId) - .addSamples((long) totalScoreX100, searchResults.size()); - } - } - - @Override - public void onFailure(Throwable cause) { } - }); - - return response; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/NamedMultiTermDisjunctionStatsFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/NamedMultiTermDisjunctionStatsFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..ed87a0cceea7264431c0b92ffbb97f39af623339 GIT binary patch literal 37381 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/NamedMultiTermDisjunctionStatsFilter.java b/src/java/com/twitter/search/earlybird_root/filters/NamedMultiTermDisjunctionStatsFilter.java deleted file mode 100644 index c75864124..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/NamedMultiTermDisjunctionStatsFilter.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.metrics.Percentile; -import com.twitter.search.common.metrics.PercentileUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.util.Future; - -public class NamedMultiTermDisjunctionStatsFilter extends - SimpleFilter { - - private static final String STAT_FORMAT = "named_disjunction_size_client_%s_key_%s"; - // ClientID -> disjunction name -> operand count - private static final ConcurrentMap>> - NAMED_MULTI_TERM_DISJUNCTION_IDS_COUNT = new ConcurrentHashMap<>(); - - @Override - public Future apply(EarlybirdRequest request, - Service service) { - - if (request.getSearchQuery().isSetNamedDisjunctionMap()) { - for (Map.Entry> entry - : request.getSearchQuery().getNamedDisjunctionMap().entrySet()) { - - Map> statsForClient = - NAMED_MULTI_TERM_DISJUNCTION_IDS_COUNT.computeIfAbsent( - request.getClientId(), clientId -> new ConcurrentHashMap<>()); - Percentile stats = statsForClient.computeIfAbsent(entry.getKey(), - keyName -> PercentileUtil.createPercentile( - String.format(STAT_FORMAT, request.getClientId(), keyName))); - - stats.record(entry.getValue().size()); - } - } - - return service.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/NullcastTrackingFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/NullcastTrackingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..ceba0fb57ef57073a585f54ae750555b12f2f39a GIT binary patch literal 37653 zcmagEb9`Of);}EEZfx6j(xkC%a|eyB#%^reZfvWu)u2gZ`?q_}x%ZxPpXYhse^x%3 zbBr&>SbNR6*PeuK z?vE+DzE1eLkv@v~OJu(;Gg7K&*<`?d3*b%-H@r}j{9@RcFyLJ0I!V{yWTEC*zt&rX z7Z|u7}ZWT!ZZxs=h4hMn!uQ%{t`ADZnO}vUctWJX_=4o-g-gO`XoNLt86G z)yL{MND9~UUJNPoq$iMus)0oBD^xmbM{JdM@O}UNJxx(8x!~h+nEw6zoSfZ+n*Rv$ z7Y;R{I^}ke*yK?*9n+uUHC6&`VUpAK;Y0qOwZ0k4Nkq~`-8$W@#Ngn;UM zsh7^;eV4Vsd=pvvWE!2xI3%Mwv<;6GDqxcD&4 z0iXbqvdtV3B~@)dY~3OrgqlA~8Ttz!$2p*?q{*AIU~?BDNjsw7h)Ew#$CSslWnz7M zYFD(>skmf33KCOL(RU}mftu_<8{oERBVZN;yW34}DOVILEB?b4L_dLyAQCjetjP*n+;Ud7*W`j#-u;|Gy zhVhaO)N`=Uf0-i5YE>@II}%kvm0S6uE}TI9jSP`^AA{y+KmcKQB3VKMYFSG$AxI`_ zX&z{J@_>=-ls?4Vas_OV(~d2KD{i&6!tT+g4h!yDGveCk+HX%LS1f+M1lowfzdjBc zDj#H;QP)DT;-9)cLLwl8vI#4tDZ90*vu;P6Iy*UTO}m2YRUov4A|NGy$eTSatrQN- zgIU*c-2@C2)eXjKv4eP7b6FUKiZ-?ZokHi((z0Oq4zn$3R*-7Cn0cAWL9hgw>BZOWqyqGQ#?c) z%dW4_V;CmS7pB{Az6QSM#{0XRNBcx%U^0)V}$vEQYo-C zbxSAN0)B0wjlF$?x^Sz@8Ooja#gB6*(i=(SH)YH))G&HE5QR!OAJFH=&EzEKhgUB@ zC@GKUIfmVgJ8_!^CsQf6?e~9bLKA@egjUW`Yh%PR^ery#df#*2TlV{K|EGP5sI(Ew zbxCq?T0=+bq*z3RBxtI67aV@*bWl#)9&R=jnTq824_t70Xt%*b*9f5kD$pReb<=Z` zS6!VfGe77A@)kiq5b;Qh6ZX>4je*u;cn$=nt#>8i(#I&1-s`)c)hFh9cBFk*z{u`d zirVJA*m#JWHu-U{QmMW;6GjoAr3u|fI*l>faVgg&$9~;+%b9rUMbU348Eq$7#Zb+r zjRHd`N;fa%s5$hMC*EFDh?r7K4t}X**E?TDHxHqR8<}RDZs&nN@07 zLc~vjFq=obsR5}pA}O;O3;rQ_OB^@fVbA$Ib1`AMFo3-KUWRs(yRv7dHvDCgLoLep z0g{==0d{aY?!X$=@e4MA2WXGw_vKv)QJ^f_LaWZ05Z@H6Mte~L^ZCKt2eZoVQ=Ey}h zNL)M>@W2NF?IHeFhvEuJjIp3FSgXA7 zyIHNTeeoZRf>I?VMXo|8K+!Qm0yiOu(T+(`o#bmdVWz&UTe7Qu|Cq*LMfEXi-)>nH z1&Nz1%%PIwDQ>+uW1SNftQ8cqT9Sa)7_T*gslD+u=jAK{E!7R2KG|tMIu5D#C^Dq| z#-8#kt{yiCJgk)!-dP*mP}9OWgI+fJ`gBXHd8QX3=NQ@mt6tt+z_Xp%hGVF z2sfMAa9alzRQuQT?u~Ln=lRP(dh9Xuo3m5tcd_%Aj@#zBQ@>wX`mYNBy&J*LN@N;y zA0wIZFF-~JuDfOweDa9QVg>8?;Dv5lV+d>H`8u!95>-qyC$cLknTAwp4!-kWM<-Cm z+(?UONYr#BM(0zi_I;T-r^)!GUKYs+`)%@5Ml9zS3ix*A+wz$=vG?{RKjl@yV#o=q z5F*OB9N1Kg^$y;YKCgo`4Yv;>juHwWjhsUKBRqhbYqyHfz@sZ!*iF5pOv}%nVwQ${ z1w3nBexK1JYW~VCugHzq1Z2BwGj9nJhn+pB@(-#C1L?xu=ZZZz7 zj8AV3#$w@!WP=?{4+Q%`x_sU+rv))LKPQ%y8x~;bB7)he?IV1ixSO;atTBpFmsIm?jZb}(ims~S zy-|_M<_DJ#62(_TKGL*XDE8y|2$E!18S8BKOEuJ01Ng;!R#Wm3wR*J*ZC)}R7U)_e zb4CW#9qs|Pw0sq<2k#o^BRlUr(H3r={v+3&=bZLy>-sMFr!xM5ouAn5%aux1r?i_4 zVyEDK&KK1uCTSPB&VQofbD&Na;H_4(nVk*;tGR|$r-~N6y|`#Kc8l45Oi8)Wjp2F; zXCNX2PZg@}3JYTan3{|ETNeu9IrC=f5Qxl*fKEpChrK9@LS!R$&WQI16U6KG+vbC` zQ>D97cp#_sem4))XB7k4SE@>Yp-z^(!Fgva=YM`QzZUxEdSdU7hsFxrXp93l8u-AC z#vkj+pWEcWuPT3TnZJrC1To`$Ie&xe3rWN%wvYVqE1$BRR8ovc{%1KXyl$wZ56)`MtZ7*l% zGQX(Y>}g$+W#!?guW~PNb!`*_^>E}(dG^9>nAOpRN0KTDU+THE!L-C@6H<*rbFx2s zwv%2?R<~YtR@!U}ZKON*Zp$~Q2lk;t)GaR<>XC6!819}Q&fGqj;`_Zq>%*BhF5rt5 z?+3id=|-a&K&anmg7>pM7+Q_(nJ=1vh`V)*rHHW>)n=;ffM1ocMT&4!)TgTi+k||W zwBfeCnf*H8DG&SE3mQylPcW(kf0u_q(?)4r0*fz_2?Ru64H5+TU$u7r>|tx>{Kv|zr5I1EQFW*Ru_-{%*vsHl1_z=aR{@>vn+eD~>ncMqlKOa#JRcYlY5)vfi)+ zWt~1=D((!220a)stvv%pxo!Dvo+6JApFVB)aL>F7iB1ZfYHR|(P1t$yO8OD{3X=O# z`VGFr-?h(Oo}IXj?^!oI;(S7cc3%lL>C8Ee$#}jss$>Z>bzl8f5XaYhU;2($zWddc75UGFMI^?04MSU_##V zO_d<>mdZXQc^{~G>^APL8DF4GZg}~u9qNmkPJ#Qm9k%mg6SqA@$k!uMwcVTV6rH3d zJnp6z8L}w!42^d>v;jG^rdsH=*1$(g$cH}i+hj>O)UD$C zRB(ifz@c6`A*EUX@V^84*8%Gf?|KgtQp?bS_VQ~kW?;Cq#ox$Jw_ZE=>4k`rYo^_1 z*R|u6S^Gj;h7*^okQVH3`+wGM`BY<=XjvP-q%0loJ33cl6_!55qF%H;FBx5{(pV3q zSv&;2cj#3wPCuW{JvrPvz79*@T??I_3uY=wHt8+QU-TbbU;jMocg|#|3u(hI(ujWV zKX5N6%)F*n3xZ#n*?*w$yC7Op$Y@E4w1$`ov!RQqEtlXHMvVs*Cp0Q#?do}L@3|zy zi(G%#H1iI4&MA!oXv8vQS#`vk-x%12~O;Q9AOZ>!io!w>wqlG{XJ<3 zoW%OqB*YFm0953!`06HH3PuPf5BQNj=}oYIVV|-m08@#9aWsFVY6H9}L9s z4F4sOff$C$10LoN)$@sNO(-3|qy9Zq=q%Pa<=WnbuAj{-uDw9qMX2uLbN&eGr{$+j zwAh~1^9fEOAcg8{Txn~wd)Jm<8@kT2oio0;=KO(U`^xaR?HhfR0HaRw%lY8O^Q}vp zp8cSg$V>myglnGVvir5p!_Zt#&5nD`&jmq+!~KKN{GEsBEg`*@TXCWo`(4Hr;UwLd zbB=i2_h$zLF$RxmLlpY;GJ?#l!FA%hGhf%`OgF^AwJt`#;T$Qu6Q_j3wqFAgfSTQa z>R6OATOVrvzUxOP`eVlrs~1~*i*t5d?Mx{rhw)g`<3CKe;B_}y~^5Xdw(|V6xQ-j5mr5w>mWZ?4?M$XTBchx+iU5)6pg4!S1<5Dj1tqJ!R6ZSm^ERijifG z!&3IQ4LetN(6u3GIHBr}9(+rP{`sjnuiDh5KM5miV23w6=qGuMf8x4SMzf&F$uV2T zwcpxBF6vT{WGW&1@fT>GCwIjm8Tw(QsVzyE?L0^SZ7#+ofUaz}WBU#lna@ix`4aoN zgh@4aG)t%DIwF%(^aZH}%IiVr5ytWEffx~&(#HaxFYt1$jO@Li^Q5_SEh}T;X&kCS zgPajjysgG=i)f0O~&?no8OVCk=eZCl<^>?4E%=?u5 z$lg2SFWQpX7zC7+@2K-V{B+E~m?LW0IwyU9OP_C_c6+)RzIwYF8uV;`b@cGPe@l8_ zJbjw``Eu;QY}E1ADwK7{^fEmR>G=kNyprM3DhOe))!vdad`t4E9RJK=xE@?kdgknm zBq29WIi7Quf+Q7%_pL+qEL*uvCI~Q7z3}{k-reo364eA zalMe2It9hkqsm3yr1;)$*@gK4Et964B+C4;@rMweDZ;P`r}#>}V6&~{HPeFys6>l( zYi=Z}z(B@)zLwU+9yN*)41+|f z3a|CZ0$W0_A6mqwga9{vZAwlH1;u)ItoUPBV=J~tavfI*Ju_qUx+<~1CeR&{@^M!+ znlz5WN>EDEB2VV+V^uqqqi-ShWxm(S`A7_nmJjis2(3`j&*CMsUC2Oic!)Wct(=yX zV`tP6=6S1WMF;q0o!GMt#3?!BkS^iZPwVB&(G%?~5zu-=XoBRCyOHOM}R7u0%;pS{KuN(4Ghag1rd$A-AOzUTfAA8;H7=EAW zpWbR-<5)XCPgqJ<>raCF^8WDlw1|&gDTAEJ%-y~0&R(l##8ChzuS#BS$;-W5UVEZG zsBn3oX)8xw^D{S8iOq9ceE4zDv!Fly+uc06V#rz)E%$7EY5w97iuz!yy&8SrC1-n! z@hr>Y;O&CBOE37EgrVBFx2K1-e5J0wJ-_zAys}IhWfhkEy6(dF&p*P-D885+c|JO} z@%~D?tw=daB8~m#3ldVw+St1cf=@&I?Zh2$ZkbujxQX|re_R7^-7SjAAoOC>Xa&4v zmjHc;@y7(8t%a&%i9B~Z<>TecJf;DYc&ErFQU+U@JT9_sHM#f=+)ORjc9O$=CEbr# zDqqZ^MYn4un&a%dD$a#bq>k%ZMvtPb8ucQg_?pq(_%Y-8gjMb=>e?TC;lQ;+pE2Ut zwS~&WT47;LnR1(M5=O%8j`+aEMQeJGxa!ccwKq*%-j$&!+n`M#`+aTXKvbG8=2I27 zX#H*}yn3adO>*Jsy7F3^RI_utVS6#xinO+quJtHO0>v;v3;CNQmo%IFr%7%R*1bY_ zb6bmsv_gTBqPtAe73Wn*FYDHwNVzzyQIC6%it2zLXArj8(D$_rH8BuE=HB6wtE=|7{iK0C>(G|e-6r-ck zEn@&lZ=0*~V;|132PiHiBF@gSOuVk43K|I#c)d!Q^wIqm#uf zEG>`iT!B_9Q&MoeEACfqaWvyt9kDhogY4M9+KQCvzv_VdJ~^SqJ7WJag_z{Fk%@+r zD6QBrT$n2|Lph&rHVr}|OT1=a7?W8o!QQ*q<4I}%o)(7z@dvNT1n`^A?aqtd=k*T- zV0K8#me_0O=pDL-R%>16dJA&WrOfohOJaw)P`vv*D91UaL-`ssuI9-Hq+ zZvJ-y98|#_ZkxfD)?K_U3MdX1X8Yo&M~By$lF1!+xM;8G&x7zkr|!OkJy2Aze_dZ* zfm9z&Qme|2%La4Ju(LahmwD7sYSYbbf73a85|boC#%2&GL>y%~ag|m-%~snpL_9z4 z>VwKB3}l}-Nxcj0u0lRcio`syz=b!c$@9snK|ix@*C)KXpnSQWGsi>kJi52OCGJYi zqA0LAT#Y2qHIptoe0{snI9~t{G2fa>aFVAHZ^xe*61)(1u7o;bF{ji zuzHxzcr)0}G;n#{t$RsX2V;xsJFHG4S}D{{%;{zGe6G8Iwe*4(rES?^HdnB3Nk4e~ zHz~oF(zH6DA*n9Lj9@!|au371gRkN<5l7D8X#ufWwg=!l!i9_i(W#u9YK{=qL?Vvt z$iHk#Qs#4caXS_}191Wlk#e~#1a;_jH-iGv-S=yQH$P|Y0c!+sQEj3Z1(<4y0uKDq z$8#W8Aaw_M8kUX_Re&&)m|}qH@T19=jX{4EulD^Sq}&!meis7yVwWA*4kt}f0PoZ# z*rq?{F#HJVjbt*#jX450EdSQ!6&~%ivw6<%5*5zk9c~Xx5v}hLNf>JH!!AAexP1Po zrp)(zYX_ygx*due#g6piL{1Urca`p|TixX?_-m_Ab~KkF?K4egs}rXjASp#|$K1cX z*rT3&BUS^N;k>ztZRboqqH?J%~`Wv)qUC#{N6_m8bRVoWy)a zgLSiuM2->@WQSr8`f(ADIC4rk_HDvxoNY;_fqW5Yd^Hk47`AjY;8&x z)Z2r~bi2n{i+LGPCX9<*?PE{3|YEsm3Z~O49P>o!`!q>={9F{6NKQl;v-yqtY7QGfPs1%E0 z;j>TviT(OR`{v2{M)H74V_4<*%KN%e8lx=CcrxlJZ;E8nW^ct+qukswDPBp~=l%%| zf_|tpdK}EEob!I`HT+{ioXURdyh^=YhV;A!cF@s1ul+Z4`zLKSf~iq5*asytLt#GU=vt zg*imb)pw?eTXIkUu8T4#K-=2Jj4zxt%EBw)+~DIBA!1xtxm8=NcY#`YN!|2<#uHi2 z+`!>6HQ3eabV;QD#oe_k1pRX6>NH#w94#1JEZv8qdB&UwLduU^Eik1r?iFeR$G^no zC4_ms0{Te!gpRbu3rL9}4HA2WsiG`_RDn@M?#;tz*=e2SR;Y3R=7Avp7mxg&G&bl? z$)zG{t)cVr5ECYAlpm|H$PrUOfuw%T=e!2tCL zMK1=r>W3|Z(X8bmkSG5Sn^DAnvGKV4f3i`JxCd}uQZ2ieUy)l8Rk8p1eAu*5>%vM0f_zPSRlbLij3L zy)1i3P{Tw)_=-osyE=w6mrfC)1K(FxLO7U|m_U!=-{#;5n&c#UVz31!qV4Tb6;m$M zD?DLBs4zj-X#US?Qjb7npSuU0jQk9Y%4qvvn#UaBFI1hw31A}1PEpt)z>0+u?DkIS zsCHnyFgxc+dbg(l{_vO4;(BL!;S84wy}kOa5kav`PaCfAije`L*;i2+LG9%SExuJ( zBK50rF7exF#hYW>)74|GAH31LPbWMDH6dQ~M}0@KHl!hqpa-hZnyGsV_`-CWCyqv# z*mWI)d-dv0lH}f8F*P-jU~qSqFyA!L%&tWQ3IMeg$K^!d*IFcnFNq1J9-~#jo4DLo&MxI`B3p^3;lVLi+N(DtE zO*a0x3CqQ`N%$Z}{m!~RJ!PhR0Ou+OSUgyoD6tcW3XC{H*x(2}Db^e&mRS6Xyy+q& zm=iRcS?sT4wn&nXTs^blgGXMwCMxujHEhsLrYwU6=kD}Sz958ksiK^jP>Cy0xvAJJ}ln@!v;Tx3@Vy7qo*~UMvgWQO>xSd z|4rqAM6t%2b(N;!T{x=lBb8;PU9^?X zlwvW9&9;M$G8!0kF1m@n=@*o<0BLopZZyytmzxitk@DAG&lXX2m3c3V*)Bxo9Sv$C zOeVJ>PFE>Y@)2tpZlRV3IK%DG)_!S!O3<=3(?>Vn&Cnd8>axllo!Lvmv0x~tn3B$H zSR)SNF7f@Qage!SU|ZfoM+F>A*V*{h7r5Ka-Ls_Ze;vt_FC* zozV_|Q>9iS+Frp)l|5d_ipA;8iIg+xbtGZ_V4+2MAk6p;}S2kDJ>6&pdw!fa7Xz+#*-6F zIa$({_;a|ak}t!ZaV=PH+$pBCBCY>W!Z|`bRhDy>#AC6~f|vZng7+VVc?1UpF2b4U zlYc67{htc2GOt4?c|OE!jaYuMX_>Sr=Meb8f`kdJv@q@P^gY6 zncsgruquc$x2b1hE-6{j=kUabn)>{!?ySF0`s|xTG!JzBtv>LdyMP7UEWY!4S4(!yGHQ$IA|lzBh!T%~vl?vvG$+ zpNGB|t=}m8H?_N=2|P5ieS^y)c>i`Z_9_4NVQDwDvlybJ z@R?o{DdJ}|pziCC&vLE^?JAG@T!EilXI9nmrCaks9KA*P<{XH&(rJ^d0)dNL|C&Zq zC$d3(`V7Zy;WvRY2Qu3d!Q>6~kkJ8mhPVLOThZEiFA@}r6A%jYKI&~cL@fFmpiN3^zrvBGL*-jx z8l;xpe<4X<1Wl)$Sr_p=v#BtFfVsJ8cZ(5Wms@-p5-Z`gN;h3cmzxVKhFzXgo#c|A zD=aCG`PQ++UiB&{mp<3{gelIBC_XplWu|r9SszyH;$IBQ-X5Rxyn37q4kqw=Mq!R3 zm&nn5Ia4N|PWj|3O}r=YJ(-uj&(-th+fwDfJZj$; zj}HC~?AmM2^beCi*{g25hQ7@;uKvrUjLvaqQTU%GLz8}+pB$!_>DwTBZd^F zrnVGg=mOnAi{~KD*q!Nh<)goe3Tt7;qRkuVqt|S2)k* z*1;e*6aWScWO=$^4oQILoJAj0h(FP^MG$052ssunaM!U79)=Gh>K_Jb1kp+?{gs%h zl!{xV>ee(g9&Ew{hK{+@mNOeVyEUaL97_?PhREd59&3IH*6~ce6JpHNV8~D8%sHwv zQ48%N3;uhVgcu26p92pA-GKz6b^Jzi7pa2Q4!!)1#^i7ZH95qlu{^#y0AJct{sp_$ z?xNlubQ3D}LX_m!;hizd&acJBG$Z6*coZ6x4v={89(WWM;tmjO@^I`QkhhRb)Es+1 znf3iW5OyH%TJ*9HC$akU7b*3HJJmQkdQOMG4#Hpf$_8Uc$UOv(+D_%cBC-7vsd@uZ z7Phknbt2Xy25vLlK^djcm`31_Vf7VH;AV|FK(2B6;ANRIpsz_Rn#jlhBQ9Fxw>X^O z3(-rPkx}Dqo?o>@Ed7LyzM#aAzc0}BzzbBfFDSi~>uX?RZr3(s(dj6`5Il1%Nk@-9 z2J@Aq;Ij@>a!S)TU(jpyg$ppZP){tT9=B3-ed;r}j45an`Q>(C@lMNu#XE(89tp5* zh4^Rj>~eJfDqd};ZCC2#aw79z3gPKlHm581!1;%NLb2!yyFU4+Msd_KnC2*w@ZQ zATD^_;s7A9n7gcB-i)KyG3#YWiiU;qX*QBMRV+A7E#`G1WPv{p!#b$en#@<7-{GBs z{LGwjb(8UF=eul2y5OTqML1mdX%_xM#Y|l)pm19o=gYrP(1&{w7DKn@SYo}N?a+zU zJk`>B*U zYmqmHJp|`VPNgP%SbL~6H@yMMu`23 z`1VgKtVLx2Jg^Ah6VqwaSnw$Xd1Tbr=r|aS(>0!&BZA$>N=DBw;=@TBhZ-FA2B`+u z4CZSqhlfxqJ0;`?79gz@2TKxUDA!_jkzCiWJy;4Sc4yZ%ov-YDfNyK=Upws#l&*fc}m z5qc&C ztPgZLFG4C&)dh&$NZVS%grMPlNX|7KN|sY5HMtL#Z*t)7qlEs#xql%wuN?s~Fc8;* zFJ_z_ii>I%7$AYD~soY+Cj-bugg&|*Ut7cL{=0%F564!Wh2Fy zTU%k66h6PKqMT*}QmA)fPxRu!B3*Se-ai7-N>$|KmUMU#r0MKKD&PbjLp zC+^`jNoMP6!9$mu&SG|~9dX`JO^4xn-yI@_*kFCIbp}jjR&zY2l6#9g!dU4{}TN91W?9%)ETks1CKIh(=}q0(S4MNeYVn7qH^D&!#ch zlS3ewFE_WoD#aa}+(MWyvJ4M-hr&Lc{&2pfL&ZR%x!7_%D_2v2e*i}h!1<;m&X#R| zgcL$lfxvvhsd0Pl@Y1{JdK6KB6pG?BUr{M)U=fBC^6A|AN>jr%1sqj@_dViKG+@dF zx~?nRwm7~iSnmh?i1v2fNF5|7-Ch#eI`#zm8D4<%t=8u$Sq= zJMZH|~_TeYyjp~J1>U_}Uyvy>-a8Y2+(7&4bzt+aJ;L&(Ui+XGq30U7;fJ^5# zu%oPyLI974E8tNWTGhvV?6X}B|B%kh+_XM@Ry?}tABc-ke45)I284K^1&LUzbVo&k zbeAH{XdJ`R&@;a12AaoJF$WE^m)i7;+9Y88U_rDy^&dRBQl`3|t!HTSp-k*pGUUhl5_`=!+ZbS64OpQ>W z$P;%&60bY`>M>(tCC1r=LTK4gVm1R@lM-)=`m-Cxz6oCze_erRj;WA^Fd+-yrh)UB5((BMJ8= z=6?e?D*OgG4*vtd;odE94`R3-X85#+FlKqnowqVm-l4-hC<@GiH#;0Jc)RuT?g$wl z@F}g+f3I~+)qiiW9|z6>-x~$I_foLeac8sgF9kY5vjYUqVE)_g@HWGt=oY-#Trj9lmZJ;24nxankUb{LoSfUy~%s8S)&8&d%F96Gl~vIAxNH z+%|JD%V|GWZHvehdtRg#O)4tk`Z=fP(MG>2UPQ_}aco8VreToyoUXUJaC1a=l?~Xo zZwxmGdN#vX7%&C*u&hneVatI;DL!80L3x(Qm3;qZo^>%3<#__Gdz{$2Z!B5Ez%>Mp zlj3L}^t0J6?~NR>NQ7LW!x;S?Mm~t~;w2OfjH2#}`w6o{Nm$RSCB^}AsSOgeBd)N9 zLrR%gcReQAW4CB?IRPgX7J+^#o|UZ>3>qB=tEUe_l7g_94fz_3&hQ*SK`AL)Ss**1 z%^k_ot^)1IqQ;o4VsHPcRku1Nn#0g=*MwIKJUV`oDl&x0spizVe#M>8z3ZY1jV{r` zY;dTUUmfZk@TqbFLY)%0UM7v^D>f>HCs|F51%{tLb}+UMPRLhAX=*`huDIJW(BI+W zn7@k~o1y*WC|TDv)MH#4AH!v4u4B!r3>X@Fne}G10I-|Nh1u1!GNnda{E}F%)S*zP zoF0pKwezS%*gQzq{J=^#ep@{zD~$9tY5!@?9I8pH4BJi2)wPph zO|jOwQkK{?Jjvy2QuNE^hcLFpX=^<4P3=ivIy(uIPwZOrLx%`^9jmE&^2t+jn!heJ-MEYE6auetk$$5QiC1m; zM+)^~7P{-s9>nED#b!*4L(MedUubkE)N~C)XSNg7BdmBc!1hSh@a!KH2aoTk-y1Ff z42{izjRYVkpLhs*sj%9J+PWYwj^I7o){lQvGd8=btXw9}93I>D=?hOHXVNQh06skvOFwW~4#L_nPr3`+S2e!Q8UT;;klm{-R+n zt*YFXGQhO$-RHjb@9moNQAy5RUq$#s^bVKWmBgoX_ceyUQ3eM?#%qbAh7IM4-5%Oz z3=%(KPN;Ie^>VVpr}h!e;x&!iV?@A~43k&SCE zweSKhA@jEv?#*~EFr@aaa1jkjs7|*k1p$;vE9PM<=7n&ELtw(tqNoy=68rVopaeqR zX`of=E>Nn%&;!mU2LVm;rHbE=84xkIeKuieZ@_8Ux7sTJiX>4uex!Bh4X&ke?Rf~Q z)V6YzrNW9L*rnS~U0i5WYIdTKepm(>qg(b?kv^{vVsH#WMs+L{S@>{um z%Q=kr;goJoVj=5@X1Sty$YdgrfpF=}5szA|f!EFob!ajABN2jzl^KdoN2Fbz8pxZY|sAYs0_Ec0KIh`!Kbd{_=f7)$>?za+3v!c?9SCvJ9*0u%RD&VH8; zZI7t89m-ZTC1ZCVOk$dYCjvk6AAb;FRAz;A%Z z$qNXT5QA;F28*&=48fRz~3DN%e5@AM>OtPI2WbSF|A z59UooP68ZsPV2qN4L*%F54M=gxAuT%$NZ~4U zcwD+9dPn}}xqU;Az&Rcc5D@1YC=lF#p4->3`fMp-Zf<7s`OhQ#K6)tylJ%$0kC;uz zg9_QnAS9#XK2vC5L;B-;muYtof)y3>dg;{($De3hfT#F{bNtapVx>lcPkmEqgg?Z! zu{jSTg+09ay}5gIJ^Qq6RB@i%Zy~&MJ{;J$`7ZNUFXn9dU7s850jRdtPwygc_jWxR z^t;{-XG83pWaT~+Fx^~$2at@o^Q|EYif|s&vWj8NBcKB*97<(46xd}J1YsB zGd2$9-T=rMDQ+1GIqJycZU$Uy!){ZC+}tnSOQ#1$ZEF-m2a&huksGgNZ7GNbHcXMB z*Y7S+LDEW^qZ%$TpT2SJvywOT` zv#!=$*E?31>9V;gq36CY9ht$V%e|Fzn8f6lt$@IFs&gpt)j_Q)_)|OQEDBh$xwFvE?W2dcPOjdva`)9QeS7j3?MdJZ89yVZ@!g`p@+CqFjMqz#`wKNM>iBDzF^)4fn zOu50XRV6!TLpbK#f(vHvc?B`|!Phm2s4HiqCj>Zjv<)1>0S>X<-3obW;=gr0?nohU zbXVU^kFVa^N!4X$-=(!1V66=vp6=fMWZZ}3Dn3qsyts3mcAFCm%y_HavRA&-F&TG+ zv6Wz|QHb2I)&N8sbNk9^ZEkF}R19l-6(qb?4fQciM~3dt9RQCCc0Rj24(pf4=Ww|Z z#o(9v_P~1Xmn5EYT46D>7BEe1fM}3WU;191cCMWRDrusmKx8t4=UXR+c8MaP~$=Gc0aImXs z-#pDVopD;yVsWNsM$dJ~npxN{FxSrlH z!rTXoS*k%19*11B4zhBTVdGutNiKsP>?f4_aW0Va@)YG6Omw zp(1?@{{6T+SUpD34)EI-V`a@CNGhtp37S>l1o0_wA`UoFE7=O^@NWqGMVJR6#{2wTP5BNLE|E>auqXp6-HGdV1TXxnS6d%f}1q3N5 z7zoDk53PSmS_M01Km`E9V1Z#ae}(k`?BTbWC7OQYY=ChieE*H}_kh27u9a+roYx`U z1cspj!+u*svT>@AenPstzKVGc*(cf8p?s;4PV4~j^`7@*5MpQUP{ z``d0=X=!bzkKX%SYwj_}+H(yj{IL6A<@Rf?tQl{V^w&qzcJDXt_TI0-#sbwVle$m4 zkAvf}lk%Ci3*WX6{bm-wCZ)1pJ3JoS=K6>}FaDTK-z9ya6T&>p9Vo3zfz^$VH(gLE96yo^x#T;ZzJ{Q_KzZhjk0R)WYn4TZmSN`RI_o7lj;x$x$J7FF@%}>>+ix;SX324iVZD6}P~e6ZX(T zI4T#XlK+i(6#lHR(t%|y_9g;WGc3Y_i0+@R98*47`VClaNEBU;6KUBe0@9M$@b8f@9#NCD;hMo?D@NlCYIqf%T%UZ~yM5 zMaIE33dxZ3gKi>_XR&lkT!*s<^_*3*X7UnmyZk#?HhQMj4qE@Wl+zX^QL1 zi0p3^A)%nQM;OO(lzlMbWf(=5$(UMYX6Q$E=|BNDi?$VPT(g~f<&8Z3z)`-%PKCz7 zAB%YRrC%rBrMrtd4^nb^lAN(-jC=2AR=;|9(fRBmx?>N(qFpT2dua3Jx<}vI=^%~_ zIyQXScF}ne1#GRjpS5+7_&CM4V$yA2W~JtG6@NM&n{P4D1J&cNKUJI9=c`VaUa3mN zheYwh?>US%BRO_b8?^Ga>+}&Sxlcp2Z&HvldYp3qaj}-19yzUhYoX6-0Q!}S#=rC+ zd0_FjsoIfyO(h`3uGm;M5V#Mlam^J<;PQxmIi?0%Jl%oXg!oAR%#L{1(}Z^UoQSd{ zL;vM=GOtc(`Hm&M2aY4wmjHEvwUhdb*OdC~j>tNTvdC1qP(`uzLBM#%K?!C=cD~yQ(20gz#%R&+2pvaL*G@@4D4E*&f`h;?I8F ztQqvCG$uJY6^Kfm_Gg$#(_O zS}`TJKFOaHO_?s~wBbr?S~2h6xW8{Oa@x*jV5o zTFsea=@CJ7#`jVJcH5BEhq4W=*mrMt)8YaVc}$Jv?821JMymT zxE`5$)8$u@geI)nyx&_YLRqxz`oT!tHU^XsIUlqYYXB6amSg)QSi&|&lK z#qsC(=+=+XHr&LY!pNTwJY}QCnVF#|GGs`JVZx-o5K$cZr9FTnhnSioi;grAU@JSB z$o}?+_e#X8!@qvsk9*FDP6=I-tr2g|xP7`;)R_4e{ zsnY*jb*6Ig<%O!tx9f$+XNGl~+|TFw+xhqX7Q4wV7VnAYtph%ia5ov-J@jUxYg^yj zX`U5Sd>CrYvlco4=pK?RrnxW@BewP?6CE1t$&&&nC!WevK2sP)G*^=1ER2f2UDpn-GoM#EQH{VOo;+rgVrBX{uk;JYhyx1}+>MM4{!Gx?{UY$cj4i~ARGOrGt zwB0e!;{f#|)7U1PS>F4Zq(b}@+A7vTt49@<$5|zc)yc~|*x!$kM6X^;7G|iwnHXO7 z{4n*I+9>xeYxSZT)qKh^FIlR40o(ob%QXYT?{#G4EnxC_R}L&^Dn_lP4-fCw*R}@= zxY7(=)=!hb2Gcf^n`1U)}C`r+hXRnzfB0{eXW3{)I?bqKBz%LUb zj>#qruyIEkK3}eTJC`t7N8FbP!rDvib?&qA@@XSxAq5{lA#oZk!>wjkf9>|{;jTrP zgX~J$7Br-!?>%fykU{LDal5+RW%Rhro>PPDJAu4`er*oz9Ry3`oBIMvH>9xBHXjQM zj`iNMdHq95K?k}i#m_;9C5M6TX3wL24Wr%r?xb}2UT9b9LpKhe5b=0j)AN#wxYN;a zG`VlX5ZPzV=3{{9ln?@a=V)VHs=wx^;dM-^TJphl2rFrNE%4DC@aB1%o*(EiCWFQP zG9qxAwna*ph;)U?4%UACEzB^hC973DE`wYVa8(^+%e$KzeDDz0a+W@yL%fvZkBe}x zrWgoO)Qi@tPXNkRS4IUu3Xv*Df6V_O_g>LNO zZ5KY{A5g1#fRD}0@xGsC0L|XAPR^{W!ES#q5kyVfrN5-6IN1Ls^=HXy7f;ln6r16l z72{X5>*(S^!QJgBh|NqJjzvHR=e5JW9Qc!+gR8>tlWq5Y8~&gF|Lg#4k@vY@H=Wqq zI5CjG{k;x8wQ;V)DQ3IaldR?`U!Q7z-`j3 zC{xc{7o|1O4GOg}LbREwcYn?m)m4{PR|y=6ZQw{KT~EtbZuLx*a%ZXkG;Xk5iIVzd z*P7a&8{5v;*wx>jV_(XKD)n=jy(5`mf6#YW@x9Ic*PTbFhfGVh7f0ysW{Gq0?+t+KT{M)Nl~ZTqNO=Jf7W+xS z7qX|2)|H}GwLWcrZ0fFNiZ1r&qE#LxEzT^qOwak?Rp0 zrFt%V)tYD3hKN`^(BGd{K%!Fo^UteQOC)AJtTbP0i6cM6a7)sFZMkh)O3*MisBQhw+03_nmu?TFxK}-HuCW>~(7gwLwG_$F z#ZKGJJ_RarBDk@Q<2TR3q|)6yarmfdA5G%?rK|bUH2NeNGuJ1?q&hX*Q!)a{zFNw@ z+OO4{L?1}e-TDspz_lpQo@nzjHiGAE6Jnt!sw}d#1DkpP`ul6_@p)!^^GVRfv7jF!R6jtt)3>h0x*HVED1Z~95Jc+bxrqy2-*pZxrV~f$V8ZlK%kL}p^%K}g(MV& zB%zr;pLM{)Fc45hWN80FCaKf?TvuA5YZ=y;)!?QDIpS8qKq5M~k0!pXH)Rk6gG>T~ zU*|}FrV<9yHwO>T{Kys|!fAr(GER5}2>b7l$e{lYd9h{=4C#9LS4f_xkfnO_e}&9~ zLM9Om>qC_5%TbyrCI)l1qP9lI+Ms@nMiz=xPGb}`m_-|bw=;wy6*age4Mbe)OmU$R z1u?LI3d!?4mr&#as;wxsySDf$3?Z0@k+Db>S`T(;8v+C3^joNgS9JF_1g7ETi!j7U z5X`U0?#U^K_!ZORR>|L}joL*X<;ebRp#8&viy*=fFeq#Junx0WTeNCd8LBuW$gKI! z>kBkYceS=KC@v;&_rWli=>uu~^nW~{^D&tN^;%5;1jB&9Pxm1!%MWs8i6%x?S9zWv z#kf(5fCKn`o(=y!G|O5L zAnlJttN0{09wHF@!VnZ8F#ESlKc(l6Fkc~Vu^ARRrd}~D^^M#j*%;ADkU5Fk+#PWK zCm(4M2qOv?25l`!@%Lr~;(!=g!yaV+FUnY~ZNb=4$o|8z@H_@Tv=+*dLH+Wvv5d|w z@x=AG+Wrif&;NPA0Qe-oM(-RSpYDKl-?YtFU{=7T=lr$f^qRz<76Q5<86Fug@7c#7 z?wxkus`r&t+2^e-1=6wKFfI&g0yhy3VIngz{PTo%;_oNH34#HT<6ux4z8{1BgMPXF zD1`5{h`&dN2UBM^rnLt`?^8Cs8s(jM*t(k7dfM2!yCf$Kr$WMxpo1uF+_ni3mp*XOCAO59R7T z9k?9N*1q;vaxPR7LO1qz6*(0{_3DjhO{vwIC>T|$H&7mJO=<=CB7O9reCYW|v-ONM z)lISW&S8mcce%5`*Tlvl#P=`Sk1UREUQTZYjqY@e5_TBkiIIQOd!q98x%WiT^Zh;; zleU`sCW)li%dGdoM*w}0V59;#f+BA|qfJj-ze|Rfw)rLfRMh388F}-v_sF^bI4K`K zf|-tyl75VdV|=>d&4lA_Q@f*RZgum*-Q_biy*(x8{#NbvrkLek1sD%V{Q_6J)1?=* zn)_5od;Dnr#m)U~#Qn{mH&%>%x3JZnp4A_~E0{*}ra@xwF>@8j zbdlg`sO!B-2C;SrtJW7s-b^T*?n>28K`FB*fjgaEe>`s}q}D`!;v%&frj}68msGF! zHOay|-qJAL(kGueqz9b_=S0SG@WOuJKT$eX2}kzGGLq=r*9&i6rZ2?Y-$q%4h4ns) z&yl-)61(1SP55EHJVCKnY~~eld?R;OB77{zN_sAmAI{nQ`j&vP_Xxxrx=77Mjb>z_ zr(>OFWE+`l6^C! zZGF-L?iV1izs)4@j+T?ETuy&HOXV9PdLYXYkILmZI%rDM|3%L^;?XC){(tJR_r;bW zZ9%xWAk#X1yf?iql-y2z+}}I=#Qi+jfIuy;ZuM1Z#%)(g80y7EQ zzNNo;vx+`wRxU2nmpFqhcHFK#Y%Qk(>0YRh66O_aM zT;Xu0pw+864gOrvO{QAjx7xU4K2lsuq5p&I?af9|3wp zu!R|;EOCYqTch*y1xOJO@!l!EWtiDIn{^MbK-|qnLFTY2cmneS178W z>ECULh+K0E3c`a)5o!@tdc4%`w&D{~dtI(Bdw#rcM^AqhZT=DmmU~14>3i6m5 z@Ch?R+~Jcem;5&e{(T!lGEA~olsx}q8Wy~3pB5W3Ay?2K@l(6g5Jxm-aJ?2( zz3A8?fJf!0_G4;BF?4l>?SbGD#cg5q>dl6IWCgvMCm|0Z4_r_js#=o8y=(JHanvMC zL5rX}amNAV_4T1UiL3lB973t=JGE59NoBnV9GkqZ;7@XeUBNh5?WV)zd0kmofp-CS z9AIn;dSWGmTeB(AWK@iPbMQxxg;aRV&-vE0N6SAY&y!j^!lZNVlvETzkLYzQaE|Cr z>SpL^2|$mIYzUJulm4i-*iSf}7I6bSUSY0Cl`O|69lV z_+|qO$^V0dYk_8#@9^V`LW+{!x4*3Toc70xC#8QwJe2{h`27E{V#M$;c=!cw%^@|UPTXozUU8dDs#*`JebX1eAZ97C~@66T@H2tadH};)+ z0EgtUYJvq%4i29^sFfAK@XccvyGA5)KZVaz!>^tI?s4Hrg#P^lU#KE7ixV-eE&iQ-$OQrwH6js7&{)al~mPUncA*` z8m*rOczsBbQUKQ~a}i=7UAuTXbQpUU3_ZH_5bA`s5N#*JN*Dt65Kb7omfv!$BByqh zA~keCxgO6cvNaZsKRdcg2mK10z<;dI zVen|YG>u`cBF$t}k&4JOgcBldAh$eW7s)=21U`g=2-8fq;;_WwN@blX3^YwdNnJJT z0!yh`HASb8if#x85R?+ZZgfOhotLbOX+0DIZ-g*}L*I8kT9!$_Qig^!qQZ#p62=~- z*IKge^uNjCpjp57=zdXC_m{3EqJC$y)6G1~D%e9<@U>Ar@xI~u8ps9BRBjN{#ay1M zd^kNmgmF}ju67r4`L+_&&0p~a>A6|LS$BA#f}xt@8{NaE_o!NOk_)V6VTWim@$+TE zy1SV7t6503V_^b6;?Khj_yymrMC;9**130Z>N>%ij64YrNzKn_O-x?cu=IF;lD#Gs zG;U@U7D^EWUx$^LNgo#Imq+&e03bPls9Dc1kUX+XzA=J;7s6Jp^+W^MIN2Hp+1ntjIofK3-eE=)_bYS7@!2HqcSCx zT%^oQrK~JD{7=*(*ngrDA%>6>F4a+_A*lSz0-ZXb1@WIS{#Y>G8Ikx*^spAWTjq(9 z_Z*@l8Im4^WOIC2<1{a3Cg+N;e ztP7&E^C$4AR?Uc}mPVkZp9-Qkrp_PQXF>%!j+30K11SS*!BbME?m)_k1rq;*G6~o} zDRZUGn%U?LXBcoOh(*Ve$)j`go9F+EFkRqb6^$`6=4Ox}%*w!^YGKY4$lBBnCic&m;oIfNqw?`;FKNO1o!nqc_U$mj9Eog^fN2aLO zmtGKQh%tvFxw)xdbki1$iHycMVqNpTPwiLw?Pdz;Wo|N> z&O8Vx5iX&Cj1mp)Da&j68Q#Q{3$hi_QWE7-H059(n^#hW3h6?Jij%4TlW7C>CpN}Z ze$6#MiyjkxaAaGa__rC!b&9C$w6}VwAY2&E7d{#oPGP}|`X2~;P`mN9X!xRq37k{5 z$#$3H0@5_w4vCH)&mp-#D#06r6)&TM2Ja&fOh+^%x#Aoq?$Z#(!D~$v9pR#cNS3Pw zFO<@4A-|_enb6L4>1=Bmf)`j?J;MtQoQbMweJ0OxM-5gS+tQD7AllOj*>)JkLq&`O zgDw5B>o`CJ|LfTg5;f+FN52#~o*fGV97?NC1OBY1R4sGLYT|tAhKVf?=tbNeDNcS96G#sgD zs{{x9gOtw?}r67~FRl2~8ky9N+wNm39M8BuTIf!PYCO8Zsz({jtK@sh_6huVE zqsDw5X6D5jI%oXj6oZI;n=z2Sq<_$&^NnaBQ_NZpOCpj6(cYS}M5M~V9>u{ODx$!S zI<(oR!Zlpj(89ZP5zS|KR7A3@I}_?Zh1~VXiLyQ{GN(P5CWhos5_#X!b-2K$CyxeD zIEXSnh0cPIWdT&wSrrGu2i9UsH{T$EX3dzMB7B`9-UFeIbMQpWalimRQGXViF3#by z++Hg4Q)p_`qzu=qcPk> zKY_$1_SyGj9O8=~W#9v0X`^i(B9aPjj8(T8eChgkvs7Wfy@#07IMO)>ABl&T1`-m) zFfO8fzc7(j62yGm5%Tgi6lV}#k*R(`E7h`%?A*pM9-{L(-BdVd498Fm3Kidd#Fw8b zIRj|%&@xOBYv5GDZZNYWLU?zbTVeblt6}_U%)LtoNHK!1drCvtx6ng`$i8`O0lxx4 zZ$qgNx8mN2@hi*t_K|kY!vvaSYmNiw`;33@APU4*EQB$cqxkk^HJi_ny!-tMMBoy8 z1-*q{WRCa+jPky@c5B0DochD0eJe}=7)apnKz!jTGq=ztI>NyBhVl*(cHsEl6jDv8 z>vAzJJueW43Hap_zZ*cbXFv%t8JP!@OM*oH0^dhUYjm5|{KKsdv@}eB=-q%v9K{!; zc#cr`)1bo$gU*msC-CnY6kjG|pYl;cKL1}L99({X{`1ef=Zb%cV1*`H4Cs`784-^D z1^x?rABjG(5_lU#I>OiEm9IjYbRY{z-+3j6`>%K$yJ&yBkR7GkN6JI{PK-Cy&xGdy z^z6T+kox}`g!$Vs!PorCTWHFR;pZgxlVF|?RfxYG!xF0LGT_K<6kx!=y)UDQhH=KY zg`U#%I;Q(WY|T&kk0d7iLZED=)7lRvI0+Qqppk!S@%H}}82cY3^S?xZMK7s5uGt%) zU;&ZWei$e8*gs3S-funxs>LXVe@27bdiIZ;TWDMd;Are4l^6r%D8RiTBOW&<$h&LU zaqc7avF{_9O)&xi+tz%ZEt@wQ0};>GI|nU~xCY(hxVHdV#PTVJ7V0rB*chFD?pc|p zfrGxmnl1Y8^|J^iX31^j2{SzU&FS#$R}>`)51uwYVpNvEgF&FKta*4zAJsQLfB(^a#G9_4B&?>^;ZQQEYq*+W3s{$ z*X;fEptM~#BEa7p_tlktmugV4Wk~U9f1Jrcy(** z|7m9(TOvagQaf+AukQr`p|JtZglN!}r*}u2~ZNRvyj1|38C$0hDrI z%nw+GEZPJwPAMy3{)^6f_|_VJ%-RockE(1efOBZ}vErrND60=spXGJU;wBWvF56d2 zqCK_^*0>0OvsC^)ZfSbn822A32)>I`ijau^0m|;T*pHP_gW#HebIRD-8_I-wH2{j# zEp11j1EMVm4p_FB6QO4xC!A+-0$7Di0bJ7#8JVsb9@43OKw|Kv?Toy)E|<~JrnF#L z$3EQC@fWkuml{x?;TpWuti7QHo~1-kKN$v;tVnDgtqeC?6m zGM*{f;g~UIxH(zWb5xESQ_)X{1l%Sp1vhDy0;mqBjbt~y?@g`-W~`Sf6Nf@uE5~|h?nLV#h>c@2GIBdioKy0B-sm8 z8;*iZY~3ddhbc9MnkQ`GIXJT`V(DbusS&FUMa-dg)OYq~p|K0oSuJI+@Zq|coACRl zm!gL=ge_mcKkW$s^p1XuB9Sq8!FW?;ydQWI!4>;-%ThD`d_8hzlh1^3wFRIPkUMsg)XMNTp;LVK33hB^Y60#HIV2idEM(EDo{ z?_aLFG|)t$jBrb(aUpU8oSPHPQS8068R(|47lBBr9?Z|~l1Vn;;?Q$pPFz+MrM(0{BrB6}d^+%4y` zh;?E?0?zRtk|Yzb(c%h9O7*g&d1X~F(RmK}jyV2dxO6orVN}R0IR3z!Fu=q89E@iP z3YQ{YWANQ;XVM%@5Ifkl*f;?ybaWmqjz8yD@ZKu-S_&S-=-t;jEw+GxIE<&~`#lWy z01hVTXhB4$Y8ysd5Ybj~rrcR*L*`5g?!g8jQkZ=MtcGH|71F&cIM(eNs`5(Bk}QR! z)gULOwmGh&A_Xl{37pr>JBH+WQvEBI)t540x+snWOcz-^Vc3w4iu5O>&_;ZwwpZ_) z^YXG_Xel=%6TU2AOh~CGeKxW}N~bt$%0h`x zAoDr%gGhs6*{spSbv6nBvqA^7dPs&9QXy_;5pHVg8Z98DC5_;}DT#{WA*%yKU9ho_ zM2o(`0uLTkly6FaeX1uC4)yWgaNt>@!M&%KbeZ3x0O%;lf_NVztb_g1h)VQN78uEi zKxd9b|Kp4kDs(<(opXKzRtmy|6yB6MYm3u>Cm9u`Ej6V;wcBr;_Cts84$%a;EV%F> zH4^_xE2(m2<2BLbP97KdTfvfeUg!19FRb5Iz3p1Uq{pqjs4y|OEpA`(hC_`O| z6_A3#06~9ctjdk7{P#;&Tu7E3`OhuPgrxWurA4MN@!PnM_zdz=*XDwT!=wTQv@y#) z;kZS9jB8MC$iH68rf7#M;M~#sK{*Zjpa!;79C3?luz^gwzC~u^mb%2qtMPFlcm;_jBBMRbC5sxSe%Byl&+bSEvHUC)7rJ7#$&xtI{(G9_W< zm-YUw)3b`WI8QTUYAT{5%M2N+&!+Mf?8AVcWVd#ZKLd2|U>ALGnZt_tC~b)rt8M)s?e!4beaxl0kQlocdk@(`j^EjiM0=5`%bG%Y+8H1QIz^4U;|Ly0M-* z$+IN1md3HU*iFATBif7peiDQ;QESb^wOk$sd3}GemId_=%|kx;LF^BmdVeus83YVN zGj*0~l7#vW+g}WLHb-6}L?%t+8}deG&7K4%sP}3jA!1lcQff_-NC3;=jmq#$iH%R` zVlDGPBok!l!Gu|J4d-DfjPl!f7!4EM{d~H}B1t|749zxVx&}r%C7$uXD>{~&!8)=` zy#Ej?;>~hbe(EHh(gFEq7H|8I{PdGVVvouw)!pE~)L{qwQ73}@zt!2m1J!ZCbo;%X zqyGoYLi94M4H zSjR-c>q@3wobUSG#BGlNw;$;B2U8bUgS$~qKb6#LF;0q3;FD6wu>vuN(&ghK_#IvY z3s=`Lu{vq%9fOYz=dxa=5O^u$F+B5vDPA11AQ=}sqvJBr;EzS7%-o}+UMR>3FBkEJ zP9U)|6?wC`KqBKWHc>yp;6g@mdm_p}L1bSoMpNLWACX7PL0T)Z{uYhcls?*;DaZ?+ zq@OQp%5xTzerSmsuo~~uBmYQo^QT*08(JBN!{@VFQ(O~RSXjZ)l0Zn_D(8rMyA?!i zXpxZIj)CRD2r{m>FY8S}Zv(TEo9&Iwmq*=r0uY5OS6f2L*NnG+VH&F&$?^%rRoq$~ zQF>T|?_)H%(E}sWIh>V@EDa2R54%Wz&JAG4Oku82Q?V}pAsU?cT-i@Cx*AE_!18`0 zCVinAxXY0mH;vC;s^)J7^vy(1s7hEaJGDh#uA-yd2Ry5$+>qo zD3zIO-ra_fK*k?z5_xEq;o5!1Goal1o1j^MI|ISpx}K z#<+_$elZYu;P?p(fHmo$^98x-E&``H$ko}5wt%yH2OyH0v~Shs`>0AHFZfYzTCL?$ z8*X)WpgO>HO;=url;qW39=WLvyXhdIKwmM-yY&Fv^~>KZ*=q(*C^@(#jyd$p`Z^4H zXbo3n-1`?2_Ktv?i#gBNs$g`*3RCZT*b@QQjw{pp)Zy;Sg-Hf4&3)7GL|eyK_L@ucED>LqyJi#F>-?9>QD0=& z$xXSRa<;|#<6BT1S7zI&kdtmZq=crlrvxCZYsEK4_0#D5l;DLH!{eXytdOU(?g5$X zUcaMj2D2JGFY-xJe!bm{w55mp9_?=f>lD8C;EXRPM+Nkeih+@`dom`)Pr%d?V?@Kn zBeXEIRGeT~2o+N57hJ2*HP?Ed(!8D{4#bw1v}$uLAM~ zQ8+Amh{ULzr9tWh8ThE=aqOr(Jp45cym?#{qjO5TAc5>HK!GDknVuzj&1(%6!9w(H zD-~Ca^Z@HbBPi~Q$F-0I3jOrNd~C~R0sSfTi6WR{*XXJJER3md`rSLBNz#KPR|p?L zqivItV;9}Z*l7~BW;Xz%`;?u{GH8Lrkj_WJB6@P;HrW2zPXa!>t?#p|BLV_+F)@bq z`^kpw9ppb9`^}x_Yz*w!`Wp@e1ohvJnE@LVs~8&D{MEK~E2ZD=I}_f>k8crFsaeuC ziOpyzG$SERlZd!pAfNH-FgD_^1lt#W&+yvBGF{b4bw1d}d0x>@k%0!lV7rJ&f)jIp z%sv}^JiOs+wSJ{*pb({@Y5UQK<3Kk6&Rpbu$V>RrJsDz59sP_f5%75@9pz}Vg;8tK zjH*p7r9Hcn;*+;mmFuR9E_xK~UvMz>tursgS(sSMaKLdU3MMKN$^OR3n4P|c+RRJ_2e(thvS>uFSY;Vrq_BcjH|29{KkU zU}amGi-SlPxA&!^jQSsnm>f@w36}1hG?*QXpBHk6O^^oT zw&M+5jRz0}=Rj6XqhUWFkiWDtcXAa_SgHzL6i0_GjAc_=)X`aF+eytKT8#C=eK&e{ zX8vey>(!s?&E>a~g%5w7y`w;t3a^^LW%A&S+p@e%5opodRWWcl>`%GpPf;GNs@u1R z1Y?}8|8ev!e8%-PwTI%O)KjiTyyDyK|7cj7Bt+6S0_;oL3G7RX{_j)L#lqCql<}`4 z^WVKmH6P$?3fk@X;4IrjM(Zq*IK zUA7F?RSSN)TzJc{!*4-6)yJY3#!Y_c_m!=Am<N{gq)6k@MCl4-=N<B$1Z}e(cuT&R0Dfi}D zip6N3(H?y&7o?=(z=qi%6I>>vowg(slS@+M8@JC~a4sk^v_eX9BXxf5BTZ1;j$wO%(ulWQ^z~W6N)CSi-l(3XFeSeaq;kN+~ zU10kSPf*h+W~Jxb^T9^yY=5N$qu!U7qveCqT7ownh+fz?N7VP@-;D1*FVw#-p1<1X zcsGNLCHC$3zFfBI_v-i|OATGr=DywTuV2{nf82*sinSp?g-UILc!dS>o`PH|$kXUI zk>fOw=YwPJler8MI-iO_G6XyZRrX)Y68nq!AuixM+=eZ+lX5rGfBL5)jfqA_B7m)3*g`PVo@eqD=E<6uQ;jmOo<78-w*4E zjn`-p-WoJs#f!2s8-R00SL_av9fv6xa;qRV^UOT|x+b93dvDSyvtg6`255<2-Qj=h zqKkN0~L!S4CrFmH?eU)_O4-?PTh-=^b z&aHXZS#6gMTti{E;iS9`9eY2WjFGd+^}=}zzQahy0)N_GtM5rs8sT`XScqWa!;~6r zoec0rvgowUgK5?cLxn_nI@`JQ-)Qv99y(6n&{9$mG1(t}O7IY(X)lGZEKeK<=NH_6 zQ{GQW>T0K1T3Vqj7Qec)ELRN2l9!B?K1lOC{B@;&h7w&gAe;Sim@c0pNiEliV@cVF zih5YaBnSD-mo@7YrS6nPfYLE1G^&|e=Tq#~Qdq`Ro;vrlsi3-x>ia-|ec4vT3MYok zeqdlr^L7~roxxz9ZS*0&gwG>bJE3|tN<#fki%tK+ywxS-=+Ah&->%LDrQp>zS}E2~ zSv8**prRt>#Dm%UOv(Cc#c=45O_Fz=EjYYNDSA zk}>W4q+|0ly=yT|B}omWA&nXwMELDSK;(D%2zM&w{;ZA6p{nfVF0+9Khv6PeP|NVt z_J`f7^s;*%%%?S*MA_h}@4}i?Oljs}Pbk=BM%yZO4Su}#fc1{bJ!dcu_NvvDy|$0u zZq${XqjCl1e4m8SUC(({8b@Sp0eV~c{i$4qB2U>?Ra{81>t2Fma4MZV{zDHq)=VPW z!XBPlq|=xwUSxe$zbXn$?ZyQHB*fxqEzRnsZL7$iKS-<;MotSFpHoOsths;g*i>Z) zkbzc7#a%vPDEliV6&$7RxV>Oim;l*5;V4ZMj#lL-z!+S=CdG zV>DgTkIHGx5O>HJ4Je_~Nn=c?$lwXG#f%t3TJ+oHQ=8_&a#Pfg7s-upg1l)EQ*SIU zhi_hU$MuR2@(t>EKlak;V4Y&Q-fDG!LH{!s%kkq`Ed_qyK>@SZ&%octuFfv@wi>oJ zjFv8@wts!>RY%ps4KSgB{PYnUPZ%%Z2}4^{LZ(E?hpUl#`3{xPl~82#u^raC>;BbY z^w?JJ9gL8T2hb`e5iA6qRfBAyY%Zbc+U5>PEDw%JGd_-X zpu>!@1fdoLX6{gqa9SM(`!?o))fDi#VmKhuMm@!gqL~dxg7Mgrym#GK4IfJZ<%OXJ zip%h-nm%WXJh-+EF4M#*XnFmA=;EI^TJ8qwp#r+-yr&@#hX1$?cv3WpHekZTyd)&bGctm2E;4vGZjm z70G_54iAnT=jLm^cF9C7j!m@UOy{6QFV}@%`mNecEN;U^g-Ed5nM&=e$LW#jRMUu3 zCWE*&7>sjV8?KGa=Q2Cq7oK~GJ1Ld%#7XZBZHll6V7KcXGr9utJFNZ27-^b1QH{Am zAJgjDBKnW9*Cc0=-__()Wy?F&1m0HP!2UU)&7HDxdqBZPK;c;b5dKH9f|I?2^IxNy z9anD`$b=^LwP)aNf1EiF!U8Q!5`@}%Sy~t0-H+UcbVD?{;@wM*huwJeYmLkGGB2LM zQIMTM)f^4wJOvqyN+oZ8NLE)bI~(a3PYn;hB_wxyAo(Z>my6qu<7o9F6aymJ9l=rh z^zG?pm-$o+siYmJC)ClP9`1Oyz;vI>P9z4+76WRMu_G2mm2Q`e&loJ}4-DY0Qm0o{ zPR9&WMd1tQg*le>>rLgUZZ0(38d#GF2WEHwS##LA+8UWU0jn~9vb$-GExUa# ztnQss!FX|<=I}%|2)3pIK{efIanj~{5DKii^V~6Jrp;@aE8}U}s%(L>2v%8Cx5?Mi{XqZgI6frA-J+%=F?JP!E zSpc^TCl~kmN|GETC%M#Bh&)H9yx-2uL%N?AJ02_}wQqVL)i`afIm8TPj70>TqZF+D zDjhBNw_i`wMcn9Lw*VUgkUJC-9Gfv$;oWLF6`x-b)%WJlRu?0eezpIR%YLI{Y2ovM{NZ9D`yMH5q#U zrx(Rxe*X=t_gdf%TnqC1v%}0WIHlioBPIv*mDSHGK$E*yRubyC!yL=VRh_~XKN zOGy|}&fW=DB=_#Bq}KFExvxG9z*=|D?Ok`@$m)qkci#x_K=y8`-dxl1>@E`?-PLK zRMhgt42-orw;o+30+{UvJAS1&*gU?P%9Jly_x>L3_(Oiq7~{*%G|yeLF6VEU9w-X^ z?&E4lsAEO8i&Mc2?=L&powv=Z=C3d{h_W>y(Yo2(iGAOuey^eHyQ_Qe;D6&esfcm= z==mfk4v&kwhX@U-pr`ZGUH8_d`EE~uN0*K@G5g)l^T4LPwl2@u+@J;3Z}D<#@I4da6zcfsSdg3umnl-r3q99~;WbK!kOQJ9wS)BY*qj(?4gdg0U6zZb%T2 zAR-VDOyGZ9}&#GwronD;Ow$sQ|^k~onoh*Gt z^un}Y9G2fpk~oU!YaK(R66HQ;P#At)OaWxazkoc3@_B#Mqp7%LIV#Kt@FPp-P|gIRS1gLpSj#xf9uJ*-*TSi_BydE7%k8roV!Eyf@OjSH+2_! zXzH1?Yp!wNs+7J&=WqczZEYXe1F;6PfS)L6Tr$$?uxXdt`9v2Lz%~}bmZ}Yh$&H8Z z7ihKD;dlnagoY$fxcN~_It`o!K`0CMrF#$Wsp%^@}l z7@JO7t?Wv><4I;zWn%}>I%P!mUpafkwG!v5rJB^r?^_{Gj8UNn1e|`&v|z+D8oNM( zkviKR`W9Kpj2vFe3H8IJJl_-42(fyLGKJf?Yw)T;l{7cZ+gGDS;kU`5fEbQdc|IGbjlJKve@etJ(Gi=kJ$=@y+>aJ(?Xs6jwF`&uIwgBz^ThSS&gZmD)7J%a zOtHH9aRW!>dNkC<(+flvWS*Nb-OqtfBA2`>0TJ>MmZ!`Ak$^?8< zdgivROE5jxr}%>EEw8H|+v0b+m0bYgLRh3$1Keu-^&$_^H3+c-(9%6=*YxX>! zz-2UDWP+2y#Gg;>jQT|uZ=G;Pa>i?qsQK$k%M{LObtHtWisqU2_2$GmN2=aF;@bcF zz~txaX36f-OIMudU&QWki0{bM%adQ*KV8t>^8ov`#7sU;Bc0-Fd%?4E2_+ zQ>SY!tc^O9Wta8u=AGnwIrp;ueVnDoe@it_czg5jhTA9KKC)vM-ah;FGrK3>fVKB~ z)xE2w-}g6`ufHO_ep(gV>#Yoo%|{Jx85|7Ak;tBrvclttaf)OSZ)%(73rX7#_aQ^x9RR}4ey@ra7w={`nv1D zlG&@YuRMKqO0)m@^4U%MoN8{ZyH)y5Iz&Nb<)qhh*1fUX75?&#+EMjJ;624gwi#;| ze#p8Q|9-M>W!mSQV8OaoER$_t%riXugp0+e%iE~4Nu|TLDV^=Y`vp}l@g-XK&DB0T z98%L~nem%@UL?Elwx@y(*Hs(V%;b#bo7brv$MRy<)4mShjmGm6_c2V^^Rx2R`V#JW zzRMR~?5>D=Y0eaLPoVeTUCG|KdrcqxncncZ{C3#3^~YWYZt+XO@<9y-HxFFCS#dtu zjsJs?8asc%smO+{bqa>nsX1>q-N+Zc$!E4MVcv@ekLH9fxhR~l^uJtQ_63FQ(#@Uk z*pj)rHH&%#Ba{zI&U_&!(Y^E2DusWEsS$l2tZGk9xMCvmMuJP{aG}n_ig^i{XP95G zCp~HJJ*|6*H~z_`{`jdAx2GL`HidKA+q=qh+Ryo(SucFMeMwqcugp~2%uiG1>|SYB&P zmd~qucJukX`h~@(uT77uOTE2%{obF~Zd>20+@Ae>UBBJE&nNHI{K{H@zd!cZ-+uf5i%Ja-@J_MIh`qtmrrM%h6(xSyEVyyv zhsQ;whr7gH#;$JbKOa4LQsT`GmDS%TaQ-}3to-VT^U9gR>EC><{Jn#wj=6 zbF1nrE54U9c^1m)Ek6sMdhwNP;9u6nCY7K@^S8fgfs14ZE46AKEkx%yn;6JbT5mzjaXjHs5+0E&WV4uD3K<^uhWO?zI0w2%?d z^3y=8WKb-B!2{I}@j0>~SVN(AwU~9cJ_AEsC@TX$ib)}SP?L&FDsxi7)0OC9fPSDP zOn(C-j~$9;wBsew%|V|hMVM1t3^NC55(Qm5`os%Ddv-ZgJK8i1x(VnL5eO6JRzOWa znU+A;k3MRQ&~H!;)sH@gjBW&a{~KY1W)s%lIJyDo9bJS0jLpafVC(jxn}yzYM40sp z#VpjGB)Tc+T`hzug00X{LFss*>ql=7BJ{86K+0mMt-}CsR$vYS getSensitiveResults(EarlybirdRequestContext requestContext, - EarlybirdResponse earlybirdResponse) throws Exception { - if (!requestContext.getParsedQuery().accept( - new DetectPositiveOperatorVisitor(SearchOperatorConstants.NULLCAST))) { - return EarlybirdResponseUtil.findUnexpectedNullcastStatusIds( - earlybirdResponse.getSearchResults(), requestContext.getRequest()); - } else { - return new HashSet<>(); - } - } - - /** - * Some Earlybird requests are not searches, instead, they are scoring requests. - * These requests supply a list of IDs to be scored. - * It is OK to return nullcast tweet result if the ID is supplied in the request. - * This extracts the scoring request tweet IDs. - */ - @Override - protected Set getExceptedResults(EarlybirdRequestContext requestContext) { - EarlybirdRequest request = requestContext.getRequest(); - if (request == null - || !request.isSetSearchQuery() - || request.getSearchQuery().getSearchStatusIdsSize() == 0) { - return ImmutableSet.of(); - } - return request.getSearchQuery().getSearchStatusIds(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/PostCacheRequestTypeCountFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/PostCacheRequestTypeCountFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..aeacf6c014dcf6a8337c112ab1ea127bfe5ffd4f GIT binary patch literal 36792 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/PostCacheRequestTypeCountFilter.java b/src/java/com/twitter/search/earlybird_root/filters/PostCacheRequestTypeCountFilter.java deleted file mode 100644 index d83fd1227..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/PostCacheRequestTypeCountFilter.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import javax.inject.Inject; - -public class PostCacheRequestTypeCountFilter extends RequestTypeCountFilter { - @Inject - public PostCacheRequestTypeCountFilter() { - super("post_cache"); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/PreCacheRequestTypeCountFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/PreCacheRequestTypeCountFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..ff88f508aab21d1af557602c20b86786e785e917 GIT binary patch literal 36790 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­%y0Xz6et1bPvqvy+zgM+N`{+}NsaU})Z zCcHOYxm=$vdD^_*j;!WRtsdB`M)o*Alzf>$!hHSZ_6T#~=y~$8p4E-cm({WP`-Gty zy1BzRJiD3zez#4)W$z4uAaY@A^*|T!iOG0t>K?bb;w2`+xbn4)p=;;BIuG0T17k50av3&r zUpM!Czs-M1OkuyYzdy9e@fLZU|1q7y+qVAsl5~81xoRur>stFSxuKS-ld(BFEhpgo zbuFFXo6lN$w9#dZ`{gy^+{^YeU9~`X2{Z)ZciwaKA3rcdWOqHdHn8Tov5z8+`E#<+ z0LJ{;S;n4c3&L>vuH}8_<`4~}5QooCW+0<-InYl2UMs}0p4Y}$fhI(ZevNvF7C9Jm zw(NyEQL(PSAuLMlVvGGs)DYz4NclbyyXi_=m=T?QM_5(4L}K0MD-XVvAk7s28q#3K zpXpTV%*V+eK96_qhBptkSOZmFgHr0f<;TN9Sh{XyRY63c7T{KiGPu_ru<`>rv`grz z24?r`T$CEjTf5Y)2;?A4wlb+(K1yFgH>sO7zyD%Tu+WZ(m^s$WXLn76gEBEHx!;Hf zVUO}l?O0Z#FT!BeL&7YG=zeKR(Pa}Q41H!h+@pXI@ zws{0%X;u42Q`|?Yt5w<4x8E?EAfG8doEkLBam#m25Vmm3v!2!V?%rHAOWV7IqF{O#CNo-V$ZVrW^3#MqlC-~_+*ObILY;CSmrm1kWgUj zJ&eN`$}Sl3B8-CbM0AZ3GxWWiRDgi1dFv83uIbjT(ps)wzzE-bhkV1pk9oY?k}u=0 zQeA}|d&$||iB4GGjCyXrEq`(Mr1RcJbi?k4MLS!lbJya_af`aP)kYj1aH#*Z>8$-E z0@zq`J8A7C@pg=B!KB+f&rHeTD*A9ZI@_$T3#!XscdRI=9G`9)HE)uFOT;SPfnzCbo&YrFM%C}vg);gPYpS!bsQALI1c0M^kZD?;CcQKy34|bbx>nJ~bdBoW>?Upa$DEwy1 z+hlpF$FtZt#<)-hJ-#Ja^J;WmyO9{N$#`;t3cGuwgzv8)t9OY>_@&K-jobd!;k(}n zYqzcIShK)4Yo#PL#E?~cr~9Hk>(TZb#SwhB&J;ksu&#UAS(F>$gtVKIw^rLjmV`3r z6!}B54nAa^aN~ssSq+koHrUsiM>QBncV!l#udRVxAP!mL@gD04+p+}k51NjZw#Of2CvlDDI+7{HB}k$d!fg?`PwV zFnBy)^>Qj^vI@T~7KF8v-09e5I5-*L|OXGTRz0K%;o;9Ni*?R-$~W@~lx|Rdt93R8798ufdHwQ- zq`WqCW3sQkHcK`G-PMkJ+X_aT*UeGM;;qoO*1y!AMf?ngO!+ ziuGGR(J>(e`qshPs$^gFPlLKW^9_InBaJb6$(Z%g`bv}5AOIZu=kHMZwafgMtms1N)Uzce; z*9v+r5stK&<~o>uXmQxvZEwm8tKv4Hb%0NllCR_H*V@4Mcb%};L<8Tqrl+BitacRB z-&N;~1+$(pCldhwvzTN@pL0Es%N1(55q=(GRHQ zT)^9U##rx9Q-DTKX$NQK#Xy&zr!b<1&B7n4$@X@Cr2Z^k?&OIakYqEsv1I&$b{SPP zAh^9539+7G%`p#X=e)Gvl?8vWwRe&KeYEM;XU+ff|DPRzE#fxk%eo_bD<=jLxS!|V zhgQy2IE5@{JCfxbB&mGPW!Ze6OIg0`C*3gy4LTCqh7V57NI#)25x9+;6r}5TYa=!L zyFj7VhKbfQbZ<|&B0FnSYb$^~u?g%6#mgzVijD5^67Ed3pGNf-OOcYlY+F+La$?%} z8an&hvh7OPP$hpZvbQG@><;)0DZIA2{kn1QaF=e*^5h8FUiWWJxdr=PZ^4w*GM&wf z5R=govwU({QAO^tEVKc9DO3}(Z7{K|m=X1`-&ffcN>?`!7%dRu3y*8#Ng`fIt#0*!^IbHQtEFQnqX;$HHYEMNQ63whWKipcd1jmSArEV?6UUEpR4HsNnJz)igQ2vnmC$ zk0C9|U6t3$Tf6hqu_C+mN=WYGJ5}r_Rp?jA(^YVGRj_ul{2?vT@EZt6ASJraJ5?Gd zRR)MyJkZ}CmOvtt{qjz$REou?J*?2$W_PMg7_Io6+J4=!k}9B| zbpl6jkl~u79@}Emq=cY;bU@4MuA_->^Cry>NO7lX%uIbbPM~WC{$e45p_84qi+vJQ z_(*VV6UTR!g-N-qX?*`)!!C-%=~HLZxk=Pf5@wEfuyIvNmWM<*l3kUgU6pT(7l|H_ zqMOwX?4C`eFREm3#$`Cz~{ha0bwKy8TFV%^|W(fc@W6*gZZ0$rRs?;$~1E06uo zW;cHv@~}!QX(;+cr2Km2dUWOKLQClQo)|6Wgn;NWuwUX<=;?f1Th3nFMMFzONlLn9q-Dhz=}E{Z}jsv8`iADoD0@_5n? z55qt}6`rp33z?)==VNV2xsF9>Z)Ux#CgiYdIRlBv%r2VPqVA-AAPh1I2!5>t{fTlY zNbd|hJo7zUxG<+Nrt=u#1t9c4Ln4FzE9BXV88D>F`Ja$H55Ws{W`BpwghD0}4DCgf z?afvkFCqqWvZS^`$6BMlk3trTP)cPK(Vs>ehPO3@^2Gnyo9uNcr0zcJ@tRy$Ul_`=CQB~=2dJyeODFOmv zna3UFh(#;7X&MSb)Izx5E(}4siQET64E9kNLYFCHTG~=I2F}}GgofE~sR%U;wvjPG zOeWX8O%tLYN~9t28e1?FgcyvM4fGPbz;mcvr(xU*1tx8#&DsJT>v5SQ5Qc{(h}#N9 zoi&I#Kr6Km21WgOG#C7#nmh{*1q3VIkGM3OXO`|8rEyRCIPhxt&#qb2gaB!~CtAiQ zxpEhV;QtIk5e&0?z3@|N<^b~<;u@P_u6^n=jzsnwih<|R|Dicoh79VPhmB=;YJn%F%hmec zVc!39hXL?OevRBX+&|m^*L_phpMhBcm#)*7_Tx(uKUxUr`XqQ{yxd1`{n%I9UCW+l zQYG(~)?`SBK7-g$sBzo`IE3+xgs_j}S_!`&1jh;bK@NjJY50B&_zn2x^q~;G(jxvI z85&5LUYpYD54lZV^K6iF*|yk4+)ZnDZSmk((~gX{Gpddii?iQq>?xi zdHx)^Kt0+*5;l*Uq)gwI()LL7GNOH0KN5-FC$mDMc_REdswiu$>Tobe_hHZZaJuHX zuYz-~f)Ki)ud~px2&zYSEOSz|##r94LamV zvrn#WFT-vxe!MwyQm4|bNw|p%#WltN(+M>es=6K8)r6ZT6Z-zMkmaq=WkvyV96e)A zb<=b`^T<5Ac_J7wwIeF&Ep3-#sG6LCv%iEbZ*?#K0N%kg8dvq=JNFsOK&JBq4}+br zmC}ecTUa$dIC7>!VRRQNw(^P@-SOOM^m=2tgTXb%a^q(yO)xctx;~`3Jh?0i^7*swThS?Ur*}f< z>$NdI%%=w^_VV@ILXNNGPKt#0Wmt)ig>pmL>t9~tF?Q~Oc!OstIjB*LEcA4&Q;clG zGcBLv`n_Ca++KjLrDk-cWn4Y2{d}sbakuGjHt`=EG`wt9g|*@UwKD*dna&7*B2e5zM^===DM7ri?Pg z=|XG`PLF3Gg*?PN$M_bZriY=@$Wy1FP%H?u@Kj7vYyL5q*$0~cdEH7^%o$Y_xMn3#OVe>%Y|Z*CEX(rt@u{7m=n|^~O^GhsLiQgp)5YvR zxNymRwO0yN^61;OCM3foYeC8NJEUR3yYz0hCKGZ24HP@JJq~t2V+Pl4M%9gqDFnDz zd}uqQW)wwNli%zQDpuJ1j9#@~zl$ud`|Uxw*GV4Y)#b827Hyp=0w=?L2Y(Zxb4py7V5P5EA=0(7b{|yHio4l@Q z@xaD(augXAqwfs-!F>T09`j?K745;|Pl?mSmiADo>>EX8dC&uTZF8IhdgIz}^t1$^ z2M5-KiI|D+DsE_4@c&Zb4jO2xYaKcusr>wU^DOVG__q$F+#{flSEqmJcpY1>XCe7t zNVw!{Wcm!VExW#mCflD;^a81@TY{wBqCcV#Tn*e$dc9)KN%%!i}XDnfv&} z^(xNLvSqgce9I?q5Z9{M7rG3~ne<6ZZmGyd8=E$Wj-GEDKhX3hS6|q->Hr)Phbr;r zJlQyWcA%D)0D~9zZR~2P0BZ%~-a%v|8=MnY#W!4*X)Ez40@W8Rr(p5b(bzMS`W)%Iz=-Tqo6YI}VqgG;t3jHJsAk|;6TpCPpk`@|MPm2N&^MbG2 zE7@1Qc=dk`m-UDJ0lMuAhSQh^%Uzf70s z7}*Mo#*ZCcxt)HAP2k^L70gERDjUG-pbQZtqX-?UjU*t6H5{YBM1f*ZG-;MXlRnq^ ztGen`qTsT;D{2I(AS|$LRxeN-g;VNso*`ah>h7s4eo!kJO2-HWHAH|8)I_!7q8a2) zMBgP^609UH15jR%wO}{>Fdk!rW3p=H$5*<$b*~ZCq(o;}je>TODB{QS_*FMiuV>TX zDu;r2e#D>q>F{$tnF&_w*)21#;MBE()#@)-jlsXWi)PPWfn?d z1YiahD@^XGco*B7Pb8Gs1QTA`ll@V`5K6$9Ou-=9j{-;XquCx2;v;1$f{4N%X_?Z{ zX}Ga_xr9O-yfU*Vwk&>)8(yTeBO%XXM6R+9Ji3!&Qnxbvc%r339i=EbEFGMps76F? z_)~?XFOBJyuoyb}Ay#RAoHBEy*ppSuK?Wx(U5M&FQoWLV0Q*61IwRs!?vZnBtH- zR&WFNPlyIT8sJFaQm&pA^+^t$y1p)e#+0#unhWziQ|mcbVf0so)K;F9Oe$1jrczRp z82Tq_A?!aHkkiSAY+wo5%w5H>e==B^cVue^n5joj;yO zrSh9dN=Z0c+OZ&dL(1&FT?SNu!x+i28jvz@EqGGW#0^L}Az%EzD3gHwlQLK8w5hf3 zP`W;cyl7MmnH)Mdzgga|aFaP6R*`5!BW?z9!pw9G%Eo7#iCVSSCGt`lpFPD+KyiF^4bu}Tq{mHJW#6^IMN`NT&9!}(e8tnLTG4%BvB4H~{kK|JTAO_J^Tn1B?` zrhS5g`(tpMIuy96{WZyd0+8H=7{S&tP%*q?hlXS;kS>1t(woT)Syj26s+LF zh7{bS32QvUqau=J-WXHAFXXO9jF)=3GCRqP4X zwO}JWO%A98S5~QqWq#mC@j5lsBIEzB&%AE^<~a4jXfpizet|}E8y1SNAsK(i1xcNX zF+3v2i^k(ZE3+$3o4=sq*qG4C|ks_sIfZV%tUx&%>H<;0qd zd}Jf1!9$x`7d)vBH#@gPy*B7v4#Kn3ukU|Ts^6L950D(*N8T1-@o;my% zFv{!t%C$A0QOXbFwvA8$U?73N0`Y|7>W-_(G20|4+HkY z4BCT^9l-yqQGA$;yvs%i`TTwfb8z{-pZVT;rs$V2R!D+*zjo=T;m=XOz<*)yBGD&Q z03U-$h5NWa^OZ}H_Gbd=J1u2%|B1)3jrQ(^%m~#kQZCweV!XjVCOmtfXa6CE)bG~- z%wLWPKIc_jLsO;?Jtn#x1@XM8K>XzxmQZ!4K1WW200aK@Z7EF@j1$H+^rVL8A>BK% z6wn7 z-luRqU%d%bick#RdxP6*`d!X7H1MV3@23_U0p-ZUy&xkVHpI)hsoQeyBK5NGBAHGy z0s&iBydN!^)*1p3PgXkyEDpE^++w*m0GY&c$@}JN(azWy9lmav872V(K0zAIdarfU z2*svJt>p3Fc=Vdm;Mp%IisSD*tV`SCAbZV;SOQ5Ypzy5l8^W2V34UKSx@phFY9?Qq zjNaAYi`tksAi;rxqG5ek{9uW&!}Q>&kSplV4_V@;0y?c6B|SedR_7{&dvW2hSAyWbC~a3$xXG@$1Aa z2#8C^>GcDST9A-7X>iz-)oedy=X88P$*SKx@Rs5zap%WE;A@^gHxBs-V9hk;n)ktT2@(xq-7mN;|E@Kp-?Wz=_b+kntu2v7^6k;(OQ*+m{s!g5OFbS-1Z)*e5^<_t|W}Mew|J(EOy5 zJm%kYR>L+{@S|6Lc)3?*VF8>%vJMr_Wk*=OnR+cQtLN9DFt*vgSP<>7t+B?21DquD zZgES}a!0w}r6BmsPbxqn{u?N(&wMvVS`~t8>cugAV`ne}>RBHsQm3R1fewf^C)jV% zY(|8hbr^q|$q8T;G68T+*{5f?q`OO{^a6>&m$WhRUOS&hL7UKmWgdESPsN>0L!YZd zeT279?>J*?@q^@=(!r77ntFgQES>jKhZg9DR(TAav>P>Im4UDs)Rx-T&NMW3K^m)t%mqGNCvziy@6wB@3 z1Ysnua-=yOUjysadm_ z9$^-UbX$lTSabdSKK$$XhI3GdxoM+9)md`iG(kdb7s*m5k5HyrR|_&GfrGTzdJM$D zApAjLVW)PQ<7WjE#Bs@;{%mSWlBx+R%J-0zz>wT0DUPUe`AjqwW^Ns@pSk@U!45>= z?M!JX_v%=`to%S=wIUYcZp-9Q;iiVSFzDhYv{m4?0C$oH>=P}IKg>Z1I@40lQl&zi zLx|7?n*=zb4mVs!zPMAJ#pPzE=4B=>V9_Z7sH6}+b5m=ZXF4iUvBr`j=-RrcC;;G+ z-W;nsf|g7YKgK$OWI+Os@oy3& zl2a=NU~l|NdBvhsWC;40eAGCg>^L?AZaNfzT}0 zsG(YGd4OqwJz5$hYnBJJ=VwB^juO_weriA^`X>vFqy(Td2O|G=#t{`d z53|-OuO2HIVO$b#(u}p)vEPG?iqeLfQlQH9H%{BWeOS9lylf_1SfDD2--M-PnUc|p zNKyxnGyJt+aU8GHYQ`tlughMx*fT=>|0zqd5KF?e*J!8zC7Bf#m?v0d47ybP;SUS zKZ_=4`^wT=^1sZ(tt6+$?e+am5 zH|!^p!1Db~fZ_m(8y$Phfi24uOjJ&WtR%>6G;Tg)PMD~Ks6KwIICB_RkD&!#4WDWE4$yJ7M;RRQWBE zZ>E1H4K^hAq7WcU*?fOf-kPXnhc4VO?iInNm@ilILC5hpiAO6V@x+vQdxBzXt<*mHxl#l{?3!)mcE&+wk9>w^vru2yT0d5q#Jqn~n2#0Vxh|=DZi?v73P}UwYA-Q6 zKPqTMhwC^SO4kyH?^P5v{plbS7rq z_r;L*tgnv*;Y7qrV}B)whe1xyPqcYXtzBcE4}JjqO}oxd6u1lmhM|!%O*KJ6eS_^M z3cQ*l&JiLKr|=DUBQmFt0^-$rG>{N6EF>s3CrHGB%is-4@JtB}4{4&!vp^(cWaxqT zX)|@FAt;Qp>o^#7W1ZbRx`;vvJ_rnrR%E(*Mmj~Fv49IYmaBnUvJAX`6Ds7*bW?ih zAf40(`Dz+xbC>k+lSF)n$}q)E|3B1W`@gFbM*hF*tl@#`xL~?`Ury2g4Q9OmW1TYF0}5g68+X4Q`lw)nLX+gvf52q3Txm?0zm4&g4o<~#>3~yZIP~pk0qO?UYw)f zJbvrxb{ZU!W6VTw%|%Eudl8n1g9@vElso&jAI?E0|avv~>6|lyMjyxj__9_L-23^BqyK>1gnW!jqz*_(DgJSQ!eunOq(nKGOLq06TU;4j>W{_evs_VF5ty4>!qF5*NZKglh<&*hM67QXm)MMk<-rIv zsLoG``XW zBhucVmWU_`@P`jQOMA@mXU9xtE>~5yD*GW4l<-*5M=`P-L0ixAdL=4#rV_Btkv&z6 zUx)Xdw2uwYzfTqqG3M+52g?|s;pGVzRvmw`c!S0g6@Pwe48_U0b2A{Bkz>}?iV#o6 zA7mV{Z<+4Wb;8rH)bg94Nq{>Y!Og0UsB0A?Ld9tU{&vi*x zR*RJA*;W>@t_8bpFD_4CKFzyv2i*0`-z3pv3Qs68upx#y_{-`t6nbz4S9r|p7ZUcC zfUC0^&zH&|bcJ#guR7QxVKGiETprd4J@oF1De<~69y-g~(xG%D#dbr54&J-^(TV80 zVqK04le(0luJgGG22YJ$lduFEhiCTcbF)lgALpAUW0}jmr-~6DWS5C`*`KmDMS5c! zP#hPgo2ZZzu3MypCbY){Agn7zSB7;{==_x61?EFzA9O8|r!sE=8SI|FqpAlo>pjl$ zNRofOTn)FTh4~!pZUWaSd~U%RpNZB4l=?jf)Whh?(tq6W zQ8Rs(15EHBGoIc3`|(P9#*xgQ<5{rqI}(MOk?irvnVW!{p{AaGvTAT(b=*-9pAeUA z`ru44Y)j_7@3&`xQr*oxUoa;85wc-4Oa;RW6NQm}4wrbbR;XJJ`Goj6G-{BTol7oO4~qztPMcE14*f_1$y;!H5I{J)O8CLSF}_=>v#hw z?vneZkT?qc)c9;n^Ljr0G4zoFm_p~svE4L`iBHCY?Ti!fsV(mJ}?$K8qKC89&ql*Iq0(22EhSlrQn#~R5KOOtc zo$F)-tZ(}p4g>`CUyhjq%Q-6>7+U`+a=Ve-XZxKAZ}`X8aH^C{DeHtLG!&ZQ;Km6= zTu+dXc(oX7aTkJZbHBgwTE{S5)Jk^T*~EHW&`y$p`omy53rm0#bH7bL8ou4V;A^&g zp{u75p`mI0(TihG*ALEI=(W#F_|!EKY(yRPh%D~^aVrhwV7-}9bKaDyRW-RStAgT# zmuIERy0Z>?B00=xJI6NNc?lu6t+%j4)2D z8i@qf4o}xs5*bUhe+6^Y;<$}R=$i7V0iCE|B8!%(!r=(hfferY1r{@oM4m{gl_~3E zxFW3+FT_cxX!DT&VFn5&DiX==+VH5Yp1SI{Z|NM|rp2$`!%!qrMaq%PnBjs2a`yXc zx%);PXRCc!(xP`B95m*{rflg|WSQm)$VTM>*HRh!k|`B*$KlbD>7}46m3`l6W?FV! zAulG&?9}`hO6qj{g1Aotv}}iq;gxb&@+(`6ExSI#-@bIlKI;1MxPkKB3Y+e$T!EEr z-+w=caq;LvsHrZ~=HzP~I4cfU^MGZ|F>-fd#!VGfb zzpV^>*z@!a1*&9NrJ8$fU#Z9t6v+lOCzWsh*@-2U|(nw|Pt{o&8<5b;`gRf!V zT%J?9Db7kfWUIx>zh3`WdEZ1KlGb5hW$_Lg5D@f#U6Rh`CN?IFe~!$5Dx7J`+O2V5 zb^laDZr@*cT5}0+7d>COSSm(9Z4r)X6w$J#QXo1Z>qfY6==C+&s2zYiZyu_PNm>@I3)X>9D0Q0kraO#8>vTAX) z8;S`5+D%-PG-3dB{1R!AW!pNPJMwRgtGtl!OB=H=YcTL=MJ^X$AWp9YafIF5mUMVc zuxm{NSqT!f=}2l^o=J~Nza~pMrLk5*3T?(-@I9CWL;ArW9EmBvt8za#NHL2`lE$Hl z(B;d_+z$w3F$f_`sV|DDY?sLXXx?#wh7iPAoz-FsKe zNlM0o4Y5JSJ5NM8Zb&2~6(`FzY@RsdoKd7}1{Y_`&C_t6;i`O;{Ukh3RV!;&ux68P zj)R?U$}jtN5iSQ?MYB>FPidUCM}I zoDWT?xRi3%xB-i{0&R$si_%D5{Q;JM#fwa+6|QeEej#(}_9#)^cMTpo-{vcxpoU@e zQuo)#y|t9-z6xdcIu?dx@V^hN=)065_7n9*oWr-z88g%hZDn>ZrEWT_50e;44sJd0z%h(aoXe|R z0clCZl3bI0z6NVsA%k7w^1nmxQ(4F`fLxv^IMtqZlkg-i%S&49J zuV+x~TI?K|al)mG&N1YWhryPtKmV>LixSaFalSf#`BAM$a&*w^ZfJW8*K%T0kBrkVD*~!Lx5gdPYt~6GfabX6E&i8Yo{iu}1B3dK z-)o-*+bdkCovuP=7dUnXx5QZdraiyA%kloOFe@#guav6zVeGLSe(7`Du`%m1t>wIi zYw+21C^2_U+s;=zefVTzwP4nqZ$E-D-;cJ(@_S;WdKexn79yC~5T$x+2LpVe3_5Mo zK&n;!U;$CC_GS+KR~o(2yY}N3wB%$&O!m8<;yi?CS_@%Ii{pnudHJ_rm3EU8JKJa$ z7M3WB#4c_u$`rz|o?tKr|MyOVW5?{B~Y~43EYk3Yi@-xo%w~JGL33!#YX0p{oX7$H8sK^M} z(Tz|p?WAUgYlPx*j?;1SiY66{Ma>1xq@OAg$79Gl=4_vvnZ(=;X_{QvjA%NXNs!lE zvcQ?hJ~o3FxtuES@T5+FYq-4j8vB(^v#2m$9fBo$|FA1{+W9O2hWQN+K-;q^;=CFe zdLZZ7mwPj7KQ2~LuXBO_ouQ;YbM5lZhO+{HRGgjC2u4d6fCW*`)kr@cC~ea5LEHLg zTIYPKa-u3oeJV9L$mf?U0pZ_e!`vy9yVKUv`zkW$+syjv90ofqfz3mcn{T$uQj2c6 zFdtT|6J&xWzkk-CVoEg&eL%r3HQZFTt@q`%1FW`J>^OmOuvacG?XUYd^6$IDv1Sm_7IgE}ARR|f z@*?Z0_*PP2YBkIeAR!h-X=+q0Y+6SA{6S(VKYX0u@R&@3V#WP)%epcvkc2k0DVTTx z{_$(4gpyIQH;OKxYj8q>J@(Ngl?N1oPzsiF76u@(dt}HLD;$Fkg0lV0XMCaI+h%Cbw%Zr`kwY8VS1>|0 z9zctzq?0|I=Y<%6@aOHJ;4N~{S&$HPW;L?8l9{-MORF0su^c!i&Da>)o;EYa0)%QH zn3;VU!f{n7?8~S*z{S=7(#1c1u-FCELkZMH@DE*oRfqkzx<931qo(VC`8hJwc9$G+qj|ZB z8C9P811i|+XM5s`*y-lbqL1y;5}V!mO5oTmoA_@(oosxNDq4joVrEN=%aeSM?e82o zPR&+)Y?FwZ9U5uHm`*_ppDqhN^;xzVn_q{C2$5j7F_qX=jnO01siYDmPXuzSGZ*Wn>u7$@IJ2{dosD#qr<#Y~0+PEefP936%h`3yVWesviUE=AhTtG=>iT%S(`>St zRKk|i1L|Nv7k4a6V5--7D*}UNg8?r$f4l!sj!m zxfzz#%VX(ORW_Sl9gQ40g(mtQ2Na@4z|)0S&}Q|1Sk>lG=o?~Z_!-%q{x7~wW>2>I zl5yx?x5*^G{%e*NI};LS1zeK}17>&so^#l`*ch5P0#{|;v%4wv4clEVtgfvR!8kGP zrmzGy2)4$2K~a8?;q*NLc)K3m+cUVvxF zU(Z(o@tcTYXiglL0a_(n!gPnylS_NAKU0n=&VMSxuA-uTn`!kCw0PTjjhX(9vNi{a zN>fuprOxx6@_OaFL|UXZZxm-}|6TH~`c-1hzRhIWlo~A_sps_2oGbpev0B(Rvy{>h zYmhaxQblgTGYbdY-p!m#ru>GHszYZ@C}n8bcK8RlqIPtvAmp00eK7|L`CUi~bpkdu z`PuW~CDmGmJ_n`6JZ4grUUPBDw8=Ba+s_esBB9dZlf-+^-MciEkVwC#KrF>!!!Gzh8+}jM^Qu31b(>iU6SI4l+!nY z|l5Wd){jgSDGdq`ES2DUHQC(M`x1jrU)O3dTgFHnUp=`6zdA@gj?CuLg zW^)CD?=?P^)ojciN=7D|rg^#j;q&^2*hm;=7|NAUrpg{w_k?lnmHPp}ax7x;WD3Sw zmQ#nW91hHOgB-q4?5!VOOlHXCuX=rta`+)PV}$W(Yl`QlNr&?{Og9vTUe{rj1Jt1c z+u5;Ty4R;I?2hXu6|-lUYDAgp;3%Ce?u6d2lfPHc_1x6Fw(!659F<4AzIA_)6@$mc z-9dx~mDkn&>85k-+;p=ez@tOQnvnHs>#=9uR#Tg6WTsz@jj_8`zfO5Fp zdpTJvgh0nM(229s3-4s5pN9=)sV~er$sM#x`Ifi&_Tir+R{rRcSr;S-NFWgi2qtjE z0v7K6GfV+zUcmd)*1*D=!P4Hu>_XMb{-X*Se}^Y0wapYV6+Iese+Nr%A^m4su>aH6 zxralQ|8aa=$E`u*8c9vGq};`9VY_W5QSu{}ahpa%5@VSemubk|GVV!ZS=EopOl`|7 z$+}G|$~{6eMI)CPxs}*i>|wPykMqYl&-p&*{raBseV*?*pZDkUJm+h6rT<>0S@8kJ z_1M!Hw(vY{&(N;yb9X3zK|aSF4qtwxa1ob(-M)j2yl}$$d#IeWg37Z!*lE+l3Mi53 zH|%0b`xpwUmCx>5tjV8c2e(-eM*@oeEJ8K3&uk}38pw#C!@m3UTTM$qIX%#vc80HL zhJ%bUE9(a#e!{*o%|(y9yplVR^s#+r!gYw7el!O#v$=Z zTuC88$O~4+-j{9RUEMJ8t0STyK0L~~!d~FRwK}l_o0MiJ<`IWyrMoz`aR$a|m&k|V zm4E6F_<7Csc(|dnkU10n5(fgGnF!eFibV1El!6(_IVsa!u){|mrOZh$sGy4VlnVCe z?`A-pe>EM_RPhfw`44&oyENy>NHIMiCCU%b~s0ayw( zk%0cu>P`wxhJN13T&*kSl#*dac=bq{lu?dC+ED|_0@ub4yLflQlX+ zmIpsYT(u8*yflNEkF0?fJpKE54B4u#ppmAWXuu?;pGR;awPba4qPaV&rnBpAwpn)H zOvgEujc%j2oeT5b7gL^_f=J<24OVfD=W&5=P;LKk7sSMkgB`Twa#V;|L^ZRl8? zQPm?;ob+BBI!m@?N_BGlonJ{6u<%vkr4s84NcEUkz5M0Z{zkFf?E=#$6{L^DzaPbP zDe@9)i*J|i?;aj+)=3??f16x$G`yeQAM#P{qUPR`bY4E4kF0VU<7>0_-2m1pHag;4 zRyc+2Kuu=Y;xEtoJIF_tie?-cr5e8EN{OCLv@uE`?~S)5W5nAhe!d-MUZ}_Kp+egL)o;8rP>IM8b11C+jyD9d=zH8T8e5^@X*0pOl^2t__t9 zY`#P)kJL0IqWvd+eSJ-_4`xR9ppL#9%6Ba8fP36s)(G%x*JP?iCwvt5mP*nIN|tv< zG^pMh)lf;QoGH~@@fQ%hT?Xn zqOvH=%MBkgC9@~ki2S%#+ZPP@KwR{@HMfc<3=6J;JXIK=qF?XSgD ztL35)!`f|`mcDMUMPs#M5Cj+H1~Z2nl&SYYAq|O2V{WwA)Hc_QbkDwrc;c5d$%WQn z#CYSel3Q@hoGsGM#zFTkt=K=$blw7VrM{_iCD@w$-zVP)*>V(8XiDEE=|dpyj$#nmO(ZgKx_TqQ zIJ`f4wOk1v1Mm+ezv@XsNUKd^(C;O|9B`dIS>OE(S%fQ{}tKtE<9U@O}TW`Vuq zI_sO88(Ev3B$xuWTI&?6*tJpFWW2z7a6GuK?@!n;#WqKW_BLX`3|g60@(@p8db~(o GIr|69gzY8( literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/QueryLangStatFilter.java b/src/java/com/twitter/search/earlybird_root/filters/QueryLangStatFilter.java deleted file mode 100644 index dbbc3d23a..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/QueryLangStatFilter.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import javax.inject.Inject; -import javax.inject.Singleton; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import com.twitter.common.text.language.LocaleUtil; -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.util.lang.ThriftLanguageUtil; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.util.Future; - -/** - * Export stats for query languages. - */ -@Singleton -public class QueryLangStatFilter - extends SimpleFilter { - - public static class Config { - // We put a limit here in case an error in the client are sending us random lang codes. - private int maxNumberOfLangs; - - public Config(int maxNumberOfLangs) { - this.maxNumberOfLangs = maxNumberOfLangs; - } - - public int getMaxNumberOfLangs() { - return maxNumberOfLangs; - } - } - - @VisibleForTesting - protected static final String LANG_STATS_PREFIX = "num_queries_in_lang_"; - - private final Config config; - private final SearchCounter allCountsForLangsOverMaxNumLang = - SearchCounter.export(LANG_STATS_PREFIX + "overflow"); - - private final ConcurrentHashMap langCounters = - new ConcurrentHashMap<>(); - - @Inject - public QueryLangStatFilter(Config config) { - this.config = config; - } - - private SearchCounter getCounter(String lang) { - Preconditions.checkNotNull(lang); - - SearchCounter counter = langCounters.get(lang); - if (counter == null) { - if (langCounters.size() >= config.getMaxNumberOfLangs()) { - return allCountsForLangsOverMaxNumLang; - } - synchronized (langCounters) { // This double-checked locking is safe, - // since we're using a ConcurrentHashMap - counter = langCounters.get(lang); - if (counter == null) { - counter = SearchCounter.export(LANG_STATS_PREFIX + lang); - langCounters.put(lang, counter); - } - } - } - - return counter; - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - - String lang = null; - - ThriftSearchQuery searchQuery = requestContext.getRequest().getSearchQuery(); - - lang = searchQuery.getQueryLang(); - - if (lang == null) { - // fallback to ui lang - lang = searchQuery.getUiLang(); - } - - if (lang == null && searchQuery.isSetUserLangs()) { - // fallback to the user lang with the highest confidence - double maxConfidence = Double.MIN_VALUE; - - for (Map.Entry entry : searchQuery.getUserLangs().entrySet()) { - if (entry.getValue() > maxConfidence) { - lang = ThriftLanguageUtil.getLanguageCodeOf(entry.getKey()); - maxConfidence = entry.getValue(); - } - } - } - - if (lang == null) { - lang = LocaleUtil.UNDETERMINED_LANGUAGE; - } - - getCounter(lang).increment(); - - return service.apply(requestContext); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/QueryOperatorStatFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/QueryOperatorStatFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..d93169cf1f9f4e32c16871119d82c2768eb3757d GIT binary patch literal 38654 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

~4cr5a+P>b!{uqJ7s<7{?}&RuQCFeJ{>_Jy_b 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 fo<2MIe { - private static final Logger LOG = LoggerFactory.getLogger(QueryOperatorStatFilter.class); - - private final SearchCounter numQueryOperatorDetectionErrors = - SearchCounter.export("query_operator_detection_errors"); - - private final SearchCounter numQueryOperatorConsideredRequests = - SearchCounter.export("query_operator_requests_considered"); - - private final ImmutableMap filterOperatorStats; - - // Keeps track of the number of queries with a filter applied, whose type we don't care about. - private final SearchCounter numUnknownFilterOperatorRequests = - SearchCounter.export("query_operator_filter_unknown_requests"); - - private final ImmutableMap includeOperatorStats; - - // Keeps track of the number of queries with an include operator applied, whose type we don't - // know about. - private final SearchCounter numUnknownIncludeOperatorRequests = - SearchCounter.export("query_operator_include_unknown_requests"); - - private final ImmutableMap operatorTypeStats; - - private final SearchCounter numVariantRequests = - SearchCounter.export("query_operator_variant_requests"); - - /** - * Construct this QueryOperatorStatFilter by getting the complete set of possible filters a query - * might have and associating each with a counter. - */ - public QueryOperatorStatFilter() { - - ImmutableMap.Builder filterBuilder = new ImmutableMap.Builder<>(); - for (String operand : SearchOperatorConstants.VALID_FILTER_OPERANDS) { - filterBuilder.put( - operand, - SearchTimerStats.export( - "query_operator_filter_" + operand + "_requests", - TimeUnit.MILLISECONDS, - false, - true)); - } - filterOperatorStats = filterBuilder.build(); - - ImmutableMap.Builder includeBuilder = new ImmutableMap.Builder<>(); - for (String operand : SearchOperatorConstants.VALID_INCLUDE_OPERANDS) { - includeBuilder.put( - operand, - SearchTimerStats.export( - "query_operator_include_" + operand + "_requests", - TimeUnit.MILLISECONDS, - false, - true)); - } - includeOperatorStats = includeBuilder.build(); - - ImmutableMap.Builder operatorBuilder = - new ImmutableMap.Builder<>(); - for (SearchOperator.Type operatorType : SearchOperator.Type.values()) { - operatorBuilder.put( - operatorType, - SearchTimerStats.export( - "query_operator_" + operatorType.name().toLowerCase() + "_requests", - TimeUnit.MILLISECONDS, - false, - true - )); - } - operatorTypeStats = operatorBuilder.build(); - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - numQueryOperatorConsideredRequests.increment(); - Query parsedQuery = requestContext.getParsedQuery(); - - if (parsedQuery == null) { - return service.apply(requestContext); - } - - SearchTimer timer = new SearchTimer(); - timer.start(); - - return service.apply(requestContext).ensure(() -> { - timer.stop(); - - try { - updateTimersForOperatorsAndOperands(parsedQuery, timer); - updateCountersIfVariantAnnotation(parsedQuery); - } catch (QueryParserException e) { - LOG.warn("Unable to test if query has operators defined", e); - numQueryOperatorDetectionErrors.increment(); - } - return BoxedUnit.UNIT; - }); - } - - /** - * Tracks request stats for operators and operands. - * - * @param parsedQuery the query to check. - */ - private void updateTimersForOperatorsAndOperands(Query parsedQuery, SearchTimer timer) - throws QueryParserException { - final DetectVisitor detectVisitor = new DetectVisitor(false, SearchOperator.Type.values()); - parsedQuery.accept(detectVisitor); - - Set detectedOperatorTypes = EnumSet.noneOf(SearchOperator.Type.class); - for (Query query : detectVisitor.getDetectedQueries()) { - // This detectVisitor only matches on SearchOperators. - SearchOperator operator = (SearchOperator) query; - SearchOperator.Type operatorType = operator.getOperatorType(); - detectedOperatorTypes.add(operatorType); - - if (operatorType == SearchOperator.Type.INCLUDE) { - updateOperandStats( - operator, - includeOperatorStats, - timer, - numUnknownIncludeOperatorRequests); - } - if (operatorType == SearchOperator.Type.FILTER) { - updateOperandStats( - operator, - filterOperatorStats, - timer, - numUnknownFilterOperatorRequests); - } - } - - for (SearchOperator.Type type : detectedOperatorTypes) { - operatorTypeStats.get(type).stoppedTimerIncrement(timer); - } - } - - private void updateOperandStats( - SearchOperator operator, - ImmutableMap operandRequestStats, - SearchTimer timer, - SearchCounter unknownOperandStat) { - String operand = operator.getOperand(); - SearchTimerStats stats = operandRequestStats.get(operand); - - if (stats != null) { - stats.stoppedTimerIncrement(timer); - } else { - unknownOperandStat.increment(); - } - } - - private void updateCountersIfVariantAnnotation(Query parsedQuery) throws QueryParserException { - DetectAnnotationVisitor visitor = new DetectAnnotationVisitor(Annotation.Type.VARIANT); - if (parsedQuery.accept(visitor)) { - numVariantRequests.increment(); - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/QueryTokenizerFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/QueryTokenizerFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..1e3528b7db4973004666af8bf7ccadde4cece5b4 GIT binary patch literal 37976 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 c!j2`jJ36$p764Yz#;THpcmT^|G { - private static final String PREFIX = "query_tokenizer_"; - private static final SearchRateCounter SUCCESS_COUNTER = - SearchRateCounter.export(PREFIX + "success"); - private static final SearchRateCounter FAILURE_COUNTER = - SearchRateCounter.export(PREFIX + "error"); - private static final SearchRateCounter SKIPPED_COUNTER = - SearchRateCounter.export(PREFIX + "skipped"); - private static final SearchTimerStats QUERY_TOKENIZER_TIME = - SearchTimerStats.export(PREFIX + "time", TimeUnit.MILLISECONDS, false); - - private final TokenizationOption tokenizationOption; - - @Inject - public QueryTokenizerFilter(PenguinVersionConfig penguinversions) { - PenguinVersion[] supportedVersions = penguinversions - .getSupportedVersions().toArray(new PenguinVersion[0]); - tokenizationOption = new TokenizationOption(true, supportedVersions); - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - - if (!requestContext.getRequest().isRetokenizeSerializedQuery() - || !requestContext.getRequest().isSetSearchQuery() - || !requestContext.getRequest().getSearchQuery().isSetSerializedQuery()) { - SKIPPED_COUNTER.increment(); - return service.apply(requestContext); - } - - SearchTimer timer = QUERY_TOKENIZER_TIME.startNewTimer(); - try { - String serializedQuery = requestContext.getRequest().getSearchQuery().getSerializedQuery(); - Query parsedQuery = reparseQuery(serializedQuery); - SUCCESS_COUNTER.increment(); - return service.apply(EarlybirdRequestContext.copyRequestContext(requestContext, parsedQuery)); - } catch (QueryParserException e) { - FAILURE_COUNTER.increment(); - return QueryParsingUtils.newClientErrorResponse(requestContext.getRequest(), e); - } finally { - long elapsed = timer.stop(); - QUERY_TOKENIZER_TIME.timerIncrement(elapsed); - Tracing trace = Trace.apply(); - if (trace.isActivelyTracing()) { - trace.record(PREFIX + "time", Duration.fromMilliseconds(elapsed)); - } - } - } - - public Query reparseQuery(String serializedQuery) throws QueryParserException { - SerializedQueryParser parser = new SerializedQueryParser(tokenizationOption); - return parser.parse(serializedQuery); - } - - /** - * Initializing the query parser can take many seconds. We initialize it at warmup so that - * requests don't time out after we join the serverset. SEARCH-28801 - */ - public void performExpensiveInitialization() throws QueryParserException { - SerializedQueryParser queryParser = new SerializedQueryParser(tokenizationOption); - - // The Korean query parser takes a few seconds on it's own to initialize. - String koreanQuery = "스포츠"; - queryParser.parse(koreanQuery); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/RealtimeServingRangeProvider.docx b/src/java/com/twitter/search/earlybird_root/filters/RealtimeServingRangeProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..f3347a8312f3db2c7da008b20fa055cca9a4d5af GIT binary patch literal 37304 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 { - - @VisibleForTesting - protected static final String NUM_REJECTED_REQUESTS_STAT_NAME_PATTERN = - "num_root_%s_rejected_requests_with_query_source_%s"; - @VisibleForTesting - protected static final String REJECT_REQUESTS_DECIDER_KEY_PATTERN = - "root_%s_reject_requests_with_query_source_%s"; - private final Map rejectedRequestsCounterPerQuerySource = - new HashMap<>(); - private final Map rejectRequestsDeciderKeyPerQuerySource = - new HashMap<>(); - private final SearchDecider searchDecider; - - - @Inject - public RejectRequestsByQuerySourceFilter( - @Nullable EarlybirdCluster cluster, - SearchDecider searchDecider) { - - this.searchDecider = searchDecider; - - String clusterName = cluster != null - ? cluster.getNameForStats() - : EarlybirdCluster.SUPERROOT.getNameForStats(); - - for (ThriftQuerySource querySource : ThriftQuerySource.values()) { - String querySourceName = querySource.name().toLowerCase(); - - rejectedRequestsCounterPerQuerySource.put(querySource, - SearchRateCounter.export( - String.format( - NUM_REJECTED_REQUESTS_STAT_NAME_PATTERN, clusterName, querySourceName))); - - rejectRequestsDeciderKeyPerQuerySource.put(querySource, - String.format( - REJECT_REQUESTS_DECIDER_KEY_PATTERN, clusterName, querySourceName)); - } - } - - @Override - public Future apply(EarlybirdRequest request, - Service service) { - - ThriftQuerySource querySource = request.isSetQuerySource() - ? request.getQuerySource() - : ThriftQuerySource.UNKNOWN; - - String deciderKey = rejectRequestsDeciderKeyPerQuerySource.get(querySource); - if (searchDecider.isAvailable(deciderKey)) { - rejectedRequestsCounterPerQuerySource.get(querySource).increment(); - return Future.value(getRejectedRequestResponse(querySource, deciderKey)); - } - return service.apply(request); - } - - private static EarlybirdResponse getRejectedRequestResponse( - ThriftQuerySource querySource, String deciderKey) { - return new EarlybirdResponse(EarlybirdResponseCode.REQUEST_BLOCKED_ERROR, 0) - .setSearchResults(new ThriftSearchResults()) - .setDebugString(String.format( - "Request with query source %s is blocked by decider %s", querySource, deciderKey)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/RequestContextToEarlybirdRequestFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/RequestContextToEarlybirdRequestFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..db9a4a4a473f6cc7b27361ab78c5524d682f1058 GIT binary patch literal 37166 zcmagEWmsIxwl<1ua1HM6?hb+A?ruRFcNz~6+=IKjySsAihD`Pa!iHAbqR0PMM!>aRVxN|$m9n@5gMyPk` zKkbbvxxGyIxsyGJ`%7lMEHP1OWZI-7v<2{d4L3Shm-=kf5I^8t>o!SW?_{a&Shw0+ zi0m)(PeO#0M2&S$y@>*4A1Km30#|gkDn5t&>5Hd^i&7ME!cvXY`Q-_Xr zw3@HgQIIsA*PS?W#&J&|Ep;aZh;(U{~>c3$o`$0Knv-X({LqVDVkpb`f3*@JLW9Sv!`*#6V zchb+DMSHHRfqABK49T>*FG++2Xx(wfPu`D+#pUlMgnFMBi`Vyr$L`4To-pMNz?A-@ zik?)mBKM%`Z9ss5A%Z>)oy={WnVEiHE8{0WLb9Uzp9x8hP!`)asY?_r8%P|=7YOxy zoj5JB2TB*Mbag6A=xbs35*?iFnp!NR=i@KY7ug1BnrP1l<}UVXZPH#ev>UF$CBt_F zkb0=?1Z&%-Mcj}hiO>pU#L@iAfmJ*-0ap1eYeDT_d{CXuA3` z&H`WnQgTh4Uy3VRf7rTzxfgD7kv8%dIf`{aQ%zMcW5wYqK$daDxE7Z=n2s)sZOy=L zdu&(wq+5Q$bQmPAsA}LraSb!sfj+=v*&t9n)3W@%XO73emf0VN0xlpr&Jsge`G!I{|<;AH;$CeMr?SLkO! zmAvzjoRilGze0tRl%WGZ`tng4GhnIpmV;B?c07w~a&x!9PA7-njcAj9_{u?Oox8Ca z(ljJKgg7+rEWqpwqBhp+stNYmQ?M^YpXpdngfiYcgqkc!nRHft zxrH!3@_{-|j=9fMq?s)$MY)G!s%Y}dpEX3{Y1+t5p=_u|TZs@Y&tu`U8y418inqIQ{0SR@Gf`5G& zG*a2mFsG@3VIw$kdw_n20?sa?oT}p9qQSQH<;2;^adX-YQosCNbLczdGH!g}g6NF+I$lkDM)TYl*~d7j zR@NP$??V_C?`P(laQ=G!r-reoMNtdb28B=RSmO_QBTA0z2#wWWhWA$|56GOM%AiZJ zGzQW19Sx_)D(7Js;ayTSm8!!BkklQBxETF;}>?QanEuqn&mJl9C;Fa zR-?}IiBC}0h~6$Yb!I=&axCq1aRg?`MUIIW94=?y-47uAz%eb@5&?d@k#Z={Jf&F$ z!}-#1Tu-7}SE?Cy8FdodttC2~!^;WzB2E)I`kg$<+8EG#jh3wyu;v)sa$8@@AB!w| ziwyP1FShiIEkU;;4y!{Lo6wYs;a58bxcbG-^Dd$C5>gBN%jJ)!{mdGSL=h{3DfP$=dOn@{c=A6{LbyL(~+>gij{K`1GcCDf}MCb774_Eka^EbbU|MSLR$`T3V1KkvE zprz{f57r&vWX25o)w=F8dBC=N-1*(|E!SdiWNl)Fn;ge{ZM8a2UW376a#jmpzdP6_BZ zGz`abH~wFQne(x=S`uGnMRgmYIU7+<44L*PrQ@DySK<;P%#9lk# zF(FMyXXHTU8pz1u`i}luzbqO|)p&d;lD*wQD~fWWVy{q#12Hn65~aBa9xAOqI3;0E z)!8|3uu?BKTb#|%Nn1K=29aY=L<@o4+`4d8cE-p-Cs3euyK!<#{l$g5*w9)abQR&8 z_d4H4xzBlDk$j=w(qllBK~o^KPduG6;btqnTQ1Gjad*AprNq2UxmIdFTO&OD-pDYU9Tu*4zcO9w2v_@uB>;VaR8=R0G_7s zy+jSnfqPnRwRRz+gweDR$X%K2Hl?>ngK2WUEti8|e|{<`YJ&~%8OWh~qn8Dtw+pd&8!B%b_DxA&KBg07}xA5=8&jd!X&KiiWbJ!F|B zs)%|jtr$cbI_-0?&SV&Pe$`@lH7qurzjVG6HffG)o!i@|m3BYKUvu1H zlEGfz923nId~0gWpC(orzHrbvMBnGurF)!wMi+95m{W)bMDSrO!g7Pt%(4(!MLf9qbVNXu-1&(MXOUOdoBym zup#!W&0-#kJ!&3@YhM0qqOteKM`r`AK;xjvhT!js=Fk1pKc|~N_fm^r_sLTxMMKpg@_ zW3IhOD^^uh!J(9D{O3Au9SCiSnfR~9q1jn3UhQNTlT|I3ofS4)!s}_yy;}^uL89za5EhwZ#lqOotZCd;#OJyQ+E`w;Y<`9CN1sB&!n2xc%a19fOH zl)rQB?BZ!_?)-a72R$bw>`2x5c6aCH8$SQAiwy=Fp0WpvcOx+N?#!w^W0z;2{q^k| z&Zn3YLqAGV5n^=}b&Zc@@pb%tS=dUndzzUEYUVF5*?t|iXFx;Z==7J$@U(aqT`b&uysLlzuzt~= zGT;7mF#GeSJv4Op$n&L6;MMM}Z6kykxI%1@Tzo#=e-N6ow>`dk++6-Letg;Bxn|2< zEKFR{+taD|nKvx5?(N#DUdQ`ses$c-{fqFMgBGA4?XG?IYX8RL{Ym-AC&RnY;>CVo zqYzQQC2%=w*jwA)ZPEC%f^kmDp_Tu!|eSFut{sH$R60FB^ zuxV%ZNp$+tdD6|LM;amb_;m!(iP7tY*Nglrp?sIt)w9cUWldN@EXFT{`L%1UtG&5m zJZX^C&#ryVw@Xj=tn1}Q{Lw-sg{a?gbDbGw6Zln<*hf0+g!FBo`k~vTw|ab@D!KmI zMJE)9mPU!^(hlEwzJb@CA`JA5P;2+$Kfxfa4v)RAL4hs|Jw@l64y{KCt*#P&sWJ4` z7WU-{VeV*;F%QAb~xNL^3W%*)Bn0RUz(ECpM`N8j$b}qxA`! z1-iO*T@RmF4N@Z*s6B)S&Z+_Pw#bvRX<8)qs1b;iKux{$!pb!O(6@btmjUbdZ~FHW z(o3*H_6n=6<`8&vMQs!(n=c0p|8)zj`XYdWziY<;24!wE~3$n*9${Xc6qeXB4{ zwXIE_Qx*^Q9Gxq$3rZei(9T<*7LBjeXsriQE$@TgI`pd+rk_q`A06%-UxsCFuY^y| zgff(+8ujPr&inVTu6~~OJ7;jvhqMwDYDT^F?|YOHWn9sy2O%zh+qj zi_Z<`>E!kNryYF;(a?7^A1u;axbLDqgoZRSk%iiLKu8IVGq7+ccP?wEYg#vPhC%^ciOy-rJMIJ8?$OX(LpIwNk>2&A~O2 z+f$(1QieOy;A$6>-*C3H-LX^rLF=!9FM#TufT|eOQd?gdfxfE;Cx#=(_bca{{0p;o z-0jRM#|LrP)8ju(xe@g?SmoV_%sPW|@iqw+_QS2?J57uCc3B_Z_I#Dc5YAYiuU!3n z+|ODPC{PMFoWp7sZWvWp2`R?fA~ly1u-mQc$R}H0d)MQJlyB+O`kj*2HjYj_R=NkG zlkaj8zh6@Ebi25#ewsoa#SS|zYw&=C8m3dn-YzvuDpJBzv;pmmz_!Nl`SnY*y#FV`jK;yqGQafC8F7 z;pF{%Mjl6ZA7@`tt$R`jHXL2k@9mzNRevxEKX-K^eB_rK9NO9QljXwx!0g10Z7Jlr zszspRWyb&%cyo6I=BWo$GrL>0=NsX*TRhL;+I)T`3Yu8mgH!mx4pjO&LzO~b8a0M7 zugx^qJa|KaIGex#u4rOb`Ite!Y^lGeCr+L*4o}tJI_zB4LErjL(+N#)biXY=>gUI% z+$uBI{v^!Ifo;CA-+Bu%SuqF6gWtsyZxMV*sbqQ2~R9%3Ht z?28j~D}Tu6{fsEz!o<<*k}Jcl_o*TVk=CIKJjfXd)yHb=rjWLXS-yQ+7Q@#Eo|Vv; zSEs08?7=Hk8)LGaq!b>YQ)!kF4EOfx=DM^+7;s*|rA%{ZGeq%vs{* z%`>vM*R;9zY4^wL;mg;{p+T?q7e`Ov-D}d@!pY<8&*vit7UPcB7U9fW=I7~QXs=f= zl;w2K79l9Z&GzP$;TzHimAEHPqqX4tl2d1AWJ&pPs`2dG6lCd0{I(9Y(=3%%*&x8T zs`;m9jP7n9W&aCKoo984hX#@dB)}6^4L1EvJWSI^BwNz=OGjw|_~ps6X|qh6#ZhJo z?e6=*V!y7AvN{B(G+Aq01ytVG5Fvv(Pai-3jO~TK(9JKJ9#tvqCL{21&nn0RXqz@> zCsE~%jo*jxP7#GoIK@@y2b*suubS=8!z5U)S@R%M2L>|b@i(_5^r%xdqw5UlBWvQc z$|Emwv+^m$Fswa0Idc@Tms2IHNu2v?O*fdN4K9Zttu%82HjWW-e;%=ESq%l|?8Pc( zywxsacY7!r%#n+h_#CS{ByX4aa}vNTpz4j$q#?3t{CJ44mKu2^+?2nTL%`EbC456G z>~h^1$LCxusiwoitTgBM&)FE*iz)FyV;m$_Q+%mI5!@7hdEYEPB@DRkYgKld&o9!y zWg{5799yypr;!1YXZX|DGzT&vr+RftQfTAK1QumCF%xhPxgC_ zyszZYXxR|ovG6iA!wh~h`?)L>r>D4M>GDZw8BTgFQLc}=c2t00=CM8dK&-MeF4-bM z-L!t5JOlCeA|ag*l(y(IZ6dET#J(&RKt?hB*3-QI%IS`mujoifTQ`P3N@`kbqEZI& z7B73fY0Zd_Cgfd|fH!Nxz_dZ8#F6*yw$b-*{nMLGtDLK6XYq?^>itOwpWp6Z9~TI4 zDr8YISa`aZJUD99jXCoX6x1lnKJoD^mDL<;3@TpSW!TD7RR7EgRc80vk{Es%^vdr~ zYrCDpPzqU%q~n>1E6H0pMAaB7y&Iw z+p!1W>{CV!(+2+M{&7wGHTOtn!_e~$<7LR=9YTyDrXLghww7v+#R@#_R1X)=b6AGV z5}l$O$m#5*3V0}bRTL7}2;XY3w~`$0D(HW_Py?|F7u>IuX^*mQE4k)Jkvpztm^=$J zt2GLVJwo;#YVwX=;A(hlAD*1Ew!WZq3xD){671DpXtalW>yew$#OiiR5H%|NY?2F3)>KworJJ1FjoOR2 zmt}OE^sGl&<0*#;n<-wUxMkQCK2Gw8vh5ZiTG(3Frxpkn7v5%&EjzD3dt0|`N65!w zk9yvDmRH3eE5#3JX>pjWD7qeORaTIC$T8u7ufNk%}dH$qgbNHSD9ZyO|R>iHA)O(6SYMGR=s^ZaTv9Y*E zbX~P)W64Gy_hz}2@a{0`jyLPA4B1W)*P_>=&_0hZ)qqI1{Hr+ zTaotR^N4!;s8Kw_RY}^FXe8a4sh%K~mpDDOUMVA3TI+13AIEUEJwRzb0cmEIb>d|e zHHVd>9ybyO`2%~(O={~z<*9~`FBZQOJ-r-OK}lIm=Q6Bvsj{NuZBf5kv!glZ%80dD zDRjr)YCqPd+H`~wpE^F`eA?%P=)$woSOqoSWU!)q!lu!;jIm>#iVr2L+8j?`}iD*p%6Nr#?)KQ&5Xmo zs!3e6TaeFgLD&7Odn%>97$v>C>hZn7E<5l8kH8xtE}GCbkIi6n%MSh~B@8Dki+$1K zgTu?W;>m3fgedQ6mqEmzQ@7tC?kUST64#cNp*2R6)GM=Mvmo5k?d(qDWFIt@TlKQq zUv*C(#ifW*a2N#(kVaXL-DEUQveb8tkj{>}`e5>i0y*YPzuty+SE3vwMPTh);vpJV z=lW(>W1L#I8xUQdQ$1hJTHs@J9^P5skaT^`q|CQDScxFiGnXknczHe7Je!9MvDlo7 zcT%90XeanKBy=v}Tmf^)YC)xgali5|zD;t>KX|DjeHFR`+|CUrRCRS1?OunSKCE5k4-FBxK4NM47GPl--Gx%kJm^1h`#X^vswcNjKqBn+4=jw2N zL7BP3cgi1JJ$xGTR&s!-CP@C49_`%W&z&=Q0Z|9n8D|dPnF^_(w|OTe=U`%4b&K6; zOec-ji8Z}sk;i=-u$q?Nth^;R%(&5bN4T(YAO^K_WA!1Dy6BffJBrU6QdD`|-aL*)&LEtC1LPcTOCenb zy^Wwi43E8<;0>3IT~Lkyu4;`8VgNI3F~Gh*#&|aLGPK?xZ~fvSk}3#h5=$IV6@EC` zygul!>fOFqh@8`GB;ZP@P~^G|-{GVs2H=~zfY|Wo8b%x;yOv6(yta79123?7afwfN z|*zOF7G)K&POZtP%GR<=U%A~}$sohT^7{4Udg zdR1LMLcccq8%tqI)z*IKo$2@i9a%b5u4p&=6=`-4GnR9*;LMok!CqF#GyR1} zlAUJ!6sx5<1_p{H97iGC!DMsgD~pn6MM^cUf^*hoK_%Rl^S0%QLiq*=9=ZP1bF$81 zL`>>eZ3cCO(I;w3%+)CxcsG6cR%l1+C!zW7?2NICsu5L8c^et(^^6vekzTZ0ArM(g z%#);EEoz-5DYl_z{8n>M)&2Y7L2kP#IV5*=eW@Z$oHS_f*%z-+T<12GK2VY{!P21g z0^Rwff(SIzCx@jA&rS`K-`0sYrp2x#@+-t6S^4dgf8xCS(7AqezLwgj)*Mzny7akf zkijesGntG$%$*{gwAo#D(=4<2loY2d;(Paq4#hB35;YECRmOF<`4aviKUQ_GWlpuu zE?s6$6DR2Kj?cag!~Ri+op5TDTrS6cniU=vTtIVo3#wTCBthjc1Uh|PWdv@U9hz8pQ38l zEWB;4k|O$jx|K)D2fYkxP-+YiN4O}M$ZAk?=dVw!@2#+XR%CJT`|EuLotd#uKM9i;k0Ua2^A>*&1U@Nzu0(P z|3BGiMmz$zFQ^ye>JL5@S6k~qQEYxnI;qdsj`QsiEH5|l)H z@Zx&B@(&?5P?&_8ZnHv}jPjBwLHX&M7)lA}8n%HNyS1Gl!V~xsV*w=|B{Ze}r?X+R z0_}4vT_}oGnH7a164QrzlGX4NE{DgmB1w_UD2>vrAt6muMUhKhL7%ED>H`GwIEqa#Qp=z1i*d)44Ok zSJhgMJBQ6d(k(LQoEz{RZT8s2GCb&@9c=7_7Siv~k_u!aFs z!85uR-cbT*tT-{#8}$lSpxf;DO9#jiqVoEW zLXyD@X#9XiGyI8Qm^)%i&2}6J)@mA14=Z(-+8UdWzjZiZgeUx@&yAeF9Db)$_jRZD zSO6PR7?`OgM~crBc;Pc))nJn=Pl`&LlQ0G5MDigUe4r=VAq884p@^R0Gg*D+NJVvQ zD(@nT_l|kC_B-A-@Mr}FsZGcP{EtRygv;fW5wuwZt! zTYvhn?3;<>*dYW+gS$RKjs!HkL52konvyVvX~}77y_2-ykJHA18@aiiaPvL+H{vQs zM=4a1=Bjn2mfT(y@ZJJg++7gjtuwQC8xTrZn3dI2r);F%L;n5SRvKpF8U?rL0UJ_d z{bak$5Ua{r8N9ID(sgSIUwRj=n#V{*X-OAdg)^0S^g@&EV1ukCCcUd(0x<2IY6c*q zA>EA*{>}CJy$f>Q>dWZ@nw|>ZMG^bCn1Z8W^%v90EvShN!!&GDg4cCgEB#mQha0WYn*c1o0FD+cftx<_&Gjn(3)QjR`!K ziz@L0W_Cv7pLQ}pK~sMQ@%+!Aq{%(ToBhiH-f(C1gWptNE0Ao@N@SiGD*wNBWoW!CQf` zdd2HMa#bqbjC=KY8Nku{1HxiM+L0tzA~S{h(I9W4VPphW5q+|?=jV_Tb2iHG7`AU! zruxu5$jt*OTWTm4BUv#bumuL_Ln*aPco@*?9GZ<~(rafewM=q0W{f~v@p?gTRjXU; zry8gmjd>&Z=5-6~;}`MLh2{!WPzf&70^Uvv$?cZ6pfZuqo*=rn>qsx0e8x1Y^oUC_ruEknd8CDBTLL#%#Wy zd}n6m(S>`{ek_A!*~ToGj`B&PoFbvCd;h9tV<(DXUD`L!n}RmMQU`L|Vxi=9jgZj+ z560L4_#3gBId4)_%40A}jHL+%;p4_eaXcuu$94KX5^E|O;I6T1<_|fx)9@@SiD@WX z%d&lZ>QCQQ)j#NOIDAwg8?+^=(ZQcxqE_3I%t4 z-R>SO$|1k-JS1MsXO(8Qh9N&2Rs_E^r8dc}Fk4Vu7Twmd%~AOxB%e0h@Q5YBfg~|I z=54Nh)L9o+cAoG-?(hV9-9&)DPaw8zw>r5oiiZI6tVzT?kL01#smjDsPZf|-# ziCMErfPhO`LXpgn;0#C9r!@Z)xp|*m4tcM#qmprah1r#}-BMopazjyxSrLxPj+C;( z4cVkmII;I`Qp;eFJ1PJZ4!SH&D4R6EYu2(4Cd8k3 z+A;{bIfMe6547vpf(#=76Y~!PH->560j0}z}9`u7F4 z4s?NO0)jJ0yS)T9 zd)!Mf3}{Z>)2Cof6_(mT$vY_nCGP|db|k>I1?oSOXP2$_SMq8)ZM(isE+w%1r4XSX zaqpO5dmNv7vIo-INR>LL)Pn}jtCRp8LY)p4dMkd6Rg^@+K}}{r`NYT9A14aXuJ#eU z=6%0=zG1H=fkI(%6T-XTyMe&4(Y_HmLHnB7FG%y=H@E;OY?dzT=U0=cHLN;W(!yck zJlgeSE>%k|Gs`*MFLIzihv6O6YE0)U&u;Ng!G30Zb90yVZRfveM?UAL{`&4<&9_P9 zGc^lMiJ;<5O)OAgKEDs|JS>`i)v?%mEz6-3yJ@Pq_qL-4VF~dv>#ZE_f)^22$?m;6C2OczQ(bVjo zoE#~-`F^p-BDELU`2qZeKz&Rb{*Vf0AO7I_4Q}9B z=@iJS3lZ6f-?xAt>NFno~G!OH<I{wIcGmB z7tE)$4@zF}1N=KgBOpY6;MeT)miUQkr?o7WZfrb^rru`;VYnqMg#}ggD|WCo^sD1M zw6KS5mhL#5dt0MvxnoAQ?%VX_GInA0L(I+G<`J1R~y4tNWed>7(-$(ZdsSA_?{|D&Z(qjj*xezwt z08vq-;quUsYn*B#tOW%<7ro`vZS~#T;D^R<3>{Ht&(A&Ei9Oo?U8?D9uU{%S?3K+U z&nv>xB7f!20k%~CxQMO$^2PVu&Ue-#EK9k8)@E&>(|G|}nYuPW^jgOD6I=*7{`=${ zv!P^p6*AMiV1-5po<1tr&s=-w(sMdrpauqFn+e2CvO@9D%mV`?k%7hJV414NKOf8N zC1wd*fv${s>YLS*lCsazoE3N`8zT>jhQy$^&|5l+!(^aCX60qH>(Kf|iUMT{1@m!S zKeQ{^JrZjh10}3 zUy85T-iWW1Y<-{&L;w;p-#0p8rZIVJKIaq%689Bk@jKAqL#mz6EaC8#U~%nz`YrewmFi}V*BK-@@ZW+1vrD0c{}kN&Tk!dB!BzOju5PRk8ppO>-q6Bo z#G3T?NyMYJ<;0_Me*t^+Rwo6;{0*$s=3*9&GdTo?^?ZE;R4wY*;1R}pmSeonJrMEj z^hW@e3>AThW@F0mt=!B6{{uK`00EeiFjKnq0a_SI6$p@fzS~!x+ zVp+AYo>c@|*tc^tk+zz93e>8K2t4FfGGxvHxvnkUvOK!ZU+V|_i1Kk;|2jxmvb89> zdE^E1Gdzy~tkUY8E(|0FNs|Yq#I$3>sF(TNC-e#l=D5X~?*1p%wc5G(*SVmJIoGA< z;ljY|p}&jyzvjj*|G{KPn`UeW8I<1~fNSR#sG@Ap!T`_vOVCjmI<<#9oYNgm|B%j$ zoYX!8HhlW&A4m%@{90S@2ZVWHg^1ZI^+rX5^cEw`X&u8-G15Ql1zN;bvWOH*sOux( zDx#F==G|R4qD+q$bHe4B(EtREdlo3FL>oDV^)?8sj>5+v)v;`W4qz4Fd!LVHX5`f& zN|d_Q;YHU*?~cWVF1vi1f$(;LTTs2MQzMk93M3s7Bx_E;dd!*GNN_h`-Zif)vzP;} z$VfKC{5gzbUPUg75|3S}90^*^0kcH&pw>+}9TFxKXpoZb2 z-O-}?yZ9THP3IQ>z9mnB<0z_`fmV7#oqu&;eP-)+_?wtLJhaW4WIN7 zMK5i7@Kt0eICNM9MM7BeWrgDhZ?#<99-4}sU+0d)6-#EdYE zl|j@JfR&CBt%ylR{J!|cZA5|^nl1(mj-^jr#qx(>~B`RCwb^f(*Qb`%l&p9oZ zF6u?;JVL>Vb2AE?-&;2*w{-T zU@>s9d-|ZHD2a;LQLZ59jm`j+R8n#k`EnCFJQ1wzs<4i%>P*S1_VyoJ^r}*#IE{>U zO!>4Sqv9s1BSM&+s!yEjmOY3(y3Q-n=@Tr?2ZxFTG+@pEA1fxHG^jx9WzuM#QiF1M zlGVgmVEEZX2UE-7ghEB6mNu-`vWG1r!z~`J#hZkQIr>k|;x#=ZeWu0nF+3KQTDHuJ zfT6MH86P%F0Ed};m|Yzk^VcZLUy@4|x|AAJ(_>#=>^v*pZR{s&y=S8zzo{CN6G2W) z+IyU}fN9h&#j(=@qsPEa(n_7Gu*JM&bL(VWRjP5WkRx#mPjXF6ih8~nvB*XlvCWsM zkR$8dPfSloXG%FXH%G$#s+Fp+AYy8sb-d~vhunTrUl(%V$$p{BXlZ`*u4oDU>#)&Q zWi;5;179RXfdX3bM)e)suzT%hqJ1P5se8CMyYxU;IkzeTOJV zEt{D}^6_JGs=po${kW^!)H^RPHiWuM%eJbfyyIY&AYc>6g<9{c4ssXFfuU*6%v4weC#RYt;%L2X6uTwFoOSJ zTQ}aOZeo5}QL#jlF+8^A+ZUchTF(ZqKsG%FwMF*Nib4oG_}m7kzQ9z1GTZb~w4#E) z!uB+J4IJN#^$8W@ABb)`?DGsWg>p(SiZ&Y+1PX__wJUR)O99iiw=R8a-`ln3B9olC6Ga6= z^bZ!>l_jS1_B4mvsDgu`s$6VSiKRDqF}c6JNN@U6z7Y+u+*K?jzADYC z1Po9rqm+xIlpDeo4uu6rhpI+WLgLqBgBl2ZtBGErH&3Mo#{f8;90W8flqh{aVno8) z^4)-=yN0CW*laHcD3M0u`jOS1)w`9%w&%W6qp_8zDiKi<#VOf(?BYhBQnwR>_QQTB z$OUP-VV$XzTTrZmN7sW-ho*K2tM;i&Mqx9jZz-FJAe_p*Q9NV~$vj6a7lm9DIuIdE z1e*DrDkIYgB!W&2*Av`Q82U=%I2eI4O6a>1_{LsPju>-}7-A;=BMcUVjV;PjaUzT6 z$RaY96SrDdcu)?6D71b~AXc2~w%+`aPDtt*Y}0+^0zB47x9s9v2%lqK(GUZX5bP$5 zJ0!ZLse$y`VK&~MEO%iNY53aLbkusO1$4Z!=p~A%`%G>YIqwf;;w!_$prKIodK}b$hS9Ozyp6Bn+ zje5^Pu}$t#XRUav9$uAviXx^8I@J932G)uBtp{u;N-S68#$x19|0tal9v_vf1Ovas z4#ygWZ~`5Flb9ou&q&O@ADtbgs{8L6i7lIv$e?!SU~@cTlACdFR16oi9w=7 zxZAq0;7>0hR%nBORQ>|O`VFM}FCe?$Ky!W*oj~c_SIY%B+Q{`%^9TW3oY+4Q1j<2k zizBlw1}*5lADIfxGJL8O!g*$FFeV)B+!xHmTZG0?%p+k19pQpMd|*liuoKq1=d*b0 z;YMNNd1!TzL)r)v>Q4u)Va17!N{w)+_yd9|3PhxH6$)~i)Jp_GacISlq<=avLZO~Y zd}+jWX8$rH4a&rzZn4r+c&8T;Q$-l&$6L{&I0zqN3Q}k>1XnWX#!RsjP+ZLVEXcvz z1Rg2$rW+0$AycFj0+Im3PC$xlHd*OGKniz(!^7eQ@f*s2p4&I_44mcV1Os!fh5^I- z&vW~lRxY0;EiBAUUH&}6@2j7ZFI9K)^nlfPG^m)B3`ROS?mLAJF=Q~ldy#s3FH~MW zr=M08fAo>A8FY$YB-Zjb*OPDSdL`HK-R8SD zuKRuaR^XCA)k5~B-_@DnE`WM-?c_G%W_QQ4-k|Gke|qmU{q5oG?eX>4z5OM7dVF2~ z^6BQZy}BCZ>@52hbhLk?b5&4)(Ga`6yR(9*DSdr^_7#AVp5mUan5}^_?rzAvI_y4W z#KZI4y?C;3+`39Rv>$PE7P0kt{y*26kxm)k9j{6pLKQOfhoB{nj zg$z4N+ipGbi{E(POvarPhO>jyLz`3fy!=`^-Bcs^O>&lmwS0^iaZ5W9az9{9}88>V0t8J@`G`XCV&@;fLVhAXVu3f;Xa0?fyY}|#O-47A z^7-n~7s|@+3UqPdiG}ugUnh&!r4!5cc`|P{K0?`P;X)iXzlWMtOJvyc;rW;LjGJ}C zQT1--tj$gSsmaoZs_P$DCNB>@POY!Eo5Xc@sl3;$tPiii+Lzn@Un_lgXKd>ZkK~KW z;Q^W&o1NH?_IGU_T7>py7gpVJ3r%MCs^!z=m>g3}!fzMV%`OwzfG7D^CWCtSIPO#; z+IL6Wt#_kjx7#f^lsF8+FAbjebw1BEiV7Xw!di;RuTR5 zUD@kBA)uziEl?9KsEPgdM%Y`6;I->vTlyVmch&9m_{xo)bZth~ZECwA_Uhol$QTS?|>#fWulO+b_h4^UovV|}x^d|1aj zKmMh1sE>I%B6M$dA9Pf(^U3vL*q|&fo7qYU`lYXH_j)eFIp8atXi9Zj4<6FnHc3D5MFIU zLFki3{hl6w+ao@_4y}13Y>f_!smbtue@Dx{X_|XF{iL|r@>JcNf%|~j?Vd==e#J1- zp_0+Gl{Z^A_{;(YC0u+A(tLhit0(cOj=|`Qg)cUXbiEQHE`?Stbj2v+`kT&c*GeXQ z^L@)1TSxOP_If-rnhD$6Q`7Qdf?23o+r49_VU_zhzfb}bwD;sm0Ys2uO(B97`I0Vl z1)6Og!~&+fE>KotwaQ;K@I|u+uUCq}D9Yi({+6#AKU*km8DVNa=1KH~aje@1`=LkvHezW>Jg=YW5Bu90ehp3^1U01ZP24f|~k*~Y0{<`Mb!>N5H%WRG-D zm+HA%CZPii=riZXD9qSAegipt%!sKmJxynnyn}RYRR7>Kd?(|t8%V(FT^=)CKDk|3 zA`EyJX|rkccJO=}y0@1()^~>yi7zAUF%H~t<8gaDSAcDsj|3Rf)&qO^pD1jE2i6h_ucs6KQ-%~n8JDLaIkN8+T}>mJ@>@-dHa(5;JiQ?P{<8JVP$m4O7#50n zh5r}U*%?l#{EipTI_@m*`-4a`q3ldd1v85 zEJ==6ke1a?QP{Tx%06F7lV^PJ4Xw8n%5bi65#Sd3GE4BwgJ2e7z8a>i8m$Dl8NkOz zT(V|kQ%*vp8RSucHn7_jv~-3V)+zc}4Y%X_JxUYqt?lEL1oQx0mKwQ79$Ifg7rBS6 zP~d#XXVGm5sZY4y#5{G7_DZE_6rYgy!XK0t+Hh?oU&JA*2F2Nsu>w+6qf5t&Z$say zPCO{ZN0lLTh&!HZ2+s(~_o`iRgks9y)E2e(yUt%Jxb2(>3mxR7KfmnqWqKMa_IB+i z2)x#gAh|j%`#d~9$4CmL?*XrLUS@a4>Yf{f4Y&y8%9x&8me07E2^j5B0Jn1-snO~e zU5djVTdn_(u(tq;Yumboad&rjcMlTW8h3YhNU-4U?(XjH?(PJ4CwKxuUgw;9@4M&w z-+O;`u_>yWF~=Bd@6~h7-D^)DujjVS9OL+6r$JHsl!ST#D*JpQiS+8jlWE=)_4VqU z+4~vnX2@46_;aHs1zyGON#a&sMfQujzWuwK7FkEPFjQ{M(V{IN)IU;1_8U8cLJ^B^UsC&>k8#-#Ut zX7#Iw7lY3(k~{7IEXKuBy@!rKu6y*Yy)M$opi{%AZCBkFF~HV}`&nBTnU8aPD>lRS zWmak~Pci)Q*nEqjKB&H6{i*uIzCd-l%t}=vAtb67Vb5W-IoYwZ`k=M9eW#B|$$c7{ zLzAMk@#B>HkBhbB^vG$wTT26WL(s20bpE9W$peeGP1R1kYpMY$_QfW0fxvxWjcaaD zLYGI3%P}>$66ub#rldy(XZEDKo~HE6=Ool683r%6lX-O_%Xe()J#bvHzC>sX?47iq zyrwi}cSP5DUG2LCaR%LCn}3`5WZ|Z;z^Is-e{j8ahotHc z7{@s>Io*Rkp_Tp1On$Nj|?3OK$T!*(OCo~|VkJBsIG)8|=MSbYb z*i{V~AwpQwc~+-efPbENde^Pa&GFz~6@T{YX3elSr7_9bxj;<%v_Hd)>iYJmqjdPi zMSJY=<}0`yJ|TZips(~23T%}M^GSju!sr!7xf(~3p^#{GSR zvGaB|6HDb!d$*XwvDnm|RCvN^SBvG%Px?li7&T`~rAI{78Q)8ZIPF4KAIdhgW8b~q z&58>|6|gmzvkOx?8?7gZYb|{y_*HhYQ_!6tbS~yS79OnM z)X^Y$UC)lt8atXM+)Ni9L);hJJ1dUgp79RMdlXB#ie}9Do2}0c_?DZ-nU~6;Cw7Eu z-%W1owvr;Zna|G9VE6A-2m_Sl4X&|?zqY$^@H)ObefK|O@3H?f-Xb((tCFmN6uR!{ z@>qOeJJxZhJWA-^l?rGO)%PgBh;}EQlyz6}(P@9mmQv-OrhIDABZRCMZMyQLs72P( z1^ZU}tO4Wfp~@!mtu2TL#3@@c!E+OFSDpyrN!z*Ve)RJ0fcE_{?KfqF=wLH^Tw#J0 zoe;|A?SB8B&{HT|N1yLi^qo@PptqBv%}Y1`R@S8Az~$M!S3A+OSG)crSR(J_3(8Q& zDx2W(I}2H37zv-m<0(#jp~(`mD@VqGu;b?2i__2X(XAh&ZTN{lKck=@c*;eMv$8@_ zWyq3~!h}hGBB46;OM3uE2{AK65gTbD!c}oLmHX|F;FU;FM|l0bANQOQof5hzO;(zD z+wh|d3fr^ci>{e!J#sg$W|cErl19AIv*fVoaBM{F4%lUDW<%|*!ilK{YzTX9v~pQE z4JBdi8h$Dq$kcmV7Ud;sGBaiS1JW?$zACT|kjAfpF-J9L=8&&m>Z0@Vu(bH=jF#Ul zj-594O>RpxI7akK!hyj=W%^#iIHJ^fz09b;b7ByFHpWFZt7ziywo4DK?l`QCXJtW@>=)D$Xe(CV0uWgndQPrj@UVv zPIPE;CQk~ToOr5C`AlII(OpSNurVw7c4aeUw4O1QuKOH$a-SvK-h3}Ti*K^jlTIxu zMHauB@Z!j%s;}6Q028r(d36a5Ib5WL%Dg&o)^W!^j|0??OyinvW_j;tl8XpZ>8RQS ztsYfa9cPs&RVOd=;eJ0t7Q1>aS(u^yW@>cV^TW(%YNOn@tksKdRO>0nqGYM=1#B1o zms+xbh?SZ)7#zO-9o~&WD=`6f z`1U*UC|S{xXRo;v5@N3{bG5g&-Phj`z%LUbjmaepaPUSNJzuVSyOgllMBJAM!#YUs zb?$TU3+NzaAqO8nA#)op!>wjkf9>|{;jKlSgX~J$7B-@0>^*EvkVWdF`*L-=%j|KP zJ*N)YcLI3>{n{MbI|!C0F!u?RVMuYOZ9Wzj9Ou1d^ZJLhqAqk(il3t{TMiS$&7Md5 z8dkga-AU>4y~wWghh7{ZG1Bq6mggl6X{VFXXma0%5sJ^6?Z*JgDKP}*&e6uYbbrlH zqwAPd_2h%=5O(tP+V1;n1dBW^&ksx()4^hYSy4DGyCUUFB!<|XJ&p2yifRC0k(9%lLIEfwTu6MIxh)q+f+IiqBEHqVXG?sIxQXvPW?h(K{M8V*Iminfp(R?Rjr;9* z*#{$-oT~PVi{#$6CLfSnH1+PbDSPafg>Ky8ZC3%4A5g1#fRD}0@xGtt0IlA#PVTI$ z!ES#qQ6w$9rN5-6I6C|#^=HXy7hlw%G>6fhHS<@D>*(S^;oa>hh|Nq}u0=ox_qF4` zJouBnqnqOIlWq5YTfv|I|Lg!9k@vY@H=Q}#xUrDI{k;z0+ql=^l(JnN$X0WaWeT`g zTRjt{yjdDQO&Y9LqNIP>x2E>z#_{fs zAM_nodT(?8b?4FPA={Ge#TB}{8PJw`5B9ymiY2*qHisWEHnTN$_3XN`n$mMsWQ#t3 zr5VLOgw$Tbgm%RLoBSH}7k3aC9T3th&s)(n|$}_0Dt2G{~!U2D^k-{F(?irxahJ@rCeY3 z;|fiKL#mg}y&-VDi-CHxa_V9dsURfE<}eBPMDY~Tx>D4t-lrpoOWV~<)y4T-w92Qf z&7H-O={X@l%d&3RUhd6P0*4d+k|>mV-}+8Tqfg?Iu|s_(j2t#wvygoMKf{rzbLBr3%}|GZkQ zL~_>C2BUp`uiA{+M!=>0*8@8RbI0Y9=yx}F8+lI~;NB^f;Q<|+0i8qz=^FAq_d(j} za%??!8+A{cH1Loa|CVk}kU}%VGEbZ2_3g%OJn@RJ?l$X_cnU*Iw`2{tR@-K!L=9tu zIyMiT%>vtZ=?*}Od)4C>nyc|b-FpaEOOZ@nob=tCQ=p4x|%P|qEC{sbA3Wgt5dT*r6Q0Ws-+#O{aU@r41g5fZSG(X+=>Dnc=iMy3*a55 zWgHM)`sR4&T3VqDn-CCa9j<FA zm9@%|ZI9-@cw@5j`dO#_mVvbW`*-TFFV_aKIV{S;NGhye)|GnX<@l*9!>5lV{jt}h zLHk@@f+`}7VN$D2qjP1S)BJVV0<%Mixm9O3~@$J)ed^)%5HfCU6*>9Y&o5sSKC z*K{9zo+RRKq~}<`58AA2}jKxlOTM$BC~1 zVgDTx1@zw`FV-x8A>A(j3d#2rvQ%&JuaH?#C}hH6eMs_sIm#2oq+l-Av^JPH8?=wn zC?b(6Y0P4Vvlt@?_C`?TVurWmfkkD)&ceQpfsII1P_rWli=>uu~jDI{} z@G+eO^;%5;1jB$JO!uLvC=Bvsi6ur>S9zWv#eAU_1A(y4=Z$v8p%>mZ4+9}-B|hvB zg&^NX>4zZ&Ll=e6XUUwEwN{UX^9c~6WA$GtMhk~+VosEh%kya0h8TbnYfQSu6%GR- z1>@%cy~Zu{8m`c5oUlQKNuO)CwZg=CUgZjc;bRNtwL#Tn4`vP2N$ZC})qEYx1AnTa z%!We+!O8F^Ez9AXXPBWj?ai0~o(=y!G|So$AnlJNtAu1X9-)uy#6`!}Z6iBCjqqs1r3H(Gj z#EHzraP$eC#NSWC6GQ_b$HAa<0zU@*2mNyUQHkH_k$#U352ns;OzRAU-luGMH7Yps zadb6t^t5qwcS%iz2Ft>f-S6HQ`129}Fi0oI$3$aMOB#*3e2rS79cv{EU&K#VWo%Dv ze-Q~`PP!k)67~j9>FtRwh zc{#lqG`iCQ2}yvk)bofvL8pd4_>yRKCL^35oLXNz1#^*bhATCD zMdi$%1m1K;gYmqfkXloPiHp=`m|9|eUvmB4*Cb2tcq^lHE1!JUkRD7ryc1cg!3&3h z|3v9nB_7$M$Vg&vUoX6QnZ6Kre;Z}{{8|5__#CCnC$a1O)>IJY(-RbD#b#a+*EdQR zW#Y$joTTR>h2fmduWt!hdyhc8p^Ma9v}k5FMh5n2W{#1$*3a<+-fnX4Z$Q`5GP~0= zZ(cTjzEszG*bTH8`6`)3cE2Yqberi5iGv!rzpYPN!u>Mn@BgPB2VY!S@)pF43kvPi$9uEeLaFW4$NjxSc;4s1 z21Hr~4ePJUGhcQ^1_CJ_N!o9{Ly>9vw?VR>&~ znOy461I4jy(%*A=Yvxf;mTUT!1A;-5CoE5hUg3DAsNNQ&o6?QojC;s7X7;ALH;iK# zD+BwPr4hRXWr`$iz5UesW&q1Ns5a$tSSY$X3=oPLNQ>a5Nfg%e2!uXenb74`AKO%sv{@)^^hr}9XyY>GT zz?ug;k3io=WWG_zc8)TA8BF_!))yvULO)e%3W9EO#Q7-#Ct!~8sZY3sGy@b;BHX+u z&GHNFS0JB1@u4_KGmL^)izK2-dq$rqU%{qGGs5>V3UG1%7UTSX6=SKv@!P7ok~TeE zUqqRT{kOI@|G6en1MdxXg?4UVF1<}Qc=xon4(@l}7e5m=+GZrZ8o5+@rmYS4#_b;q zy!Bq1)jsl_4{vXi`$Cyl$c?5>(hgSXEFbIk&0{%HfYF6}g|px(1HsFu^uhjfr{##; zGDPzsd`3|tW#{^kdTzqdDho%v?LbVg^$I0b41>E3QPFE&VPOO?X<}`XN{^S?-BvIh> zO{(Ze;MwMN1;fi1b_L_%w3`i6=5=LV1>ObRae;9t>Wh~QZq24dQ_wK`%^@5;7Sa%~ zKIhxeA1(isI!|it2$RXVQ&v?3Jz~_g#5-a%t(#$_Cjvb>vL#N!PWq$bj*gA+ZxtS( zLFW3lVT01DukUxSieHrfr9&m}1gPWP<=;Bq$2S|;$o?NB+zPa^e1{)j6jPM-zx`ze zdfFc=o|OL$@l*!10{#DC#fZ^i@bDqjNoYgjowYZG$He6AI^OWAb&nB3>n9(OFV%5x z44Kw*8B^B0GEq%-cI^dq>TftMA(HE3aTkCep;r2Qhhy`;8y78yViZbJtT4sv zXS8ZaSLhzpPQUj-5|k$~Tyfr~(vi%LL^KkJItNT7SQill3lE0RDf>$> zwC7_cHC&)Yuf>TJ`AZc-YQEvPHJafiFEyo|7Y8Echun5lajtvwGcGr=AfVXrkSrx= z4&L7(n9W#(aiZ8r-N{F~5Q;WvO(xh-OonLwL9LfyV64S#YPc}|gIeXU`7hLAyyT+u zzfkK#;`GrNhR`N-MCd!2R>BZ*hw#EUwf&Z3mAG}PlxU#?%Jun9QEYJN{5dgII~Z3ug#N=- z$zn9Wsu8>%${0~Pn%JqvL<*8r%Q+fM94H1=n{Fj6`Ez}M`WL+_RD8BSikd(wi3{yp zGz*o-;8eO@=SWvrdV1?io-|5_Gq6HHjS-=Pw9#yM=!STcF!xDTgsVu)0o1qSt+>rU zOvgE8E<~#K#4J5#@bby@)#oN^A~}skp@6}ou?!zgmZq_6RApF?1j+k->-XkYJiARveeO+-PhvKLbq@Rn}0;y1-FxR!h+>q+uAs0|cc+a2g*`SLY?` zVcQIaAQ&SK;W74|kCtUJu9RUQkEk*ex`uH^>9>|_JO6L8co;VCJ$j$iHT-32Noe0W z?DaCwvI_PP7kq8iPP}h;z6SC@vy>agbg`DFsvJ&_4`CfuW2)bUT)wRYbqiK}LVj+R zbkQ3gs9>t*`o{3E={>5Roa73tRoEdGP5OM9uRhOG*nJqlv`}7nYIWPqNpfiowgO%0?}U2+Y9ZL@B+LAL9B7NJNsF zVIs8>>S&}e%@_md&S%XKE7JOran)4QO!6Wml!rZVLK=C0LNxl*0cQfY3eD{3 zPYRf{4fTO^=FEk(JlKCSwcblL<^W|#UDYY+)97Uv&G){J^0i+D91y4zvxdSOD7D)aN%4A^wq|B2xYi_GQoMFhNC>|Y4p@7LNXp#Rb z!fb($T`b1fgqKN@I4c8-y6M$!vQFcDg|dv!_dvNzwaG&SZDLsf#{$~)TyKtqZHgDw5B>oh=u@ax$R5-sMFN53>Bfjt`& z^WM$U=f7gck8kBq9U{R(qX9e?#()bAO4^4_Fq613db+s|RXn9XN<-j)N-0!< zN&$+3;Bk(8@r>J2uof5!GTYk5kJuChQaq{o+?%YSLEuF|O1$n146&sAV*Q8USW-Ms zOBW=`j&0*@T|tAhKVf?=YPv-0B%oiqP&ib>R=%>+na%0Fn) zx!g&v-i76RgGVfcuE)UrBlU1=bEU@f+E^9>Sc z){NOH;@2tCJrLSBM^B_2M=ao@)@Pv^;v6r_9i%hiLsO$BWqDq`b4joP_kV{aD;L#@ z$M`EOU;07$k7NcqAAeS~*tdwCxGyfGAByBp@_=J)mhJXj7+@U0W@rs6P zYmxWvly_Qy%GSh^5Wsc`Fv zI=xh$!Kyhj;~+kLzPm=+6Pr(6(~V5i5uuTN1){v#g*^r3#7;qrk3OwFWJ(imeqn`n zW5~4vgl})aFyOA(%ixSw3er@~?&dsH2r`)X#o<4>6~4MNcs39l;vxvE+G7(Q~ko$ zYGoVQxs73bBPN7&-s=oV3FF#Xq1~B5GWmzKDz-fZNz|4+_5ZrZcg$aVJ zh6$#z_AVVD#|XdfDG%Y^LJtw6_~vm0{0aoU4W&WaihCm^tSl4QN8Ysv6KayHIS!of zGx@!PBote*5XNGG>f4vqY%xRj?)NJYkw^R$^cH%NHR2aA%KPTpt*wAb>JQWQtuP^A zAfdkl352K2+(Mh`eg?iblz)i01JC!SkY-9lkB52bd4V)c$S;@l-4LQZ14@L&*dmxx z3MBFu_&#!4fDIX;k z@c$*s#pCzqKmWXYuK1TIPH3X#fNt5RkEH{F+~R3r(Fd{G8-| z63q9Z2JyFJI3hJ&hFrOgLQI6W_hod^FfLfP&{JAo#|(dnt@)|^k;Fn+2$ZdSTKmBQ zCyB}*H1ba^-u}M=WB;RM{+B4Q=p~)UGkXIREF}8c595p(`)3K)`^|?)tr*ql&uH-4 z%>I#c3ytpx9F2YC5)+^tMYuNKp-GK0E47Hb>{t=?Y`%G-4#LV~?mYX$F;AhLoQ6 z$5{+DszNFeG;nJg7#yp%LJ4Q1zdd=SI;P+rtXWyCKT6&vWkWz*JI`(&an*r@w#$OU zrmpAstGZ?o0!r8Y7lD@)SE+{}4x&KI;-zUQI)FXPoM-ymTKKooTY^?oalge)=2DOI z_MVH|Kv00o*X&~;Oz9t((!XK!0Hx2$lZ1c%Pbcfx3I(E&)@8eWeJ=FV{D4)+qHXZvl!_wuzv!%oZ>~SzXsGZbD)0a(uNS+2hz?kBb1fNax?=44UdNhNMf)gT=baGS6c z+@w_spgEj2mfQ5cH>-AWWp!ClY1QwCUB<7iDw0%=dHm8&#_gkb#_CUP& zV}^)-1&#nfx-`cu@l@wGfFTf2>-}=RR3DOsyr-JYk2x#hqOd%OLAc zi&SkSY5}#Qv9mV|ja!(`ZY6g`2-n5hMA$dI6g`~r+3NNC)1DAO|LC_EG6jdxR5vn2HRCraSq zI6vz_ju&@0F^o`fY<1Y*nXD?yky++RQHO?FPYEC~?|z82(^^9l26=So{9W~^h@~j_ z+q-w0_)!t!ln8Hppe{co^dBpZC?3eUcgqDVW1ZQMfph$a6xjr9w1lFva=jdRURf1P zbe?0r6P|wS{TW>+LqZ4M66YUC3hCuh&5A^ zcd$W(9A@7Tr=gf&g?#S{j(xj^ro2+CBug=AHON`HZI0)tNKuFLcDHhh$nI z7vW_U<)x*q(FRgl(hUBal9(6)iUvT;6&LqNtmqpo@Zdp1{iY1qr+Fgd(iraz2c9LG zynFgdm-#JS@YQqWM_(NYUlfBB8qe&`t9A(kMY1s5KqPUb&pEnTi+vL=??$>)l2D_j!K@3Nlx ziT&HEw|&l6E%y+DqaNu34R4UE9`iHB`<3_>5tdyiIuCIw<<@}hG77ceS*2&dFW@bb z_UtxQN_saRPM=?~KmB#zp_PsDvw{&8WoavM0#dM;AQ-Pq)Ob-;{(k96h{$oG{JDjh zkQCpdyvPzJaU1s$pFvsb)?CnVm{g#MF=n;*Ic`x9>l&07@~_vj8OEV1IB)cRP)>sZ zsG%JVSKQ(nY#__7Z;|=9l^$;l18;HJFsQS38_Ho*Y%{7bKwN@N3%ej(c!maj+-eWk z`S5|t1%HfotUN&}PKEGrDYn3Is5^g67*MDsfUpjRbpICtkKM+@Br;fme-WTMg5t%* z9e3i$_5u@EkfSIKwit_F%v=y9DJ3bDkq`m61w9@(Dkn&XHs@=K03?lc6U6+UrKS@W zJ5)QhoMqxIun(IYNyn^+?{fmOBHD3HzOtCaP~1;i{6(tb9@#G|Ad3zcl6P4IkgaNY zxUFbQQo6?wVVwH6A?pZ#_#^`n{xYN_1supndNnhM{fj_!`rMkBvo>&?c)O+Pk(}Y2 zD@=hdN#2dK+{wsf*K=Xuk6GPGEhYrGPDxt(Wxapv^sFK+4wYSMFN0^w=#7huY@o`x z-khOEAiHvY>q?!Pp9f)2$>)D1W+nvAwYCv*VM`3k0_nMrdY0M?`qw#hQEFNW*)+bw zeOL&SoHmXMXMheq+@cR23s`X<|S`7pPMz0n!5|)(|we}>LB(MzLsDi+f*!Yw#-ZBqFGDU$NOqjLMbQy-iD!+|~(KOZD z&u54%k`jQx(rQCtXkcbg<{J;ZVqm)&tfR;z_z$5X{w#Nur%v)IU660)@pcc%Pd~{d z_h^h$-3|Xs9d5uMb)qQ$Tb(TeP#q6Ux8K`2=6}FU4_{p3T}%H4vd6-OzF&`$Z~r$b zHio-9-^A?KkN?rnuTV(BpcfnjL>MX=Bs3iA2ke(QL@IuPVEWVB8P^+cgMI`VF7 zRxeHrr)}*EZ;yk62(T&Vt^ZZdjShHlsU9gljL_6pl(;fNgA`%A+#GwZTOqsBjpAi& z=5V&lmZn>^(f<7NfboIXNhh(G!3Jr73zZrV=a?jTUD>RQ``w_MwCxe_grpQooIvcMbcMJGLC4p?!qqiwoKE_Br{H6wxvZBdM1JacEYG}P zsu#yBNan@P=(r3Fgk#YubNA?|7b;5P%SA$w6G)s)CH^cPkjVIpO*D8Ie8?zXPb66= zi0rGyXexsABg$xbNE>DL-(nG)GDll81$n`fjPpfJc`o8I4=r&6*5h6JlpiTy{27+l zhE@jR2nDRyl-7h67FO`IB@vUi%DLj+ZiSH=S|p{mV_^BPf=uci%6bzp+rX^lXM1Dw z70@=G03_im)mD%SHRJ7{SjOr`vU~#Zm9|z#lpod*`j|~`^ub7U4`-z!O9KNC!YEs*2WokH!G+f(oGssButg_ao|{5(bMM^^N@wO;bhjZUPzVN_Mjl#cxOJcL4XCvK zCTbSq%|LXwsVC{0OF~e$=Lcj-_O07|AJxbdgg?s7s!K_)CPF28OrOBlf2r?BR6$mHytGv z87pS_w;q7Ieg&JQdd(4tr3SYou!nxxT!%pqt>KG~d;dbl-4XiYYQgulDi~9#!pyrK z_C!>ITL+(yJ<&mP?b-4R-VUo#9 zYu_w9(a!0Wv*ywwOVro(uGv)XI{&3|)EC8Va#Q}Nyj`)u_!bn`mH9Rr!K?<)i+r+_UvD=fZRz2@NBi5r zI)(2&IP=TNQ2}G5QedRqo~&u{6EL;J8qsw12rUdPl^_}xL4%b31=lKa&9mO8Jg@JB z2eIY%(rdZ81NzVHm8aTADj>iXR4u@tKb=|s>UH^f#*3SuSIE0-^A}z>{1eC1Jz|Bz8FF)C}xNtfjs7TL9%eQ^;rkQr7^Z)F(XMU*- zf_Z#Y<8x~JAffCnK!FoknZ6Zf&1($}(L(fXD-BPK%mDjDBPjlg$F+zgD&zFTd~C~R z0plt3i4vGn*XXIkER30N`rSLRY0`rfPly0fqg|7-Qy0U^*l7~3RyP2v`;?QzDrkYr zh`~qEGJ103HrV0WPZA-!tqJg7$C6 z%z>S2RgH{o|LW(tmC|qjorPfJ$F~TY)GQg>#AXasx{;8kNhEwP5Ojh%td009;r4~! zGyJx(ELU~Xoey?#o>%l!6rcexxUQm7;H11Cv(LsK4{wCptzQ`$sKn^#+J5xmIWi1@ zvle+D@)N&wPllM#Mn9uS2B7bxqaJOxFl#TG)3m9lv}adR!FzjExox`YVMf6YR!|ua zMB~7X*KwsfAF?qBQQex6Xhv}o&V`+)M}o99xZrz)MZ$>U#c7a9;q38s?<7;O#ROEc zMlVm;d4_GMju|nC3n#JZm@6HRvK-mqpI+gx;z{L;mD!lHKSwCjyYNGtg^9Ne2OMXj zVxu9G?Qe{X*&Ar8&&*_S@tT*s`;0)5$rP(bv0_IE7b-X&ZsZ-BbY86Y+9RyH=Squ%9q)Te8fWuG&AcDA>%IEZ|4 zdtW-rZ1ACk&GodHVCBwDhuy)9zK}a?iaZ#%9dG1jGJq&N2eN7w4f_Fs@~M@zlc#{n zN=@XVI67=$ESuW0j=?h9UV0A6a;z8byYagV>qm22ufbGruAsdfLip?K9Tl2%c+~_x ziwA$)mepN~P>cSqs-fdyf6BdJippqJ-M#}P81r=fkE3tlGj6Y`JyaK^p7J#k72j_E zM<>%H5wf-sU=!s|IuH=df1i@BmS%Ql%zqtO|LSn2E$^_wh12s>1Eu3|>1D$$qC@<0 z?P{e25v^4;wnjG_ne%Bj!KXsd1z?y_aDu38xWa^Wq*p0EY!)BuNeJ%UEb z`FL3VJ0tAgywR^+y;57~q~4orDHf-H#(4CpT#%NI0~_XmOmLlycHWXo zOfE@LXxu(?#k-)&&<-idQCOtozQ9*Qm;WTXNK+?oQMh53VTp&EVJ;~Dap&1+Ut~pP zsT=Ut?Tv=nd?vg|g2qyCXwE7t+t8#uUt72&mG#AmET)VZ%d`NRSa~J&qG<~jV-4CE zFAueevIZWOh|QZqqz$frC}AmU`u-$I({BR-y1?!mfv}cw%u3I<=Yx&Z+5SpNX8lhu zN6QDJwM1{a5WTQ(PH6APznR~CUTA+^Jb!h_@ookgOYGb6eYtEk=+*T@ksi9J&3(Jw zU%zk={J0OL7H>m@3YFdj@d^v%KLxo|RG>3xqQq;U%m>Hbr*Iu4b~zP=WD0l;s_eg( zBlQ>eLs}qo%pEt@32S5ZD5Gt@Xb6`YO$li`^29TaR9?uhS_5fK!jayPf4v23U!#Cs z^LOl3tg@#I@=O#y#$(znx*(HJwj(Qqi;0hgP;_xc&L?{XkK+8WHOf>1NP-FU<$*iZ zlR~@GOr2(~CC21nO)!bdG@h<}o69e99F%XW6*cYntlS1mmVs^G7w)HDuRcdEJ!VI< z`C0r+>C_6rXfQ$vD;dTE!H@^(FQ!aux~+s}ClOP-`0`TGv_7xkxQ)043e&`EH@#EH zVNatS`2fLvFE$mDwUPo&!HSbQ&y<+p_x-Sr*m%u`&s&2gs{~Qj<^ympm`dFta^o-s zLtiRL%{?>Ezpe?X_uiX!%5K;uzX4j}S9b*8`uMg&nv9GZN`G&B7VfBYqjk9nonPYG z8`_az^Plzl?xDc{!^)zpl(9;t@`tJCYQ(kgedpG^+pLc32ENhfFT+WB8@djDx)~#9 zlk0`^mI8;7%mx1Rz1H88qBO$^*m01+B!;Oq+d7#LisUfqn+MZu8ioo<@^rUz8NbmP zls$BuzG0-KAYpSp{FLM)#?V;`Us;|w4$d#Q|E98^lGN2sx3siET`X~RXH~8gj-wzI zD|3+MdHCzf;0!goXh1Iej z)u;*eJ1w^T3-i{OkfT52?SH$u6qJHj+iIuSJZ06OFF-{_%8zY@@#rSEFx?`SRB)Y7 zP*ygpSuJZXX(#_wi##1i*|X&M+`=N^VNBQT#$iI&=}LyO;g$`~LV?}_UhHAxKFg-Yd~*zz;`76y%w_Mh6d3jl9Du%eTg-JmD(pzXt3U5<-f=>rvO({P z@HRwF!)lJ^%-zf~SdbB1qP(6JFQ$XL{FSnrf0dNJAPeILPO> z8zIr((c`)#6wuy4VQ{O*p(Xgah zggv3+mKkrW+Bf*|I{?-@D)(H#xHzj;SN7UIdb`n9c8($r zqqViFm$t1VfBqn|RvbAkXnal~L$%@kxnoMJTg6zYFL|NwXx$}!42IL#%0$?HHp!3O+PB9Ge_E?U^b+NN+*vorJ+C| z$`&_f4rwuHS4eG|2g^;-I9{YQxe4;7LrT4|x*WcF%^lY-KFBw$W5UeSTSP25~u9qcsiY?-ZG&FudA*sG4JhZ|tQ0Qu=7KAtdM z!WV|IsEk65nh#ea{qh|up(~-t_+vY)ch~)^YLm zSoj_#_##*YI;#f7QpG}2%dO2Fl2id4n{Ip@<3N`cYY9R<2+YE<9PzX|4EAlz5vM5t zy<#{Z(pDqIi>jFePm=lAin4dzSDg??5%qY)beBKn7}zq`Z!N8MkoVWVg3f%!QK)NZ!|X_IAznFUS0<`Wv&`e#Sd%DCB< zuwwKMS*h)w0u^vvwr#?XpDuR3$dzp(RI&4AB^Akjr;ZO!T;~>RzV^u^Ely4J5-jJS zMK9NdpZcxaO)YQ3#YD((+gVB-s>c~o7}U~8QYM3VHJMCu+#0TpE#@*i-WQ&GNjs@k z2qehwjcki>h+wztoie%t2|H~3#+d1vI?+scLLbxWIU@Rxao40~QQp<%)#S=M)rH$hW%FA0%4C|pDqE;5f?W>n%VadV?+)*~H{ccW*XvDS!ZuPkh6~qqpib$I zD8sSr)XKs8&(u?@%b&`y>u6{*b8WuDRv&xsv9rHXHx?k#=xR%8H2J<$->!X^N{_PT zkLC^=cu3jTyh*A(w3{lQ)}SXK_nIAE_(HgAsu8}+Dx)&Y9&8J(Qkhry%EkqEaJS%= zrMP9H?$lKqMjckZ8vzej+<|Emj8eOCDB(nGf5lK_^P);B$nW}Lp(0%8U-#xerVNgCE+m4Tl3+pnkTB3{g|TYwEA$Q>$4uFaUM z@NRY83iMYbjlKD^m4z?E0uF`+NGQ>g3N|B%#ogRr z6(;MCOlcX0WidBI*jfrM+0(RJV&)j*f5Cqzy>pgQOfSTyqRE_Dq>z`w&GPI^SNO&q z8<&k_$e9#bPDN*$j&R4Y{Fz)^o=GW+mIAXM{zYk6(0{}Fy%x9w*OK!7>@af-PWd;( z2%BWJQTas>{jkU>58sZUxp4{QoS3-gmK}-C#k+%tNP5og#`@j5d%+3wFcek2Mf7ma zZvc<0?uTgP)$eBG3&)?vomBNF(ZexB{`d&p(vrs1vvz7$#*R5^6;#4@p`_m3?=WVl^#Vbq= zl3Yzlv|cuEV&Au^-)oo#?i$`Zgx~m1Dq_BT^uWtYAmHQgAwh#G>g)b=*SmFXzS|Sx z(_>&y%zn4`Jg{xAt;;j9Fs#AFTIv&EzpR0Jx*mN(Jznj*o~jc;WMCQW!dvS@aIrDW z$Az*s6lI^{4PK}I$lv~e|L2TVFt%dR4G97gL;?bW4VBUWJH;qEWhygv&$<|lI_?aGz%j$bc5?2vpty73}qC9#AmC@J5 z6hL-rfcHl|hN^3plj3{;pR%~HBs2;<2F?hX^)06Wh5`8P=2j7`VoXo11t+#Q-1EDHj-nY+kCQ_rM*bB!ZUrOYKJmn+C=Yx}?+hz*z} z!bCyilCgG&ZM*aiJVR6f$5;qQstz1BF9D`sp!Hsd(-{m42C@S2=0`30G;kIKp@Q@n zBX7r#Zw0vl{i>M+>S{5kKgSRnfAK>shtxP=Y&vPRvMcS5FPT}5gA+jSoDtc7<>C?7 zN}8*lYFewXZ;doDMuQm;aQZdVl9|AG>;f4^`fPjXTVx?CN_Z_d)DPG4d{0ngr0Ol| z6ke0A!K(%}^4u_QU(FW9-=>E`;&|4PaSD)zp&r8t+G?}g8|Rf;0Rrglqs$vN#!oAT zdS=OdsaLizjE*B5zqb-Fy`T=_bMIiE;5dnq1U}bCKfyoa7!)yJ<w3ahQp(vIZX8LVCvD9vw z62+{PEt}%?M){Q1!$_d`M0PCE5`k)AC+9Lp`CVq2=P&@JDth=((o=W1sg*r$HgGr! z9s)*$P;d(+XwndjIw=5>6@kpNYc~``8{z@Z@|OLpF!*<m4$1=(UT3Y+7maMLcNv~z3RzL3n&g&C?==pdv# zuE%E$d0y?q_5SWlJgLbb>|nAW%~5cM79KzvN?uI7*jasg9}|lrT5$W=d-!Ij=+^jt zXYtFY2RgU=bv!6Qs6Th85<7yW)h|JbeA|Z-nU*&25U=Alr9XI9a49&!RipY8v1S(F zZb==~oSaIR|4n>HiHTIJEc8(Yv6Ccjq$5}L1^^W%!^~e!zbXU z_YcbMO8g(O{$FdC@M}{%p)Q(1Km&(azO(cz+Tz%xnU+Znv76#LBbtTKp8l^%+J3k< z>ALs2qx`2oNWOpdAbaI5;Kf%9BUd^ES;@3qz5eF^jU1!4CqlnXcW-NW_jHF-`eo7A zT?dxTUZs8I>8n$k{m+-rZrbNmb8FqL(s$A!3Mwlny`Hn~jn%I3mv7XLsy71fDK@gr zSiA5;*2VbulYJ}GKIa4r)~#ZhZ2MxK;n^o#EIwV{Mx9M69llNJY!}`ysB(!f(YkN0 z_SxZ(nm)^n-`w*e*@d?~6>PY!+OTFOXEfiuPUSe37qg!Bb@*;Ho}ajnVZxrDm9N&9 zaL@ByzUX3iMchksrkHyIz5nh?_Qu_7`smN}hR@}+asw+!<-#$|PQFT}DVD$UX>!&>N2rfST>RP*8-II%3U&~e3 zJYKeZUfr{s&*#-IEIxg0dR$%V?bYk|{=9bE`d;Ps?C0zH?e2X(d9U`j{ogmI566F% zv8-D2z2g4M{Bt$G?|%QAUT;zV@X`AHvA_QI+y7rwYIuNmid{zR4VE_57Uila@xx}p zjT1jSE-F3TCH69QbzA@W=*g23Z*Hip{yu^8=ec6#S4W&z&J<4n=4<8e9jvu`>!Dl! zgHxGXRbN^0y_CtbP)=|8S@6`0uVe%NvL-gEj0KHYiT}nO-wxRacr!AIFoTB2IT+Yy znMbS*S~_tmu!VXGIOYcGcECUbP>g{g+8H<)oSIh>A5vM6S{w^%ouM00spjqQ1E};K za2%N%rW;5%FdhRM0cqodoA&4$JKDH|Gl5Dj0yPSvXnYP7f!96B`9Jv z4b+~)!oVPaqP-p{0@t2cP=L+Vdh;AQtbppufFXfu`3zt{fM*VXMwI3P{fz>% literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/RequestContextToEarlybirdRequestFilter.java b/src/java/com/twitter/search/earlybird_root/filters/RequestContextToEarlybirdRequestFilter.java deleted file mode 100644 index 1059b4d30..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/RequestContextToEarlybirdRequestFilter.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import java.util.concurrent.TimeUnit; - -import com.twitter.finagle.Filter; -import com.twitter.finagle.Service; -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.util.Future; - -/** - * A filter for transforming a RequestContext to an EarlybirdRequest. - */ -public class RequestContextToEarlybirdRequestFilter extends - Filter { - - private static final SearchTimerStats REQUEST_CONTEXT_TRIP_TIME = - SearchTimerStats.export("request_context_trip_time", TimeUnit.MILLISECONDS, false, - true); - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - - long tripTime = System.currentTimeMillis() - requestContext.getCreatedTimeMillis(); - REQUEST_CONTEXT_TRIP_TIME.timerIncrement(tripTime); - - return service.apply(requestContext.getRequest()); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/RequestResultStatsFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/RequestResultStatsFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..6ff1f3ba15c006ae6c47953bef1fda9e68930634 GIT binary patch literal 38412 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 { - private final Clock clock; - private final RequestResultStats stats; - - static class RequestResultStats { - private static final String PREFIX = "request_result_properties_"; - - private final SearchCounter resultsRequestedCount; - private final SearchCounter resultsReturnedCount; - private final SearchCounter maxHitsToProcessCount; - private final SearchCounter hitsProcessedCount; - private final SearchCounter docsProcessedCount; - private final SearchCounter timeoutMsCount; - private Map> requestedNumResultsPercentileByClientId; - private Map> returnedNumResultsPercentileByClientId; - private Map> oldestResultPercentileByClientId; - - RequestResultStats() { - // Request properties - resultsRequestedCount = SearchCounter.export(PREFIX + "results_requested_cnt"); - maxHitsToProcessCount = SearchCounter.export(PREFIX + "max_hits_to_process_cnt"); - timeoutMsCount = SearchCounter.export(PREFIX + "timeout_ms_cnt"); - requestedNumResultsPercentileByClientId = new ConcurrentHashMap<>(); - - // Result properties - resultsReturnedCount = SearchCounter.export(PREFIX + "results_returned_cnt"); - hitsProcessedCount = SearchCounter.export(PREFIX + "hits_processed_cnt"); - docsProcessedCount = SearchCounter.export(PREFIX + "docs_processed_cnt"); - returnedNumResultsPercentileByClientId = new ConcurrentHashMap<>(); - oldestResultPercentileByClientId = new ConcurrentHashMap<>(); - } - - SearchCounter getResultsRequestedCount() { - return resultsRequestedCount; - } - - SearchCounter getResultsReturnedCount() { - return resultsReturnedCount; - } - - SearchCounter getMaxHitsToProcessCount() { - return maxHitsToProcessCount; - } - - SearchCounter getHitsProcessedCount() { - return hitsProcessedCount; - } - - SearchCounter getDocsProcessedCount() { - return docsProcessedCount; - } - - SearchCounter getTimeoutMsCount() { - return timeoutMsCount; - } - - Percentile getOldestResultPercentile(String clientId) { - return oldestResultPercentileByClientId.computeIfAbsent(clientId, - key -> PercentileUtil.createPercentile(statName(clientId, "oldest_result_age_seconds"))); - } - - Percentile getRequestedNumResultsPercentile(String clientId) { - return requestedNumResultsPercentileByClientId.computeIfAbsent(clientId, - key -> PercentileUtil.createPercentile(statName(clientId, "requested_num_results"))); - } - - Percentile getReturnedNumResultsPercentile(String clientId) { - return returnedNumResultsPercentileByClientId.computeIfAbsent(clientId, - key -> PercentileUtil.createPercentile(statName(clientId, "returned_num_results"))); - } - - private String statName(String clientId, String suffix) { - return String.format("%s%s_%s", PREFIX, ClientIdUtil.formatClientId(clientId), suffix); - } - } - - @Inject - RequestResultStatsFilter(Clock clock, RequestResultStats stats) { - this.clock = clock; - this.stats = stats; - } - - private void updateRequestStats(EarlybirdRequest request) { - ThriftSearchQuery searchQuery = request.getSearchQuery(); - CollectorParams collectorParams = searchQuery.getCollectorParams(); - - if (collectorParams != null) { - stats.getResultsRequestedCount().add(collectorParams.numResultsToReturn); - if (request.isSetClientId()) { - stats.getRequestedNumResultsPercentile(request.getClientId()) - .record(collectorParams.numResultsToReturn); - } - CollectorTerminationParams terminationParams = collectorParams.getTerminationParams(); - if (terminationParams != null) { - if (terminationParams.isSetMaxHitsToProcess()) { - stats.getMaxHitsToProcessCount().add(terminationParams.maxHitsToProcess); - } - if (terminationParams.isSetTimeoutMs()) { - stats.getTimeoutMsCount().add(terminationParams.timeoutMs); - } - } - } else { - if (searchQuery.isSetNumResults()) { - stats.getResultsRequestedCount().add(searchQuery.numResults); - if (request.isSetClientId()) { - stats.getRequestedNumResultsPercentile(request.getClientId()) - .record(searchQuery.numResults); - } - } - if (searchQuery.isSetMaxHitsToProcess()) { - stats.getMaxHitsToProcessCount().add(searchQuery.maxHitsToProcess); - } - if (request.isSetTimeoutMs()) { - stats.getTimeoutMsCount().add(request.timeoutMs); - } - } - } - - private void updateResultsStats(String clientId, ThriftSearchResults results) { - stats.getResultsReturnedCount().add(results.getResultsSize()); - if (results.isSetNumHitsProcessed()) { - stats.getHitsProcessedCount().add(results.numHitsProcessed); - } - - if (clientId != null) { - if (results.getResultsSize() > 0) { - List resultsList = results.getResults(); - - long lastId = resultsList.get(resultsList.size() - 1).getId(); - long tweetTime = SnowflakeId.timeFromId(lastId).inLongSeconds(); - long tweetAge = (clock.nowMillis() / 1000) - tweetTime; - stats.getOldestResultPercentile(clientId).record(tweetAge); - } - - stats.getReturnedNumResultsPercentile(clientId).record(results.getResultsSize()); - } - } - - @Override - public Future apply( - EarlybirdRequest request, - Service service) { - - updateRequestStats(request); - - return service.apply(request).onSuccess( - new Function() { - @Override - public BoxedUnit apply(EarlybirdResponse response) { - if (response.isSetSearchResults()) { - updateResultsStats(request.getClientId(), response.searchResults); - } - return BoxedUnit.UNIT; - } - }); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/RequestSuccessStatsFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/RequestSuccessStatsFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..e0218ea2305cafb948ac5d9376ea352babd770e1 GIT binary patch literal 37574 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 ZP+Nxq-mJhJ1j { - - private final RequestSuccessStats stats; - - @Inject - RequestSuccessStatsFilter(RequestSuccessStats stats) { - this.stats = stats; - } - - - @Override - public Future apply( - EarlybirdRequest request, - Service service) { - - final long startTime = System.nanoTime(); - - return service.apply(request).addEventListener( - new FutureEventListener() { - @Override - public void onSuccess(EarlybirdResponse response) { - boolean success = true; - - if (response.getResponseCode() == EarlybirdResponseCode.CLIENT_CANCEL_ERROR) { - success = false; - stats.getCancelledRequestCount().increment(); - } else if (response.getResponseCode() == EarlybirdResponseCode.SERVER_TIMEOUT_ERROR) { - success = false; - stats.getTimedoutRequestCount().increment(); - } else if (responseConsideredFailed(response.getResponseCode())) { - success = false; - stats.getErroredRequestCount().increment(); - } - - long latencyNanos = System.nanoTime() - startTime; - stats.getRequestLatencyStats().requestComplete( - TimeUnit.NANOSECONDS.toMillis(latencyNanos), 0, success); - } - - @Override - public void onFailure(Throwable cause) { - long latencyNanos = System.nanoTime() - startTime; - stats.getRequestLatencyStats().requestComplete( - TimeUnit.NANOSECONDS.toMillis(latencyNanos), 0, false); - - if (FinagleUtil.isCancelException(cause)) { - stats.getCancelledRequestCount().increment(); - } else if (FinagleUtil.isTimeoutException(cause)) { - stats.getTimedoutRequestCount().increment(); - } else { - stats.getErroredRequestCount().increment(); - } - } - }); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/RequestTypeCountFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/RequestTypeCountFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..e5fe491d13b721490773d0d73516b66360480131 GIT binary patch literal 37943 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/RequestTypeCountFilter.java b/src/java/com/twitter/search/earlybird_root/filters/RequestTypeCountFilter.java deleted file mode 100644 index 477a74ed4..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/RequestTypeCountFilter.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import com.google.common.base.Preconditions; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.ImmutableMap; - -import com.twitter.common.util.Clock; -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.clientstats.RequestCounters; -import com.twitter.search.common.clientstats.RequestCountersEventListener; -import com.twitter.search.common.util.FinagleUtil; -import com.twitter.search.earlybird.common.ClientIdUtil; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.common.EarlybirdRequestType; -import com.twitter.util.Future; - -public class RequestTypeCountFilter - extends SimpleFilter { - private final ImmutableMap typeCounters; - private final RequestCounters allRequestTypesCounter; - private final ImmutableMap> - perTypePerClientCounters; - - /** - * Constructs the filter. - */ - public RequestTypeCountFilter(final String statSuffix) { - ImmutableMap.Builder perTypeBuilder = - ImmutableMap.builder(); - for (EarlybirdRequestType type : EarlybirdRequestType.values()) { - perTypeBuilder.put(type, new RequestCounters( - "request_type_count_filter_" + type.getNormalizedName() + "_" + statSuffix)); - } - typeCounters = perTypeBuilder.build(); - - allRequestTypesCounter = - new RequestCounters("request_type_count_filter_all_" + statSuffix, true); - - ImmutableMap.Builder> - perTypePerClientBuilder = ImmutableMap.builder(); - - // No point in setting any kind of expiration policy for the cache, since the stats will - // continue to be exported, so the objects will not be GCed anyway. - CacheBuilder cacheBuilder = CacheBuilder.newBuilder(); - for (final EarlybirdRequestType requestType : EarlybirdRequestType.values()) { - CacheLoader cacheLoader = - new CacheLoader() { - @Override - public RequestCounters load(String clientId) { - return new RequestCounters("request_type_count_filter_for_" + clientId + "_" - + requestType.getNormalizedName() + "_" + statSuffix); - } - }; - perTypePerClientBuilder.put(requestType, cacheBuilder.build(cacheLoader)); - } - perTypePerClientCounters = perTypePerClientBuilder.build(); - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - EarlybirdRequestType requestType = requestContext.getEarlybirdRequestType(); - RequestCounters requestCounters = typeCounters.get(requestType); - Preconditions.checkNotNull(requestCounters); - - // Update the per-type and "all" counters. - RequestCountersEventListener requestCountersEventListener = - new RequestCountersEventListener<>( - requestCounters, Clock.SYSTEM_CLOCK, EarlybirdSuccessfulResponseHandler.INSTANCE); - RequestCountersEventListener allRequestTypesEventListener = - new RequestCountersEventListener<>( - allRequestTypesCounter, Clock.SYSTEM_CLOCK, - EarlybirdSuccessfulResponseHandler.INSTANCE); - - RequestCountersEventListener perTypePerClientEventListener = - updatePerTypePerClientCountersListener(requestContext); - - return service.apply(requestContext) - .addEventListener(requestCountersEventListener) - .addEventListener(allRequestTypesEventListener) - .addEventListener(perTypePerClientEventListener); - } - - private RequestCountersEventListener updatePerTypePerClientCountersListener( - EarlybirdRequestContext earlybirdRequestContext) { - EarlybirdRequestType requestType = earlybirdRequestContext.getEarlybirdRequestType(); - LoadingCache perClientCounters = - perTypePerClientCounters.get(requestType); - Preconditions.checkNotNull(perClientCounters); - - String clientId = ClientIdUtil.formatFinagleClientIdAndClientId( - FinagleUtil.getFinagleClientName(), - ClientIdUtil.getClientIdFromRequest(earlybirdRequestContext.getRequest())); - RequestCounters clientCounters = perClientCounters.getUnchecked(clientId); - Preconditions.checkNotNull(clientCounters); - - return new RequestCountersEventListener<>( - clientCounters, Clock.SYSTEM_CLOCK, EarlybirdSuccessfulResponseHandler.INSTANCE); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/ResponseCodeStatFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/ResponseCodeStatFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..d8e12e43e862c74af2a086946a836c78ce4b1b3f GIT binary patch literal 37244 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 { - - private final Map responseCodeCounters; - - /** - * Create ResponseCodeStatFilter - */ - public ResponseCodeStatFilter() { - responseCodeCounters = Maps.newEnumMap(EarlybirdResponseCode.class); - for (EarlybirdResponseCode code : EarlybirdResponseCode.values()) { - SearchCounter stat = SearchCounter.export("response_code_" + code.name().toLowerCase()); - responseCodeCounters.put(code, stat); - } - } - - @Override - public Future apply( - final EarlybirdRequest request, - final Service service) { - - return service.apply(request).addEventListener( - new FutureEventListener() { - - @Override - public void onSuccess(final EarlybirdResponse response) { - responseCodeCounters.get(response.getResponseCode()).increment(); - } - - @Override - public void onFailure(final Throwable cause) { } - }); - - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/ResultTierCountFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/ResultTierCountFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..81e14458b0a9451492546b14c38a5e0c38e435a7 GIT binary patch literal 38159 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 { - - private static final String COUNTER_PREFIX = "result_tier_count"; - private final long firstTweetTimeSinceEpochSec; - private final NavigableMap tierBuckets; - private final SearchCounter allCounter = SearchCounter.export(COUNTER_PREFIX + "_all"); - private final SearchCounter noResultsCounter = - SearchCounter.export(COUNTER_PREFIX + "_no_results"); - - @Inject - @SuppressWarnings("unused") - ResultTierCountFilter(TierInfoSource tierInfoSource) { - List tierInfos = tierInfoSource.getTierInformation(); - tierInfos.sort(Comparator.comparing(TierInfo::getDataStartDate)); - - firstTweetTimeSinceEpochSec = tierInfos.get(0).getServingRangeSinceTimeSecondsFromEpoch(); - - ImmutableSortedMap.Builder builder = ImmutableSortedMap.naturalOrder(); - Collections.reverse(tierInfos); - - for (TierInfo tierInfo : tierInfos) { - SearchCounter searchCounter = SearchCounter.export( - String.format("%s_%s", COUNTER_PREFIX, tierInfo.getTierName())); - builder.put(tierInfo.getServingRangeSinceTimeSecondsFromEpoch(), searchCounter); - - // export cumulative metrics to sum from the latest to a lower tier - Collection counters = builder.build().values(); - SearchCustomGauge.export( - String.format("%s_down_to_%s", COUNTER_PREFIX, tierInfo.getTierName()), - () -> counters.stream() - .mapToLong(SearchCounter::get) - .sum()); - } - - tierBuckets = builder.build(); - } - - @Override - public Future apply( - EarlybirdRequestContext context, - Service service) { - return service.apply(context).addEventListener( - new FutureEventListener() { - @Override - public void onFailure(Throwable cause) { - // do nothing - } - - @Override - public void onSuccess(EarlybirdResponse response) { - record(response); - } - }); - } - - @VisibleForTesting - void record(EarlybirdResponse response) { - if (response.isSetSearchResults()) { - long minResultsStatusId = response.getSearchResults().getResults().stream() - .mapToLong(ThriftSearchResult::getId) - .min() - .orElse(-1); - getBucket(minResultsStatusId).increment(); - } - allCounter.increment(); - } - - private SearchCounter getBucket(long statusId) { - if (statusId < 0) { - return noResultsCounter; - } - - // If non-negative statusId is not a SnowflakeId, the tweet must have been created before - // Twepoch (2010-11-04T01:42:54Z) and thus belongs to full1. - long timeSinceEpochSec = firstTweetTimeSinceEpochSec; - if (SnowflakeId.isSnowflakeId(statusId)) { - timeSinceEpochSec = SnowflakeId.timeFromId(statusId).inSeconds(); - } - - return tierBuckets.floorEntry(timeSinceEpochSec).getValue(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/ScatterGatherWithExperimentRedirectsService.docx b/src/java/com/twitter/search/earlybird_root/filters/ScatterGatherWithExperimentRedirectsService.docx new file mode 100644 index 0000000000000000000000000000000000000000..c425fb7b1f953874f5b64b095b8aa7bbfd59e534 GIT binary patch literal 37327 zcmagEWmsIvwm*z(a1HM6?hb+A?ruRF2@Z`1cMI0=A1Kg?!E8( zW%tunwSKbJ?yB0mOGy?I3KI+r3=Rx7ja#cyr7$iD91Ls>1`G@X)T%2Eu>Wjs|JhK@ z!@=BHpUK_MwlPUwaa9EM%h?N7GP4kgmpBSm*^UE^14A61M0NTNkMYWeKYMo%0cN3MaxWtLReuic~8Dz0{{(2tMsRj3*WE`o?qVz7|+#pO% zONRIRX)bV<-I{(rL-gP?u^gR%B&`RqXzI!s4Rqq6U^o@QG3e0h{2A`t4sr)Im7@{r zUHVUZV@j?s6TWU_58{53SuaaWR2rE!=?HE9JYU0%&ef&97&XKXIM=#P($_m#syo)L z_7)<$4>;3}yY2O%n1^51) zf7PAzb7#?>%W6QLsT@Nxt?o+_VF6lqobi*_BVuv+dkLZ5=f&dnJ>juCvb-luc>^$| ze^k+fN>=0^RJ{!dFfc^Wr=gR%tur&z?`viJrWeI&P>|UaSvt3h*h4g& z4u4X2wVfbs+q8%qa%2&6syi+V4H6;x4U9ou+WONO(JCW3TCW0JO#)yju_YCG6&PqWwEUp z*lmyPN}qJgFPIJk#T8Wz+$pYMCOgmvcq|(Pif3AOKkPG7kWXrQPFc8Y1SGL49XEkF%FlmVBmTJrT-y?+|LTAZ5~7 z_2m{q`N#+AI63CNOp#``s1)TMim9T>FMrVxiKl5JMiR%OOI}~ts5#>}Bw-ybyt?(0PC&$fcS4jQxcg-R1kdxo%&YYA~ zhy>)qt?9aM00s(chv(*Y))<{B{e(Z8wXoMg)Zsbh^lgpEV9wyRn)HF;Qj5{TtxDh zYwi8Od6H7&(#BV17RB&#$d~F*@70XBfr?vGqwcXia4weVQfNEDu!?E7~tv`H_y9-%1cNs@bJqYPy3lQ7>OcQ1j}t` z6h2ckLXx%PHRT_7m?}sGtA?m4k_n$oi1F!7X-_o|4#XFA^c8fYu(CPv&|E3EgMqE! zdjM+aL>oa|r4Oz;JH&UN@Lo`vF6>wjwjNvr5s%zpcz`YS@I)ym@U}0bk>f=EEw-B} zNkWsFn-u&Z893@*wu*5n1FJH^g^C|KJJOk-nTgKf(;u$z-{xUaIjdF@oE=P+2_mIUkMD8)qDM7rn?Sn! zb2qvsxN;!5A^u%%>hm423w#-s1QlZpvWepO@X(vvk@xiyHTaWAl0`r>9p^7K)V->6 z+&kSQK(nP+2vz~oHW55@aphR((OAkY^KgF=^%_s!8i~kO8*ifhI6`FHq_uiGcvR>R znsd^(JU|V7UfJPYs%*JA@v*w>6I>AVB6tGEx`t$6Zw^>$`*!IhviXUTV170YThKU^ z!}~`AE?NZk{VOz^DRgWZk|Flw+;i{AfYF94B+Ud19X($`yXmCRJ*cS45ZB(bVXauW zjew-pPo6fOf^6L2ai}73s~zX9N(DF&6K{el?F zse6{oPj-*o8GP97WY)ZPRG|oJ-m{sO^rfNi!QgK6E632DwWIfK2_YIQ5mVw)Nvgcx zNY|*WVxcx2Bcn|ebu$xju+<9fMt_(wBVnsSeu8zoSGgBbx4BG>@R8CZpF7NN7C52t z844p-@fM#4>$nqi6YeL@rAH?yo^s!fH#;P7;!#i61`;4IL4}JhWnmNQmr<$}#!!Dl z+t`;8kS^0w(cm|(n0y-Q*{Mk6A56p)HYt<;;2=&cr>*z>*%>=stFrv==z?a~U_|f7 z7YUnd2BKGEs;^%QWd(~$Y(5iFosr0>%%|afgvBH+ErBtzZba)4aUK)gN~pY{<@iwj z)dHu}VNc{v#a6TyjYfBL;~vsteN z?Tu@>eNWxziV21>V%G*8GyQuWTasBbsVQXg!^%m#KmN(KhAoZq zJXVR|%qwK4ZSZ_$Es|tnkQy>4aA#3`mrdqMSBXa3ANTT+gFK0I{MLTqgKL+X%9|7V zEwY6Y&O}6q8-16R^;zO1LM{${|8VTD6*2aQ$Ljj^rWL)z*W-W|xq4({y*Eiv*b9<0 zO42aRkPnnU8G2_u)l^pnsJB(V?Y4TmU zb(TOtFn*+=fTzQY>x`J)?1Y7aKQr%jaYt~9~(B#L8P(%iS4TV7~Wpb?dP zjkaZmleC=6jtt+jWw`QcB^LUHD{g%s-?(T8w)+7 z)=dW|e>TqVtG_<99sTHrI(hrAy`8-uJ~|s{i5v&bh6JD`@{gJD&kf$+=fgiYdx@fo zfh@RR&R!Avf)g-{>?7X)%A;zhld3NC4whPpzZKux)Ll1Y5a03Nz2ox9rnZ}%yj5M; z;K!wJ_!z(w34ww+8?0oGE?|k0a@qVg(LTTJ(K=!lW z8(EF*S}d4?Nw{^3r--u^)?}z|LtYlMM~L!J)}^Ti*#y6zwBfP7o=F_=RDl2N1q&g( zD->Bwu)|BJWurW<`Qccw@BAyeKMA!Rw)0Af#=g;-EYHgIOf?kmL*RGjf37-F<=FfY z%wS*!>d;^)|H`%VXAfI*=ih4%=s_l7N2<=JyE`x6@cD;bY!KM+ls#CyD}k|BXIAYQ zyFB~suW#RQKE<3E`cjgL5UZ=GYkVw=ujB8_!d9Z))67gzGk_U*7e0~!)Xr@x%8 zbN6>6b+ziAX*?BAo?f*BfG@b-{15x5?mDMg$*V8+FQ@6ki^G7|hnTmAr^U1AV&UfF zUH$uq^^5kD`Sz!S*`GJE zob z4DUjU7yE&YLPY(Rz~!uAFKv6*MdL3D#yKgIM>WEy!kMqwLUK+YE|j*1Ljvy&nOC1c zqTDupH%?H-hff~YeR#gT2#ZY$o@j1>_Q7^ud{VwdKp_fWD&N63#M}1Si_>Gb@m=fs z2i%WHusPx7mT@?BaNk1mguHDL*{7~f## z*RHj$_U4N5q(N3+yY@AoEhXE1MG%v8bcp#VIQ7g=8pCl^I#m`m)C=S3tzaG>-CqNLbPPbGRepj2W6xRdoV-J_-9V;dE z>;3A!EB65+Z|TM0TYD%0)vbw)hXHdwZa2OLLfQ^o-PhfZNXF$T+a)NhD#U&2#3mI& z0}?)=wBDh!Ko{4p>){itL23j8wTG~PSv6qZ7I{)OO^d`HH3E?msHvA;Sh)rO`nJ#T zGGP7wP5*vEdI?s@USZY690HH7sEy)e^QA+8L6|tXdfIJfO(#}`tuLf`IAN(0dEWk} z|7XpnPZg%AwzbJ~%HqMEqjLpzLCIqb+Ij2KqVbg)t@S{v<$d5=hkn(<^wY`gqr;u! z%dpJtmGH@#P=>NpqyGHddH?>^)z8y@=L`<|;8ub{&8WBjefKh=j4K-TK*Z&5d-s&S z=fsPO>CGt-)==Lm$|QM2(Bi-)h>Q!^x_VyPdoIZFBi7!u%)R}evP&WXnla3o zRvod;;lYbqe6Bc8C$Hx}?dUUzhQ6bDW0Bs%eHZm6G^CM>(jbbCx6x1K*4f&4J-Sm%#xPfP6BEH7vx7cm2?D3sNMq!N7AE&{2+!#Z56TD zmCv-KaF!dGJ%(^sMShq;9;zY;D;=~Xh;|zlnfcOiD&+L&0S@uaek2(`^!a1rPz$m; z%7eEk0pQv^qq-uf3YXZZK?xnuBaC8~*s%ez9nb|izdJvHIVVLKLAd`2{gVo+l={q?)cwB*&XmbPEeL<8 zNbZ0(%l#h`{{t24d0B-WkOCU@cVVvhAU!ImAg`DWKNv|68UITnBMBU}2O``bs^=2i z8c{obkNS60fwOqSlxuqzhCvpegw8xk7m2_T}Mm+gFB2K_=bg=d;1}ryG}6efvQ#(dYif3D?|DOYT>? z_d~PU)!XjXKj(!M5BBy)^S1A!Hih+@ZzPDL?RS`#MUwQQ&p6}o-ku!Zi8Fdk8=*3+ zl@exb4z7{ho&sH$GTe{`SG$;ehqI;aj-BEUT7M0M1FCoYt71?~ZGC72`mP?F7>*p@ zubgl4FU;C;w=<_4AH-o#kN+^`M%3G2m3JjF>kQ1r+ay%j53`Q%G%eoSWqo+t^HCl{ zIAeXja`E+cJ8MaxKq=gC4y{?ZVN_iuq!??9)LcryZnv%@pKN{YU5^`5zNJ&^cS>5@ zI684(=^ltqzROAceo4jC{n<_R(-iV3cIa_ggF7VDFr7N~cB$b)dce!;zt@S_JxCb__s)H#bLMo_Y{9vzt|Wz7bx##q$iV&6iiAz=_p8IE4@FK&7uU zR4MeOQDYeM+DvoJgEth2vk45~iY8{2j~VpKmil{o;^Z0Q@KpV+!_HM5^sVnSozV0~ z_uJy5etvAqtuk}zPr}R`*yalh{7Dh*m#`+C-Xvste8ir9<-2;GgSHqb^_7U@=nE|G zqr1|OEWK7Vv*xa(zFUEina688WOWp)H#_Y z>dSuTA?DG}zBnoK2^jZ(mGUu2Rb96dRvX%6w($k%eQaK zV)%H&vl1Hf>J$}>J$Qy_V@$S_6l0(b`+PAu?e9KQo%1RFk+pj&P`D|(J_sl++t%Q} z|LK^HIZNEUc}Dj3nl{%y?e=&*eEE7gH0as>;^+aqdrf*?03Pb^QEq|0vAxh2y7@)Zqbh~nWCY%B zSp|6jZPUi=B&xiz@%v!jDWcE`r??9JAoI=SRkQthm;}o;YaV3kfB>dE{^pj19(BrQ zbe#cxWKEn_dE`ZIRz9T|hP7uWXO1HFa;juCiE|&V=?0Uu!R4@{m1a)B#xWx9&m%T1 ztD%6Ly;#MJx7uawZg)k4Idahw?_+g`SL{^i*ShO<*`A<>9SpHfkP*7NeG=MjX%C$EbCx zMBPB`$$qbq_mLbLEgRxH7G9=in88nGKbM8#^bmI}T|Ox-!%43t%Jo*)j`H`-Jho>a zh*fsRC0it@o7T^hXCU5QB&73((iVNDP2_ck*q6lu$S9`YdYJcLIo&Ea$ zNlj}_RLUUU;$^Qltr_vr1iys%EPgRfy*~-z z%iI0y;{pLrg)B-23s3iwJ4cPWF=sx4f*M8HCqAB~vYKO!LB)%^3|o1M>Yq6w%Iuz7 z62lLJp85T0ZMSn6O2Mmns2YPU_Ua6M7hLVlCNr!HgE#XQF1?Vel1A#| z-ku)T3Ke<=_5wNsb1Jf_RF&8YYkKqFKmQ0VrTk)g==tE-%J(bvraa{^i7ciK2o_wz z*3i2IMnFr_cI*x~`;<|`w1NMne_RuP%`KAIFyws0cp0*IhY(|k>Bj`Wt)-e{u>wy! z)x*W}9F`%oM5pKmayomd0v?K96@|n#!nYditt5xL3i=-})IhAl1-C0@+M}%7O0M}) zC?m zmSo?>MSFUer1HSAr8iYV!IiNv%dk~2>uq&pUrdHR`eP-JSlvzuqDF)7>n#yXc zbdz(tQF{^hvW$+Cp7kheJmoN9GsUYEw+y?&$4MShw%r0m3tP+j)B?fc!rKh8W#<)W zFYA`=2>Dp-QI9*1@~Ze_rT76YEe?|vMVEuE$_nz9-Tfn6ZCr$y9#T`35!5=^A5FGr zpO@I1m?=~C$Rc~I7{Dmy=@B2b7NZLuVB5QLo}bxpGGc933f-}Hxfvnbf7yZXeR4vZZ^ZsX3JK{=12ZibacYrcmt%ceSD6@PzV`M zW9qHuX2xM()g-RkEy!oLpzHqCJ(bd4jFR46_4wXkmmT}`e5>i0yySOzuty)SE3vw zMPTh);vpJV=lWzFKDSDeHFR`+|CszRCRS1?Oun7u!Ww_f0GpxK4O)S{RwF zq<(bIS;uIcbC?ER0}%T>M47GPl--Gx%izm^1h`#X^vswcNjK zqBn+4=jw2NL7BP1cgi1JJ$xGTQgVQ(CP@C49_`%W$DK2I0Z|9n8D|dPnF^_(w|OTe z=U`%4b&K6;Oec-ji8Z}sk;i@OznYfcth^;R%(&5bN0_j200y;lWA!1Dx@h>J9mSUoDXKhfFCNDtXAqA6 z0dfwvrI0Rz-bP>mhWlPk(8lMCT~LkyE^3VoVgNI3F~Ghb#&|aLGPK?xZ~fvSk}3#h z5=$IV6?Qn;yguls>eaqih@8`GB;Z1*P~@@=-{GVs2H=~zfY|Wk8b%x;yOv6(yta79 z123?7afwfN|*J}#d>sH^Zl-PpmXtZaqgMRFiN zJ5f-E`d+31^{TqOg??@J$&KbvrhcZ)XmR3_2PCD)Z(I146~C-6+UYCh*w0DyxlW*Xj|DNhde*(7Z_!{fx<88#Z_T_gY$ECsYILZJ} zIQBaqsm?#bOa2O<`*--^@9;n(vCc9du50`6ke8m;FSC+!>Gjr4E|S^G%+MW5Js3xY zyb>rWWjHtSC$YB00iGV6QQu2&HkLw_s;zy|JJa#~JF;}BT+nXzE7I&9W-RAq!I?47 zgFLN}XZj0|BsF0!z3p=WWXqh4Kv$ z+;jb?=VYBjiI~){+6?LlqfgY7n5$DX@NW9>tlrN` zBRy%if+4b$m?ud+ThuyBQfx!a_^sxis{8lD0$q1ga!Bs#`cg%hIBC${voBtuxXf)T zeV`;^f~7&}1-kJ`1rlhcPYz2Lo}C&dzpWE*Op9GfzG{d@Z$4 ztvRfEbm@K7AcI*NYBCvlm^(!}X|ucRs##|7DJf1_#OLl29g1P7Bx)SOs*LMy^Cj#< zeyr+V%baSRUAoMiCQjht9iM$0hW(=sJK@wQxm=F@%44b|a6w*JymDUsS~qGVZv&7N z?luQNVxubwr530%i&XK|qBH(Vu)b!J#k5_iFk z4T@nYV`Um45`hi^A%^~a;T%(TI1$wc?q;|WS@&{v!J}Ui3X&pxUjBWg{KAJi68U5# z(1r=UBGi$eKvV&d#O_VQr&+0;Wmagh|K@?B_!p1Dt_%+NcJYN0T8)wO(GW8WT?rfw z$Wr3>pQ38lEWB;4k|O$jx|K)D2fYkxP-+YiN4O}M$ZAk?=dVw!@2#-CSFpiHUE`Y) zXh&MQ&Z4TwEm5N74Cfo*q`PM5=4Y1%CJT`<8tLNJOzuKM9i;k0Ua2^A>* z!)6@*Uu?WC|DS9$Bkum(7u1V!^#`AdtF3jQC^kPO9a;TyzQFa-##R^Fqr41^1nK>OTE7m8w4W<{Zh#Pp$_WHs!B%i*!CNK)i7N~1JuNJ!IEQRI?W(7P&{ zEQekRs)GP1Cn*v{Mnb61_-}IvgpKl&J<&LV6H)f|Xi6#P8s(mF!PHpbtF-@THfctn zvd-KCk4Jt6M5ed?FU4aC_YbW}MootvL=CcW8HZi-%~ zH@n_`I(J6+3cIz^*6>cLR9^?7;F5_EstKs1@=pEv2OWV`R|3t8Ne;>DX!)yS>*M7^ zjW43{oKGhrB@GdN)CU7c@>b*_&A@x=km{*BO2mRR+DFa?xR^Cv!#jIN-c|+`lH`C9m7%L;qh7%ZbekPN zX@5CFR9?SPNHUlKjUUixhCdMub4P5c*^UFiT21}yVWsX;TVwO_w+;u4@PwcAxsmgi z!|rtIzV7rM3t&SE12eVcNb#8hF1#nK8frZc%eKT@jU_)xGpKO;IVpTaSgBNyPx^6AuOYg!}b04WFE$O1GaHbNEUTCr%Y>?H&q<7Iv z0H&Q&%>ZOHq`T3B;9d0_g1$DAQm6C^4!*~O; zG{6;Rhraqt=VQFKt+@e)$xgb~5OtST#^|@*BwS0zGRi5LjQUlQK%Qb?o92GTyrFGb zGd(q^F@eW&Q6+xB%+6^1(@q8`XzI@(p8pw?G`Yukvwu0j8|I9D@SEyu1(NN#dU>n}Wj>|t;Sg8|bbxeJ_@g~J-i(Vibx|OjhdTKp%o)#; z?b@AkN;|^(4<%e9BvYl?r%Ak)d#w1$kF5CrQJ71(Pv|0&fid}~Lf8MP@G|2nWHN5E zg3D7mSM;Rhz0;^ui5~3bK<;-!<&P{s0qcY=;FD(hkdL3NDG@fW|rdO zWdlx60+^}KziLnW`(#erB%^p?>uwA{6Z<41%nSheOV$~SPi0g6{z{87$$p7-qVEvV zk^Uuo&{jaKUh(>mT$M^!<6eDU25_`~|Iparb|lG_$V{PrG{~E17#V?8MDJ|v`8lM- zoQ*O(hV5IGsXlafa`OPnmKuu1NLGvpY=Hs#5K1i*9tN~Jhh}4$^x9cVEt8y$86(hE zyk5{t)#}#zsRrssW8Mh9dEEj#xyQ>6ouN0FvK6SGs@1SfYQW3Ti{5V>_M2Mv4{CG} zHLUFK-SVX5%1gey%^Mzf)pFApalK7hMDJ9bwsq8{VxSI*s6uD$9D& z?Ps$X82sISk!l5WG*Pr43u8o(yN7Bb%hn7yXpxz1+xN$FnHEpi42X2@_M-pZWf#70 z_L_V57x}Hr2#8!2_7C!ARt}5^rvHO{#zOgQIojj0pH_}?ARz=_PAM%=leg&vWS(+Vx{hQdakx~46ow-JJCu(3_q3w2t3s?xK~jIw2Ro(U=`>VJ3&zHJ8R$1`tb{%f8^W*qzt8gKxmZoQskEI=D4q z-Tt-EkZO$5i-<~#+5r{^*@KA6O40#_LlK7a1NsJOd63{lo9h^xT zop}WD2;M;H7-7b^1MCX74^fUe9rlXUvXNr^KjNZ9e~ZHnIv2aJ85uR%;{8=a%-T=X z00bw2{(XV116^R6fZz<$t}g)%IbB=Og(stgLx?Ofq#Zp5m@Jo4LQlHP$tjI(K=3P# z`Ev-j5KnC89=8$<1DaE}^eI?Vg{5{-@=nS?$vc6A9r3qqf%<3i?6UR#N?uK;ZP(Yy zr39A06e9E^?i~|skKJLU|& z!>W@dEgTlkqg_wtQnlnVvz*fnmjnGd4DX;;V>(xPc8h-s_A}#~tDCG(JO4#H@;N{C z*LMeNK20KDs99)A1Ql;;Vu1ql`F(ijq0#iKj>Xn%Sq`1pO;gRiw;eqQONf`DXK0(` zUByvop=Y^EgXvG?Q{iOmxQ0)5oO8U{bRWTE5M5&*8}0e7%J0P#J00O!yOCMC2aPx! zc+jjxQ?q+=a-`_y`^6rM)M5~963FN@c1Q| zsE&{#*$*+r8Bh0ezG&DWyRzvPjpw^km89Kr+%EKA`OQNQ5H&At&LP`h1mEY*oIW6* zGH}HodxnC6Zfq$b!u~#!=c%Rzi8$kE{-mxJwTiR9=*?fw^>vfx2k;jH^)YSOLn@ek z*n`VAxPfP-U+6ce=Szi57CL~qhsMn#h0KT2Jk0Z!bIG1YoAuB8nj3Q8Q~*@c6V;Ft z05*rrIr~|;AU>siQ1XHv;NKw{0U`1OzGk1d#7|T^t!1%vW8+~o^*%EQ!!2PcEU2Pi zv4gFlUmfS6g+6SvbjRV`+Zs*F9W%0Z-=-&*u?wpwLJ;BnBDwjK3VT5XfCx$g}T^R^Po1dT9K{&=Ga^{M@sh*rWa5rJBz6 z{H21!UfDeIydo?u@>l*GU`zFni`cp^UwqE(d}b{|vy>ZXZPo@lofn{$scZd3uVrjM z!3Cq^zfaCF8%mZ}Av3)TQfPGG>7#=E!nJoUJ*N{6H82p{OdxKO6@rIm9^fyD3@j!G z%Tzu7`B-KzF-zDAbYaX>->jaLlzo=wtiUtb78ht@Ar z6ev?Dn2+Q7p^g7 z^;*c$t~GS`rTB{NjrdB*)(6@E1Rx>veWMd*8k76xb53ypabH0ezXJ_Eq}uuH;*)&p zrRVOm+BtjUR!A1)%?$+IeJ)-)0!A< zactY=1ud*btVw^LL_BI+PCP327qEM8by8r=zkrq6KAT13Ob&rzJzw7dRf{?{c!aT@ z*_bkXD_1kYe*i}fAOKSmW=gj{Kno+OLSa4QR=d4)c1S9Je^r-T%b8Ry!B} zIv02`=d$!XTo{l&^si$6ueou}e=r%+rWxBo2IV&g;L^DTswf+@Fu>#f5_A-XPVFHN z=X6KYFSzp}C$-Oj4WEAc2hsuzzt-0K0byQPA!4>ly;0FXy~PM~TF1~-jPx&h0T!{9 zEF#4c>iP({iYO(zd3V>1DAVJ`oN#$&Gyp;4o&}03(MFD8y$u4Zqp&eZbu3$;16T$4 z-j}198F_Vx5~Xf+c+s`dyJK;o%P#L`AiQ0`7E~|m)CeW20!c>%$(qxz9&=_k65I`# zcg^d{EareKGLj83KMtdqSCNaN#AQU5=yEw|9s_~8Hn8E|VRa0GGYkS8q2A~%p56sDbNj^86b3q@Y`}nv>6V;u;jzxhU<0QJ((fq*+^vb0v~ovDg_&k zsEkK+AXuYH{geKH<1hMRQ%iv@Xps5+?G`|L1bF-YAjf})(?SmK-oIR9qYzN}LEv?F z0Np$wF(V9PWe~LlV5Q>|lcXpZa~%p#&ssa8RIVv_otthKoCa7J~N4%oJ@57!HMHX)W9G6(gru1?b9 z$b&^HJ)GylcoxeSe{ZwMJpUHyc?_v{l+e3pB2~@EJp_rH;%FcEv&k;^l>(_yltQt? z1mg`(A&}|(IRqVovi6ea5vxO4MBl18+5vj86&k!FwxF6*T7^V!Ejrm_r*LB_9``H! zJBGzLHue$-SPWe3o<1lkN}?imlq(2&qcZ>{m6TjXzTAWkPXuebDy$=`I#aT$z5T}) zy{eQbP9vioQ$B6TsJKb$h+t-?>J#U>Wp^U?uJcNC`UFe!!J#4n4VW{)$BGFk4Jy!j znKYWG)Sw)eWHm7s5O(&^!PGK1p->U2r46gK>~71*aEpg)@g`wnj{cLgcumhppJ{P? z43CASmMycwe`xG^#+%I&z+omIYFEd`{58t*m*i4~E~N(5^jP?dokzvHjs0Y;_iXgz zH&tVDBFKqJdylggFpb)!ICffK^cc8FTB%bNwwRY}uAPjlN;S?EawM){NiK;=QO_46 z7TG8xw)rv@a%7$RiRtO+Oex3a=190-wNe!pL`==Ij#r)IklRn{>w*tF*e`S$EzOVK z6)mBE9X8s^^bhMLVaEl3W|}sF%E1ci9UBY#t|L=2j2)lPGpf^4#V^ZeCTKkni>^^VV^(4fJX)T^fK1Eoe0EB#ex57JVCQWKWt zfmW)>FLe528v6R7Q`?EE5jOm9pz=sp^X}~z1&!~e-5JdTj7-cyg#@4^AA1OSsj}IK z*}9-CjNm`m){VERo0wl#R4kEX43BO3^o1pn*0X^tkWG(4ZIS)Gq7cFk-nT)iFEEv$ z%r<=#t*GFyusw}l1IPDdeL}_f8>6STHY5y{Mo|LiH!W?JyA0lTb{G(2LK5`VV5GAG z-?2tmQdmvhp#+r>R)k^j_v-N}`#i%;p`6l-qRmDHfx=;K?aG|yQoywB?dQI=@9kQ1 zkx9 z@EgbNF~i}@@NtW$or2t$sbasO#D4Sspc4QOg#kx}Di_;SV(A55Ozvkd(wqL2Z$twu zcM%JYuS&Bj0RxoEDCOcPcdp{X6hs(tE`QP|AsTgql42%~aq6c1iQGS3mq zMIjf34nRl~fo49Z%E)vAiJ()%^#HdNhQ87`4nm-e68f$LzOfgWBgUK~hM0-}2!jP- zV~es>oXDa%vWSf3#I4p97MKGe3ay_LfEDMmtv7$96P$Vm+jL*K0FU+2HM=+$!uyz4 zG}u5S7`qAM4vB7QY9PJ#xM%{K`rj%LQT|jB+;c^!P_C>|W$jWKaG=PGq?g(pj*Ru{ zvLtXpD)vl=`F<(r-B{Z9xkbS}Qs%PsSPAnpRJhngdHWrD^j+fKb{Jc+l=PiF2+3*c zs&3Md^Zfm}QLi~Dw#hx}tQ9ZS!>f`{QN&b%hnnBsz&bI%^?>a}iRFsiSd1L%AElGR z=wl;YI3+TUbi+-~G z1@-(mF-VjMH`~uF_|r>>71|&mmA`c`^K?{2CN2Wrv44*26aGn_(gb7DG7mk^Di_jQ?c_gf$BV6!@4@@b4 zcEWnMd=@V~+$c;ucdZU`NE=~7{pr9ptT?ezsSyqpKR^&gfrxajLP1WGdWj$?4z2i+ z^iKyyDAZGlFO9g)?BO%gpiB(v7Arl4b$SvpRfJ-GycI2qgYYJ%AcYn~a3Oe-&&+Thkef}hAVPS6i`OhQ#KKd#7QgtU!4_J*ygNj+nV5FntK2zurLk8o! z7pb@RLgnRi`e{}1M<3~$L8tgdvi;CUVx&icPJmx&Mc&7@vO5nWhu**XzPfvKJ^8e* zS8^TSZN7Wsy5F~N1uh9xEo5){UY!~40;o6FPHrP^c6U7L4Z7a;r}s|N-yY819$$~$ z+F!D#$Jg~QpKeautE*AY&a!VoNBcKAR|N$a4YAw1J1dBq(%1KAUjZoTDQ@YC*%~P0 zZid{e!){YXJUq|cizoZWt*ewn`w=&15$i9dttm)`Hp~$rS8pybfijnO);?Cdx6xeH z<1S8@vldTvOVqyh!qnYMKo74ME~_h-T0Ta&)8oAvJMxKBa% z15>O28PL~5$grcd?bbcN_>K3?WZXGnI6Ejkq&a2J)3>G5ZFSGtsXzVZ)au6bgnM}* zK0)z7ijJ7)s>aYTBx@xnWOZ=yhi?_q<=X4+#Rul;Vg71+N1iR*xQ4KCW_Np1z?C<( z_PI~eahmM`P~&*D8^8^yUR=t)ieXSED&y8dxx^77#A)cSh6NnCfA%6rYq`tS;@eYx%bwbFNY z#(!Ei3uh_bfSParX_Mc>k?*Fl2Jo)7Lvk7FO_# zC|{T;x%y{bhF+aPLI1P!WBI`~b$ev3I6k2Kn2`_#Q;rz<^{sw=yET7IPLL7jXO$0k zMI#qw!#)c>4q%wldYIhWQerMzac=5sNhZ89zv`gtZF&f~O1)i+YF75TNc5Q{H{9;i zGE&Yx&^3^_D|@{s7}RvQ1!}?tHL>5`2zzM}ymmcoOTXjnuDYEbU%9c9uFc50O>H;C zUL8C**}3`2vgRe(N~xHY*;G{#vtXuX3wvI_?N(E6H4~7_n}x35YV`0m^G{ ztZz1#59@g4$G=n#^)XLJgzU}kgN_PzKDj&$8=MRcs^!q}H zJs2J-A$!e#6wlim0&;)kwlFv#RT)C8;~~Cj2~}+vObHJ5#(AgoMXLgaRcjNF5vKbi z6Qdji!m3Ru2)(nY-_zr7yT^ysp*3%WuF+vJH5uOT?`YXKO>omrrugo%$qn$OQ`^&}qEF&Kqg_+Yb0*DE37QfSpeSBx^Q zzv;Yotz^PC-?yBxbu`~%ug4>!nXtV*H7zeDn1zV7-8*&~R=JJy3nef?drh7cKm;n* z6e4JmFX=*8pxM?zEMU6n0%avutNcU*UNn2~dZieQq8vW#Z~3V4vxU%>5vKNIo%1H;}`}jF=kJ({x73J4n|?^$$+NcQSsu0R*gG zA99@ocHzEfFA$jPdz7dNBVu{_tb@`q`>>QqPGn^eR}j^^_-L z${Q{9`Nq7}`-Qi)+b!5sxN>1!|90!9e>7%XG2QOF&&ChGsadzg6wXtJn|-@%pv1%M z*>nnj>zddp`PkZG1m9|=>_rkm#t@p zD&g>ASSaEZ{$E&UXE-79JDxo2xU;X!pC{4JxwvSg5&;xK;YUJ*D zXuSztiRxcXto&(zv_3OR(VX?(XjH?gY2s?gURDKwjsZd+)pF z``>$ib+IX`nlZ;1Ywy)_&E0EH!Jw7UFp+(6Nh_RrQ7;|D<4Q>y#a~FrkuOTCT{yN9 z?_yweqhf4Gn1Pw9ah22M&*2EFGcQU>u~l$AV$Qc3LJNWlgKBpi;TQ@}jb+`#?kf)f zkArI=!PA25xA#N7TrWe#!M?*}fse)sM0b}B-+nQ`iOeTw6rd!2qhFCANXCW)oa!(t9;NsR(j4uwRLnYBl! zv%IGo8?||J4_~ocA>XLrFN|9hd6jyniQ9RV*e@Ff4(@N;>QAJ?~e6k>Lnc?{~CjSdnL?oo+3C4L6^#F`? z1xDFzI<8)o75d3jHdx5Rs$&%w-(vScb+f=QcwAtqTd8^Y`x3!J`RAz*+1`@w!?e7< z6jz+Dru`3J*FJmsF!=2udEySiVq7jadg%(}d&b^5=pl^_J2!pWanpMh2W+o;o_F++ z`MD&vV>9er<)r8Hl)|4(EVLOJfEoxko@q=S2-IfEuGS`?m)WdZAQOxK|)=YW%znGUC@&F%3gsbnblF|CteR8Wo)%7vr_Gji+wo+y ztXd9kK0Gv;xa{OIu~h$XaF08hh)>^5hbNqMvs~HwWMI67QFpFfeoR!G^{t$U(>`qN zv0_sv{=?VPytGJ65nF2|w>Yi4*=CBk-pX%^Uv)P(4LvuD=t=ixp^Dc3VqvVjM<+f` z_j18&@zLg80}Ybb?fe+6xvOQ$-E8qG%yX%;yXxfq1@F+JPpO=%$ucBj9=X!(tbQ;{GyB! z8*YV9C{D7b6GGX#I~d#-dJbpn8t}i4y;m+6_H|aWeeLDn&Y4ykx;lUG=_Gpb=`?r( zOXi(^MH$IjV-r02U?FRcAmNjII>SjUHeE(`b^b9qzWsf?13&qPC<^+a zw|vYbD=QRLmK-@LOoYrQ5~`zsj7M;kFmrPh@v#;nTvZn{`CowuKFI_Pgf}k-2`^c( zY2iyUWaZg+P2Ve^u)Ui+^vu;7k$Z8qYFyY-G!u41P_Fd8&DH$3l&ASKZgg z<)xqJwEX4??6mRk^4nseabg}xhlW$tnfpnTh|(90vg3g+$szc;7?-)MV#&WcuDrB+ z6R@g#=4;D`vCLj4jak%~lP)x>R@jakEz}=XR!-_=_So( zo)056X76Y=)uqLmIxTd1>a9BCH-l9|cP%Z+#;ok$lgp6Re$G_B;dkuKeV%l8`>p&u zvBgSXCcUg2S>k%iha;P+v1(TmOvL8(%{4siXo(go`})vD*Ax390nj)$i)*%(<9m=z zE+R;!t7aRrc3fqBl2fK!o4Ue>`|TK6{Q9kI@hj~YGvlki@8*6po0a|*?LKtl+Ru5G zWy=k(V0-XC-LtR)-p0n>gQj2h6u|Ok;xyU@2ng={?famBE6wl~!}PC&Sm_zVp^+Qk z;N2OtlapXa@4g|Ala(xc_ggq4A@{-gFJIivwP zkL$ZVX0NNBTBm+3-PevI3I0WH{WHH^q^bP0-W^N z@|YNI_q{sTu{wS4Ps>*xMD}EU>n9KrBb{t$dtcFzb~_u7rw(iyqxh}c{T?DYBZk1- zJ>J}q8LazZd=r^v$u?lH zjTL6CY^{dRZI~wtuBK~ZWp7JM00H7g!P*Z!%ttlxqy+zFcG>mI8okeEasLhCsV>W6 zH_LZjE+@ym9VIah{8o%^@aYQ5EqtQ}dxW9hbI$rW;Ipp`wYAeUPveJr8{KeVwz3!H zgAsm|k?k9CZ)G2?Z^j{;3!PLN^JM;+Y#R&ZsEI3*c7Lkd^W;u4eggGmD=CY;sbJvrQX{yV~_V(?8P13aT7584z*SQ_`Q`qIq<^* zpxs~5&7E^S+#Bd4hNNx3{Fl@;C&#~}{wQ1P;fooT;V{0pVg8J96I(hgytfkrv6XGd zwFKzmzHvHG0DpFHa##9wy5l)$C-~$4pB;cB`XT@GmJ4SGHx@E@pwA(E2lob?a;}>r z*;+obY!UaGLXrQCf&F!yKkzTH%Ie_X_NJ8jLc7m_VmI0_)dZ5p25yM$8rud znI9{hU8zI|!~UbnA03`Q@4dRcu&tL9q}bf3!rL}=W2bosPonCxr|rfxp5h489a$5u z^^SQtQPae*uI*!YtH92ErX!Hze(j{C)>@)a?>@ryax_y9Cw(vH45-+t@a7I)zyceK zT5s#r(UZ1gESc-4p4Kb#*wa+(e7`WW+Vos+=_q8!S{cXMfOcOpLm)*@+k4nU_mW^o zo_&F*B6!DHSw}?IfqCBfwst6^76b%Z$LsH#E2gRG9z69oIp*le1H58#CXhV zr}Im1j(Az&a@Kirow3}P?@abSKN@u2vygUv{YoG8=h`H;fJIpxONZ6Zxz>ojnmlu3 z`1Cu)VB+m~*dd>npoU0ul+=35_(H|+tZ)OiNIM!+inj1MSxvW)^U?mGXbSSARx))o z?p(a;ZvAdz{qoF0WhIy7+LBq!om#Alzp=+r9||HJX}Nrg(Kq46{>RfbEsF}>Q?{zH zc(vU+0F(gcgArhip)`yT_K18=>^3mgTB1q{0wTuFGJ>%*k9bJawLZ00J4NTb`Y9y4~LvO=268&CO&_FA-Q5OV-x~|LIy(E;LLcg76CFakAT4X#1SRN zZHDbONqh~6`0tP?p#Khexo!yz>3;QBNWSN=qOQeopeD5v{rs?&QD8yI@%+KiF=^3ZQRr8Z}>0fBg zx+PwfD1jZIgQLMqAfga3sOyEWPIEZh^cvS$>Ud-*?1ioyi*zja_4Y8RZf0-~p)gmO zLm7jNe>`CDGn)tXSxW+h!hj&m4xp$i4)f%QCr8)TcwZdHc~FakK-d)W#=79p3-4G& zfRMBkA9aaAknf-j!jOWYi$NH$WY5XjXvD+$1&PzK2CkN(MZ&f)Crio~cy;PP3_*!E zr`+KRM}Uxm@pFLQ;1>IgR_QlS*`mT^&Ue~bW8%E5afQI}v4!&5qH3{+vIgsB48ovl zy-gH=Ki5&_!l8oTWCfB|@J$olhidgk-l~Vi1C&5L96> z2Y1UqWap2u-yrUAnHIZd-mt62sU2x2%J;L}N>HCu>he@(rF3-A?A}-v+C>7psY(n+JPJ zTuPz(4JLDDH0sTiOsX}TsE@a&bwd1+fA^vOHt>_>=$mM1nBnN3#}V7<@nl1&i%&pI z99(i7TN>ZGn%xQ+-|ZSF?lLBjpoBMgrt$TA@J2Q8|27<#v6lZXjcm}*YVcct2>LL| zL=A8ZMcH~zpP9UIpNb%B_fz({q{mM?`u27IiTmJbS}}4AI}Ws zRZzn9h0;}p_^A>n<)uV%G;izkdlJ_E6A*9YGCdzHmYI!_fqj;lV{E=%G;zq+UEcE@ z=vqd0Z)W!G>*kNw+Ilbhp*CZGW%KCXkEF$3a|0m>P(#o6jcF^mpMc=O4zu8UdTyFZ z1;fc4wJ%7R!EDETYFCq(plL1t7d;n9$M6P&|J38?k1I#shIn~Np>y{1V18FDy_5cQ zuzv*4`!d{wNUNx6^I7Gq$DYVgFvSx|=bew3ptc+h=nyqT(EJz|?M zf7ja|#W9MPg%xFK#x6sdA<5Y2d~*j;$xU#2jN=ezcO9XOuy_Ii&kVDI!oZ=-a_-ZS z)F#0y(tc)(ut1q5$$D}P#WoH2R5b#-Fk_G*$`Nd3aeBW7D(x;hw7|cJGCPBsPLj0( zj$npYgsWtfVl}2|xKUVBkFdbtgDcMd2jjJKD4KPE2(u~F%7R&*G)sh|+4bcTq=b)j z|BTQ&!r~-C4rTTN6p9UT0fB}^mgA6K@kS|)I@}5V(s8Lf8^pYbk%n&#ObBs>|!eyjc zppcT07JV639<-l(*-8%uE9j6)N^$Iy(FpT0~8}x7bxW`2+d%wz=TFvpTxC-*{gGOxb8#k@V~2)9IPE zH$9tozAy4N`e@bqDRe)+zfT_sWnUvVn>oukT4%ES-f(E0$cq7tFFq)qht3!ZUOi_H z4_-L0MCDf?T8!W`iW#f8G=?>D6NcAVI^pdEWBP1VDXU=^-fxPD-S7$vBY?>e>yT7? zz1Huw6B5(8g=h?j^LJ}4edJ=xO!jpei?S_-zXRmi=h^AO6$#>l~Cy`6y*UPtJAleb7A@7>AO9MA`86Tv{vz4RgRe z!tqlv4FT&*p)LLK$`9#_l=iL&*}QudH6_qvMm;OMV@9)vuZ;9WpvT8{#3|S*e^lJl zu@U~Q!V5IS!oV(KSVryba^ItBH;5|3SjNNIS=W^yyV8 zO~v5LUsj-J{ITL$<=+s`6+kP{{~uP286Sm?9zmUkHznWO_)>UHP2X+cjjq}B86&iR z@&oaxO?YR>wwceGvEh}CX|cEOgy`=7y8Ru)aAxD3bGH$|C4HivWW|?)sO zp)Ab`Q@U|ZtB!Py?nUkV>i{H4Wg5c`=VK-l$^1kfh8@L1y2&G|nLx}XXe!C3gdkLS zIC5SkP?Dju5HqFe5-oN;L8K&5x)@UH9ml=d94~dbCF7zr7^yJquB(P~!O;IZ12y;U2;Kt7QZyimmj$LbNNPSd;d2k}bt_nARWEMo9+7dd!xlOOrpSHGx|H zLLJ3RExGs$wJ|Jla4}2ZF&E2L2L~#GlK{m=re?oFV^2wgK0ph+F|0%-h-Zzp1Sy!I zQ!*1ef-?t(5z}@AZAw>!zME+^0ugrvFM?AiU?pCeTen7;7CNZXfbR^&7Kbj76H~2= zag{^pKU|e9#|vwk!5g7W5M^SCo$E}cAxX7eV!1;Z4CjAXyczA*}>Z z-%YmTwthF8so58|^7@KbNM@ihKUEjaX(9#%3?7SR^klj`i)E`O%VJWMj>I>D z7ba_@urlQk%{hw~br-bjDMOdwKagrd?kE1Mv zMgN>++pWCz`44c~2I0D_0x2$OZFGzl79U(#MuI=dUW*zAFRL0GwHP8W14|I2^ig?C z7$_nUNoj?Ns_4%{mo|YCGNVv7jtiv1lR>vUBtd$i&Oj7bJ|wSH9leM$^Qw|oPDD^+ z^}$sjtoI~{k#iyDTZt}E(?`H`RY~nrLzqgjQEsG`z=UOhQ<2b)E{J-qmINC`wdgjj=q;oclCrR}l4Q{-V=Z6Pr|(i1MZ>h}xKzt}xmAdYYUxBj@l$Mk9uq zIy0#xK^csuraYO4p-$02BaLa!7({n5XO38vF^G(-u9jh15GAQH>V*^5%=-hPIgk!G z6S!At<;H$e#H4L%45qVSE~e$d{*$ToU#T+(sX*$f&B&ydsItGN2KGnWTtwvaqOI-t4CvG(T1;E9m?WReID~yhPBZRs?V?pJ37YT zMb;u<>WlsTSgp~@56h6zq2`+8wJPU8ek|fosW3r@K9ig>cycVRA0IbWU8)O z511)Rx|6t0dZLr~xAX)j@vQVDrx8RLS)Lpyl6|+LsOUtrIP_6gew>jD=08p`i8*$d z0_jT!hAg?>iWjrQt>>{NBWscDud7N$s}1c_9p0lM3GHe^Tfi5u?8CG$rNT=Ue96?~0h^sZ9zx|J$$}4`1EI(PsA;k*4@C~G z$Cq!tLjukEYJP_Jd4_Z!gf_v+8!68T3-~PfIcSCir>jawnQZv*^q6Tmo;Tlo5^TW3 z-(krr#k3PK{tC;Nd06>9m4VJLkX1TG1=C8u%B4#97h9+bWLA20G@YGr3j$p}s5DP* zg||&n2)b0GCR(Z4|JP@J&mk+kCNT_oL8HJBQ^jp-71;3Xf5ipKn2k3%r6h~y@=qdMlVbvvx|T6Kb?g56hIyPNL=1* zUx0+Hh976sYk^R{@y#M#G+_TR?ks_P-pNnu@wJJJ3@L(#j88l>%ncT&RY3V{RUJl12yxY7bII%$BPcbf@fIt8F=iT$AKgDpuldXpIDn5;g#{LBViF<&|m|P9K4I&%m@AW27 zB}+b(1ElY|n#cQBJgz;AKVHa>(;OfdV0mE|~FumT>)F{D{;` zQH}qM2CwbhA31l>_)fslI6y8l1fB5+<)l_foT+f{TXLJnAwu!WFQK@r#zHb=3}5&gPt@zh&P&`G;BpLnb%l(4sI zMur0g#lZQd0&j!3&+_b|Tp%1I2w5Je4mw<6*f79igCnWk|MO90r(sM;us`9mJL4YB zuyWgo^7FwYi;-qcST%wsZe0_DQ_Xfb;au#OXP;RAkoX2AsS zA1R3bOEb!lNdE!K9ke=#m(zgYnSFQ3+TI_@hI%ssiqtRfL}UP>Eea1=w^@>4=AI;7 z4=>tGw2<4s3{C93wvC!u9U^yp#yt9dybI?~>Q0NFwS>2Z$ z?SYUyv-)__JhRUTB^67)TF^qhgz}W|w40WKhHjtxWVcPfmhEzVHD$UzT{3W1O_)$K z%!CBoB`t@xXqN+Mj%H2dw|pPWYhB$~T^Ci`4F+LX@atiI={ACE{O&BLI*t&ofItHv|k}2n3b-LM=*j7O6KKhnU%WP8W|-Ym2l_*&}dq z=T^lt$a&Ht)f$UgLhWkq?$1Hv7H6_s%U=`1^{}=O4$Lmcj%JBkzkPe&7Xla@{}M;0 zVDf?SrOEm@^d*5S_3M?VW&ZJY?BaaS#PYk=*ZxfdLn85F%0$9Bq-g+0Eomt9ld25d zQ=dz%>KO&uwHys4*{m4-d8P*17+?lK4b>Xrs3FD}sAH0^b1>8Ul99WB?Hy^2#ITE` zjk7o;=r6ccWU>f#Qjj?zQkSdvRR<)(VTB@N<`i{~eWN&g1~^GeZpA|!k02bEl=SFj zx`-;9BTdQd59QHPlhsbsQ2z-@4GhV9p6-ICSj0kCZRyz!E6N+_0(LBp;AlZdeb~tU zdHp*gyDg~*Z)XmdIxj7PwQ(;mv4b+NHMpx1;D}^x>Uj}L*o~fgfhGgu3PPMA%skiy zZLIk&=G}|tGO-{hqcA6B8HYg?KqHGN%1f(fmE)p9!=6BnXyD+Lt_*-n{q0iQ9lC0s zf}Z$H2|Sz><~+*t;*KUq5DHGLjRv}q)#Nxa%RVdV(opLw10)wbkFa*z>u4e%kB?lw zsU4TFl!Siy@a>Q|E;zNqvdz;tc2pUSjdVYD>$Knj)Vu6koMslgOW3~qoZIXitky2eQA$}0aZ%}*=Q%D>(jk|^d)vBa zN?jl~yk=W_tpKKrlE}bxk3`=2@rR~#XS};`2q_(c+pV5s{jsYp2@g0 zC;KCTXNeZ?zCp@WVVe@5t0)KJV}iH=_ER$&$v;_Or6vQNITrtqGcIV*h1d{6)ZPulXp23|8P@ z1gMUocrkG&ojG!Sz$6sqDau1FClZ&k7sW`*Ny=pwD>?q#(B$DVupc;&qK*Al>aX^Kql06si+5chK^ zw=DI1LoP2=@{53p2M#E^Inm5{aUYRHw4EH*-m=_Dp#SWE!4q)7lit$p5z$%qm zdvfJ9_7j=UV&ZF+j7gChCAwQDH8CWSDWGYY?Ta={^fgGIr(m=-Pt3<}1-zTkUk(nE zA)brdY9FoV^D!wJ21>LoYIbQK2_OvP{?=;@lmM1Nz_7H_=V+$MXzy_YC4gsh^c7-s z$}FKVe{{~=X>gKezcw-wmbEms&NP`6ungX;iolZG{G2J#wg5yjLxCPnnzPh$9fiWG zyi0`9GSfdOWQZ=27J$Ig?m%H^VrEd`n+(2YV7nb|pvWfp51|tN98cBfZt@vDkS`XA z_K&I0Kggu^X-v{Rjs8m=ZqOffVkrMxogD&D9S=-z!21Q}f56O+UR@L2%Krv(z`})o z*oaZ+{5L5!hWmT}9Ky1>k<^`nWz6kU|S;>tKcyz5DD?N(R(ovGUHb#RKVY}LzcxhNA zyVi^0Wo+eevCoyETeH;>{c*_n$m^_|T*_dJG{l8UjfZnW61t&c-oyQ2*h|{+1n~Hd z*?2f}c|E)r2ysXI0y3j^UqY{tSfHs+OzlK5(gP~;R6CtI06hX*7&@p20d9tIyW zhSwWO4hkaodMTEQAoG|qRsqshh5eU!)Rye=_Sd3<&}qhnl9mEj3E9WCgdv;B9s|nX zX&!+LE9)bxLkWZeHtWjkLW_&5csf#usoRxY3Ga8pNKI{0(mQdmd{`l-jgA%lNthjA zHVSk7@r8j(qPX14}lBzi}4($VF? zK?o6-nJ@W4oY-lsRT^rxmEXlflV7R_sm9l$>6_R-ZY5+d)r0rA@@C5j8wtLV4{`v8 zjwq5KCf%IjV3~upeSP2}>ypk_?lIV6lddkzpt!mB?}ufw^DTQj5R)hbL(QU(Y_i;Y z&-sQ_+kX+Y3h`zkdfGOU^vtIqXgKf#awH4$9V>4=K|7fDa3(K@f)AbHaR4~ePI{kE zTJEFpT0`7jE$EB5dv^h1`6&lB9sW=1WQxMSE6rZCfxCVMTc!Ig5QwFRw zsa$35+X#CqCdsXf&&M8Zh}l;?E7cgu$6(V?F`9*}(q*FD&HvamF&+0#Wtk)9?{?p6CVx}-T0QQM;y%5l@I%4A)NpbeitE~92Mu!C zW0#!Roc@dmgnhmA)}(P3Q;-_G*lKhV-oOTBHs=A5&FS+iwr)75$@{X9EbZs}?N~=< zr2p~34zNz){{YVXdU{;M7_A%}Ex#{kR{9J~EwRS5+`Phz!^V;ib_fy5-3AmnlT{d4W7fUZ(GV@h-nG;4#K{h^Pc?($uX^2xNTD*$ zPA$Z@Z51(|L7ysvDff(@InKeD`)A&N5SyhuO7nyX5H;Jks5tj9tWKPz;A-~*uzJrp zIjln#xr`b7l&oT>H}66nUjn2Maytgl-JKB;p-V}zY(Gvn?e8J~>DVvc0#{RDuhCy{ zARuV}cFY3UT35~3#O|+#quXhN4&PV^#=d`vqDjw@wM%ZrK&2ZCYnevE_W?mCXu#S` zycX_U{PmUJE}rGOL8klBKEeB%eue@x2nN?pOd6b&_xIe3$?wN^LY?-{3{6zxbaWlx z2k@L2hQL`%e2@5vUwfy+Olf0ZP^5y;cQa9sx7wI>mMmyGG}1bAtEu39eQMmd-1ISH zV27)yOon1{;3gZm(p`?&7=)L*mNzFPsUk}ZSl{paai%B3&ksJE!bb8ROns#A zlX&#zqO&5k;K-__$gxsJF|7)|lg&1gNv~!&i;9cMssLTD8T?8&-@fkwc|B9o8V^pqkHCRMT!|(~FMq@ZOW~Vi3sZ2`ca)W^tr`3s%1O^z919-MbgD zzOGV_TcBh3vMfr|8!3nHlVp3P5$NhLf&pgK=Z}j|p ze{*RV`SR|ee4N?vw=y=@^HP$vCpR5-7c=@|{-_!9aKcWavAgLIqVPP(nt3ejZwQo6 z?X2BAMO4=6BA2DH5sMSK)K(1)R=Ex`^GH?`{czt*K3rLUw|4X!&h+OCI>;kLzRlfJ zp~*znOyRS5@h5Cs-=_(+8SJSUIUNnAJqV_$j@L9CI6{Ik&o+KP{u24s{VlzZ>ayHh zp-!^u%iaHIwVEPA)-eX`^4v`a0)qMPQ_{`K+}@n|uOsVU9nN$V95=ae`hIAlbR8|f zZn{TxNnEX8ua+UAwTs2Ki0j(XD3hF1^dVk54+I!*Hw?pFwGB7a3d3J5zGpcQwjrGv z;?QnH(I~r|j4FJigdQh*5%BFdRJmQb3?~Bp72z!Z{;YGX;)O`ETZZ&Je%B?0ap)$?FA#h=Q6CJX{bsrxk;i0cPYB5~iI4Ff?d>}Kn5Zn89e z7P2OfPwI>6&zbTbIh^(I68p(_LT?t~@F6e=7gFkP8oY1KvaC`vWkgf`}1w367(+^Pkz;lGBOEZqa2V) zZqu7=v@z@ANJiD?c?MZ^M~In?a#}X&yIP%tsoQ01H1mOSM7%VdI2ah zBbW90?{^0qmyUwJAHu06IuN14Wwt&1{gGI z%#+JZ*wbu@N_dpdtP+feB9yU`VLTFyc#-~O%C@1~PHJ@)F|$vsEEmfd@Ci-WOjx8a zOTKZ}KZ6|gHr`bT5Qzcn1E7B6II&JVyiwpfYi0Fz>)M^sl9yVPgh_SI4f^)@G z?hTWlgee;Fs3NuS&c67(E~L@_VAd_SX_xvAXiHq%6?`Ay+YW0nHf}2awJ9pxRqame zdKB{0Zz(Zakp%2GNMMqq)LI?gOb8|NnDni~8MaL$#UurK zJNb-X=nN|!yUyM*($bKyIUj#W@eyO_E=R7eOr3-l7Cn4XJxELG>7-j;UZpOTyuP=t zRF1?^l#Z7@%5@Z) z+BGjSuAScCSL)GLT)|SAKL4YosJ4gZ+fa~W#dg#xH=B`q z-xF9Tv1To5QsZu$-QePa%@ySMk3@%G?yg1U;I(!-X|~Tfb?A#wG0_SW+Yvl^sclSm zh-Fn=7gLngt?Je*I?Fn#Kh&eoCQAKy>P&VCj!C5HK+rUfR zFO>QCGN!?`-9HA*0xRd()R}Kjz|#D_J65>vi%NrGe}x0k_wR_iZNx+zEBXu;+%Gsy zNme)MUlV>~DsRf!ym_?et|pw2;-of((KP_zKveOxFiwTYnRmnM+5O1uS;|mL(Ew@6 zpalmJeZLhF`&Bu{n@)W&XD4^0E`PPhYNW+wyw4WWHafHO+hI+1#j^kge%&rvK6K`r zs5T8thGoPvDsF|zj+#SL0KX$(qpNz~6^x6sW^Hx9<9B~A+Uo9crIKo)UsCv<_kuc| zGm5SdqrKw6OukZyw|u)gKBUA=KhX&|jb4G^kry0$HVJ)kA74H4S=1Rr_xR9^Q^Y^ysNn3`@*>Fn(3x-+HRT0m2?(JyA;eu)KHn^ zab`3W2t>IOCd^@NhMkJ(Eel}zX__ZXl%}^KzH~_Gx7Jsqw{Q8A2Bn9EMh*PG_cIw_ zUE+D(>-B#^|1%fM3*cKT2Y%o|0kcICO= zEeRn0@o*yifD(EcDgvEThhn8_DW&b+;R#8q2#!rRIf-$o$BMNKp%DUR=~Rh$RvQ8P zKH-GZ5`)%7G`vd}2-6zu~Vzh@*u1%2Wr%V|-o9n72(CTHgVeZRQfP zvhhE32~Hia^aAxz19cJoL)YKkVgIAEs>{sA9G7i}@b?c_dw=BW4iT#Og^IGO)POUmM`x}J%XNQ;RFXF5 z7J5mR3(%6+o8nJ{Hl1cxcah>EWVoFy<&L$Jj3^B186;`bA-q~lrg`p7HztRzraa+K8I2rKgD1G_(sL*u8Vc(2 zmE9Ub?`!X1{~XZPZh3`$pkNcAaGZY#|07w+#nH+2uTjlSXmki>!I1deH*|k6$yxwm zg%KeQLTkGst54_|Kxs$5DIQz(;iJIEX*&M7&h2J}pFrq1#KEX$o{oBfiULNhn!hkC zr>CEjgM5Ooj!)1UlD9LMa-59E&12VjymkqS35nvK=s0us?rf{aa;A-3+JV~}>Uh`y ze==8ScED{n8jEh52`$Cc8HcJyzemn*0+#$c7I0Uo%bPm4bC$WX=%wr8Jln?2nOuej zhy8)RcD|x=D`USiDoG3A_1ZUdr|u}Sc4su=H&Rd3CB>uBPk|j)AC9K-Dd?XMX=FeD z$0{vhK0MMESd)naW_SNtb2zx$o0z)*t1^GGyIHMmhXWp*-raKHL`l8Y$Yc%(j+P=} z4gFY2^413sDx8Lk{0UZ;tsA*((^>kOT%n36c6l_9=~#6CUEU90z#HVxx7*;P9i&JM zSFW32-SS;Ah7-A&)x(b;>1R||KU82h(9pilclZli|K9(IpZkTnxd@3yS6@z}#rKW+ zZvC5dW{e$wEO*4vW7>h%ZA$%-{Y>SoCOrYU&)n#u2jQNXX5=2Ltm-Ixs2#LwbwTkP z8yDQ+{i1u0(zdCFb5DH)bwuS}6g*sM7p83}O8w@Mq%)P$0VI_c5r?MI!qwQSMuYO8 zv+7DAE4liBm6S~8%%#hNXmp`?gk01NDLauPtqB|b99Bd{5U(6J5AVfliUK4zrOb7h zB3HL!!0y+_%m5!w0$65R|IA>TN&0$Ah_8@wR#9-yGO&(o4D`HTem>8Z@M3=625bsJ z?ovr{ZN*(j_G;)=p}!$%?k}9LE_#d#I2sipp~Oll+Kxf$p{OUS^pxjIUmCPhcSx58 zG`@9}_Hut#oNhceqh%PC!`u{MYb&~9&(LX$n`cb?3IC1s-bGp|vlyF-Cj09Wg@QD0 zj`u*O;ur4tgj^&e&Xnj%Dmt@FgnNb+QF0vxCgm7f3d}+HSLIQ`z)hQvdf*ORE6RuS zqwEPdm0t{FY*Mwxm6sv(qatTKe7k}cCS{cK;u2ch_9VKOAC6uknR$1c8}}QYMW@W8 zP*jbUv7>pv06cDbzr~`jf3=!iI{h%|rfNKm9gQOj#7F3rkuss4yBDrX?cY;Nuj`ZX zTzedXwe6kXzv;b|HxQ5Qy%pVs9@N*=A3F;5kzj^$$i?LQ){EXZ7>UB+0fsPOcA=ot zQZSl^LNQ18{_x%Z<2O*?-1^l5jJ-0y5mPM+nC*r- zf2KOzI=P<7RxH}^{TA!|U2)zN>(lNm-+ik-_b-?}C@RC=lUiq}6J?IeGvO@XPrJC? zcdhD{Z!mR8@^xXc`nkNx17Bu-tz#N`YWnUHe&IWKKCEKHRkSvnVu-7|=uAYy%~XqV!-~*5ArfxJnr7ox^03 z70|P&j6W}>0df;xL7u_|e1A7$sJZ1hD=h@^sYnP*L8HK9;Ea*k+;IwE7=qtzZI{3* zg(Mn&z1rS*@5_1EcAew(Idv!+FESjSzen?dWkCQp_Y`?->6>y+7rXNU>nmx z3!DW(s35&2$UE^9+d*zYKWn9cx>?Q}%rk^1UVazPBQ*({m`z!$?#a04OJ!E)-~`aS zWJM2NyLu(Gljduro7F2G*dR?!&|n4yoqf)>VkR(|xI~7LIo}!i5?#!S5?Rj;_1&$q z&>PeQsdk$>jn}ki__|4*JU_zMU#m^&m)Vh!1fETFf+D0*xYuZsj{4lr=0&x3kN|q; zIP<2h$@8j_zIiHN`n4Slqth72uk9pEAE?8`{Cn7EI8I_D0nx_TXZRN!!x9FpeERgP zD*HR0T0z@Vyl`~Qt|`Ka=EQn*v9ENTmUXHyDSRtGw{{w?B8~^1putlyZRAZ*C`u(q znSR+!Eq9uw#V{-9%BA_dQ$A<(F%l>}lbuMmMWI^S%e&4~ev@6{ISN9li5)$X^41$| zX=hKE3m%Puhky|w6x>D$nKlBWP6>i!MIiI;*$W5Jfp~|F41M)4D9eE+$LTJVh61;UT1v)TQLh-L>bB3GtZ!HMvWr z{~vy-%?&8s{O?oxkGg&A^Y{Ka+0tZxaQ>0i;#~&Y8zu!R->XyQ*VJr&BDL$|w1chZ z?XI*=DhXfvf_L3{zlsd?maS8#Yb~seI+SIX_3!4LhVx$@i}wWUt%>y!dKi^M zMCiBa?rjb4p6+l;zbyK?>%fxPtF*5?eRWE+|M~LSP5Yc`Zmqjj`c67TL1pEn*K^jr zvDy{>@{QV2^+w=5#YVOnYZrdVx)}d{vTtSD=bT`{x>YQbZC}hYJo|);#iz^LsIy6> z!?!7&?ZW#7RW9)*TKCP>K06#z(`T9Sn|od)yYRNBf(_SI8`jL^jOLrysT{}hV%F2X z4&RN&^Aqk;7hUYGhYq{#0$IF(_t9y3y`Mmmt#iy@LkE=_)y?XuLpVw|%->cl7{d`@& z-M!Bz@74ac|NG|j;rOpImQ`!MSKNP@f3D{D-S2n-XZK3cy&_SfHj`~Qnd4G-{6 zvCD|P!P2JMqFfave%LIyapH%^MWu(k#9qd(ZtFiEJ$X{%%?*{+-zRYXJXfsz>WK5o znZoJce69SwgSB>VJ#_1Ta4K`F>MJY0moj-4%IPgX3!ZxMm2BW&*2E^2v7iwv@!z=P z+adb^Z$>5&X3+3B2Lt;o^N6)UOD9eRwop$2$J{{O4j5hb(;i)8M;mu=CQ!*mphiIyjn9E1 z@VX~CzX&`MjjsL6?c3t7f!cFe7#IXlwATYg;Mx-l3b48Q=gaKpw}I*=D4<(D0~iqC znFF8^rMW=AW7D43AT4ABwEQ&C2pJU17XiZntR3QWWJ9oqLhouZ>u!AphPY5x27VNi z_;{fv6_-@zq=Kg_(Zc}!KuMT>VA$KBXhu6;65Sm1c~XQq=0z}bkS0;kwWCkGAhfHN zLA9ez!=RghJ`sU1A-o)F0?M=mx_ { - private final Service - controlScatterGatherService; - - private final Map> - experimentScatterGatherServices; - - private static final Logger LOG = - LoggerFactory.getLogger(ScatterGatherWithExperimentRedirectsService.class); - - public ScatterGatherWithExperimentRedirectsService( - Service controlScatterGatherService, - Map> - experimentScatterGatherServices - ) { - this.controlScatterGatherService = controlScatterGatherService; - this.experimentScatterGatherServices = experimentScatterGatherServices; - } - - @Override - public Future apply(EarlybirdRequestContext request) { - if (request.getRequest().isSetExperimentClusterToUse()) { - ExperimentCluster cluster = request.getRequest().getExperimentClusterToUse(); - - if (!experimentScatterGatherServices.containsKey(cluster)) { - String error = String.format( - "Received invalid experiment cluster: %s", cluster.name()); - - LOG.error("{} Request: {}", error, request.getRequest()); - - return Future.value(new EarlybirdResponse() - .setResponseCode(EarlybirdResponseCode.CLIENT_ERROR) - .setDebugString(error)); - } - - return experimentScatterGatherServices.get(cluster).apply(request); - } - - return controlScatterGatherService.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/SearchPayloadSizeLocalContextFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/SearchPayloadSizeLocalContextFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..921ea2fb5a31dfa520b8ff6b73b0d14a3be2fac8 GIT binary patch literal 37398 zcmagFWmsIvwm*!!dvJGmcL)S`m!Lr#2@Z`1cMI;W!QEX$aCZp=cmH>0=A1Kg?!E8( zW%E!~>nCgNuByGeT3HSf3JVMj3=Rx7jYqpuwJWjs|Jg|0 z!@=CyfZ5&7wjoJDX+;$6%h?NdGK(;&mjo(y*|r0%17jS%WOe!tug)UNi9E!^-8g@k z#40BvY>YWeqO07_*cO$i)gye~VL55a7Ib^YS{#qXMsRhrTR2-S?g3J!l>;Ozn zbB6c3DQ{Ar%tb_xe|)uUmW z9fnVPqsp!?4-$S-Sucys)S8(#=?Ja1n4xpo{BQr>ZNn>x1sq_xI>$|(7D~zEOepn1Oyqld-up8I# z8%F)Yr6KZ7wM{H0d4z+H=gsj*g52jOCrEFJPg2pRUD8O1)?c*W>;3}eY5ybiGTuFs zf7PALb4Ssh%Su3=sXSvco!(0lQ2}~a+{Y)cN5tatcap+A&kMzCdm^KEK=F{^D78#0c1GP+a<^pmTdbBs_F6!HiR^gK2 z+x^Mh)whFmY||ocC{RSrsqeTgG)aXS)-eb4=;}_V#j3<5jp*%UP)dSI6VR^_KhtWt z_%O`?U;xtcja=cyl`XrrZsGSLjh|(V{X~yq9njTM70uXic?(cv9Wk#ZWDlmI%VJwH za9SVRlt1Z}UoamAN+_urx>H`mOtfS4^IFym7Ed?tyx(V{q?pk1oV0LR4^;7Wm?Hkg z`Yq*5w;^WH2X16qkNfPO2@3s!sAdJa&8I;LLI)+t3}CA41aNR>F$Fl8|GvpH


H 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 z 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 { - private static final SearchCounter CLIENT_ID_CONTEXT_KEY_NOT_SET_COUNTER = SearchCounter.export( - "search_payload_size_local_context_filter_client_id_context_key_not_set"); - - @Override - public Future apply(EarlybirdRequest request, - Service service) { - // In production, the SearchPayloadSizeFilter.CLIENT_ID_CONTEXT_KEY should always be set - // (by ThriftServer). However, it's not set in tests, because tests do not start a ThriftServer. - Option> clientIdOption = - Contexts.local().get(SearchPayloadSizeFilter.CLIENT_ID_CONTEXT_KEY); - if (clientIdOption.isDefined()) { - AtomicReference clientIdReference = clientIdOption.get(); - Preconditions.checkArgument(clientIdReference.get() == null); - clientIdReference.set(request.getClientId()); - } else { - CLIENT_ID_CONTEXT_KEY_NOT_SET_COUNTER.increment(); - } - - return service.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/SensitiveResultsTrackingFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/SensitiveResultsTrackingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..3f2694b690fe01d41eb030759605c9ef0d4f1fb5 GIT binary patch literal 38199 zcmagEWmp_*vo4IgdvJGmcL?t8L4ywN3?3l3ySuvucemhf0TKxAekNaJU=db+E79u;{=C@e5AFgP&S3?7|owc_|>a4@iO7%(tQP*h(6;NWWE;A*Vlc76!?1D4d$mICOYz;T%tXCxxSi+VLpOKEvmO zaTWL1Nq-OWM~MKboYxg*YOQSBOoVTNylD|87n;&vOqvn~UFzMZ7#f|eG@TmO`-)LK zhYuq7!g#I`M*oIKo&HseV(SCOj$U9lrV))#tryHZ; zXMG$jgYSJWfs%F78$?IbNM@J>lfm8@TkRWiKX89fR~$xenF3=9o&IYwQ4xAi{HJH1C&bdq50b)tFUzHy2O{J5b}lT;f40>LQ*w}OXaVQKQlnI*4lSCJMXN@VKNX9Fd($S* zN*sVPC2QSXs*;8}IDN!N=lf=sOPPfPD-0!e!P=&}i$VFzeLCB8mrWhU8*nM`oq=SY z8hatSb{Ubk6eyw=)c4$$TBO1ZTbM)obd6_oVm0ED#`N|wC}kn#iRd?ouC&^2eoXTK z7=W}w3)k1u>h>RY9$z0sT3lsJ0z{AF9MRR&mCV_2d5chFoiJ}CWRGTID&pF+aK1ft zsC?G1yk!0vETOD!57byG-qPjKcG@k<%2pv=)bAXwOGr-Y>#SGwV@#iGZPMA;{U`3O< z_mx^u)QY%9gOie_2S5HQCxaEZ(tgLurD!*i!#%aVUu3VB$KX!9EiiKJD7?wj+zM$H znh;777JnXS{uNOd`)%D6XX80Xik`1JIi&x*_i6r$+KS(7yf;!69|@r@2U0eZ%}`+} zoS$N_fs1qD%QRVbn_5Z!PjPj0#nmrbq6xI$D3D1Hu;_jT1`gJq$Y z<%37041Q9WHiDX8se})9-nD~r$FI>--uty0G!iN}hp1}0nn#-!`_9)>7iXvK8Fxs-N~G2>B$Sj7`E#dbRiZ)p za2xvWTY$mh`jLf&y$vQ8ssIsJ^EQq;%-5C)UYgWTz^u)Dlo1aht1$TNr2CsoYqrcJ zS*%jAEGXG;GT#}yrwV>H`oDjC`>;aD@W68kg?DU)VnjFZA@TOoe?{=$eYsg*$2|e{ z#SRJ#4DCPr^2yQhueNARIIOdxbv`pd8M=P8h80uAO9)yLo0HhYuS>{kT^J{qi-&4w z+XMPNhGX-6VY!VEXcTyE8h>6EvxIF@`mBjP@mMgb;Ew8aDD2C+y$xvx*S_; z2;I=hcxJqM5rzrgHCO32sR&y`+fGeTS+_ivANQ<9NUq#-`NazIUZRa(=ohD+lrk`l0) zbX`n-hO$BQalLIY|An4sWv`DbI8PyZLd@uRHIMW#i0}i~tY}9RID0GYSeboByAFo? zwdtghRK1~GJNzp8G_FTSY$T753-VQhHfroUMY7E&K;I2|u1?^FQ(W6!W4S;aiu@f4 z)RTbt$_tJp{h9=<9#LFkOFE{1{W#$IHxDmTV)YfI4*1urAJ2!`b(l$_)`Y9y&?)_< z=Y*x|C+aHY_L!^4gldLqC{u`@O-TqC%;?UvkB%gk^$eBtqp@?j@X_6=c0+;f;0FL2 z=pg1gb&r|@>KV^I^tfo*o%sma1q z+S`-@VOhAEK6c9Sse|jXBE`xdyE-#jURa1P;4>eu3EmfPf0O+8iE*m-O+*3?3=CH4 z?;orOz}cJy^s9BV2i=_hoEfJEh8}C&c-`Bzv%Yh2K)frqwYda`LRlq`1}=tQs|PW4 zq1BQpg0f#`ncw|t8P|EiG4$$W*PH|GSAn-O-doB9MqS-ec=+h$WjmYIM6J!CaQ7j~ zUbCA|j_x5OBGlo<>e7|V}CUvi{{Y?CmeyyS@cV5SJ0q$GG%6c0$(Al> z`A$|Ly2~HnNPVt%G#hzSfxm+Bd~kV5;aJB$blq7xM`do|ODl}R3cX*``Y z^j~)J8l;TyMU@|#1M6D&^y4uS{4on$mB9#@wVM+V>x-ax09Dl8Kz53NTT30fg_)7dEtLJqC=_xMTZKvj zOkYtcxO;H%F>evmrvnH#@2{4eZ>o951GX$hlv$Y-PR=BR8MULrrfgGT(oBpPtY#EgwEco*N)D16Mqod zU=VXyuAPN?;kB#~PYx>(qxmq>wGlEAH>_i2c;X{z$D^*$V-$(4omE#Up~gZCV|%rvKz_o6 zrpP5OPeKrkfSE-J-iDth2-dpU5=9n2c~}{asf^}; z%*V*60yR_-rKEVM(}Lh9*^o}Yn-Gh)r;S+ zac|TvQQf1`pV+T50hzxPT8|5;zZDPetDW^F1@TmTn-wORno0AEI?!(5Rvo>0;l;B*2th)BSCdu{ zjT3%pK!vm7P`yTpFUM8p|2dzm?#3wc?h^Ly5;>9QWN`)LbX>=BXSkcZ;*HHu49pvxNpcKHjGtnROS@EV++Vk^|C8RiH8 zO+Fg|fw{*rnmq31rtTE@)|9n#RA$rp>@YRE9E<4b>&6$}$F8SMWl@?&AyOc2@gDA=}7)EcO*XkHK@m>)5X2$dR`i z-EKK>$0eaUx|i;^57DM^W0RY!j)&6?0y>PGR`ZPBcmQt6A{LPx&UwexlxlZ{my`c| zkH%f!le3JJpdbCNUU}Jj_eqo9$F92>pN~pguJnp#m76x_w^zf$8%Zr^r>!1qzm$LN z=e?s($8=0jpPd0G3_kR~DYKaLShGApW&)eS^Zopfyy&A~@^gqGG?)s0u~7_sUyU=# z1H-k0+?g#OS( ztP+RF55EhjJLsiri+w|-*Ang|4z~3-%^4;30{8E^{c>sS=cn$}m$n4(7@FjQc%vXt zvF1ZnEHDJEP*YEO8)Y=bY^zD(`Rn?)yH*6n73WUtlRsA-$t5YiAk?>04K^T9Hs?Et zwqw^s7yXo0Px#WnqX(fYIhT<3DJ(a~)w_fIa;m27s;kO&M`Sa@rEf>6Q7fn)9jbn1 z(ZrB~i^^p0{Al*}!JN?l71jvBvT2b}qU0d(MbRJ{!x&2IJ_~Yy-cNER?KBTZ;9)PL66 z#nsEs!sV~o&d@M%PrAXcr>CIM_~nOvTnO06v;$azJK-mvuAKUF4n>an-?Ov0pJPvr z{i(=ANi@|owd5)i8U*@ta8&3Hw6ha6EM8x8{X6Z>fyN{;nXhM?JOe$*-R=74TF<3Z zXV)D7;47Z5z~kYWr`}mk%KEFr>shAA@(AGVG4}oOdHFo1RHXG}-|*pa^Rgp#vE%t@ z{?~0sSlIrt*K32|oBjK@txy)=8i`R#>BY>zQCRB1?!@{@Yvt?2$yJlrh8<6-2uW36 zZ$yj0m82@8HOW?6p*iSpR?-#SH|7&(2~ z^y8g<6%n5jI@R6+J#X6k@Jss>1BEI5sr`rE5$`(YFV9XqCiZO_AMxanVLewv%(`+< zV=|vFl5ej(Gl+O5ZX$usOx~}2-W1n~mHTvVUfo`68zPe8vHqbfZ`~W+9j#Rp$wO@Z z_8l93-3I#S-LJP2PnK$_!~;&-n=Gi?z%(fmUzwa!viHH-#~#zZ+KEN#l*SiVy)Ynp z1{J<*2YlDX7Jf&n2+%81qr+F=6qBqrBJQRR6}mX=41<3rtPwS=wnpT&&e%^^#E&bC$!SeDdyRbPg1%$#qzM z#~kcViE3NxIaNAZj|J>K{CKa|>ygeO=>DcJ&HYIC)XVLC&qhV__OO2F&U1vwSAIG4 z-VshneP=4`WyDg5*F&I%kg*5XkhU*}{HYRkw+xj{jig_b#I#CyP|`1)&NqA>=;q#i zGjeJ@M1x?Y@fZ;_uK_IBp-9f9ZIe8pK_FHEh58soROrW&{p)PNC5w|Gw4Jb6JNkX#(6fR#>zY;DO5jf@E1avo$r+25L6k zmf>q%g%qzSdOWx!@uwp8?%vmq-b)IC$c=X$3*W%!+_ETub}UP_b!S}b*U)7hes|pG z)3=LX_6%9X!{5<;vB~b>zKi)18Pm!}6;tpg3ZGk6YL0G5zG#re%E_q8lwqhPaa4vd z9$+z$$ulj>!6hht>#6eJCS-Zg8t)vzTB_<~%Pa&}wY$u1eJ#gN)BDQ!_PlA`B~Wud zShV`Jj*Vkmc16d2FA=SX8&VEVEfawXs_#hBiR?JBFodyLS4})_&6SP}&T0#**BI`) zBmgVKOI;LUt&@%v(SEBcyHEyBje-Fq$T6WcfHdoep+IarT2W4CW#|qS09==MOkWgD z=?VueB(W2Elu7&wCoU+i6S^qx&(6=FojCv83AIZJ02lkm@ioo(RLoE;UWlXpvRe@U z#6IOr0Huh>6^ZC}T-OypkN9<)_dD1=q^NQ!S{=@KmZtbpT?XN{) z<)eecv4Y))=xq_h)>}!E7>7OPRncUFm~*ap{P$-^Bnc+3851pCyT*OX$$l}a{VTd)MZ|1 z9lE7NoKIu~S2i`Te#&B4wK6;~kf6w#fTtd4A91PaWN1gyc1AZCJN%Xq{Y$PTzsB5c zAQ>xraF;(K_!nhNK;ni>W{a@d$uURfwg37>9{O^ybQ&?|@fTRWCr_1OdBzcx>1}Da zoqVT&9UkUofPq4fQ^zh3h2KjF$kp4`@Q`=MtCJV-{w?`^>GWy-*UPaZ>!;4QHj(T*mY10kXzw>L)YVL{ zHeo2^?T*&ekz2AywfJW)lZ}wVvNIPK6e-0C>WSRDR1}#gf^VG~XE|!^^1*=Fn#JcA z%$^=!)qqPby%$Z%$0pK8WWY0a9S*~70!)h>vK`rnmE(*+g31*6jCp3R(r9y~4v)hS z@!!|SIh{h&+H7@hf@&Y?h*7{?W=>vy#q~j7>KB&GjHwm(kQ4fP>T{ufPDydU6Brp7QW|~YhhE^kv*IKy%TPKKkzmC~;tcQd04&s!v-s@L! zdOVel7AVBZd`~nTQ+CS&xCmjE&mB3qMy|8 zSj8~^iO4Dq;~YT>$Avr;mzRW7`RZwT1#V_NalWsnZgil3_K5?>V4SK89{Dn1!;E2p zA|uJ}G7-Hml&;tdT@s%Q#GyPkKvp^P&dXxp+WDT3zvNh0S3g!DT6#ujvRW4L4nKFZ zWy6G@HWVpZ(1$H?aKDC9iE@h%Q;p^>Xqf}*Jg01A>K?u{ZUtfDzJ>emn65 zoPW-$W8Nb8GBBY{u;CHKVjOm{^=TEdbdLygnEA(~fSr|wQ>hYf2leCS%L2ABi)5GB z7D^^Zxe`9AK@Fwk4Z>_4&Q7x9eHFuxR~jI8@sh{2D&29;T{ZXO7)s~$9J5z(cCA)1 zNqp_tUi`S}Lc$tvHf`Mxfe6sO!-)Cov3o0xnT_(|x*GKk!xWs9#U1IPo15;;K56xl zQ(IrUq>?*RagK4jP|o}M=%KhQLyTNCuXw{=8KPE|zimp<>4w^RyG)Bqhe<~X&#J7R zvw_VRTLRSxQ7h$}G>L^+R?2i_^bJrD)78a`11M;Z8 z8b&ZGMFzwto#mLKN7#<;yqC{vwm&~mV&F^5%B#7zlle?DO0SYJ)l@y1EH{_-ifyX* zZmrlV;@z&66W#xezURw%uRyUE!n5qNEOsd1Pq!p&=ocso>QQyG#9;?4Z$KrS*H>kH z{4%Q9F=mp$cwLrpEfz(8Ze}2a?JdDTV^GcnmeD?6?aw)q>i|$$OhlfWXPbOoN6Ta5 zY{ZL#LHWp$dYj%pS$(GE>xV7i%)p?4T~t;P+qDX-TCS?>bXPK<(duNuwKi&FUJl)P zaJ3yNKXBEF@O^4hmw(jZV=5`xZ4(O}H%WSlQ-ml_WTsjH!(2L)RJLU8;0QLWW`cun zpVyP>!96`56Y>v!vq{jC&h74tq3gznLI`^lwa?crQ=Gpt!Jn#Vr!D-SzB@tQ>`pN^ z4L)_Pjra%qz2xTs6W5clAnAlHX!+_x>anQY3NSdcHsoHSFqOh4GMM{nd022c*0o7$ z_KONREa`iG_e`gDl%i(#)I5DK+UEd%EbT6=ryBJrITHKO3Lnw9Hs3F| z7W2%e!-)9mg8Jop-jV>b>*u}AEopaJHdUeR(OM*tfrV`O(d*lV_W2@YsO9!_g0m8x zWC!8wu<(VXOBKvdHcM(f%!f6kgl|&g0U;|*nd{J<;P&pgaZ+W`jPj#Xc%S!Hjdq^- zJ}2aIJV$M+U>AjN>FDp^{fzFyRC2lDcC%Y{_uR&IgX@C#rGt^(NglxPo_C7Dy?|-r zGZMwg=V@Tf=P~PzAPKqn!7WhICwpgOJV#Iwgf&NCTPh6MRnPO=HfC%1Y@q@7H0G_<5ONa)zu6PUhu5?HxgYA211xHh>nme4XPxLbA zUDz`#mIXX_f$JHCt*Sc;BOLA!-;#gu2W(M8E~o2u!a~zrjDLdf`o%kf=n1(-$U+)9 zOP~wFX4@G=?2Hik6og6R(p>u!SySxmPkYKQThi18JU+ZmB`zSGz$27A9xGveMuV;3 zAWYALx{xi`tbI_80B#!1jN$-uU2(u+0Omw4^eVK$5MSf+Ph@ov%oMf+peEwyRO{wY zfVxk|K`}~RtBIf+ky44A0Ih3duGsIBdU;YV?zyf{-*h5KJ+01axo zeT9E-_bZI$QKh@mWwkkTD*}>J6?ZKIDoS71_oo&O5nN=_?(wqbqVhu-WOt<+bmzGt z#a6!N&|UIHjw7qX%~#wB&30HLj2@L^%j4GDPgksJLHJ3xVqJ)XE7PVPq6ryP7&Xba zNHk<493R|f$QBxT7Ji^UHk^d5Ik~~UmAi|a?N~(`Jt+@W#8m}=(s7Xdq`Uq~FZ)OO z!oSjg{z(re7VoO?Va&1}ayhNqWO=!WUBDjplYSFGTNx0Am!81RAW z>0mYjP9tY9%7==Qf!`f526mUsVM5208^F}{3V&T5F=L@s>LIrfiipRKguN+srFHB!tjS9UQ1NczB6oi9=$IDbYHg-8GT`FwS_6u4C2MU4Aqs&W z0wI>+L-7K0?pI>!k36k#W%8btnnK6FC6%N^`F#TW$pl1x>PZ%olR_IO_KDI&eFjkl zMUi;6jGX19cU4%U$Nh^3it?X4O8c_7;Jc-lD(H14F2};1K-+zf|+_3U} zYnKu=?ANb8Rz2!t)PT}pggC}S#X`}5TDW+7X8T}`NZWm0IGagP3N^Sea~o47@j}ZkNNc~o3q*JdU-n5*g;xb#W#IXI#JouN z!df4Sa$R;!sf5(*v5|B=;*{I*siH(m^eS4bJZD%~+e}&XiciS5CWbtZK?SOl5U3y} z8bVG=WXSX{a|lGuic-BXxI&ZB4i4xlsTW$6-f*Eb*x>7Q|IcdDjzZ;}dj_A3{tAl9 zZ2!MBkM(PSNKGy`fQ2L{Re6^PCl*Gy$2YaJ#*z8L;+!k_-GORb>?X6-{qFOH3ql&~ z&f2#oB$aYQJ%pkwW+tc>po$uj=F1OyLhJ5C+E>#&(zmh7H>dWetH(Nj#7_%;U5He) z#01eFjhrajQHHgHA85jAr|+o{i!$h*xSHT%H}s9~wQ9P^Qu^{FG&RLSAU)Z_f$88` z-AhPR09tFV%gO$vIuzwEi3#Rj;#_>~jB2DQL8EHJ*Q+LdLRA>HdjT?m3Pfmp0b`Kl zFoRk@pwW$gAsFY6+R?C|1c9}i1vbJ;->0|76%y?H95lffc{b!hDO`=X*K0`I>pKy| zffNB|>nM;BFb7@wPFgqF<|~q+(d8vhgE^Ca%mp9pjd4uHkz_1kVEjVfm_1rm8<)WtF0 z9I(yiY(s_To{TU+Fyi_&aqcXb#MLbId8gSDv~aB1z(g>`n$&(gr1u*bzH&bK_Kp z>@b_!c?G#VWa{bW2VrV6TQ*{sHO(qP_F;5Y5VtVLtHidF_1P%x3#YFRB| z(A?f+;`3e>C~5ldB;Nm>lst97bbEL;$QR*)arB2OtqR%hLNN<-;$e_4n&X3aC&p2g zRP&$x?gZv&M+?gL<5`VYv|#eDv|xK#f5n-oWEGZRTFhvsBP@LPvWC-Pd@20B7IDg6~sNigSTOJ5eu<)ulvjBvrXV!!dEn%0f9`AZ4+ zDCu;0?pZRQ)d3qp$`c#GzZK>a9TK^TW?@eKt`7(=mW=rm&TApA4*@vk_N1_YRTH z+)!0KS%WY%YxfPtd6uWK=AXAmKcgp=Yhp?l4jvD!3!^M;8(3INOIMA!ya{2ZU4Pe~ z4fM;NeUpmjgKfAq0$tdrm|*4rC|`2US^cV88V}dnR7nrZY?AzkiH{Ah;6rwT;tWbR zf8?uGyMO94abPRiS=z-QdOQ=9I` z@T9N^qH3$7T#jPHjKmQfWC)|uG38}MZ*Xk=B%4`3Z>3|Jw>4)18pRuheAKP)Y@X|& zZnYLo;9EB>aZ-AH>@gVoLaEw;hUq#@yJSXujC~jbpCbNH%l}1<0iuSL|1*70wr?#V zrv!0n>h19?UB*V+ zU4iXF4^1535VDEhzx^DSE4Y1F-b?E$fhsL}X4FCX`YRexpET^Zk|##L#-}x3=&#t7 zU44A%(Q+8aXjQQ_52mMj+N_{V)YTS@9%XM4yO{m|A0{dA+jE&+`(reyVA5y&%O3aqh>)5`C^kYy}^XHd^>hyl-RE6t$bZf-g} zV#GKVmtKY?O8Kob%r`I<=fg|jSEea`jx!mMdjYf4G;N=Pa;>XyMSjj-KcI zRbElZ4B%I^?E++2ghQM@Ie z{8(Nz4-KcYeE^HX`CeTx@)Sn9NTW z)J}w;H_8nW>j!(Qr$^vz8#GLiH&V$>STfi;dNRymiwuXY-a~lfcjnhsa@)qAoF6@b zHnXaH5E6a5b7=GWlYIJckZ=e-E9Pjg2;M7gL%|+s04zA@iVWdgvOw>7tA3c!0FoK2 zVCdFRN*sRB)Ug8@P6#F*5Dxwcs*O}OiIk;`hF7fm);ug8V$uwbfwjwyI|nwWEwwoU zM+KmX%;MM)Yk3LL`AoYTYRb}RB1q!GJ*Gcd2kWK)`R6tXH5$k{4;c==3k^c+{DbBx zRt>8ccKHX5#qkbiYM4WNWnyg*v8=V?3vQeJMS~~!7EJ7gIN9%`J5#pZ-%CyDpHTY{ z(df`R!Qvr%5z*L4JHc=%BXEB}-$Jv{a_#?OH45-T+J(MrHOx7h!s$0!qBauk(&Xyw zJsn9JLc9Pfgy4QvdnPo6oMiGzUjZ{t$ z=00_TUE}p5DzIe2UXxihQ%?L_T(sC9ad;sY;+M9gW2QTNzw1cY28f%0;H1!hHn0t# z4NMCVoKeR8HK-}Cdk4Dsbc|>iku{dAv)2fV^-5a!S)U~(wfP$m{90@A0>UHA8;7OW zqYTrC_RJ%58rDo{r2|yF(+W`WPT^oj1MS+N{=0bgxd#6zUR{@6ciPlSBI`dCA`BoN zoDl9#5YSBZLfV+9)8v(V(!zO{6JkJU(!)aUB#g6(kxDvh$PTKW`uYXnMguxDVv*2&!u28ECHk17Z`)XjfIUi7)e13=-hcH6wXnMQA5H^`F}kBAh| zZKiOmTXCCPE$Dw$0R1@(@2F8{worY3M{oxAD{I!>L*B1L;IaedLVzX>>1e~RMf3{| zD{YyO@@-ulP;jxZAO9jehGE^Q)Mg{cu?weVy0!1Fvln3n@hbcreVd}YG#WkpJbz^< z^O<7$EBPj#@v}YG0$(n@9C$3Ed)!mA1OIj9gSc{+6FgfF3Tw}h38y13x{X+RZf{Szy3N83zNq}h zxJA2IDQ33R1H?ZzZyzgVKb99@U9??D^)}mXx*lq8Da@(?sAVQ=AtwRsj@b(i^9mvS zDu~&(xaU~))ANhuNb=^9HkX5On(;N0<@)N;5sdn7DdnLRSR2*hvJ?f{wM2a+ z&-H6Bj`E59*|lxgD`&s3h}0jV?wMNm>dfhvaROicW8`j74FVpa_sdTl$rnP|MFPdd zkVh)RLT_+uiLsZI3|tLX&vrHU??N7%XBj)A&tG18cawT`|7WXaa=m}6;c`^Bj=rpk z$cX-RSsH{BY2R5m67y@lS3`w^|=W@8L<6)%rH zw|fgPp0rGGR4SfZ9x8l8SXPUxQjWT~qVb!y5~w_ z&F)rWt!(EbT@V70h~=T#87qU?bNeN)G>D|XC`Z7NmH<-YVt)BqG5yMW|3%}1qj@JR z2lDn7g8m^NKNA61q9ig-ly<{EnBZIK#=YGYL{br3iTy%N^aL~U62j!MSi~KFP?~mY%KZ0urPTbtt9<@&Fx_zKUG)S}= z9+FAM>?%pd6#fD1*;kt!9Q#jTm2a-*F}PF1VAwA=w?Orh&MjUM>=y;5hx{W^zpelT zVA*g9h-f~xg239{T8bwuD#J{4n@Jdo@9@*S(=o5GC&z>jEO_sz5+qOzT3vF&4T zke`u71YnI$-%N232}qhEs3c~cTPA%h7rtTF$S@~uF7yw-ux~UjB+?dwFBjZaUPg+8 za)Qd`+zTH~hjnSk_fSCf%>%e~?SMMU4lM%kdbk2Dg`wAYEWkb6(+&vjy39-O zH)1DXnE8Rc1S6oc^I=eg4_26jz1m<*EZAT<(t^$@JRLLhi$RcOTs5m`sidYM0-iEz znSR0jO*87uL@5_sfjKQe=u__!WsO)f=ZL`;q4jaZIHV@F9ncZ13jE;9@!XuECPbM^ zk0!j>#@PLdgz#0jZz~YqK4=H3k8OIC3QdW$Gm><}`FF1c3p**^77SABrYfri;F_Ft zOFV$nB=$}8vLtC0ku|1L0h-rHu;ClnNZ*JiCgC|IA+B&=%nongC3C;ias%PSArx5O zCC;?EBj}C)AhNjQhNsUBYz$BFq*1Svfdzf<TiE{-z)ATJz;VQ10FL(_LHkf69dIM3y~Hsq z+n)SYSxSzbmcdaFR{S{;1R*<-T;~D|`Lj!mSj)cBwkbRfJeNMYu zRsT?+A3QfmUd%0@QtYvnhh0Jcv3f^LzQp??t$0dB72n?_BcDF{ zRpla5$(d_A8kmkn=6AZ$=Elnv-CaIt*ReU$DD2&WSZT}>(#y6!#ek~_7Nzodkq_ft zs#yB{n`QRJY?Sv2q``4w-+`%gEfdc$BwnhML-4N_`}{Xb(&@Y=;d~3@XolRS}qwiQiF|{6tBJFt(644GX%39B!T@^Sy z{xavwZUx{pR}8mrU}s5-w)!o#Ql(F&MLjeA_0`_13Tf*wMdt%M!^CaPxPmB3Qu4vm zyd_MtZaJ>K4j2O_Ub0U5bd?>}6}x*E)4EEXOO*ntdqlEZQgZam<)~#Y>Zo0zY?T6e z*I`m-CI)lriG>9+UYbt2(vql|Mb62(OFT-)X=6j^kr&6MK9iNjF;dA2M%swUPIh2K zA1MbO_zUxl2~-|-NZ%+qH^^n*&qQ`>38ak>!BzYCH@nwh~$X6hM$tu z!q}0wCIADE+uOPrH zopBEFV4;qiMU9*F{iqiN4}}RwjiwOSQfB1?UP=+*AljGtTxdcItaK9(O{mGRE&~IU z%c|t#s^o`qM?hi2(W7aQmXZ4R+M)$P-)Uo187xw3z%c^OriK8`N@XhFkC~9Mcl@^C z=x-qDIk!710V-rsc>d(|=Z)@VaUJ^{?bI6Gl*bG)shTAY0^#=c7`HK?fmZh(fbm zP-kU3gGA74;CX>ti9la#orEAzMGJpd0pB_Z&J$~U>S zi6%jprx^#ed0k(XcMjVSG&>J01u4QtM7;dKFewT6#!ErU{eGhrY9-J!s#K9m11@_s z){YMuJRO=^875uXDUJ;)-9zD{xiC)mxe{sUQ?4#W5i97wamxYn!zInacyUP7NDn(# zR)U!o#4247klH_hu>Sz*{|m_e572`DWEW5-|IKO%jxK7m+#*uY4ma*E1i?zswZ)0W z4wDY_-j7_3b`?Hd8sQ>4E(8mXZs99d(j7u`7}l|flAcJ>Up}y;138EqJqlTU4Dh0{ z@I7@pDIje{hzw_fH?ZTy$D~I&)dBz^ltrR4`AS83Et+LQpgi=_C$hgCn4r>3C%rb~ zxo~`)lL1v?NWWC&Iiky(n7Jw(OYTmrBp$+-gpv$e9Knqox;b0?6qFacIS+F1K8a5T zz3q<6PQ)A~jeso3xEGk}mP=lK6qw3W|dteJqTA;E*NIi zBpl1pw}Mvji{=JkjK<20hMWS^=tMunwR5e@XxBGiujYi$?hcgFfneUJ1?@wHyXk~W;z({tW>{VQnW2!E8g>qR>D;ozCCN<`kn?_F zmiqDP|GvCw*dQq6K-_;&I<$TbOeN+cTz_j2A`&3xClP#idlA^Gy6@b%5h=!H_kXNgw?cuf99ewr$hzG$9@Fe$ z$=Ti(n4T(sthxDdZTkA?>)if!w@uP;pU!u~#`gFItbe^5_`TMDf6l(?_(ZX+8WE_i zwcUmDxZ3Bch{>^7cGp+)_Ekt-GV!}r>dEos_BrG02eSq zWivuyVCWBk z4F!dM?tnsgpb*F1t%#2f;am6Pt_%`aPtD!T#M-UBOnp|)U3!Nx&ic^N>E7)x<^yP+ zlH-iWi#w+ok9mop%(uF22emtWvk50SJ1Lf0<;YDNZ9udsFHli;YjeA`azxLkFyXa& zxSwSvGVEaf5VTaV>)Gvb#Hb=Zm&b!7hOi9S3-5hUx_DIjYSGwx1=(luqjb^1 z7?A%Xzm3rmxyBe`6Cd$iN4RFoXj*8fFWxt`KSmueqF$eff-o}>l@#qL7*T6VN#vVD z^MQe2*E1oa0ljrAe1jgFxyAV5@c$6@7Ep0)TemQ7!GpWIy9EhujXS~JJy>vecXxMp zcXxuj6FfkGye8+|`|i2__r8Dhpn5QB*IaYXT~)pIuHLqgjB(i^sNXKMxgFhN2J6&?dOUR+e~NjR;e(+e~ChQTCJFaH6HOuZJe zVw8U4x8_^d_e|L4$Ce)~9nB9I8*zvz1}wjSHLWhk8wG!Ed$jM=t@=97%OB4G=`ndx z0Ol`OQwXO{x}pVHfnrq$wuJUo%S&2ht;$Ep?^Ue_r&o+lFVar@aQmAwFH10W8GdR% z+C|iaevFH_%}_9Ejo7vftUBpB7*_>~4d~>f2G~+alaIUffEGxwP#?WdKh6$DkA9@x zhwZDe(k2i@C1v0a>hHiEL>IsvF~A))Vl9w%|AxR@f@ubMO~dUb-+gcNucO}^xlUSx z;uV#=qcpt3|3UfB2LFljKeNDMZ-%r>$@>n*B{ORSiU(!h41(w%00d+I2iLzTeFr`@*)T|T)}SR!BxA7Qzr_xtGOGWg&ibFA;@#|T_W0oQS_O&2bg=S!Ye&)-Lu zbElRM?3KfNoF9t6jw4~dJ-R-@TsU}~ysl?#1= zLm-G)*jhc%0eoUI+M2w_Z7P3_4mYZJYh~!%xxb12b~1Xj_&ol!zk2s#UOTDnfFE)j zsMLDNl`-XslKOIQ-0Jzt-P-*%&`_XqY5dE>_I>|o^tfEQ_1w43eV?iMuL;TQmv;Au z*4bVnPxC*flX+X$KVOoLtuI$@C4XCMdz2e&t~?o?v(<70j$hZ(2&TN((xMD6qunmA z3Flt7U+Ag?!iu3G2*2~5qyPAU87#Z&&b5Ix&y9T)VZ@)Ei3Tv@&&o9NI9m{g({m~7 zJvW1>CxtkCc{T+Zk;{g5^z&RHj`6rQ!U`}ZV)Sj$MKsUGn6qIo_!1f8@(aSe*fyrf zw^$89PL7oC6S1p~q`4{4*>{9hl}jYnZN9RgTM5z(@o&NPru-R>HBNk-{9*HW=dO73 zV2jmIWz{GpUR%CAEQBTNmX_s21Zw`S6(|FHUH&USkV86!o~vPYzs*Ie!TfHMx)p&O zfXPxObyN%U$$5Ink^Vj_P(~Lz2AB97T~gbA;5o> zlm7C$$CK%%E7#k#7ti-rJA&ZsuJ2Fdnefh{#k<+@95*mb+r%j2nKJTCMm9#kHRLGKrFR#|7eo?NOiR` zYx;Hyvk~%z;=`$agB-Vf=Qv?Aw>;}vP0#MlRg<)xa|jBiI1}cLk;@d)QOMaBeNMXb zrisEb2M>G)+e-FK%PAWpXBZ`9R=_6{JckLcPeU@lP=tg6TJB-&M^Sdch!Pm3LnlkLZ zom&3t=0WGRjp&Nq2a9&LQ0u0}m+cyPZKI7i)Nfz+Y12vjSp=}L3L1HWrO(uCyDLABq))27`^sOUBY z)wV%i(%^o=^~c#tVruy0muoX!Rz1+KTr|GLdx?GX*A12S+$+j{Nj8OsGXB7IVD&4` zPy*)%^ovnd*kY-6)JDVyx+gZo+wMlRi>E}CMQOUv*W)=gLW?&nsa-_AMN1V&Ph2)$mi&TTNBO}l!rGwSY-!MYES3$Y& zO5afl8772Z)qYZ=orilGe|*!a%E@-;S`mBlc(tO}om8LT;E*RGdEA?3OmTUA&{jP7 z?5H_%fAtkyhWsKiuJTY>q+o}^5nmt+v8B!GykW_h-0~=QTqJ3-sNISyrD4gmckTAJ z&cIu6Oc3dIKmm1*CL3D~WJmhVc|G^5`< zU5yL#gyk^R7c=vd+UqUG2&>J!#(0&sGLt@LrV-q0UCx$Kd!Nn@6?bSxM`@kSy3O5L zysDx?ayy+Ipw_oFj5!<4-3PhOx3-rZzCPjXnRLk)a}-RO@HSeU>hdf$j502iLXT|; zR=*iu*K8z&Z!(^opu+CnDB=4l$m(8V5`JxUX5+Sdv;XdU!rEoyGTJ0CWu=s;h8VnR z=XhVZXEoAxqd1K3+K~*X6V`DnJ&SZD9G7-g^3rO3$dpj#oFso}`hpKxE8KA5PF9Wd zMH}o}^^+QmgPSso(6^QVE)e@n@i_N&gl$;@_yO+Wl#O{x=V)G3bket}k_5|(LU!U!Njt+197;eFh|M?mDDEeV>#&aO5CkV`Pz`1_Ep)2P2tZzVIILcs2N!PrETsX^~06^O7XR z>DP5XN}w>^>s+*rm1~hYvDGUaSQ6A?^`FECg$JXLs>P04&vy&+k0;c; z#xbna(XTQa!huo3E^&LhW96wkaia(lr?pbUz7FvLxS42YnaslRzgo`SG&*B2$~$H% zi~BK*o=5c@+}rD-PD{riL>tt8-pFd;_E}3Gcqo?peydDZ3Oqkkar$;ScmKq&YL)%* zRChD?w%2Ss(aG#B{-dn?V8ys{TVwQ0s&8vxx+g2gx+MtsQH z)@ZCvojq|};ONL*X~Js)qk!f@LX3q`!Mh`qF0J{5p?KBnz@76X?)vI`@kwlh*%!&= zqGBY`i!l$jbc))tEio`5i{}@|;Gq3^YN+&!JqImU%+nY^?a(B)(RzmGZaS$DKZTaE zWx(=5nfYNxkwRtSA`kZW10<1)m!i2T>TgE+=UqRHy(ZR5y-S)sXofW&vP_E>YM#Ni zKRi08VfefZ4ZZq}KW)o`Wlcn>Hud1)U3*)1K>Zkr?RI+N~-enLgX=-)n?IpZvj)wbhbQq)lLSJcNI1TFp#dAcu{6srTpWY^BnB}77 z3Ld9^t}wWYwvol{b#*>?h)Y>>ua7|eX1o_jR7IS4RPVV@_8?BT4Njy05d=2@7UDeNM(7{$~-% zjvnWFdaZ!-I=2U>oyYm6j6V^U?D(_jM(2(d;U&U4uEU5$ev-jgJ?zE+4{-RVNTC+a z*TY3Gv_MjdY8OZGolSKfAh$@$?M)-rXqUN8?7>YZKEoeS%Q=AG>*=FCKTQA{-6idu z85jMXz8=De8rBPcq$b(f{*n5#Xt{$YqF<6t|HgvxE81mbVZY$^W(34~x)sMfppEm= zZdVrk!N$&6{@2l_Yp)gm&;NgR0JiYk?62z%>@A!aNZ`I6dmmajSK$;gooq>#vyr6o zIG1Jfyf0<>vYvHD88qlfXzM>XHX;3lxNxlX9UT4mf*gT!Zix8dO9KC#USzbx*zAUss zo4eGAY!gImBW6fF(5%{{#g9$h(MZw3{#3Bc zqo~Q5!Ithm8`x}8*c`;IcZ_GYrUlNV2^CbmOr>T3Vs9O2&7oYX{S=-q*5OdiwFAq!xBhDl5g&5 zrAm?bw7Vr*>+DXYF{34)W9#D`D;ZfDW$d8{fFRqrV?v^RwK~ug>o$Mg_#(E|0mWivI^_w`NWnWz_SI2SW1{khM>afi>jf)BD zM*6iZ@7f#rHg8gGffRQtM@`k2V+A^Q;4c=!89LZ$JJ}~dg^vW+HgSArS(ubN8^`wV zHEbhE96xn5o*PFVC1PfK1sPQ)XSz#-A=y?++E)5Bdy?n^DY{zT!0tI0_}g;r@ZINq zu$`2$MR4qy;ht$~hSF<*ho`o^__4NVn3(LsRehOZ{4u_VTbSo9Y5tlJhf(=xX8y$% zCoNdoJWIMYlJo49!P?_zjpl0_;^wbk$%Eb;YlJ4S$a6!zqZAW$15Hec62RrET}U4_ll2uByE&V7hi*2-nSv);`cgFLJhOB{?k5h=S~ zxgJ@0zR(gnz9&YDJ|Q5w4Cs@%6?*<*K&>T6=P|L8m(la3UAago%K)?n9|X6DVymw( z(KG85aN?Y>m`QYD$|&qiDO|=|+hO|!3L+VCp?HkmGv>+q=lumWlOoN1x{|&~xz!2) z6c6T&9-xmV-wz*jhjc>d)HBprphOG;BFxG(fHpsaut(LlGPYbfNpJyR0)bih?1*!~ zr0UZ#*#jbIBQW9|3_~LwW+DuMMlOm%GNKa{mlu?PX8d&01`oqPKoypz^@vPT^W|er zaoHF1ke-Y>7fr|^mof$tk(pgIu|=H;y#N?w5)k|vd-@aQ5Rjf3czEV}wlHB%BTT1J z!V5sie}+T`{a47d6;ohH=kq@yc^-lmYEAzRnE{1NA{f$xDBF{zI95mu=4e4}iH@~K zeIJP|6t0xQD55uwHUw{@4@D}XcTMV#xYC~FL?Z&CX9g9N<9;fxzy(xWR%~-=_VqJ_ zU=BvwJXLTl*uHfT42Z)op(Y7wC+uREj1QY7excTD6}Xim z`?i4g4*Ji7e1?EQS;>X9o5tFpRlP`4!689r&2?OzqhY$KwuV7*GJ?AeggH;`OX;P5 z_khmJXa>|{ISvpA0|GzUgRCUi&y^t(A6{AEetHn)LMZ|QVUf!n>3~HmxM>msLexyS z-zE$}x{2HiLk#v&7($0BeOlT=H5$&#PlSfqcc~CH6t;meUQ8y(tyL4E4@#sy;Tl^o z1cVrjmksn1JKtll>`VQaB??UHOskbSI@Z%NM*s{DOCYx;iaKi`v%gkKFAR$M%SaCR zLlt=@90~|lnlEul7SAl*6s1vj+8FR`_|L9c)Pw+Oy(e16C%JMHhT#7UK@kMAd%f^e zYUTj*1>zc;VXkfB1;bp|z$KiG5uF5?lc>ej4(Gr5NC`t2P&hGYX+nyo35pfJ?{mYuoW9i7zb#bX_7mGG5M;mtM>p?XE@l3#pRVYfBQOeXo8@2-FyE zJRHJUdVJ`|F|GJt4}xO^eISQ{pfr3x`hEL-vU^bo-)Iqk4G;DwPp?gC^#$K1t$EbT zIqTW6dL7n2tQ(F%@0D4h(L53U99ft-T6s8-t@E(wbU0o8(p%0sS563B-`i2(Pzcqn zGnz4>T5Tk6P_9--d9X3A8Q_idy9?#Fj+Yc$*GNOn1Y7qEmhfhWD+_#8bPPgl@4W5M z{P6nu`3Ic`Do?LlcN87(@BL9J%h|6INIKojI=}e{p!ebolmQ1& z9bOvYSI;~5oV)kqa-l<*sTfJAhnP5q$7`NUIIdRJTMDKY zSI^uXUK5j>6SA(al^(AO8Lkz8QNQF*aMfEKIswbs4>h!h_okm*TwjM=UwwJA<)luf zTM}^-7K*Bk04C#VEL62Sw5#zq&&Kq9XTi%`AaABghJ^q zRBYrG)4SrhQ|Wa_a|VK{jpWA8k{e;F33a?lb-G^?%sgYw^;6Bga+!m=&}ndvq|N)! zZ2SHlrEQsTXooB&Z z{0$M^pXGo@`Fs=|G^yeLq30Cw;Db)@KlRvpV@s1ZA)K9&X&&F-8eiv2Y$o6D?(Bcy ze(JA7pq5j!_^LSNvMto-Pj*k#dhH?1uOUqZ+V=sZOruf(yb>kkh{*HT-jXM^PlA8@ zfm#NsgfwOb#ya{(Ovxn)P_;+~FMJSXd;@oZsklw=;$OTO1;1&Q&dyU8K4=$po69ya zy|pflFZAYsVwpAQ>^QzQa;YZDG#A!lo^^Q+xAO$?cJIDCu zAtr|*(#VsipinFbv+z_*Qfzy)a+mT+l)+{|5qWUUZ$4Bq%Y%9Lbyoumk}6L|K(9OF}uU=eW|D5O}Z zNmq)Q3-wnZpZEAsY{Y5$fy)JA5yf4@59BXk6U1quyJ&gX*nf#}_aUYLfY#OVe>N)C5dHvw#~h`#$8=)qxxFi`)(zLdnb< z)nxr~C7m!FtDKI&53>0kfjC&L#)ITJ9T^w?H-0x9U~KX_qDB21(@BwJRE$0|@CWz# zRCvr!xt6pCi$5h!6PnvXq_S=lmE}PX=(Wvo4(N?)rs!!2Ko1VA2oo?9-c{Vtu;Blt z!VNUQM8_(mUsCzy?dC<^Me%PPN;yYB9dC~R((yLBUdKZ6zmRaw)5!21ynmKYQq=kO z$BK_B?^Zl0{tM!v1Zc&_|HX!-6-vU?SjN9j-xqYy-lPd8XwBQup*mC)VYM!;|V+Xjm23M-~|fyht4Sa ziqW;^q9@dyp+>I62o?BBTXGRC z#Hsh+-oP7AnTD_hCAX5*J+H$S(1$hslTJviqX+mqc_x@8N8!b_^SVnI*5~4 zaQX+eHYm1tE{*Rl6T?yy3o3*i57|PpVy8rPTV9pcM;*L2s6f$=YnizK(VwnWEEPJ0 zJp+aw-EshROiPHiona{i0eb)^gk95TFYoQDfBqIs!s|+O|i8UM|!9;;#P&8?lLJ~jM`l-5nsX)PHc~{f`Qcjp} z)1;oSI0C2C=`=&U#MISYTlAn-JeY{E397WukK;%Dxt|6<=baI6 zxt`TL^9D{`BUqJ|BhDeA@e!?o$pagf9`8NbYfwhxW>#jQ6h;7MU@^kv9*TD{J$Xbz z35_seCEZycB@CbhjK~!9qkJiFBtM$&5g|TNrXYwY?2(o#4W5P>xs^#M#KJ2xdtl4r zSG(dxNIMYnEQaSOe}PALR7~trh966?P^hI8MTez>Qxw$*&k1`jm-L}Axe^vbM?b_W z$%|EHjxgOzo&MBol@s=U|DsV{79Ld+4Rfc;30obPC^6WcI*N~*khZxep%O+hCnOUKl$fcMlq3fKiCO^rPgEkrAacTm z8j2JI<-aY^t^ryQ`vK$Kg30!<_$Q*fmGJEnca#KoHHE>9h4wHSDC12P`-oS6G9zZjLG~OD?VmjM*QH&);zJVQxdBb5t%8k zwNL@LFr3ePG%%c>1 zj|}L)4MQ*}ZKZWs?0F$N5__{X+=9})cHlMf_n)F-!INpd_J z76!(htJ`m2*0oQ6V#bbcceZB!or+acxUCEM=iCW4XV1~%a zb|RX|v34TglVj{e(vsus1`uGRxH6!KcAWCU!eddRJ`OVTVhx-!zB|PrY};Z8q%Ywc zFz8Iw^VH|u*va*J`@h3v=714AY>T;Wi?iXzRWU>Cx~}IsAKHh5wq+tfHfDUq3L4m&P#12(?0|!M~q8zy?AC5VFGUd3QJNd ztPzX$CoE6uUg?iSIvOuuW{Ctvbh9sI4rPMBSOOIx(~`@>X{-br;Ayf!CAcz6+%56~ zK8n|>p%xnbe|_e4?K8uv6GoHa*Ygc9l-n>@gbhyrJ1$7dWVFE%IbIYV7h0)pQR@5! z701Rr_suc)Bp-#RQ6r+z2SxYb90cr1;hBJSMOtGKr`iKfu-ANA_7*i`ZMQ+md`N}- zjRVTmVp%%##_+Vg*woq1DoJ-t9#wT`5_LQHde$X~(n?3xB;+G&ISn4#l-i&Pb-3BN zCF->Sr!o+pojyIkn?euW6KV-aBNgkb(-4mGkGXLqR?$!1N23s*d?@|z2#f2ja}be~ zaic6cP2h`Hzndg~_Sw0MI*uWovGWqYd#)oPK@8y{+Vu$$ZYDv@#T_CqT|sdK;T4|f z6|_((S58)v?o%xas=ZIk+j6tF7y^Hw#GbyVNEf!juDQpFtD$oUHdPoTGrhOxX zA7nX%KZUt_VGk)v@MTAF0Q(wxfDqX`ht2QNAM`qy3UMRml^DOggl`vV+cZR=L8j`^ zf40Z)*A}8cblF@8lPQXKPe!BZ6v>;*a??=A3o+*43#tM!%>(egzH1s+05&RK*7l}T;9QYVSD$LvMg|AGCv@Zil z-*G96`%gTMZM1hUWQM7Bk#f+!6XOl^GU3?)J^K$Sq`r^+Fn>8F_>x|y! z6v*>i1>!Hqu!O2Q^fY^pecsn!W-G77%{vg>gWSejmbhfAb32ET(71NM-q=MdG6c$zhkHdvJgkqCb5*zD+(qhP-$gQ+U<3lTtav?{H?GzDBc80b z_nRMZ^}EJ!ZvZlg<&yTz)S{fQG1`4xGt!Oy`@I7-nsnc4rxA)w5?jdQrg(H4Q{mY! zD2n3l+^tGlVqs$ZdLK;dC` zlu1vmBB&f*4ZEt2&aPr37=JqQ+k;24T@v=*in;0Pz4&!PCIrN#!}R(AM-51Dt28)l z@@kf^vQrv9pm^1H9(YM{6ua?bA@DWLpBn{#1h8h9a7}(&3H>&Fjn`}>>NCI2SnPJ% z+I4pA4+?Pnnt2F>DSn43{tM;{p!i8~9RK||t&Br+WQcrf$IaH&od6&-Ho%e4#enf9 z7_q&tcKmzj4%^oibAn$=!n}$ADhx!O_m)3s9*6a((HTeZc zf@|^tzMy2@Qyp5M6JLh>1NE9Izpm5QE~yQ}siG~8DMN;BrI-O&(S*I6v5x2UcKwL5E-ldg<(?Qb^F2|3iUvuU4j&T0R z6anuN93FspVTMucp~j~VjnA*p6KYO^Jx`_XAi&7lbv%ENQbVY5%o?79GqWt3PTG|k zu~J{y6lzOtYiAl7J3p1xT;>8Fu7kM&zh`nGaxm?)`OEi*9RYyO!7mXcG6oMAPpY)H zJx?OILa$C4YQ~>02M+c(3{1Z(J*{6<(L`fU#|%X61L}IPl;ipWKPgGV-FG=uDjk!N zTu4)qlS~TJo}{Xx4gn?rlu(TUwyMJPzM2Nvn!6L7PbrzRnC_wGh;&5dmW5hAZ zoxUt;N|MTPD$4hel)#YOC&><|a(PTN<)*Ifu%Eeo9l#Dm;B8HSH8E;gzpng1V6`L` z;%?30P~oPAH`njvCbUuDHV1c<2ka9qk3Gym2|CeI&Qhg7oI{Av1sVH0pbphvN4&aG zoyF#4q~vBKEMU3AO~&^ zb2IK_xUmQ0L-6@WmIr+uNGdYy7^NQMwWuh+C;-G}UH37znyaWnAP@E(zAGOTFck!T zd-H4&Jt#n!5aN#Y*XD(Uez)R)?2eRkyOhr?+JOZLc#r=rK{5s#DJHL|SSv%CQ&IsF znPZo0kK-GHOIL*wLWRtN;|qKU1Kixsz_=Hoa4F!`2j0B2C(OVEu!CKSjuN0kN9NGt z_;P*)@2+sIrr<%0+1>BHg)wW8JKxDlOM2%8*Z34scLxnc+Gpkk=#?$9Y-5VMv@M)xBU@ zel7u~i(*K?bdkj!h7IYUKzB?MZOCh4bNRM0Cnp1jmU2Bj?$ZLsn50_5N7M7^p>r7Q zdKkQf_;GWk#Q48Caj?2K_;6EEI>cB~=8Jy-na!H*N9qsBWQ`oGv62UvSq&iKgpGY5Qt%BHxN)PRd{qSOQazAxsEu}q0?!h4 z?j4fz(|Y-I&&cMZ)Y4(p>r{79CPcik`Tru@g_`J zn;iPw$*3r;sVN02U4G%T?%Rd7iNwifz=Z~=lK75WNR}!Yu81VI^Ekm@3l_!lIRD59#LTb2`ZH~N7nqEif8maz<1Q>21a;7CLEdkOZbT6Th>EdjVCIDiPEmavHQ&K@ z*uSH2#2uj?DUDNzQNrI}h|aSc=*(Ra1mtV*!LNcL-u@xrwq3uUKmyD6Hvx(RC~kD@ zQG2#b4=_R)Vlr;N zO}SmeK`Pc1bHBlkc*LCWHp?#~tQFhvE0bXq+3mRLA5vwvNIn^U88q0C+>1hhOl7nE zO?fM#;vKp$gXF&qS%rV+lL$okV@OdFIFOIza(V!(3twdF%!-JECa|BlJ0)om9pD_w zjDRkQ-;6TdNJ(YZa-iXknBPdu$N4!;h+Ft%ynSnTuOKcAmR@Kr`M{9Y9TO8?N0D~9 zK1B&na^djWkvuUw3&NU|%lkseh!4EiT7}7kEYK3 zfEc0=fud5TZ8e#qV)=Tg5v_!HbaOF)h9ptIr{%A!5$UOw<OU>prgrv}e7&BnT%WmKysj z**pw#y1t@Kb82lG`+V^I*uS-FeMN!OAYd38$X z`p7>{ty=>L5yM=9QgfU{95@YLuLRE&U;mIQ+B6G9GD3##kDE4CcN~PmD7}t_Q8)Us zn@bm7Ai)QLq0xd&SI0=F$TRAHLC12{UqhCT_isW4ycw=a5ACEA+92OdVy*8IAAXXE z?@$>eyXyUiI&8mpb;8L1SDh6+P#qUcr_bvt`oF=9_MaVNor?bgvcbTHzFm!wZT%N1 z7P^}o@A%A@-~UzEGhaYVw;LP;Bd&?>OV&bLF;3*TP1VOj0h+(Qlrny1N_)hUFMD5L|K) z5)Js_82x5JM5t+LIBsW`i>+St*_e_-!kDP__<4M=zqP$x?D4bf(OaZ~x+7B@9C)@g zsusqFQaAU6w#L9g_*s^6*FKhVegxb(Rt^>JhpB7Ii(TlWLJF~*ua7*{ERkGjM{v_O zvN>31O42M_YJUE?M}Nm{uN7ZNXNlOyfkKIcbx0Jrs%YH7`KH@R+;R_a`GH=$H*t2+ zza8Q5Q&FuNWJ|T%5%O7(fRW2rs-|odfe|ZHHtDUyiKJZX~CgXVmftNBC!#yXE z;@K_(l5xI0GA0cT{!n&uu2oft@fj5H-Bs}(P9rXhYE@T9^JEAlc zMCQeOBn4jT0ePe>q@^P3FOjfyse_HFyqv&s`q_ep97j>9yQY{vi_s1p^501=zI2N# z1514|_m&0l6Sl+HgrOs6Rw>h#Vi|}jlzLWN{0s8jI;vhzy z?BQS;{WUy2;6kh7P8M&_SR&)jPmQ2BId^XQCDXG_J6jOq$oK<|!uKuGoI6i=`jnb~ z5i|;Lry;mn))IBhB*3fM@B%W#a_1=uu*U7QKOr~VgyA#> zI6Ioq=5cmz0fe&?b}d@G?^Q_T1b>$rS86&{hgzKMsq}GO(v{XAC3v)!hOcYEuG@*r z)0a*2ZrlM^{qi?Tbeq5vO7w4tVGcZ6UWPyqtl$cddOjjyZwa_Kneu$C2t-#XGxn^7 zJrWk<)WYRq4cA5QDxVau4dtP;s3{ptLsD!rP-y49s~Z`Qx+~J*xG=6w9_&1y8)xv) z*fkD~x3+&_uR1r)5cYPuX*80#%zZ8&_C|IdUzhzUYh9>2x&g&;VX}z|IqtGWN@z@b zOaQ{VQg~%hJBiLu37&5@IQl`y0(mmy7Ld;F@hh^bKcmk5ESDtd@%3t`B{kIhV0RNZ zPvLzF&iH(EkVhY`;2$otBW+ap08A}0hSZ(hg7brm#Rvw4P$4BB;hKdmxmJ4=XLamx zAU1rSyUmujK>xYC@>ugg2?SVzstNe_UZVL=397Hg21@^N!AH*YTJ$r)gUonz_3g(g z?HNTde~x3p!f#IyYC^KZBWG>|E{2+X{>iGrfz^ITL3~17y6KHG$*?V%`@Y_u1xj@{ z=X}A4@JH~5;Sd!JFH9sx+Bsap#ae+*8RRqK=a9$&5`$8fI>{qs;7=uwVn^iQ;jgIU z&EldMoKo5Z2xM*m^6W`Ubj;DKUaF`F<|40~skow~`dG*6L2;MdE``KV=qJZ!qnp~Z{7%v67D3pg7^sPts4~WJLr~1juWsoIsq7+$Lwt80dpMs zbYAjik>hLEfwoUR;_#U*Js+Lz5fGpYi7_nSj@GPiAphyuFYX*iLtstcUvMBGsQ+@z z1X#jaS>M3wPhsDUq+XlvOn5^-zJ*aGXGmGaH=?1?3cc?IbJ#PR#v#`pMw;-7CIk^H;h$3K1HbmLEMhc65E< z%mtqNyoAr4<3Wbhz$$;@ejm3|Q4ZFd7&Yfjs9IE$S~JTjK6rXmIIlZ>L63m#FQYK% zi^PH(t>H*^*k_>=ptv?BQjcKAp9wil4F_qdbHsHE35OBJiBThwz}n&I+)5;4iSjFF zj$9nGb`M!o9?_>06-;2!GEq1jW;(FMJ-)zV#*xSsDX}zReF{^gb>xLO2@!1?^gB#P z!9+zO*^S_o#*ON>xr#lXdibyK~U8(4uqM2#lae=&;D797dTPUvm;v2|) z;;&^hR0OY-&5~EqY-G{-5&rhIBj!oRm&X;9?^f7kU*!s{c>DhQIgGP=Cqi{qsWvBH zOaEC>n3_8*Yqp`AGc#_AsH(l@%_tYWTkfqLSjot!mTHIdL65d^hE3Ms$;r;zd_U6J z^=xk+8oZkUupuw{zuD zn5zh#6-I{4jbu`q)zFz`+DOhInvHbBeK&Y>Wd7aQ(ycquoy~6}10VV_eM5mN8Co%h z%jCuzvtfRdB+#U@t*mFa-x}vAb-QSlPGh z|0-#mAVktK1gxgsP6Gmh{;yNg$;{Z=nDNh+`A>y2OFoH^zeThT*BD~dqyN% z5Wi@o-nCq={?YR_PUnXF3*#y``1{hvEX*1VJX)di1sI6q8$m2#*R};6UL)*UV}EA61Z^6U8ka}n zlhWfvafdY4N^pVo=qtWElVETk7=!~c<#$!?mwG8?aY@oxG!eQynVI{3flLM=WGVH< zlNDF2Tb1Yg`|)&h^RhHH$Sa-d3h&Q|9yNMyL!lSGv;Vi@H?6DlqxpEYd2qOCw1 z;N+k*kXLhE}8_03$$aBFlcgdXk2_27xAsPJc1Il|Z zWr%%6eGupH?XpJ=v_e{#-Abq%&+0-YhLeI?4%~4J!WHLoD^@_76R;%LWM8hqT35(m zSA6ZdHOsw za?o9WOV*En*MmigXr(Amoxkj;#yu%2@NGAwEjm`c?(;^!;WA!?g-IWrBf3IokjyAd z-hfLPv59;7>DLtj)$UuPcIh>%#8*I5?D7`>YY)#xP=mgHUGcBA&w_2`&eV=q!Lth- zI|Ex{EWXno-`(VRf0&z=6w_BomH#kuUk@t{;v!-q9qn$Q% zGQOHWYsR-9&Y0&*+imeZAwoSAj};3MOl*)+y``N2zCZ?@wy{6OvTh)sC`WrUoBkV( zZpmHS@he(V5+Wx1-A{2ILNu*~(51z(!@%6U+iyy{NeLaTGz$w$l!am!H|C`Zp;&Sf z(NcRU?)#4yx+f@+1${D^&- zRiebzZZ%o;&dpk!Lk|CpwfW`jm{$y5X{DKD`H)fdaSkdXTy|t5giAZIiQyWdsEp%u zjJ&*2#e7k7K{N5EO8D_8@{SqX=O!jGHv^hRXEsBcb|(_#HRnulCbExB;Dyeo3Oqb1 zpQ4&#KVaBWnrJ zTg&ZEWXl)0%QUOtLW*8?6C8q5Y3K0oyTP%h6Vc{(@l+!nM@{e|>#F!vP+)4+&k-OY z7Dj4nR4!~_VUZV#4xn>j zT!KC3$vA}v6oF6*mU9*cAhCO7z!xJNnl<2Wtt!QbRLZ(24ioLJ;SgbpXg;tdMCy|% zEKE|6r~fctdVXMZBvH3A!)$5Iy@VaSBZ$qamTVZM;got%N@Ie!MaHN{36)A3Wkf{= zPmn2Uz!=n|+bWmbFbkHQq;@z@Zg>^oNrRYtWqv+*^^!fRQ@EF_SHt^zCzTG?A)4#8 z`pYBqKXb7xAD-o6;0GQQFnj$7d^dDHB;J2;OEF#zGu z+e5)y!fQM5g6W{d?0)c`P4yHbSX$`IJs5j(5~ zzmH{ue&JSXNgfo9Y&hbKhvwwntKO>kSn?>(3{_BE`WKb-SsUbm)h%%8Mh*dstN*2o zf9znf6R3w0sEgnqy8fyT`)_rBO2bA@*8=l%WT@>v*$Q9UGcU_BxUGD(Q0IN9V#M3g5AngY+E@>k4&eMLX4)J@z@ zse~s+daG|$fJFeiS!D=`+Ge)6kA;$Q68_Qp*+O8__ zy8H_E&kk*Dmyz883N`==$NGoxcggY&wswwxdNnhq*2bR+P4sJ5-_7nQa}I~djsZWRm0ifK27#dPIY?BR>S8K&p6`^`E8itj zBdmBMIYavHl6KXv5~}yDCrT&PXz@rrrU&O-@VAZBLbsWvlm=M?t)P|4bMjwUINcGgJq=lPW7i6rL8uFn1YNl3xl(lgtc9!qvihg_%K<(jsA55uqFVxMIp|y z9(57gsj6M}@dZ(BXZB=i&Sj9#Rxb|`IZ|BCatKlzStVAnqc~gQOsA2uMWWEB_NA?` zlk=U9)(r2Cl$0BfmY_PalC( z{6#m!B3`LqdKN%CD0Ixlv&C;>P((f>BC5V&O{8`9X6q)DnsvRldb8@9cf>ddMNw-S zIhgeez~!XT=-5&aRbWf8^N-~?rr7dsxC>_<-0yu z%g&jd%g!qq9g)b+tIu1|y40tVk>bSkUakTaNs zOg2sPdi%rs?KffrVW>d}SA3}|dt~i1#%60y$l5qOw1g(bP(%>X z2rddz7061lu8IhPtO`OX#$bp@2|^OU7^+}|&_x7cQ9nQuT{rMijTA*diXsR|5DYy? zQKM{DvLmY^bC^G7&fGK4@6NsFym#Jm&fLGxh?*4U-d8>r4|==N0UH2YXOePb z!H@J7U(URD(;Mr-P*dq-?=;~tVElJa_=+Rl>~}5qcCFGgtgBl4iY*)D>yf7h!+Gp6 zX|agz*(}WC2xXS9Sow`z*lGy?h|&T8RdB@uH|}0srohMxv`;_Jv-oW|e++i&cVB;m zvyxRM*-ZD`GlgIDmEg6N#_R(9-CIR>obA1xx}!j!84z&4P1r}yS;@S-+8OYJVM%A7-`891A6Ke9D2E8)>p5HYE2L+CbvX}6PB{n3xIJa^7CW=o|cOuH481(si@w+_SFlnfaDZHe< z|6@}@f3h+e_LiPIC&icEzFuzU?)x;p%={X3fu2h4){Ly8bF=0pR=&5^#v+baG_7lV zKxZQMv~JmsWjINuqF#P}&AG>m8)komi=`>!4tptVy0yPyn*i6;S$;bGiowwvw&~2;QbHVxstyq?E^tieDi>L!C zMk!%cqe;@n8A?gJ4e9e-E8|3^KUhgEYMGM$+u{1AT5A^5?<9QJcW4LrB{ zpQlk&>qoiu#j5d!Wt8NjNKS;dysmB}cWuRN`lIMJtIp_T!ts)^RgAVHp+1|VSZNts z^1@weaaOp6p4Z+SJO{Tho3%~8SKAL!7Ac_gJ)Ih|f+NbVPmWk|`QX=kTD!VfeLC?{ z2(we2nNEUDvH+3D2E$&%M-KQkzL}^0cc9+nv|8XQOpNZBn&k{9x!ab}Am2QrHa+pi zx3B`-_$u#Yp^YO-BkE;0PxuON9K&5L*j`ymc{lw3-Pjk(lkx0=>qT2ThbNkJ6G!h{ zr`GHa>t*x?zf(V^wW%<9GMm9eRU9AZ=`?J<1nyI8Z0S>yH-qayPp8-s&%DPwDMl2D zr&x~V7(L@kiyw}+HNH&U6lX`p!rG^AlJ=qrTL#Q@-rLmb7>H*IWO7cz5v9Y5lx}Ux z-D^^=aygfg?&4!v!&l?%?wjO#)&NOW^TY`zK_m4bEJ?s}fp>5v#Ow4%Vb5IqdE2J2?>}J)=1n^MabYGTb9DeZ|b``L4cSIm9yGQAVN_=lxSo zxWM`guelEWQNx0C_fzP=`1#f_LI0;O*o)>D2Zxvs-TwZPXf4bSHe#xGVWF!li22(lI+=Yk4XNMBsJd}gq*0~Q+N%5<=dg`ZJoAM zvTA#UP8hLh?Fp3JxQ3rO5*sz|KYU1za8Ld=6}Hyr=A{)+LX$Xtt+j)#h^Ug-*Yvm~ z0M9ZzQQ~-uo(6iTO<>OLYuNGqpnz=v;JOD)24nmP=wn2GOpx1G?+hwH)Umbs3_i*M z^T;yaY4A!Bc??SY=i@KB_E0b`M#kwZ_(%r`DlP*@!ImH29`Eyki}$^j@5d=4D@O1K|IeYG*zc{A9R z#B0&Tq90X uwU$&&V!zGGvcL<bI@n5p7WCDs6ai1rJlIKJ@BRg}e?2b% literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/SensitiveResultsTrackingFilter.java b/src/java/com/twitter/search/earlybird_root/filters/SensitiveResultsTrackingFilter.java deleted file mode 100644 index 082e52dde..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/SensitiveResultsTrackingFilter.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import java.util.Set; - -import com.google.common.base.Joiner; - -import org.apache.thrift.TException; -import org.slf4j.Logger; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.util.thrift.ThriftUtils; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.util.Future; -import com.twitter.util.FutureEventListener; - -/** - * The general framework for earlybird root to track sensitive results. - */ -public abstract class SensitiveResultsTrackingFilter - extends SimpleFilter { - - /** - * The type name is used to distinguish different kinds of sensitive results in log. - */ - private final String typeName; - - /** - * The mark is to control whether to log expensive information. - */ - private final boolean logDetails; - - /** - * Constructor helps distinguish different sensitive content trackers. - * @param typeName The sensitive content's name (e.g. nullcast) - * @param logDetails Whether to log details such as serialized requests and responses - */ - public SensitiveResultsTrackingFilter(final String typeName, boolean logDetails) { - super(); - this.typeName = typeName; - this.logDetails = logDetails; - } - - /** - * Get the LOG that the sensitive results can write to. - */ - protected abstract Logger getLogger(); - - /** - * The counter which counts the number of queries with sensitive results. - */ - protected abstract SearchCounter getSensitiveQueryCounter(); - - /** - * The counter which counts the number of sensitive results. - */ - protected abstract SearchCounter getSensitiveResultsCounter(); - - /** - * The method defines how the sensitive results are identified. - */ - protected abstract Set getSensitiveResults( - EarlybirdRequestContext requestContext, - EarlybirdResponse earlybirdResponse) throws Exception; - - /** - * Get a set of tweets which should be exclude from the sensitive results set. - */ - protected abstract Set getExceptedResults(EarlybirdRequestContext requestContext); - - @Override - public final Future apply( - final EarlybirdRequestContext requestContext, - Service service) { - Future response = service.apply(requestContext); - - response.addEventListener(new FutureEventListener() { - @Override - public void onSuccess(EarlybirdResponse earlybirdResponse) { - try { - if (earlybirdResponse.responseCode == EarlybirdResponseCode.SUCCESS - && earlybirdResponse.isSetSearchResults() - && requestContext.getParsedQuery() != null) { - Set statusIds = getSensitiveResults(requestContext, earlybirdResponse); - Set exceptedIds = getExceptedResults(requestContext); - statusIds.removeAll(exceptedIds); - - if (statusIds.size() > 0) { - getSensitiveQueryCounter().increment(); - getSensitiveResultsCounter().add(statusIds.size()); - logContent(requestContext, earlybirdResponse, statusIds); - } - } - } catch (Exception e) { - getLogger().error("Caught exception while trying to log sensitive results for query: {}", - requestContext.getParsedQuery().serialize(), e); - } - } - - @Override - public void onFailure(Throwable cause) { - } - }); - - return response; - } - - private void logContent( - final EarlybirdRequestContext requestContext, - final EarlybirdResponse earlybirdResponse, - final Set statusIds) { - - if (logDetails) { - String base64Request; - try { - base64Request = ThriftUtils.toBase64EncodedString(requestContext.getRequest()); - } catch (TException e) { - base64Request = "Failed to parse base 64 request"; - } - getLogger().error("Found " + typeName - + ": {} | " - + "parsedQuery: {} | " - + "request: {} | " - + "base 64 request: {} | " - + "response: {}", - Joiner.on(",").join(statusIds), - requestContext.getParsedQuery().serialize(), - requestContext.getRequest(), - base64Request, - earlybirdResponse); - } else { - getLogger().error("Found " + typeName + ": {} for parsedQuery {}", - Joiner.on(",").join(statusIds), - requestContext.getParsedQuery().serialize()); - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/ServiceExceptionHandlingFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/ServiceExceptionHandlingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..292f0f5a5a36d58ebc918ed65004085d06076e0a GIT binary patch literal 37067 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 { - private final EarlybirdResponseExceptionHandler exceptionHandler; - - /** Creates a new ServiceExceptionHandlingFilter instance. */ - public ServiceExceptionHandlingFilter(EarlybirdCluster cluster) { - this.exceptionHandler = new EarlybirdResponseExceptionHandler(cluster.getNameForStats()); - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - return exceptionHandler.handleException( - requestContext.getRequest(), service.apply(requestContext)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/ServiceResponseValidationFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/ServiceResponseValidationFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..85ba3015e4b850bc499845b5b0fc313c9cd8dfc5 GIT binary patch literal 37605 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 { - - private final Map> - requestTypeToResponseValidators = new HashMap<>(); - private final EarlybirdCluster cluster; - - /** - * Creates a new filter for handling invalid response - */ - public ServiceResponseValidationFilter(EarlybirdCluster cluster) { - this.cluster = cluster; - - ServiceResponseValidator passThroughValidator = - new PassThroughResponseValidator(); - - requestTypeToResponseValidators - .put(EarlybirdRequestType.FACETS, new FacetsResponseValidator(cluster)); - requestTypeToResponseValidators - .put(EarlybirdRequestType.RECENCY, passThroughValidator); - requestTypeToResponseValidators - .put(EarlybirdRequestType.RELEVANCE, passThroughValidator); - requestTypeToResponseValidators - .put(EarlybirdRequestType.STRICT_RECENCY, passThroughValidator); - requestTypeToResponseValidators - .put(EarlybirdRequestType.TERM_STATS, new TermStatsResultsValidator(cluster)); - requestTypeToResponseValidators - .put(EarlybirdRequestType.TOP_TWEETS, new TopTweetsResultsValidator(cluster)); - } - - @Override - public Future apply( - final EarlybirdRequestContext requestContext, - Service service) { - return service.apply(requestContext).flatMap( - new Function>() { - @Override - public Future apply(EarlybirdResponse response) { - if (response == null) { - return Future.exception(new IllegalStateException( - cluster + " returned null response")); - } - - if (response.getResponseCode() == EarlybirdResponseCode.SUCCESS) { - return requestTypeToResponseValidators - .get(requestContext.getEarlybirdRequestType()) - .validate(response); - } - - return Future.value(EarlybirdResponseMergeUtil.transformInvalidResponse( - response, - String.format("Failure from %s (%s)", cluster, response.getResponseCode()))); - } - }); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/ServingRangeProvider.docx b/src/java/com/twitter/search/earlybird_root/filters/ServingRangeProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..8be3a915a5b61d2d33b8b3bf12bf9561d76d13fd GIT binary patch literal 36878 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 RAW*InWJm;NkLleY9su{D;Z^_u literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/ServingRangeProvider.java b/src/java/com/twitter/search/earlybird_root/filters/ServingRangeProvider.java deleted file mode 100644 index fb26bd2d7..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/ServingRangeProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import com.twitter.search.earlybird.config.ServingRange; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; - -public interface ServingRangeProvider { - /** - * Get a ServingRange implementation. - * Usually backed by either TierInfoWrapper or RootClusterBoundaryInfo. - */ - ServingRange getServingRange(EarlybirdRequestContext requestContext, boolean useBoundaryOverride); -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/StratoAttributionClientIdFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/StratoAttributionClientIdFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..7d2a3769d2ea366aafd7c6ef47a3e02c5496b3e1 GIT binary patch literal 37110 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 - * If the clientId is already set to something non-null then that value is used. - * If the clientId is null but Attribution.httpEndpoint() contains a value it will be set as - * the clientId. - */ -public class StratoAttributionClientIdFilter extends - SimpleFilter { - @Override - public Future apply( - EarlybirdRequest request, Service service - ) { - if (request.getClientId() == null) { - ClientIdUtil.getClientIdFromHttpEndpointAttribution().ifPresent(request::setClientId); - } - - return service.apply(request); - } -} - diff --git a/src/java/com/twitter/search/earlybird_root/filters/TopLevelExceptionHandlingFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/TopLevelExceptionHandlingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..f68f6877f2c3a7674904ce7e1735aea7e67b9da8 GIT binary patch literal 37015 zcmagEWmp}_wm*z(a1HM6?hb+A?ruRh5*#)j+$}f+cXxM(5Zod(yOd-hp)kR~z~I1O)3~)NR0`sfz`?*qVZgvJK&`ss0Q=A8_MZ*a zJRHoO^_kr5Y#Wl~6<0)1znnf}B{K_=c!{H6m2NxGI55QFNmQj@^Jp(JAIm}9-;VQz zsZT3~z%a#Sq~7`vt<(y3dN)$(ic1{p>t|@@kwF%D=dFEXI|WeYGV6JfiAp2WCLN*GpXY0s(V4o`7o+<4e&-t33HmxGOLfQE zm7W4*_d!Ge>W`mx-Ary{n(T)#wIz{PsygfF*1S(>l*{5eM}8uXvq zb+n_^e5?)wrSUv(#gQ|Px&vsb>qzwzVba*zV=BCZZu@R;X$xW~gzgtZ4Q^*=e(EUPby*4cW-7;!Oso5xM3|4(6=(eD^?+DZ_Fh7$=V_s6ZC7~omh9Ujrn~`| z(m$%`K_x442ddsW1Q-}1=&zxZxveuZ)7!Noe&Qn}E2`hAkmN9Bk$t1OME;V2#DRRi zQ1{pIlR|r-bm4Mmhq8pe7IqKO{^^dX#e8}m{vv&$ZJ?%!_FO>jLXXx4?RkBh;VN7* ze7irXyV`b;wryI(H94|~In^zfg$9Wb{W`{gE^Xb(v}mQ6gdv@sG;(oJNdnpx;%6F7 z7aztM01QA%u8}jmsG{Ykty}n=aN}obBR`SDSO+xKR0T6u9G-k+8ApsOahd(8=+fAh z4D8m2Hl!>f#Qm)2JRGBFcaNLbG`oN7$>vEm`GeMzW5LK-}xA`@^nE_0doB$5a%%%V*^S7HkGk#2= zj|Elo)?0E`UL))h6;4uy4*W3uqco=fV#^H&r@ZZ07T3haPQIN^4!tYU2LI5dgU}jx zLldNFaC|UvNZhHvSvaCL*2{_s_UdDnBpq)>Qc&+{_ruHul_j6)Xm^A%-aCZqEJ&Gj zR(-koP(JehT27AHFO#I1%_@bt2V$yd@=ISdMB-^$$&pBQF=>DK`xAvFkjK}dl{6I+ zfn}f-=YoeN_Z!Pi8bHk~mca))ZP`M(;#KM>ZXc}cvf`~YBCUL`ZhbJlVD$wO>L3OE z{xD#qvX@~_Qw_sLaO`>y{SF13T|_xm#jRO`Z8QAX*~xKZ$`w+->|ImHJLKf|xzoqR zwx}(nxWa*?Nvr+NKwAiCSN*-^5O zaZoL++d!ZDP%Pdr%-3Q3b^MR@qmK)s7O?dSpVYC&?!OHyIj$izRD}=itxW8bIYX5~ zmtbiOpy@jrPK{Q~!7##qPSsSZ9Q7irGZ{Z8f^~3Kq@Vh{j4ZNV?^W2Q;NboJ$y`M8 zw`XI?l#FL0KbueZHPfwiE3?$X6QxKacq~C=ui$XC*-p@P2|WA@+50xK+hFgwwC{@V{G$HT?v0I zvg{2q)C0fR;uE$6-Lg2W4q6} zXcRt^(?XIpW7TCJx0%XG1uF-sDUt~vO^EU7O=(Xw_xHsYbo3Q;qp-3$@z7i;w}OE! z;JW~7=tLVqT%`}LI@`pzpYWbhna=H4_c!ld1Q8G2V0eJdb?`(f$MCk#Bavf7{>`=< zDM>;Tni~}SAsIO8Ubc#HDg7%l!Uc*SI@;5jpO}fx;M4Cf@n7eze-r=n#(jR;OsgU} zt8D&oZ&RB%$_k31eE!Fc+Xs4hV?U92t4kwU%^xivG(Rk;Os=n*1<3ViRsPJGx$Z*- zA5j}OXFKqI<>C|gg?dyRS)zmvllgveGJT8KQWBFs*^-1%6v`@3tj<4$uPBeCnjtt+ zM|fwPri^ORk`8g!toJ=sFq`9d#5QB~A5yH<*lU@pyan?%n`{k4I#SxYzk|2n=UXyN zSIzS|q-`^35|l&K6E@+TGmpgkXJ^k@aaJcjmcI~K@SQo4=fUhaOy&__kotd03u~Zuvd-{X>2PM_hE<`j7;vnJAVE^oaXO?gLzP2-g{oMNZp!m~NI@OK)ONNnIK!U+NH1_UR=^*ODDsr@#w6z#rZbGMY2j!84Z$gI2K z1)hMZ+(e?K&U?3rgCN;7xU;HmIaW`66|YsKMtEFx$Hkz%NdB(SM_7o=aRO-)gG+K44x7_ zd`Kh9L7PbNy{(MvEljJ%4!P~kja%z-P;;WLuM65pPWWtIS=as+(Tno2F~Aoe{zxe6 z_1U7-^AQ@r^JS>o%YU}SlTwg@60)@6>v2UPvPl|dt?GICwGA?gqKrc$QLW7}e)soL ze%kS>PEo{~(}o&bk9(JK{L7cq@~4NfrjBD%{}$OmpK~CwFQL0J58vsl2gilZOaX0_ zvG8x=%%(wl0yXWJ=*KmnOWOR%oTBYOnR3$tKk`@>ZL(pe5pOZScVPjs9Lp!+lg`R+ z_xM&xtP;K?#zP1y*$Ue4xUmyQ2GGJi>^CZ$Bl_xgtE`j^I_c0fk7|2bH7Ly!vbIcH z@%&#HVjhe!a`^DnYdVRbB79lDyh8r-iMIE{M`r^~^<$u^p5R|k^q&irzdzT1E?N>r z6$4ptzns1x^adwj7TQO=|NV`sjZUhnz&luKIsQg`cSCp0j6rx$D)9k{Pb~6(x>wMkBRb6 z2sJH~{j~@b4Y~FrEm)ON`3F*}@n34Wbs)4QrsKaFhh%4c_G}|NpQvoU=qR_@6kbbn z?%7nR(+KEAgQ{7aGtwvLq%_(--T!`lXGY-r3~PX3Q9nl@UbyT3B(E2RZV07un*rI! zerIGgx??eK3MS#!C7vSAR#2Uxx&?Vr#2z8aLs^@q8e|jve!_;w`f56{-%|npvllFc z@QzSq5y3Vup_YyEnC6Eg!QQj4=>8whQ5@fBE;${>KY$Q<7@eQv#^zDcQrE;)XblsvwhobPl1NS(do}8 zYutTZNS!UZry7q%6DOB#0N^vOH~;@WK$_D2$>v}LVaGBU3x#(=FZ$BhucWZ3rsHyCE z?C7H2W7U?sNSL_1r@KS(3vXy-?dz3QosQSz+{&1zTe$G6gBG9_a_`#x{c+jw zC&Sy2qJ=(SgAh@lC2%Qg$V=Pab;0}|dm174*i{73iP7_!*OUA*p=^iN#iP?>c~w|KEXFsO z`K5EUv#qIoENOt%*RE~Vr&CY&wDb8|{J}ycg{aSQV~rVQ1Nc>v*jqa5nDn*3>b}dQ zr)q4DD!K0IvrY&QEsYZIa~pie**acZiZIY4Laoi4{}_X`DlGP@8U?x_Dx?l2 zq^eT*x!TZ2TiAyun7O?z#yl9u_xWYN&%zh(`D*R?bDG{$HE^kYLqM>??eruhh5ICn zTk+`C$KVtwSeb3V@QTsjnH<@?+;yz5zY+u3zWe!Fqthjoh2Pn#E5&tB`_RqhdCN*k z{c^Xm=gPg0$Xjwg@Y)tiKy_mx<6*#@huej(fsnQhSNnD6Ba(3$%2qK7s|sFRWY*0R6Ye z@Z4|x{#E~OTzU~!$X;Q^#T){UuCSHjc;mTUfI*lzxoXO7dQ~S@g{?QFX((Z_0(s8< zy6;!@hEFA?skXJrQ_8~ruA_4~c7E|g4BA=C{;L5<>jxFKIaS$`rsCV0?nw`zCHI+qKr!#^+3d>@4I)D zzGuV>is?-$5!O)OLv858t4k$$M9|{EC5Vjk**d$Q+q%!m@gr7WwamT!AG3=i0h%$) znO5zwP2s@{T70fJkH;@(zwGEUhz5V4d1H~@!2J;QCN!jxi7X)JNf0`V(>&0Dz1BHNLU| zkCF+B*#mL7S7sgJU)aYS@t{x=&^X#ZLUllB!64j!g#JkdRYHAgP3rz%1gFa6pcaHb zR3x`Uo8|rwiT{C$^}MLW4oCrw`nxb!e2^X$RFGH9`k#y>h>ZUwk&y(B+5-{p57n~? zZVjmIZ=?R*l)cp}b(m#bdF}Aq5 z(Y{*^JPCAK~^0=<{_P7H^R z@0ZUu_~&QrxZ9Xhj`riQr^bGoawF=kv&y>?nRNu_;%yKr?1fp!cbFFK?y%m!?)oT? zBAl{5UAp*syPY;CP@oj7JBL=!Uo)z%5K@e`Mrtl5V7FPH6%Z`e_n*1UvMowB8*OYKTr9d#l87K0V<1rT?r@aes_$ z{WDQmyUb|1%Ez(v&8PTMZfIKZ`BQlrK4P}I84nxLB-!J6-wX+KO^U+VC9_(OZ8O99 zqlIj-dlb<82`BICJ^V1T^Dy&*YTcdMzwYRgerNaCr23Od_^Go4;UmA?z~J_-uPhh# z2WBU3Y)c`J6)gh&PCEvmz^j`h@SA!NHM5&lTb>bKo5j;KuFaPhqQLQ$T{wjg>_DZj z(^M(+B~haobJ|R^O#{~yh%*Tc;EE<@6%QHoOP2b(dgA06WAIdcEkn+g?es10G@a1& zM)q3cqkesC%&jzY=}W@Q?BC)G3;ab9?U%4Bo!%&9dUVL1e(Ae%mV>qsDD{^5ljT+-9z$-zGQH0zgl$%du^Xo80HAkYa)3RMNB(CyKS>(<&0PQ`8xm zCF=8D#{uTy_MSK~xAKQP-Y>GIULPuM+pjX|x)YSA62^j4UZXMm3gwlY%TAiQn3; zc9Nw6S``DnSI#{?VRUtQEBl>u>O84S+}D%bBLN<<6#;VN>IZ~RTo3Ek?H zP3SuP`pB9%E%L|<+^l>`F$}9uPR<;K>}6ERY7%EYT2u8VX#-1Phs#Zzfb}Cp++T-m zT2_MrIlHln8Lu@<*j?_52D9X%#okBi4#``^ew+j_^Qd~GG--%z8b9wNtfht@2sh-f zlZ`cS%FGiPa59He~;z6Gu40@_DzsE5glD^?BYc^;egchL|r$!vj+Q+DM zs6<^u?aKbBmiLhy94Q^-I}%=^W|+oLWzA#wA-IsGZXPCeJ{;wLnPc4W%vmM4QO#46!GR1&~opzwt2dyL7tc>1q5zntERn z!k5>(mxp-*oN`%|3>KcQMR$&Bbz{yv1O+vU(ocLmi>1{^8Uu>ww;8tb6ji@+LX_D( zHzkJd2R!ro(pqn3F_eN=BI$Uh4E3HV+-H!)a$a8gCw$;Rv=h# zFk(-qHRKqL8hPM{I-^AjztPQ zZB+N?PqSEt%n}`<>&WTsB?@>bdX*FsR|wy$u{V<(Zp-O^K2rm+3g+D|m1z&NZYsFu zMv&VtrHB z<~JmJE-uU3E}NQ)Gcq;YbmmwAg)D^MS=Y{zElf>+Ft(rfG%Yh z3v4#P!YWk!X-#?BhcCnGZ6ikU441`em!gq$r>1&>Sf1ka)Osb1U}-Hg6}}up+4caX zxdf!?8P@UV71SJ7jyl{(7~~J^Dc7kj;}s_w-ac6TPW1G0Soy`JF&#^=$|cH*jyHvU zYE6#joXf-3W+l+=yB8Y~vV9lr2tOvqwfTnaKctY5Ue`0zauKH%I);gGN2IHKqn}QN zlFXE->L0>lQIEIx?(uj~-o2&6WkmYPXF3l0(z)Jx(*L~rJ`chUS>@AZ;{?aAbnu6A znn`othaZlRS6dTI_5BYW%R|0_K2Nzhz=V}VOh{TGa~j^7pc+g{mv87C8LJ<4#lW;DFIbgM*(!sb}eh1q581)NUtWRHoZU?t>#fg?aq0VUNs>wc#{=X#nOlzD+CD1-X!_-3|*)eKu+g z-|>rQ2+>eD_v0Eu945PxN~XNB zc*g@TuyKBYPj~5Tk^PpU{Av9C%^_*x)g59bN>Z4|G~L^#~NPLs(qaL;>Bb*MiMTX}Sab^Y-s;(OcDyWyjfV0j#6 z04N;$osU$J>%H(antZp%5_vP7Xg z0|fV6Kk8Xo=TIUh^~+X+TEggKH6`Y%6b-!VUVJOGL-pg3JU4d6*ag*yN~Uk?8R~V6 z77vl0w41>YSxU?kq@K-c9mOfOA!htmvyWAMdtrgDJ1IFNx3#^gB21h#Xz$qT=& zHs|wbm|OW>ym?@Zgruz7@m%L5H1ia)ewi$A0-CRT4NaFDza$r+%dywf=1# zkQDAV3qWF{D-NX=s5FaI@ztU;{z|a6YLdmYRiQCfTz5^CbXB~>5-jct{NBJLH6V!4 zNfqd?V{K#3A4V2w>E(ZF_+gR=DYmoJswKudPrbCLW@=9JfjoPrfB%pM;$nHKD8ldT z=28ucVKHNQ3Lz4K4gw*D{(ZqLQ+7BJ)d%h-xMErNGIhbj-x3OvB79!{y`=oY2RagY zWF*jr2|Xgzk)J?R0g=S+jYB6{sU4+OXtDq1fui^qkHU@&4)|8lxe{8nk@MjoGYefY z91X});*VdVYF8}0tu2xw`n|dphsygs3~Eqn3=oI7D457$aVD#fxk2r|ITq7WWV7A>ya3ww+xt!97AS3PG;=;7j1Ns(A?& zDE`A{9R6Qyye|KrY&65}{@mx(3vqS(pNguib)YCVJ|!Jm{dT^_0w3AuIB($#_iL|9 zn~@Z`)1Ck&(H^|04zKJ(@HG@Bp{DDMP$r|iBuZdj`UZwl!kLC`fW}Tu2Z-<(zSvkm ziAM=dsqgW0$Shy`%t{xEVnt?Ip^(J%zK&!i?3l~pp|ns^+SH zGMX%hUJ0t504OIZ5=2HqsL%Lsa|nbD@{--rID+F*_V#E>DQ6mGo^Zj`Sl}zP|7SL7 zhM}@f-2;z?e+5LQxBM@~V+r>YuFU2FFcW8`C~gsA$G`}6d8f2jIxwA?pK>O>+EZ?b zUZpp=-h4W9M)(T5x!hX+PN_s+2O7oNO#syU@CY<=lnZL0F4#r`FL+)HL~KDgm^O#F;3nV1{IRzfMJ!v%O#^8!E$t) zZ9i#$IYLxkzY$0>n0}3)&}fFg5DasNZK>Ig0>D~K{p(<*Zc|%g^YAwh`i<~}AN9GB z^OnMHb!xwE_Z$geLka^kwd6?gnF7we$F1sZa^*=;X>$@L!JJ4wWP|s2M?0ioOE47D zGkhVd%N#DRicRHRVDZ{E&(?m&+X^17z#z2&nSlS%D2;Hbj52~Yi(t%@_3Y9#Yyh)% zYt?{(Dnr4aYZ((F4kA^I#0g9lPU2nYz%U{i_6!!bc-)eL**r9a6D+%V%EOGmhU2QA07m`zL_$#$wQb zn}{$-8KBmDt*pikA9p3IV?vGP*CzAYlm44V^0G7?<-&zrnK$1{f^WWiLbT)@eU8mo z&j?((2>$dfIRb(NU0ADqSbqeB4tx$CP%>-8NNqTd7-<}wj`k9$Ld_NH3N5+aO5mLZu&66P*h^=6_r^bjupld|yH?pqyPN#S_sulS z#8nDz(S0_ghPsJ1nL$>S(^7b0*Tt)rV!rfFTs8OM@{;0Cx^ibK@#y(R+ktvnO-y|AyqS8 z!z}i5h1sF6{MPvxuWf5?fMK$ot~E&AX_YbZeJ2UmlChL>QYNErg(Q%t2-vE*moaB( zTiQfV4Qfo_v0PAz?>DnE8vC@J0ScP@Gl=JZ1|?1GGG6ap^z()}qwl{_eJw|_J(JJC z7`yA|jbeZA*^a(nF4^$b?}~4Rx<9LUJDO2Ort6FWSF`4 zcE(`pJ3)gm=lO3sZ~bjZY@yDFMPBBU+8z#p1waQ#M}PY zEZMHyDJQiftp8BLHB2&Dl6{iIYq`scpZvgz{~v|9gnNW8A{iJHe=2nSp9(KBE<+~b zHp;m?m2*Xpi{CqqI2G%`Ui9bwU>u&Q%zw|m>!CIv-h+=td4Q@k{T#n2X>O+IPj)svDSV8p8)}EV1 zO3Ya=#bemIQJL&TcPBRwplq(DScqiBh`<);rw^gjGT~uBt958HmPxOfvD7ljS)Von zEye2uy;QAktRJhPt~KV2;G5Pgu#>yJ?9dr{f+<^o`l(v=TcifO3_a+5#$j*NvVTyc zgQ#I;-&Wt_E$j10$wq%ryPA!GsQJ16r2avP5rO=FP@i}9!?%ZJ8?Jk|eCRNOKddP2 zLARgDVqoxh`%S79(B4SVb|j1uLGB)^i7Z>)@1R9ywq@TJ&t+OPRoySrvD1V8w#qJe z-{dv>?l1BimthdOD(oNRO{^Rk5lsIF`LvPD=6!U^#;Vg_RB&RRLUbTN{q#E2H~TI25~$n*M~LwUJ`368{m$yYUWQl zwv(_dD~Ty6Tg%cteCkg>RMkJ|uRDa#0}at9WOSYp$kJfGSz#G|ExG+dnl=xfM)iGF z6nJ7&W(oy&b=Bq;Ey^K3|1>CG#AlUewu&J?6IuwrIH@+ltuT{cR2tpdzQs}TEF_;c zQ~!V^!GR<(GwNloeb`YOTIk|e2+z?Lm;JbWm;(tR_(QCL?Mmp{jJ0d z$2Tj8Mt1efs2Pr5C8c>x06uw}4nXD!M};dinmpum{l&U}vgfJDH!H#%D~O4%pZlGS zeBu5gid|mxcoH*a699qFr3r;HgM!l>QJ>QMj^*aOcR1udOAm|3@D*m3Pj^aq<;x63 zC1yl8D%w*@3)W?mKIy=IN)ut1=ni;I=40q}^}K3bDF2s7o!i2Zfxm%Wdd-;qVe%J8 z#dYUk>rDOfzf8*N9(ELj{b@2J>CGe$;+x41yZ=9vJn}YOQ*C=36+n@swpCbW<<|HXmr!u?ZPU04C-a3T_P5Od^v=!dy(vBU*8777_>&(H*abb&-R7drd+O`*X}d zhJtTFgV5UF(A-5UV0A*y-_V#HZeS(`*)(u0Ufi`otr2ic8?%1Y7>hC>mC^Aq|Snwf@k=NF5CpU1l`=$j_}to;e> zUW0im1Cb7O&i3x(p~L~iGoV}$PPqJCz=-W+E<7^(Z_$buFclFyYj7tLeG_6h7MBl{W2AzqW+YFDGZ1VoDCT8s; zst1CTK)+pJYe5&7Mj$wYwCi&~eNN{lbiwfm;UFSQ3~76}0Vd0Zl+dFtb8<>UD-irr zW9|&XEyNR>x!bK6!+_?*EqxN!RAI3Vl)U3oQ1Xu9V2Ax}o1y-hJiBbYzmiwoVcYq2 zVljc`FNFwwh`UDwTVwdt6Wx&3Myk{~CGIqEo+Sk65bAWW(3|n2tfC|m4r(&}%E#V5 zemGHpHnor7)$jY<@(g<{2^0#78WG+F-S!8Bj`R-83EEfBgd@#)UE>0vuvt2-pI%I& zRRi8$YFVrkF#e$00)v-W`Pdc9hen4CzQg!Zo^(xAYPk}ke zj#ouUk?e(-;*6zxIiJ_BlU>?$iN^C?s!GysI&KyCFTe5714PYBnsUhY7QpwoGpF{+ zCk^>FD zKJ4D*J6!*h(r@%@)U(9`CJP-v+$*u#E@c;1PlO=C`Au^DCl&U*3IGw51jzBJ z)G2Jl6vA9`noA5^%=)P+Ppx60u0v(x$0v!Qq_urbPJ6?zhL?;MD@*(PFsfTc6nmCn z&6Il!lH{nD;x!T6m(ShUibr-Qmo^>G9KAxql5a$vQ&p}N>61^R_};pQNS&Y@_}xSA zlpHyb%?7gx`-_Sq4V8riU*S{{Va+S(eb!q#*;3!R3A%6i&d?rp`t;PjmDsKQ-=&($ z_WZ4a!(P!e{Io1AE%I0X9AHcIj|$nkE}nhP?0jY{LbH_XX>C^fJDlgCm8om|MXzLR zKfwi~groK@%Au0PL%~_6TvOavTXh;m&h2GRr93n&fR#H|{1V0SG`s=DP+b%rqwVji;QV0OH>KEPe+Xd`PvknT1FB z)C1Xto8xwx|4 zYaH2jdO-`T5o^-lB@vIr$aPK0rsd&P-fAD`uojYCh6pP@MfV5L^iR6zhSNSZt-C8q7`Mm@}D-XWJrFh|YKba%h7uGG%N zzs?4p&$=u=4HX1r5B{r||7&hs^X^RswP{ATkwN**0l0K*f-1@eEe!Cuy8s=9p;Np6 zhI6v5=@;B_o|D>Zz=lsh^%H3xhF@#*eZMd-tPn9(-EX&74JcD%MVxTo%xD0D#@+K2m7)zCLwf53R)=Aukm^{rKnJjL z@ZB$m)6??m5XDMe>hPkgBezH5LKmIhO+a|NfK8|#*2!T?R0Wdu2$EH&-`(cSY$Ukr zFz=eylv&IHmt-XCVtyP(F)t$Lg^5duEYW3h&^!hLwXI-7Jwxgk1g97TI6^(qn>;<| zOudc^wFF~(P+&dh*psRbpdJ5yBr%6ocdskhXzqe>gKkGXbGq*HZU1;^9%Lc8_)Yih z&E~UvHmD)^Xg9QI{!ae-Mfn>$4Fzf*gF4Z-y?)7PM^c`3tp5gZRD1(C4EqDX;npo+ z2WqGdZs@q1D0*?jov%DY!J*wEFcQL&FDnc`XtVkJ<^Y8N@G-T+Z>M=w&2ML*4;R6K zz#A2^=Uk}AacjN&F9o`R)BS|b5PqBPh&DqZ7?ylE+;BaPJIB++JnM;UUf@HHNhM%I z5f$->4g{-IsejV%bNoeLWNIm}2@Nv8x77@2ivVxi8{qiwa9YTroxA5NY!m`2KM1_8 zcA%RFBxZzRtPG--0IYO;Vv-aEW3EHN$!SYR{D^7+muzx@+jzRqd6bWzVrXAufcoEuTVR7_HzK|WzEB_)h*BuF zn_#@cDFiZ|J%yk{P}W@VJYcmei|AW5MLR$*v_ONm$L3dYN~@6Qtwtw%Y!|FA#^Zj4 zf5)&8$Hra^0gHi)-Q5c%MM+f1j&cb>Z*&Tvq>_>=&yyS1;fY{vQ-yV8RcA_8wYUG+ ztXG*5#c5=;ZOW$&85K7{9TCjzRCVlJyW~#f-g#DmPM=_DJ}_7)paF9V_*gy;r9lOH zUnY%wQ>s@EOR^dt4G25EZ)a*A7*{Bd)Y694T5`8#WVpe@wRn{Qp1*6?msyCH0{l13E(i354EdhWBwXt`CD?aT$fUVYHBq6+0LW<-TGd#)_XSk zvFplFIT7TuzYZB~X8MQqkg(%|KQT=iLFHft^$e47fn4?+j2peJ0vbww$A?U^;%ZANzANN^ zH>kbnoU*`42&;0P()06QR4gDW+{ia7mWTn9&6+80Q;Rh!iq2q{!ukHY5&bIQz)n8yl|sIL7-rWTe~8ssRS@(d-J(>^+%i5 zY-Ex%ccQ33u>Sr+o3g~D-md0QD^*Ysbey&XTIgVo`1QVR`T)rT*0>tiOAi+t;@4i{ zY5ayUd(3e7QheN^DW@PeW~$ilD6!wYKj;L&Lt(&Cp~}TJ7F&9O7m@qfi}a*F<{8ld z%Ur~Q<15pwiopOSGD^8PO1Z&YVNh6bbf{`1#U#GnHmCv6H=5|>dUI52a14Nxi2*=^ zLb1}1Lq;U5O`ml*x+_RJj*Yf5fD&mWt}j{5X`O3vY+LR-H5yxas$vl(QJmt(-e{x%ovZcy!(PbZBY^uxg(=WfV4YdKa^q2*Rk`8pMNFk<4?% za#6@dp#u=oM4*|^s4_C0KqBbWa6P~+g`qDsj)D*IA2r!ZzMj%)?`Sbj>cxh44P& z6%95J3C3>3xJ9B{oa|4pIVv2-rvA4IM3g^O1b1H&DwHW}R9d@K1nevFBI%_zg(G9V zxGV~slZrjjVZL7sdN-Q(V|GDsmz23QJyyc}6csKuQQm%=9({+nrwztdEG2z=7eaE1 zy0VKjj;Pm8Kjj6qv`jBSlVdzW`_CWPI2sz4I_kgZLg&jR{w+@gKFn8-#`s%tK)X9pU^xd|*oX zvlG_2<*|6_;YMNNxofqPL)r)v>Q4o(V#SG#NDXtS_yK|_@}0%mwQ z!N8oWV8HPHd2V0R>hmW_3k!48&wn1__t8(uld3&_yvJ%d98k#8FHI6;^BGfS~%V_Zdsum+>5wAjaYjwX-Ppcv|)}2xqNkj36#0Gwf3>vxryeg z8gp^Fn6Y@QU8MH47pCr71bTQqb6H)w)EN5c30B?s7TVpXSO9%}UmNv(-K=+3#(eU- z?wMNrPl3K3LWb=ntvBv@MX$WCCS%SCL)k&;Ax$Z}p1#c;ZY#UaPJQXuCsx;<$J|Tv z@d=9iQgp;Tm(_-bAz8~gAu9t5KYc5aE>>T5&Ob0u4e?jmJMwJe#?^<7F}vH70xrF& zwax%C)xx}nb;Wb@i<1?-HjKnFUzGCAw5v7u<(AcXnp{pw$SLrt zeccv^I6Hy=qvsQoO3K1{C%1f;vAwLlxvB0a#6aRYo zZChK_2BRxV*<97gGi60rIl8#;_*rjSlPw``cD`Ekb*|NH(Sj(lsF8+&-EU6wcbzFiVE#r!di;RFONfpjb#&D+N&EI zibX|%#L3KM#2PU%W7m(5Tlc-!Gl!1%uUW}QzNg7C3p=m)#CxwL10fSDp1$5Wvao`u zM0vtQ$yL9;W$4u!MOB zE+OUI0bK)$JG0ligF#IPo1i9KP!s#jwXl~K!As};mh?N$uF9LKvE^$!>6(nJo76T# z?3IE2#U@!AjM9A*U9_XlG$D_;rkU?o&Hn$sbG(j=28{TubXl}pgS-&@g z*n{DL60*nqXVIL!At3i>ZZm@eQl%lp8Xn@SmQdxo!KC0oPn>s3Z?r04NVO&b8DXj~ zGBL_QAgs!Sg3vpQ`aM1VmV10yEn3rh=qeo+Q={SC-nN!~;}rK)`f*W{<%zmE1NT0& z>m8Al{jy=CLj|L03vae=(5VFqN|^X4r1{*OR(IlIErU_Gg%381be$3+E`?SNbomJ5 z+N;h>=W-@|(_Ql^TYJ+D_F6nLnhD$MW8>07f?0@I>z!kVVWry`zfb}bwAaLOK185m zbpe7F`Jyg#Iht)P#5|^(E>KotrP5C{;90X9uSbf(D9Yi(-lmTlKU)ZGDPd|K=5h46 zajfeH`@s=nZHW2MMn6y4eqFE-(OyQsKD;gLZsRBi#LctO zl14CORW(ot?J}r?L;MZXPlpRfZbC@g+M zsegn21Lf}n{*Lm$tH9-Kf_C`&Z5e_`ZrUE40LH2b3^_0e1jhLft$#^chB#zI1AvCX zgNE7sHLM$8kGRPq+3<$52Ep_0#~aSy2mH-*wNyRytS;F)Xc#(Z*qb$E8>cdv2jrW} zi|EJTUD91$s;4TMgmy5X_pC3YFk{o$HRR9{Bc{gG6rEA>Hqw<*-M!P$t&E>;00FC4 zS0RA*RSW*%uXzU%(nH%Urd#-jcsP(S(QZZwp)Za>gw&h4aMWde1H!C~-e? zI+eoTvMP2$KDxS4v614l(t4*j&{Xkj( zQaHQ_7K(V8|2Nj@DNcy|wkOXT?hNny{YW#R>`Y7rGoh?ZGq0mraRejR(w^U+pz6q> z_MRRr!G;yHVVwiK7fEBi&dqRx%t@I2>kW~uvax^IbLQ(u#kxL1Srq|d3;l~UkrWll z1q4am4P>k=NsgA0mefyB*f#}Azg$X_XMFGpsk0QyaIXF=z%3L$L-5<3UD);Wc&Qmia&cPnzJGd(krYbb1zzer&+LrWKGh2wa1qFrGCegfopLi1FxsO4 zZe}@Bqt(wl6^Gn6TYz5o&8t}^aRrWj;`Yh$H3C%jxkOT_6+ibUc=t7yDzc_7Cvh5} zpQsQIjq4S8l{&_Vn|PJjkE*-3FU}fe9b7`ua6Yi$T$s5|qU?tr=^Jx1{B9gCD0T88 zbOKaxX4*{Jo4LTLqOvOpS`avm^9T;gJ)((<1~p&9IgX%hLy*qFDSsY|u2N-%y>|Z? zDD3*FdHy}V#m4_5>@9%XTDC4>Gcz+YGsnyzGcz;Wi794gW@ct)X2(o1Gdt$Qj$xF0 z-+S}!_s`5)0#V!(B%>1a%?TGWQG&18R?PXnFHyrml^%?ISF-Xrs2!&RDQk4@*P`7FC15# z9}(IDdl&5|?`h519kF#@H-{cUoWc9==Dp08O~yR1&+d%{Ltb$?7GEbnS-LAOFe;@L z99*y6A*lrbCh*T!sj)nzavuE&eiU$n=SAVWzxWoC7I5w$yXPn%*W>NU3k}K|;PeSL zkJBGiQy+RTcGo~giV)Uzoz?3V;-4p--t}m3b3AxdC!GDdSu^TOZAx}=DHNAE9mq7N zy1qT?EE{=o)fs=h`2sFad6kk_bF3y_yvO89D3puT-f4H)ykbsidr~kZo;p+7Wyh1= zyka@9aev=v;xoqDS59`AS;9^ZC)TZk@PT z-HUn8g$J8A4Kzqzx3eR(rq1R`ce91ZP>;oquFB)LXS@T8UZpaw;%^rGEjH(de9O%f z%u5x}lRLt7@20o)Tgg$|%x7n4u={tagn`NmhS%7{Upm}5c%9yzzXzPL_d0x@XchWq zr<$UP6t?c<`dD&cH{N-tGDhgpod#$WGw`gqi18qvlJijY)$Mr7kyhiLp?qr9CxmPe zYrgWLs6*D*1N&O{tO?`dsm3PqwLO>z#5qSQ(Q6ZNSAhuONynx7e(dt@fcE_{{WoQ# z*iZ|6d{Lq`oe;|A?f$@?&{G&&XTRT7%$;)nkdL#H?Mn~;R`!(A;N{u9cL&k4cZb0v zSQ78l3(9cjDx2W(I}2G;I0>KR<0(!;k?9h$8%O4Wu+!$-i}TNkv8^9t?f6MQMN!ZX zyyT-NSXrT{GUdogVZvoTkx(7_r$2zBgqoY9h>tcC;i|fr$^Q;O@J=GAC%k^%kAKdL zNex?+AuG$eZTwLVh3(b&SAuO|(2_qM;uEyB&ib)8GX3d{>3flOC_HswwDpdhrYqC^BE-%#GzFsdp zJ~OS`<)NP&ZWr7SSnZ~`S-mHnw+;GA!`)}c-ww*DRt@|E%ai1mL-h3}R zOK7&zmq{xvLzcLj^ybK-YN*_i1QW4&d36m7JzS)P%DOsm(e=PSj|Vi2&fuDDX8Y`C zk&6gY>8jZVuO3xeA7_^;*Q6}-;eJ0t7QcEeUHC@()y(*^_lLRf^hSkWd7C%gnD$ey zW$9A=3)n9FFZWC=|JTvcx4^0AT?Me*=~#`{egcA9Kl@%N;7BuU*)Z)JAy!)YP)Nl3 zcX)RO?W9E5k=yUcV`RlkUVRqMNQixQ%r!nb_FsNO0RK#gG%lYw$iW+B{Cv6Y<66pM z8+l(U4C^Sf*R{{VFQAK*jU00Pgv@QU47Zw9^QFhDm$wda4zfFWTiBSIvG1@gQ4Xn} z?(@~{F0U!?45iIkyy*@Bu%!Wz=*QuF`vN6!l#rp6IeH zbg}%<<#KY|-BuFQz;D6m0-q|U+{8Dkw?`Q4IpeI01@7TwsI8r6za$7!#1V>@&MPjRG&yM&SaTDKV+@>hiiEj}Q(80y_^GxoU83q80a+in7;KcH6g0Uw)L6a7Ce z0NQ=!UEJAMLp=fBVo2KdOMgjCb#nYm>d(^EZocRt84lw+8|E(<*D)nS!n@ni5Sv+c zT#JBC?rW!g1@I>aCwHaaC)*wac7i|u|JeaJqVDs)Y`So^b7LWc2Y4UAw{x$K^FGbu8mR zlli&K*_lGLKjb%}{NC>I>&~;wQ?50~n=5R0Gq64F9_)LgHA_m{Y%V`yTvl7$>e+Qw z4W-wr$QFIUN(+iZD5-;_DeY*$SA{j|&mJH!x*()iUbkk|fVv`iO+-TmZ|#GL;t}dx z(uzuRY9cn{A!^$NYWiKqydHD|ZFGYSpHwSC-hBLTYzjT6gZxbk{6hpRZb;2nC7?Kr z;9|?VRr38gk1I5dj%nVu_eQ|+E(Yq&%Bibql%kLro8uJV6U9?#+e&epM!&8gE^T)U zRX68z@hYE+4tF+3me+hpn?*@mD6i2efz^gCIExNcXl0v5hN8eljWPv#SX*jO^{v{@ z{^D%B_m3!HytZz4M<4IJ0@vvQ=!c!b(x+QDG zwca)_BWfHU(zSi)Y7yAJ%Wwoz+^de)lMT8d)o=A`f8oCXy;5#HFw^Pgv9 zQR``$Jbcu4j3IOV)ZKDv9&?g{o#z{BR+Ev;8JW7#w%?K4l^b+$QrQa`U4-+SufEioRm z+R5DFt0P`!n4ER4Tt^J|#T%2o_s@Erw@jq%-@nsF{J1uVEnra=M$=&Rv#&IwE+yjuj*wb!8lS89o))ab7HUUfO3@ZPC8_Baa6Z`Y7fwPR*GQ&} z#GZ*)-mcw_uf1I9ikv=@V#J*hkz5B4O5cmT{4k-_6=v|BUMtM**Y8p*70ERLttSM* z@2A=sEJ^XnJqMh*CokuaTv;-Uxl@Z(@;7ul>O(=KAuW|nGWx_n+y8vLqGeH`d(2Wb z7O%2f1Ar31yfXrfF_eZ7LLZRNh~4@}TZ&alK|sXVS%xtd=MWEQI@cywYi5Y904yLd zOQNoLM=Tot-820l!VW^??qM)=a*-Bd5EzsasAS^?p^1f|$r$F(XPpQzOhh!1nYzDF z$m;dc>&q(jt;74X8$atnj()CWA`_q6$BrqI2c2biyPgN2O+I>rMl6HgBV#sh30#mODXdJ)mD}{ zTw8q+g%Hli%3P!gYXCd64}}47`7Kh*FTQ&l3e))VNfcr<80J@0&(yS2!ixEEoAhtA zCf#Ds3Y36$(1DSlMG#R47}T`_Sf^Q>EqaZsOm#dm6!rqw^#wYXyE=OqR5vrY`w*DR zjKTB)#y=h~_?pdudaot|LSR4;X8KW76^D4T#gn3Hs=dySVn0)hgFx66@W!~{&23*=WSU`38#9u?DP^phdtoGbc&P=X-YOKny~O zHznWV3WtM`g7I^JUgH*dk5uY6P1>TuWXyHgS!3cnuW|*$@UeyP+M;T)hp-0erVqfN zYQ2u$Ksp{tRtd>&JjEacMIop{ zVfJsAe#*`rVZTD$;xa9CPQPMV8=8EM;$X%kL*XWA_i)1dpL}G+AWW#-m~?d@CEr^R zNdsf$jeAi7KB?lcw};?HqXdk^A@CXf&{?QJ0rfAy#W6XzCXh7XY5&t;zW?V20}zt^ z8oP6Te7Xb9`=)Qc06V@h3z35jo;((P`5L`MJKjbX zv523d#@Lb8@l5hIrgz*p7L7R|zecBXCMFtFk~2|rJe+6nbl`S8TlYFp#l28P4Ba%) zUF=c<)n_n~J*`n^resp3*+_k~HKh~mhy2lt`eEQJ%h5aDTtCgxH-{s(-R;4KP#YJI zm@u&DIJ!8tc{#HgJhsz0M%-ykAVCRl@I>R|d+&v6;P-tfHhnekO&ZytkJaEqfC%~^ z(L@b!1V!0$MxT+iewTtEYxhg`skqx$JL=|T?~!}|aY`{_6gvYeHRBi?&-8S|hXv2W zu5L%!(&pxcx7&AmW_wz}Q4A7vk)bop_z`BMW&%ubb;d{ z35=xX360#2o_i@&UEa{e-@;aRdRKn{uV6aun?|X<$E;N#(?z1E;qLcpIi$KBoH{=| zMGKJ#hAVXkC6%n+MBWTW!-@Ri&^j~4$&0iWm^xwuKXQY<*JLZ71Z(3AYu^Ia&|XYB zyc0R=p$o^s|3v9rB_7?Q$V_JNSTDMHnYobgcpGCA6*c%MIY;UCP3nHXH4}vS^aRCO zxtU+g^_9|9h4`@oC;7QpaU^&1%UdGW-Xjoi_#!P2Erywmk%4`NnPYUWO*CQ9$6emz z4d_~WR!>IO&CABmmzp|H`@vRYKV|c%p7+Fs9&-aB2~b0ixAiG2xL<&vfp)W?J9=)K z3I)T7Y_+dQm_ckud}@~yn4qc6{}(;yNJsDn1OL?H=!Yvu-iml}L7{W{cyE4NB)y&X zxW9J@&-*;oh)AobY4b(p+vi=8!61r9l8#$%F+puP8qh&_kV@?uW$+r*@DmcB-v=u` zwEoFKT}PVPM7H)wuLz4OE8iH-=|EY2qc7EC*U6dop%Hrg16;#??ba0-30cB5 z863e3uMk(sDA{UM({R0@x(;EU!5dec{SU@V$6yp|KM`hQh?NDiJZYu~N0aOG1xPU; z>E0=!b-2ZGxE#vNIVcnx;yeNki!8?hz2db}Ds`9@P(v1D{v@7NRNE7&w?X2d>5AujIUVqE^OVyrYd zep|Ox(Pm^Ah^SDp|JKprKi48^UwEbg&x4~Ph##f>1;q7f|UnuJexyj5~#?d;1z)cudZRv!!9fawwUSp?Dg@!9W(Pqyya6oSl$sGq~Bpnviq)x6FhdNq!YY5kK$J+)o@j> zfqgq-3T%ot)ck;BIyQo9-&Q*c5qHpF$y0~ZP-hHQaD!GfgP6EtfM*qa$1yFl1g56a z_Fzb<^0p{u&1U01iju*%ClOB(Pkc~3nmV$@y=%)UNwj2aVXNRfN#{Y7_4VO9sjGr+ zJYt!gJB>8sDOH0=JiGkv5O{^6?hrhj4)YPp{O;_lpu503E-(%y1Bue1t=ZHV3L0kr zIfSFfA{qkL=K@>$qvfB{=gDoI;j+1RDr!ogM~r$_ct?z8_1_rji9nBz?1+=GlmDo= zqhlldTZJcRu!VtL_>hd+>-*iS(r1-_=}^r-0qS^n{kM+yiOohfvi}DO_d@M#zmdlm zrBoGzuYXyAp8m&*CzXFgJe32jK>vSOF=~7mGI9uY64sb>XX8WRIXQK^jyJMu(`$^- z_Q@CIb4~mkLzc~4=Clp3Y;?1|eFsEW-?yzF7>3j9Z=5>~050ic^+YSaTs#3sP#YV7 z@tfx^Zmn#Pow8Z~Fp8-?-q~lB4}7*+Td5c#jW-~Flz(8!|{2)jf>Vp zaSCN=R+y6YGg@_|D|An4=imDvi7HbVZaDAL8A#^G@-XZu7SfHMBbx}sTmmN(ZHfs( zgoh&LR01R!Itnn88!yme*5XBq1Eh-}wcc>to6PZ2mYUPgOM;LJLT@{(IoEyo8JC+` z5KwG+NR|?{hVJhW%)eQNbE4Qv-zh}75{flyPbJz?OoeLwL2Zy^V64MzZoDx0gIXP+ z^)J*Byp-bezfc=O69yJC1s-y+Y;|y;!Z`_0Y-FnU$~AVCH0b@cz#Bq~RRVcdS&NZ^ z7&;^~pu;({VHh!OhtVc=Md-VjR>Bc+hw;KWb^Mp(l(}`Qm1&^^D-8HfQEYMO0yr_% zIvH0ug#N=-*>bF)x(U1i$^=m+hS<5*R2q_0+a(4}0w@Mmhi)Z2MYJJMDn8pE zMa>{p#6=FRT16`3aH>6SbEGRQy?qU(Pnu;TnOLEqCWz3%I%u{$bi=&KnENCv!qub| z0P5R`Hr$pUW)qyU7b4Yr;#QvD@CwKbH0CC2qc}~(pn$<+u#6r}mu9eR)nr*rD$|ho zhVepWjTDwA9iljAkim!XkYHLUR-Bf&+-YpHM1iJ>sc5QaU*M>;sHf@`(J&0-0fJK_ zIZckJYw}a{v2BM#5lj$=@fiEh$I7!9SIRMvN7a}K-NHGe4cbb#UH&&&JPh0SUj0uR zngOzPB((1w4*FSV*@b(E3x0O$Cq6ekUxIj`St^WTyICvJR1aq+hOv%nFg5N%FW**z zdju;#AwRcBx$2J$Rx;IaePwvq^cmAgNp^$PF6tDIA$`6~T=$Uhd9?_waV|;}MEZG{ ziLl_8on*V2+cx(OPFpWro0%`gC9RE)(ahqF3(H9GC)sOO!{B9AW1|*B1ZH6IVwB!0 z5ApqlBqGTzFp=ebx#-d+P(o%D%Eqw)RCqGzmIowA&(!IN;>ri)6{;iWk!GHi(#i=4 zYOLP43WRkY1krLX#C*$9`D*$In64@*y=n-P$u`Oj)DoDm3~(wE+EMwDFI6)BbQU*a zl9-ssIOT;2YOK+g2N|=U2JG@9|MXvU8mnRxsuGc2H2IP1Q_|%oyWdWd5~t-H9?59L zFjJ-{lq4vF(A1PCaxv5?>S?4g%^3sf&S%XLE7J#%an;q*P4goqRYp8lwws@8dX*4k$<8V!~PSM z1Syn~c&VN$9Z~IH7U4DQ*7HF$*fld4lXz6G$027d$Ov?g6BnR4Da7D3gKxlQK{Gtc9JyNTv~&l0-}# zg(4=epk=|YNb?0gcJWvfQ(h)1;_OT;>gHGbsd~-#70PltzXO$SwPsHdw8>=w97|}I zD``d>muTff$oWHJOGm`A^FxuCPuy!E`^6i|y21`v4iw57{TYQ(##nQB(wm!x#W(FC z*eDp>qqep0`?UULUvH+7KW<$>H3{X$-8B%WWWlb{FY{6`^yWc8N$`n<?hTzX;I5aEl6GH2gr^gW64~!yptdO5~olPjR@M5R#?ac1m*gd=Aa~ zQ3c)Jaiw4Xg;bX%@gl5d7q9X30`NW>s7zYkCC}|%y!A#@F>FMS=)$o-6 zC=G=JDy2{ZDg`JBg2y}YB`|JF!&+h}%5LkJJYrK2Nb{r>aBs4P1%np@De-zNFvOAa ziw_)vV@dNoEnSeLIJHl-cLxv6{)Fwlu=U08Cf{>X({iSvuNEE*2v$8mP=xADlYvap zRqF;bMM-lK*GWro691kS?44xx*BkL7me{piwj^XNlD#!msVKF@AC?w9CCBsXlShIL zxc@sWS%sK(0>)oq`7#bFexxwa`3A5`C#zsu=~uc`3jbycQGv`%tBRtt6K+PJ%LA3> z$tm};DGWxJYS2V0G5i1e%?FA z6^^ADi&r#UTZ_DRr@S))R6b@cNFwkmUSau&xHDpN!J8`d=HhM*N8Dg zn(XtDkk#;GZF(#a%GSSIq>1|PJ;a{Ilg~N%N? zx`ObFO%Dj$sF!c#d@ zT&P*T_Bd$1-}Ltml2BabLO6>hs$YM0i{&@6cmH2Oh&&RnptsPAtdYNfQQkM#ZtVn2 z(|(wBY=sK}0}1^dNFXBh+by)2o+$9MVf@3yop^pXMKsfz`aH}_&kLmCLjHNA??w5KjbvZq&Mu+1$c?X0TQNo~5b#Tki^u=ZH~)NkuH=^(PFRxFpkDc>QPG%R;J|BA=8i}A+``7xS(=|4R%w=_QlTGkXIREF|_i0ONug_h$&#_tlq3 zy#&?xPiyen&i;{e3ytptY>j>7Qd6KDCAc>fq~oSUMGq|p?tSEb&V6KyX=Wf``nzdln`RHag?OFR8}sppIzkD1 zt0rVPP*4nyQJ7O<=)^)pMeJ>aY zjSFxk{%pd07lza|*f8}yVvpm?nl;gH)v=uW|1;PpKpF4F{GfH{qFu=1w5k&Jzv!$- zY^@Q-uKn=wtj@s!xQ68%D_<&%vHP<0TVK~MZbD)0a(uBS+2hz?kB7=(jkn42kp~pqv4#{Wv)d2%ecYm&~ob;Vh_EBcMqAvJONBAlicPpmnPy31-f5 z;(0bVfL+8Kz%%2NndP48DVx?0B!*Dd!OVZ_b{PY0P7juS?8`foa4`#gsRf0O;FQ^Q z!O<1~$upymC(SeSgiu_*=%WQK)I%sw2~WFWDQM{SrB`;#^jql;*Edt9o0CNYXVv&| zHNy-@z-{7ENV9esfaY+!mj_VIHE8Mlj$DO`Ra z-H^`O+XM09k8ec$D{uq=(xo|O$)|e%K@5Sw5+A4qY0g6R#-m^}dylE25o&FbmPvaA zF7BMlI0iWnTBI6dF-xc&&7HkjXxyRSIoP!(tanuqALq4g> zz&-Z5)To|PkX^~qP?F7v(Vt~#pp62i0n|_}!HybYi~%|(c{=;kJ=ir;iV!X1_=(x*>QXW7?_vZjHZwB%+S#L+OqQE_p% zUWSXPvN_VE%-&!wEj3xq6b<#Ckkr7Cyk}`HXo`g_bXArfU9h6O0WM%i;s}lwbkqk8 z>|fS?AhO$%itu)1bE)&vB3K*u@De*H^IC(uDgh2jRwthppoHD%spo0ZAub`r8A8p2 zT+l|FZlm8kX)Y4-v(pQ*lb3K9Q~@-yh@!l-dREykDm3izo{DV$Jne03zig{(T;iCOkZNtcFNUl|}d?{SE=(^g9p4taFw z@?Gtyn58)6>$^|8#8ENgv9_#7(eh-T?kc$O6Mi|MZ#*Wz@M7&Ls zC2tnmm^Dj^cc@W>9A@7Lr?G@!g?#S{j(xk9rlLx_G+QZoHP}U^eU9g-SV@Om3h#CE zjwxlH-0+HR^`#t`E=nQ;(?vEf7!Ks4V#7%pj8Wg|?bZ91{QPVfdg{%n#7|3DlQNpg z=$4nWqn9waO)vz>NmJIUDM|n0#KrE_?9WR>?GkTGT_gn$GM_s?ggg|U!yYqIZ>I#X zD00GRfMi-B7vW_U9{iXugr+Fgd z(wyjv0G=gUyn6=8mj$g#fX>2fi1%^gde~1*Xe9q+ft8X3bmmC>KhC(IK^I`xyB0L! zq#{nr5KLRLx4H~^QP5D^(^3o7eEyBsap)A$DW0g14HprtK^8D&BU7Pjx+b2|#pi}_ zD_oku@4BA#iT&%Uk3;SkZI4ibqh6UpO&^e}UW+rO`;~-N5tdzNI!_5ImA1g`atig3 zS>bvl8owxrbq&f3`PXCF9OF<8 zoHu4aIJeOd)X1KOD}HeeHi%`{uh?S3TAw$Tfw!c51k^>R9p$h&t_4*XAR)=7ja?Wa z{EY^E!g>$a}z zcza~%kzC+hD$Rf{N!?Ab+{w!3G;m?yk6YhKFD3@MO-tGMXTN{#@~S2+36opuD2Hdt z?2C_&YNX1%-uy<5Kz8Nw)}1yzKM%s5TEPEG%uEREYwaTC!_zFIBlI2&j6i#xWyklmar1ODqG^p8{idl;@^q^XC=upIsN$X*n!+n zA>6XmbM-mAP)W}MCYJM1UpU&)Ys};R{8Lzf9r3jxrFUV57dHT$%Yk+7_#sdc8vq=3`lO{xeiNli}~60P$WBv!s?C`}k!L96XAO|d5 z===3(g^qudVq>_w^GnKk{rDe+^NNHd4f}v)rcPl0tIU+Extp7{gXLfAtXed-T)y*Q z^zM`yweMNLwmQon(4JA$Z!1vQ0XGQ%Y5WRe|G=GyP@uR&z7aW*YLR|*iFx<@t*_U0 zcubKw8}V~KVv30%9CP42h&U}h9oPN*YMI@uF$YU(cq9w0kszNx?$^%us{=t!BSxDH zP%jj!qa&a87LAgm2->#(h>mzTh(Oy4-iBWl+~|M@*P79i!$>V1CCMveG)NJ)%gyoU z`W3P(y=Y#>77iEt92vS*TOHA#2aFHA&bmn@47NyvT&UD|IL9O*>ni5m-0y}xr0tJ@ z&p$954yG@zhIXS}eyV8JVVxA8AS93mSIe=k#ZFprco>0JMO?gddVPOSNM+z}ztAZ>3?N%76u~kZXI~JA?E7-KbvAi!4 zvmMMvVYV->KoM=@2|yB|T4N2VSUb`2iDkTgG}|`_UwLbFROMj}p`Y38#sG{&?{HQ+ zsw^lFA^alaIWLeCJC(IkL(R70hj>WRbJYOV*lHAgBis9pgzSZS&@NZ*OetXl!FTcj z4#40cMIyw6n=>3NbC9-=H(W$*;@R>Y23t(x<+&LYH}~G%kW5ydWluX|B86axS=6CT zrhCsB-=J#SZ=x0<-b_Rf+Xj;Exnu+l2Yx`dWI>)|#f=AOJM%8i#KmCHfipY~0B6cc z?-NS%T_j#hu)C`TeIa+x4nQm~dEchp?@^shQTU_6yhg{ZF2d&QKz)$snxUc|IoZ3T zB5G3?cGF2piLr8)f9nCb>Q}Huy3YcESbAtn5_|ZU?R7Zx@EX3@gwHQz+#R9MZkBvs zszWf9E6sfxU{Ay(xpndR*rNx+ow^{q=S; z+MW^NceK9^oTu=+2WNgcIVxm~QVxoe-;*;dc><=ESfg5Qo?%5{Ws*cAB505@zu?+L zu6fq`Rpt$x@gTPRU;3<8cR>HSyz*4%NEHNFf~pnx{8Iw;ucC5a%uQ7P>w=G&8?YH- zK>(Ta?j1Z#R6Q_@W))3j!y)WS7HLIxBA{e#0WOA`dHKn%&4ttTKt*~+TCweiH^a0m zQ}AcKJsXt9e*Wc>8S#&>Ez?mN7=D--tjtTeAgVKS2nwnmu~6yR3L z6S&d&1cYl^1oQZ)Cg;=+!9qD(fI?@oaszA3+SghdqJ@~-HX5E-*+KTnCQ$qp&ubAW zRK}Uf`MB22LdH|*6J;>v?y*zHSr~J_jJtPYv*ZV9o=^dzCi`X;=Wd3T@zZ2n?H&MD z&nYK|b?^e0F@vv?Rm{}JZHVKuzZ61Fdq29nGa@2%2`QHC`^kp=9ppb9`^}s0Y6`5G z`5O)d1nu9BSpZAKsu`Qu{Z%+~D|Nu(I}5?+kFSw5Y1y)NNi7(tbfcloQ%LyUAm{}3 zSQ`mf!W|30zwz6}v0T;5bUoO|dtK2_Q-B7-;JS%PgOl=p%s!iZJiHO=w0&V{q!Op2 zYyZ)Y=fp4w&RXnq$WQ#zGZkt|8}p1J6^Oo*fqJyr%B-_!LDR00+L2R51@Gfs?Y`-z zj~NX+R7qtr7=r^hQO}j;a>&LYM0IOUq7}_aI2V4N5e3rT=!)+d9t9(Y7q3YsjkCws zvy(!>78_W_8nZlU?-jnGHg3!yA)L&nYoUBR#&Tqfe|m+(iYHwlUT$l_{v4@7@5&Ex z7B0~`5_p`2ij9U$w!bkt?qH~;@$FkC7q3O>yYDCznQVz#G%I$baFL?Z;YR+UY1hU2 z0FIo*gBKT_6{!VBW(`HQl`@KHWzel`mXSOavALcW6RkbC>99MQ(HHVY%#erTw-b!rO$QN$=Rj7?V_-iZ zP(HP>cJUNaS*wd&l*EKDjOS2W)iYS-ILOQ)S&jF>eK&b`W&LPr?=zh4%M)~vM~HZx zy`w^tiKw2$XYu5Z-?F|-6>2ruRWour97w$vOjRALuHScr1Y@3Q_;K_#;+y+xS})Z_ znU_MXWaZb}|4}kDS%j>86j-geiw*1ph$#XIPI zWCd>*>;;KpN$RSFcHefjPQM+l4hGv3M!J2ruD|sN4pomfrJXU1v`-xTaH<2wxU zgmRcfP-L~1&(=I}?$uu&AE&actt&G*Aa4xnRhj)h_t!5R1wZb?s3qDFp~7S~LA=9*_)kGDl@#d=nG}EV9Ye})WSd&a*vQ4KeU*`&norV;e>%`1DMOE5i$uhAW`Xl@e z8Z_p}WybAkHbo^qmrbt_jD;YSvXWsu5Da^g{$k3qq1#GqaTYPNPpBvpOYip%iQkA{ zpfF3icGo|J9Pu*VQ3w>=_hwTiSt~8n60AI__ezZodEXE3j7!jJ6x|v!T_uRNu^5DN z#Z>MIm7jnq9R6HMYT=c2{$))_qwn6VOK!t1+si=;TdX7@t}Op%VCCMsx+-a6P`776B^oKIg0}1vq1K&OSGm- zHW6y)oXD7VTD@<{=hmWfmWs5wpUs6e-8A0^10Bn^B3HPv-1dWlT3fcuxfqOw^6g^| z38j1=!8(XFYfuv#c3SNQ7Upd(A;*3uIQ({ZEi41CvC~PleafyyUx12^QW)O~=g~`P zWx7Qyt>ikNq^xRDw_es+(n-ftFAG0UdTd~*zz>ifg7+;vY>8Vvgz9Du%WTik6uI{Zk{dm#UA z-f2>@s!{)n@H~XZ zNMkxJIEd)mjgZ*yic#J)>itFp1PRoP{ad>HsOyCnIL z>F=W2G%V?s;ZLZzB4nhJ7#;1JrEQz2pFhZKltxbro1Rn2P;GgC?$}l51e4K+w}g@|Av}NWmR2<_ z^+h!R^bAi)bH+cLr}Kd#63fDJ&%*$u_fJd&;>99zhlA`jWCf5b*q5bX;=Ht7qAiiE zhj&EC{d2^`$chV%pB5`FkIYV_8`tJoZS8qiaKrY5aoIJ~Ok=g(GL9R4hoFw`9JnD z7+_uEc;4#te?k8<7t8hMTP*|r;6VYiS9IX3sk^J2qrH~B9kaEYx&2>1do|GwaDyxu zAU}O2CK4w~`NA<4RZyr=3*c&HUcN&mb|)5_d~ApJ?RtE18auXEcn2fq-~+Tt$hbPe zd0$Bah=1N63*V!JT!e@~XV;=wsai^DySIBlk}85@(@jiZ9O$uPEkS4mgIPLNAfDEQ z!@i9>;WP)LSB?Zm*=eSFQ?+p5NiiQ=Q}(U1ywXT-7c@6*pgATAAX1>h$2ub#A%l=a53u z>fB5($#M=_{Bm9NX~3q#%<48mT!aj_gQd)|W`YrgK|P%$bt;%wi^(+Cz46+_axSa$ zec`!}w2NAmK$864*sd6d2zI-{IkP*6u+!FmoSCk<3(b@#>@mH8BXZyvcTIX0a*T|}?emWFSj{376B5N8(NV_C?dfK><#a2#v;(&n)X|Uu z{zQ(@OuySs6c*hU6I!yVGY(a?ez%acI{zA&Gtz62U2(B1;vBWFM(}VZ;r;YN$6kqsbs(Y z$0#j+E-bx3KDzNKlXy4}A{e-PQ_TJ-Wf1_?JK%&vrmC4U9ZsSnWnM!FNl1ht+LsMz~a&$$bUU|S- zb-93*T)p2)N+x6a!sT8xsz5wkE^?Zboyd{agpGa{E4)0ASB{&9_k1N;0g{_i<|)RrQf;4Wn zSAT}$SMIp@93&&odE7s2!+BBwljJAxJ_rId5x5?WjKB)S*xj-DbJxwjkZck3R7C(I*I zR1KCfBe}l;JZ^d)Vo_JWTTCvTewuVqHJrqZ#1aMIBlO5fnNZK(30J1{?W(2K_R4sy zJ`BRz_RQ^F_uR-Eh{yEYi0(iS=xgea9)@^JFhe=yVDf$MLGK-iK;ifdhR|(+9&C&Z`Ez@C)z?%;J`*HKrWZ)#~&i;K0?FTj3T3-xq8_Jn%8+J8M=FM`OxGSrQ? z){o$7YgB*>Wn(19KFu4lPW@4^{Q>{a9;*Q!-117p)(Kr5L$J%6o7R2?g@zFWda#SFznD>!9*oQSducLPF=L%`s7#Uq zdM1_em&H^-PQnYwW0-)?M+1hMTeh>(d?25Sgs>De3OokRD4ESIrvQc_`0eIaF|1N> zg5kHzt@XFw?E5X(SzhlGhr+Q!!=br5G;dfI1aNZ?k%#8qDTkI?C!Q+VOH3{|kkht~ z!95ULFe`+~!loq?old(BnH_kB=s=F~P>wWRIBZ@5O#dL8y-w#d7#0jf={Zi`fuGO@as&EBD;dyzfGcfSRZWRSy zpe9H)Thyt%rrkqVjq2oi;XZy^txCVm4uvG}Y@*^7A&tU3M-p|^XSX-btF!|J&^yMM zH*8IwR*dw`Q~1)Z>|hw3Mmc_OC1QF*9VF!4!9Kxp5+ezSHpD!^KjRn{GhpS>r)5^! z-}2N5+Lqvjp=)+d5{@?|)S-)gqvN!!RfS3BTmH4VU4I#V)c*(#o`Pv3Z-PQmB00kJ z+h%g9!z?wLSvf~8)%%U|DZQ7GKSh6(|)zV(xb&m48>@v?`AWC)2$f1;%-biyB zd;DzBNHjbIj0mCN7E17x5g2uHAS5dSnOFC27>EwU1Dw?@`xjyG?@+6}7{F4fkzVGX zg>qu55Nee*dGHs5rLkC(e7aBK;n>nJ;zd~!o(~1t;xLL@;-_)bFQj$yYTZARe4`6D zQmfQONPS#S$R75(+K21=-Jf()n@QNoWJ#K<=mIS~h%}tCm~^qT`t&|79!<31{;~J) z)n3WH>HW^~mv1k0UeD`9aG=mY-f$ImBukrrqB8lmFC{W9ZO|cJ=WXgh$gJQ}NTQo& z%_(B-EWpExI=CezjjrIU&Y+E;&HMVM>9*ar&HHU86Y_UT2lTd}-~JmDSNnp{=xtdS z$AX7XE{;w=D0`~#f5ZiRsawLYOZ9@fXaNBY8e#d)GN5FKW1DVPERxz| ziWwsPH+-%(^#7Xhwx@y(*Hs(V%;b#bo7brv$MRy<)4mShjmGm6_c2V^^Rx2R`V#JW zzRMR~?5>D=Y0eaLPoVeTUCG|KdrcqxncncZ{C3#3^~YWYZt+XO@<9y-HxFFCS#dtu zjsJs?8asc%smO+{bqa>nsX1>q-N+Zc$!E4MVcv@ekLH9fxhR~l^uJtQ_63FQ(#@Uk z*pj)rHH&%#Ba{zI&U_&!(Y^E2DusWEsS$l2tZGk9xMCvmMuJP{aG}n_ig^i{XP95G zCp~HJJ*|6*H~z_`{`jdAx2GL`HidKA+q=qh+Ryo(SucFMeMwqcugp~2%uiG1>|SYB&P zmd~qucJukX`h~@(uT77uOTE2%{obF~Zd>20+@Ae>UBBJE&nNHI{K{H@zd!cZ-+uf5i%Ja-@J_MIh`qtmrrM%h6(xSyEVyyv zhsQ;whr7gH#;$JbKOa4LQsT`GmDS%TaQ-}3to-VT^U9gR>EC><{Jn#wj=6 zbF1nrE54U9c^1m)Ek6sMdhwNP;9u6nCY7K@^S8fgfs14ZE46AKEkxti&!aPVSaD-^f`70vP)z<>bH8~}|d%?0`$oA$g0X(1z^ z<)?vG$)H%C1sqBTYlrw8*$}Lu(7Rg9x?7)tAug1afgi=BYrxP1n^as { - private final EarlybirdResponseExceptionHandler exceptionHandler; - - /** Creates a new TopLevelExceptionHandlingFilter instance. */ - public TopLevelExceptionHandlingFilter() { - this.exceptionHandler = new EarlybirdResponseExceptionHandler("top_level"); - } - - @Override - public Future apply(EarlybirdRequest request, - Service service) { - return exceptionHandler.handleException(request, service.apply(request)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/UnsetSuperRootFieldsFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/UnsetSuperRootFieldsFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..af8b36afbb3b6b7291690626d9b16ac4adf3f050 GIT binary patch literal 37062 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 FcmR6CHeLV# literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/UnsetSuperRootFieldsFilter.java b/src/java/com/twitter/search/earlybird_root/filters/UnsetSuperRootFieldsFilter.java deleted file mode 100644 index a3f24b7b2..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/UnsetSuperRootFieldsFilter.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.common.EarlybirdRequestUtil; -import com.twitter.util.Future; - -/** - * A filter that unsets some request fields that make sense only on the SuperRoot, before sending - * them to the individual roots. - */ -public class UnsetSuperRootFieldsFilter extends SimpleFilter { - private final boolean unsetFollowedUserIds; - - public UnsetSuperRootFieldsFilter() { - this(true); - } - - public UnsetSuperRootFieldsFilter(boolean unsetFollowedUserIds) { - this.unsetFollowedUserIds = unsetFollowedUserIds; - } - - @Override - public Future apply(EarlybirdRequest request, - Service service) { - return service.apply(EarlybirdRequestUtil.unsetSuperRootFields(request, unsetFollowedUserIds)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/filters/VeryRecentTweetsFilter.docx b/src/java/com/twitter/search/earlybird_root/filters/VeryRecentTweetsFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..a5de18c939670ca44bc3f5917ef92ad9655da39e GIT binary patch literal 37201 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�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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/filters/VeryRecentTweetsFilter.java b/src/java/com/twitter/search/earlybird_root/filters/VeryRecentTweetsFilter.java deleted file mode 100644 index 6f0678a1e..000000000 --- a/src/java/com/twitter/search/earlybird_root/filters/VeryRecentTweetsFilter.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.twitter.search.earlybird_root.filters; - -import javax.inject.Inject; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.util.Future; - -public class VeryRecentTweetsFilter - extends SimpleFilter { - private static final String DECIDER_KEY = "enable_very_recent_tweets"; - private static final SearchRateCounter VERY_RECENT_TWEETS_NOT_MODIFIED = - SearchRateCounter.export("very_recent_tweets_not_modified"); - private static final SearchRateCounter VERY_RECENT_TWEETS_ENABLED = - SearchRateCounter.export("very_recent_tweets_enabled"); - - private final SearchDecider decider; - - @Inject - public VeryRecentTweetsFilter( - SearchDecider decider - ) { - this.decider = decider; - } - - @Override - public Future apply( - EarlybirdRequest request, - Service service - ) { - if (decider.isAvailable(DECIDER_KEY)) { - VERY_RECENT_TWEETS_ENABLED.increment(); - request.setSkipVeryRecentTweets(false); - } else { - VERY_RECENT_TWEETS_NOT_MODIFIED.increment(); - } - - return service.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/img/serving.png b/src/java/com/twitter/search/earlybird_root/img/serving.png deleted file mode 100644 index aca60b55e1eb26a015a98e16b028d26e31532b11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60951 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 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/AccumulatedResponses.docx b/src/java/com/twitter/search/earlybird_root/mergers/AccumulatedResponses.docx new file mode 100644 index 0000000000000000000000000000000000000000..abf46761ecb3ffa6a7ff805f2818fb0e61dfe39f GIT binary patch literal 38381 zcmagEWmp_t)-H^@dvJGmcL?t8K?4CA3GNo$-QC^Y-66QU1cJMt&hyO7J2US&-}k5b z>Rq*NS*yDC+SOZ0790Wt1Ox;I1SXA3t5T&fHW3sAWDE)f1RXf4D+aLrZf5)4P|eNG z%u%1w)yBFpQC@LP80E*s8)g!dAhCxSGG^JX9km^OEUtKU`W?6SGSitH*we!VZ>ajL zQZN)_Y)0yX7vWl+K$m9|rLLIxnZAC8WM$|R832U z=cj2-Q0BdweqKYgpbOC)9sfkFCy*$r%4iKVqM;xd6@f9xkm~$duG|hXJ2jP)5vo19 zuLomF&TkVwE~HOlz7kn)%Z!v7ncvdk+WfdvLX9rfC4U$-#0@ysI#1HoJ6NdO*RAyy zBDoI115keM+w?HHjBB!;K-HB-+^XtqqFDv)p8>uFQr65JgJ)@e*z)C^u4&MH?a5e?TD`Q41DN+c%UhaCKr5K4l#I`pOd$lQ1=}{ z{=uOxRIAc15}h>4#>4etexAwLA99i^ns3arq~4!QR)U;*A5Lu?Nz;7Yum=5T*a9 zq8p{G@FTE#n_wUy@W4+)2QzC&CdNO<%D71xa26Eb3qgqyielR)b@74~1My?|0>Pe? ziSr^`Z>gfyu1;lfeJ!kB!lR2l6Z6INe7t44BI^K6W9yj7HsYUBx!r}TQTXQ>8P@p)(ot+ z=XRy9y5(1l#{puBss^s)w@{NEXan394gAHkEqk928OX^dHQlGooi+oMee9+Qe>2x6 zU+6SOFMGj^&gybr{AYqfe!#0*0&nwKV1iJA2{HwkC^-P^9GOf24rYID^31q#g??rf zi3d-Kd3lY{8x$A`XeFc~Qfzvb3@b`E*#@hr~Ct-S&pog6x6!Y#hx8#}=buEu6? zlc2aDqTtvIKhrRHZOr#IW32U;ED2hk%EZ9Fi=OAXYf1}Vld+y~Wn2Wfnk;bXbQXQN z#SmVyfjSQM`5#jxnJp?sxyPcasPZd6G=$@*+sF`!4=`wc`S}rs#*@X>qn0)o5rSl( zmgItlCJlU%n=*iyTP}wUaM-biaK^3DQQSS=)Mde4YeHQ6Ueoq$a?Rr7O`wAq`1|vq zk;-9)8FdX5EB=}D6C?sMD4Vcys)|dC2J3d%nWKaK*0eLYemO#OFalE2r`*}Ik_ut} zT$puT=S{#sVeRnz{O&q~BZaTfcheTO8uYiOac-*QFWwm&xk$q<0v5rrnF$ZKSC%a4 z3DOwFA{h|UZBjq!yC(CF>wP{xzkgcBr+ehOg1|YkKr*12a}j%g?YqYN&$`^Mtzn-6 z>tYQ70)q1Ib@^gv_g7ie#%aXQ)CDQ^NpZD%gw38AMktD&sys<%yyOmo~uY^cq%M;_V z7_>_>|?s^X4aR6=~+oWJy*n8$q(yl!7oO%re zJFMZfo>;Z6R5Ro{@+_uXOJq2QhXedgj5=cUCt0G^7eMbVYPOc&x_wN`eSIlk43g|U z62vo~=<+L;IPIz!v<^W`d{ZjAPwg1s<~J8NLVV>lxE5&G_5RCYW(|6RuqFOV8!EZi z)U2RH?RZVO%r0XEi9pp56?qcDi!l)%oe9mk=FySZl8(NDZX{+l2QI2J#ZHiSE9e1$ z3NqoF0FKgUXPsT5hp)JAD2!J&EJxcPUwE%mU3$!DK@jLvB?8#(n5ubpF2C!nO>O)FJaT4Zty-9?tT;f=Z$fC=@aq<0|Jt( z`S%aj1>j)H1pL)H*#IY}KX=BN-j?GUCz|(#q2F_^hDvZkW=6UysSAJ9oO_Y8Koa1* z7Ce?XG>u#fBw^S2x!VOa4$Vh8*4i)cXbKrk!han3g#j!4ppVGs6)otiWJ?Y`ArYZ& zznHjja4Y-$aPUX#$Lrx62^!ikBa*hx@hVK#as2Yb{tIi0}F z-Ahw$PvmaPj+j~T0W`FJiRddB*~d|@mH?rGQM{N`Bk5xHf@|ebUj2~NNMselXopV# zEbe&$G7#o8i7&G$mEY1qC%eP=9w~|Ibp;P-moBXpL_sEuQD;m`n~P-v!bM0-ZGvSp zGpU9zvOYgkMIBu>Vzj_|a<$XIvF)Ey5F&FKiHB;f*TM##u)&j??WGIJbC?}GPtTnx zW)zO9;Cf{>ls|qUfyeLVtaFGO(?_2MXM?o^1E+S7)byU<&idgC!yc6&L73s^lE(U= z>_zpwmsDQ8MZiupX~!*?!piLY@;kq?rATOB+dmWfH#!6kJx{R;nk}q3y3!wHMe2Qz^>?X2#hI*B_N?KWCnU;GX2z>BtTDOt&`F zJRc*TNR$szYnRiEMJjX^@Uhy}+I#h#yPo)igGlTPRE9RC0ku>32ShYG(Mbs0cLkJ} zD%xiPJE)O&ruLW~)=ObJ97+!OpP-y}qe37;NIjtKde^5!)>Zpl3Ve(4V&0zbklHHO zAEkV&A*$2uNMW*L1K4hH^-TjHej~6TbIdcMK*Yho_u_|9*sGh;K*k}+!~R5CXhi6% zcj_=gkKyfRT%k_fp0SG%2iV*o}yCXG5nsY zw8a4uEpWhSEr*Iqi?-Z@;;qlv@Dy?zw2JW#wDY1~@awCm7rz_nI>L9|%YKSolnbX_NpS*9LW7~MG? z+e?|{n@#Rd!u}pBGnE^op=7!z<3ic#CzaOL3fKFplwY=jzj&C!iLpvr7FG2%F;cR% z4C7AjGPY7rB0u8@sC#{@$e-_KUH%mj*BPiQP*|!(=Z>P^>h6CW_5)Ck4i1r*T=w1S z^28?;a<8<k%J=j$yIq#%e#w!_b zf%ROc10O?P1Cu)!lTy(j@}srox-O2buubIxjGs&!k~B){jMgDVHtKdEqj@lq2U2^m z)7-Bbs^~-slRH^X)rXXa9>>P3VnYCDLS|p}m?_pM)jYQv^axZ?Wgd2s8J7Y4ch3}- zSc9zv^FZ$we5gW{uhua?#&4KO z$2r(f9=@>Q7B;CfPJ5`~n&~BNll0d?TY4t;+OwA6hZ$qUj$N4h<_t9fnjDj#%s;&+ z7JKi3el~LnKY$o;OOeX4s$qq2vqdo8manzRpH@?UW2zKilLLw0gWBsU;rPYQOV8>Q zh7>tFW1UoGsf9`S0l)VPx4}L)QJICK(NN;(x^ISl;9EvRkuhU~Y+D$`73>n7ia}eQ zlzZ8vvWDEDkO^u}?Me!cr6KQQn8s{L(kP2z@Jv}}Sl>xC9sMQq!B7!qFdS_m0>u6*8m*GJbZ!<@bqOA&b`?woS{Y}W5`YJw5w z??z_23LuGxOlvqVNwYJtW0G_mIvG_O0cuq`U^ojT#P67dV@GQH!Y6b&UO86T@2oH! z9=0}C3%p+zr*sMYY9QWJAs?A{@Y5f_E88qV?}Q1dm{GgyO33kL6K?{)o`$m%Fx~7!tD6DGr;y1h*=WMy8ATd0mLRSwF2@9Ky<10K|=IUg+zFb4~ z4fJx>m+z1itWR*-8ObAyz0JizXsx^a4o)CR2DOIVst&kl3}*doaPMyinEy2_6xxFC zT5ZX;2TeuWiEL2OCM{QJLTB-P5XHWCTHU`wG*$9$(X_pdqg2Dwoa2G<6J-;o(dksC zbIDn{r#m-5V{_7_mi2TkrnEB}P~QFfWYTk~F`FqU>;Oe&DtqWihAlHu_BA`PiD1<| zSkGq8`E$f~t<-f@MwxW!Z-uk^_Lp^Kb&bF4H)3gwu3X1+8L;O&@rV$DvzZh=-tKQi z>`#))$1ozhm`|8a-yDKnc`l~ow=8erKqhA!%!Vydj z&ui6eN-?8NhBI=MArUFZ(}Q;cGr>}f$o!-6r@_19M!nB}t^90#@z7X-4fHs$fyM_m z(0}zwe=q<3y<7TwDVQLl7{HA4x$OTFL4{&mhUwxO=gKE!_=M zda+%fp#5b8UrNF{>gAjwMy&e$;X4fN6`*#-)4-&d&Po z-cEWoS=DmgS@CUKXd}(BcUz%e!@my|qIP+~NS};@!f5y6Xy)$G6yN6!+5pbHVF6#P z=)mt)UM~{O5JKZ21H7N@(a3Ua&wSAYMBJrYELn`TuqH!w2mHF2EnI|~qApD}@LSNQ z$#2|Nx3dWY?h3HqJ)psa_5>q}@ppL$w7w~iYkocz=(|io^CPCR!E#(J(Ks|(m*rl) zovnu8c?$T+^q)OxWH}aJI1>nnfjT4z@;`I!_}$Ig%<->|R9`=SSF+BlyE`x6@O9rN zCJ^dx@0l6wuhD0QJ`^OvMCvN)8Zu>Zb$oqUSV}Ypnwjxx zW^ZrVJ{{H<-iAa`>2K#7T>agMU9Gwo8ZX6@=Qr&D?>8JzzNf=;SDo{$q_sEOxASzN zrD4GPQ}oBv%hE+uu~75rp8n(0##MXrLi@|n+^@U#;NZOzx3@a}cbkv4%^)W4RU(6= z;>+p&qu}I&o$z-6c~T>EE|mF> zB`D|c`ATVLI5^PaI_Nv1woT>eAD_=z6;odp1`|ChWK0+F(N7 z@=lQ;@|4OtBl#Gpe(E;vtsY;XOsaqVt`qEynnr>9y&bmmauc^bS;*ThT&>-c?+l%! zIyC0C1{tz2_#BOQI=CJ=xVlQ{t;WzxTgZz$h^eDJ+AIj$=k5Kd-`of0?RMksdz#*B zjrU5&7QaBH%f)$cGS_()m*VM%m%)X%KvlNw(g*rLS5idFYWJDK(ONWM_i_KDR;ODs z3$Lq9SCaFI=DCN{{egvo>iu!;(3$H9o~QI`@S{BhpYq;V+RcC|AEz5n11@bBrY>bq z2JuTd@=ggdiwaSnI+1aO;DESS2#sgRoVSy6*X{6`H+X8GY5|pK9@vGis{YC;Z_hcA>Zi2YRV+Ig;8Tc#RFhB(RkS(jQ>Zk;pPE$-u-Zv~^ebY~eFKYK(OZ zV=Pv5u%zdMDqCM=H@}tQrs#yxzrSo)cJftS3>2({)v&N_NiS>J?8c)MaDvOgsHDSD zK=dAo+moEc=Lga^YO9FGtbV5KPSHe zPh$P^B*YFm09523*H<;-QZPa=xxtV0NpFJv6Z?!k4j4)dypHCtP#qvz5D@o2LjR_M zD5bivB60mMf(vCb;0WAbDv~-NO>_U3#Q%Ycalfv@@=pd{_3y%*@ql_%P=H=B8ul58 z;Tir*A_FlDl^Zo-O0B)9`TK639OzH%KdoMF@h#5TaJ4ffpB}|xO^@%JaKYyI)>CN-Z7}I5s;6yMQAR^W3^k= zkxjO~_in@vDc{qo^*bc4Z=RgFu67SZB|YRM{Jf^*?*8tg`gICv6f5Mkticr=VwhGP zYp2w3G2Q>|ec-Z4@o1cN^E+W^hxAywip+TW_G?@j7bK0?;)T34FA;0~oZB~%MA@@N zpA2y{P4c4o71KJmT~ouw)1_?DCuHFB6Gq<0bL4q+?|JSW#i}QDVAI|y{n6&7S#_UL z=(Vd8PKHlzaA^0yN0t-oGm`@smW80(nijr(mkqr)|A&jccbMepwRRQA2%(0NrCe`+9pLIk{E)?m@y z#X&X6AX<}rT0Tkh!z)jcO`BunD2_B$Xm>db6#ad3lGPzFrO8s`#IN$Hh7bwFar*T2 zS4=PDm2Q5~^r%W{N z-HIED%HN+ckFU8UzDJ#+8BJ$EA4wCtRUT=Hi-lJyntuJ&!I8a)t(-DRP5jbJYr4TW zZEz*@WVM+Cuz3oP^Xr6F%W}v+=O9Kgv?MOeL%u`#off!{+9MUEHx@rA9d3vIqB?4Mc2yKy9ngkw4utQl)fV5)z zy_;G8jl%;EZ_$aMwr(_Eq~x^LM5Q$RJ#O|!)4CBabr3=%zXwbFz_dZ8_=(5;j?vGV z{^_lzHIB85i@2pU_5MV-A0LnJ&x`oj6|%?~%-r3}uIx4HUpVsN6x7JezVdP}m(`qV z3@TndWLV3SSO3ZhR%UbG79V~ZbkFZkYrCIER|;B-pyi&8Ey-IvM$s5-u~nzr_jGr&QmD`~u;teom{*ZarL4qKSl3(l`F%g6l;VfUvHO#K zEAQ{ryYl4YMAGOsZ;+r8)`s3?5PTZqwo_NY#n+4)#!b8*{o|T=>n;&YhQXJcUsk}2 zcL~sk822amtS!{+ixs%rDW9%h=P?bL#5+YckyRDs>sD};bv;EwiE3hD(Lp# zsJt-?7hP_YX-=~4D>)ZNkveW>8Qlsqt2GLVVyj1YW5_f$_lcUy~7h6 zZ5+7h9ugDe5tKUU{U+;+@5^jWOcconq!GPU^dJ=SbnwqwOHl<+(CuA0uU}QZ9e*N6 z!d7HbGK4T@NgXYz?1b+hGZjvW8Q0C zXq(5IYK~vm$5-Irt?Xou#R^zjhlsnVtw{U)V?@1u)F_VrrX=k~B!c$BL{9+IU5t)O zuap5Kt#z)_hkZEP7NE2ck2pKWGV!*ClEcDYj}rlf^qDRBF12-{@?68y3zN@*j!q7< zprkCia|K$tR9VsfzNlZV+1`v}b;QcF6td&sdMjME|GES2=j4Po?}+W^WMY!L1|}L# zqSPY$P+_j{bd@~1*;ELLO!4Z0VN7QAI9tzNw`b*p2U;8k#C=|q3E)cSZs%41`}(JR zFdHP5uQyGT?7z}MpDU=R%zU1I+JoQjOfohMJa?`R`viEs=H__EuO(oB(+HYT^V9~` zVo*5cp|NMI%e+RQD+G_HG4@t-F=4ZnMo#apdj4dv$L9T+ zoBx9V2UT!~``ci1%P!s)1r!Ghvu)Aylik})@#KyxT%^bJ_d)nyQ};i?9x2M%6V{hk zAT>r4)hn}NvcR0vZEVhCWuG*aTlKQq-*wNQ#UzQ4u^9vk5Jy=~ouxI-vefsC5HC); z`k?X%{n_VDQtpGhE0K>9!!ZvnaN!NBbG@>w(a){g4G6C6TrD}ITLsDIieSz)##XSt~3ciZZL>xYYrwznr*&cxJ2o?I`k51*-SbdDBE)sTZ zL;hn^k}{9WgWJBy5s2e=gp|W&A*f5Qw;AA%?s`xYxcNO}511o>lUgIaD8N)(6maN^ zKAsJ^0;xC1Q@?bKs0xIc#1sQmg&t2fZw&gXdbA%DBIPt2@jDSH6glm{b~tE>0(hsc zz&3q3hv7#^ZzYo`Zp{(6VfnYNuJLGZ9L=-;q^MvP?`V5iifDb0NWw_x0Cwro%jx@P zbrrssI~ypK)$L&12zI1b2XcxKpX)Sly{axx!QWeba-%sEso!ZbS{yj#0g1`-JLbM+ z#cykSlMDKAj#4QPI2p4Mxj}T&I}&x;bDZEJ%VAkGS3Kckh^jDiW%mLz?UryON2Qpu z*tIrOWh)wBUXslim!hDG)X9e^0(xZz4YEyQb(wG{2X|@G`3A1}pD0iCC!niNZ!zy= z?!#x=R}e-{OM~RGl>xwTECesf&cDJ-{t-U^ukhnP;Q@rAon>B}x3)jQuidTQ<|O9R z>#drcB(jy6AUl+L&`%0^#F3NBupTFlFWGGSZ>x?3X6_7|Q=bei&!ua)K)7$}yop9FCQlFpZ}E=gPzDb+X$ z%v+TOlyF%rSeGXV<{QAd=K502%Q}V-GOFLS8PpL(ovA4?RVQoU-u2;GqMoRq1?Ri4 zF~lsXhF3A>ZDy#~GnhX|xYKM0fn_N%O_I2`sCAYkTL+u+SDO^w{^?ZPV=fUlW8IV@Fpac-FOu|c#sEqWuKUm+I3 z!e^WG3;S(f=l0q0R`QTab6EA{+ViGC8lyDCcrxNRcZy{4+un+^W|{fd#8_ovuZL$e z2>PLt$Z;^sGR}vsx6se|F{%eG^Qv_=>C*F>*a626ytZxVw$D0j1XH7AayhoEmL zi}FHZl?&>(x{;fCn}EbHmw5mpD{V;#6@Qg!go=+A?Uxk%jdkNJ#+^!y@sj#G%Ea4} z73Lr@XYZLtZplFbxGu^7KOL)YW_+Qf5f&bP7lxmw2oYnt$}C%>J@eJeifgAAG@r?` z=LU{WsKKsRr;EdVFYj;EAn2DfR;S@2;Ap|%qUk;r&NF6*5mJ8UYKAG1buCvHIQcEE zAR)}_;nzpPCv>bMo=-{)X&B!tOcn7JNaY_v~aG?Q4s%w^ZVQ%^8gbplj+H%*?2?NwE z7`+JSsvou#MyrO0K!N;!*uI4Q7aNb$|0f&uh^rsh71dH~{n6LrYAYQG@~y9lCzih* z?=V3}kJztTdBc1=>eJ>Vgdephfl0IlEw0Bc{~UA&fkB|@JSUjRATNO&ke|MVt`vW% zVePN6SKA3BJcBLy!mq@wgsRm4axrXLpnYkn3qigny{b?|Z1Pl3ycT-KY4==KBq4kq zsZp9WB&cbkD16N$;8_(#nnR}q(Sh$RCm|e2N=%^7@Go<41dZ|%JyF;K6Op#Is7lF~ z8s+XVK~$KaYc&7QY*LRvWL>xhoR0kRk4SI*zZ8!-%vY!?n-jo9l$ETwLx2?xCD`qm z+)-u6cxiUQk@#Utu_bbw-t2t;_0kb81$uk6tpP!)R9^?K;F^&EqRCrH1ws9FpBCS; zE1vqzIEVOswEW$^_4)d##s~h(yjLeY1vMdFqDl z;w1kOm7$vzqh5guv~RnyT21`wp(P(u zTVwL^wvPvlaD`shKu?*W;K#X&0Tv6EDoX4Cq6#C95HdIdPl`2%i6s`hqF}lR z3FZLJW)}VXge{!pGgr@S=-{!(u8AtWWHlRfqbbW^{)H<&ls5=rZHg#o22}h?hU%RC zOc6>5#*AM)2u}<;HK?&Ly`%w3ZAw)QPS}JqX+0xK44*cs$D!1}X(TI8(@`#3%9Z}( zdqv=n@7`c7IeV`&Q$8ZVZg{vm_kg9epMo6u7m&%#HWhNd{> zFaAyCq2wQxszePymHp6vR6>B(rWg;m{_o!NtXzhHvG ztgN0oWh3n#vY#{CX&4FXElkL(&EGideutLtux2+|->0LN#t|JwtC0(=? zj+A0ii%r&p4YHaTbWVEl-f5SVvjAxgsctmT8K>J%-;wgx-p&_M^;CGTir6ki73>YG z!%QZ(AGX&z=Q7+RM#(@_BjW+#*zy3Ds1nndffCP%46eL8#+mp3a~1?TD-)jwi()W>ea3b^(RncHs63e~l-_ znR2qEF7an`Qzc!6I^tTe-nvpuX@^_=rG#^Yc&aq}JdwxZfCVq3OvA`0nU9aze2x zs(Ak3>CiGi!u(qu6LWF#iUEf^KGf9r-?iucebVP`5|KR6b$1592m2%g)GPq$N7e9unfTE;n>vqr#Hyk5XV)$-ozr3T_oW5EcvdBYqlsmH?xjlMUCqSaeJRjXl# z#DIss7p?zG=pSm?zo^lG)X=hjy6=hB%|*l{qra$~O~--Me4Kw%|D-?@kn<5Au7b5g@rL^k3x7EbQpvjQNwub%%eD z_Zdk)sc1gJX*Mfk{OtSw6Z%-SHI}K<&|s_6uT|i&fvpWLli;K6cuXem?r~{1rLzd4 zxZs6e3n}bZB%n57$ZI)Agm#rjV=muEzB9A(3>U)r zd4sNx*oyL-_ud!P%zZi5^Uy3y@o5Nai?TyJs;@s))j#WR+J!B88=_50>%75{ra|Rd zVj8BDKKvj_TLev`oLLv~KL1v30s(V-+wKx2!Y;q~IwV%iYnf)cjxIkJQUtp^r8dc> zFjr7q7S-0V!(RC&D4#ah@Qf+Wjwn7i=3%CN(peW$ZkAoHBP(isv}9(=apdebk- z{X#g;k|4(tY_fa*sH=%L%uiUc+k*~Qe9m+d!2i80zDRmVV3s}dYntzw+=AyGyS#hZ zNy#{#!rbb`UMY`!xuJ;ooG^Q3M{-%=rflL@9q6xV!ffI_{vS!a^nK3mw{1%m|MaNy zP&7LDZ(uhbbEbcp{KZ~**EQ5O*Rc9eld`%eorR%)n+#6;W0D*GkI7D(|38!5^543r z+Yi|*y@4jti!48Qt+QGP2=lQqarvUsznD?l;{)F)*M+Vf?5><0fwrtuF@WDnBsO43 zVQT3}F$OQt9X7iU;*8y!-c-nJ8Gdnia`m>FQRV>?>(!n`nbV!%(S-qrf%8~4MR|jB zUv3!;a6tiJz(AIz31*Y{xzAbjK?V5|OK)+Dr+OoPB1g_q z-H94#Cpqvx(xQrcdEcy`bu@|9XRt_VAl#|W(b01@oG=J~=`9zC9VY+iKWaUd3yZ||Tcq+G zL`B%f3eWOG>4TSJN{7B7v1lY8{~vLYB7el; z1YU|>eH$4y-sbsTL&VZg*x(IH4Eg5(T?afsHF<;5OF6&!H{^6}Ll&Nm5)8pJN0W5) z7+^48OA5Z|G9@K9wt0izXe?ZUxdgjoG4;5Vpc_!1yQEJ+n9p=jnOu%%{)a-ie)xk^{GD+;s>vR3DVufZkQbK&tX_QwHlN8%8Prv zbC6#dGtMruUhRBW?MRn=R4E8Y>t0R5Kd6|gO9T|}YGSNqv4%no*Qj> zZ^|D<6+7)=S-O#!y9bTf?YL2`L{hVRa&jbT7y3n?i`1gwzQvRBR#|H%l-Yaqz3P1R z{|R;jPuX?k(WfXqF%4oTJ5e1jNqiV=f<2z@;ds@sNqY0GTO^M6Mpc4l+kU6eZ}krk z9YDmav^j_La0&E~D|7mYY|6kHZ|oHU3bL`Kgb?fJY@WNC7C8K@z1fSpTI3q`;gTm` zIcLfi^}hFSII2^c(5F-o+t4Sc8JK}rrQc|GD3{BHjOIFk*r&#=6NSvD(magImP?7A z#%~+n4>dRCW>f%_QWMqS6987b%z4{6xjM9Chpl0X z;SGcN+RD)pl*;1uR?0_5U9{-$K6K>{e$!1Qfgi&3}Rp) zrWs$%I4c+z)y&^d0?E6W3?x(a^w)Elt@s>4tG5$Fp88hxq=f9N6h{TF@#e^rq9GCR zE%dgI;xH+EUTJw5%?6}?ks^PYLcu~T=e~9&n`=UCqrXH5AyUOLZ04d#dG?|hg`fpQX4lI_nl{&3y|OplEY7-@{ITdz6A z{zQERS$uZXc;IT6b4xGssn_m%uWFZUjoZOl;CFXmw2!&C>2Tgf3PNK9DYv`>ah~N) zoLim#L}k(Cn6I?==VjTG(vU(jsA`v|?!DEK=*&*NFMkBTqEOzg^Ed(p`~Qz%|Ljso zp}z(9{tzL z+n*tY5LF>CUva8k-a0(=FT0*Z6d{EoIL%j73+q{gA%(m;w-RWoxu$@ls_@>&JW7U4 zIY8I7rP~%KxB2V+fc;2M=Z%y>f|Bhek*yPVpr7FdIPWU0-swVrBA_&RU`k9nHjR3j zE*l!tx3tLYomd6kpeXTXX_H@%Oz2*szh{b@jm2U?JbwNh_X zBtUN|+>FLPBo#gVhn~NAOeM2$vADWE9F8J#iEiG*Z6osZcrgb|o+&jz;7iXUd6h^b z`>@_7zU4{i7`Qs7wYMEe1?a(#li68$b+8hpZgp6Z_0fk@F~RFD&t`8}8~<&HUY4m5 z3KRw6j&S02hu=MBOsvE>n@|YN8_LXPfE!ZcO;KNVqv&_xtD=Mzc;={bIY@2;{<=1h z;of0&bo>i+d~CtqsBP}vE5<(ir8@laLkN)GE37G1JK!7t0Yp)|bytsD=qRqj349{(BI^?J&bzTA*0u!m)Bk`7xQBtq%wG8f9dSibmYn|bEtOoaO>xZX*8?}4#oH3QcW zI8L&?ZNRT4o7{JD#6l5r#SUZi4;Y02#>>}WG%$+VYwl;v4rO6|%jPIM$fZ_D(2kgb zY7QwCV!idKB)8qd&E+_p6j%iMrC3(B5-@0V9IT!`2uTXUA~xh3Fgl|P00pI_Tt&Xz zgbsH&OS>wxJ&QVHlB%t(Op9JsawLb5(XI)vHh5(0Bvp72lSB2HW8I1?p=;M=B^q74 zh1uXx5x)l11wf`^0z!ilIA11?<|#EOhbCH1jQNLNJasU(3{EIiL}+P4Ypu9iGtl4T z;+TJk8=Im1;wWC%Gty^V8Xv=DX0Bz;tneEed!6-UwE(c2%7@t0u`;DZTKtw+uF$2> zpqw5Hd$Vz?K-fG?()z?oH-1+&CMS%Pka+MsXAaeB&Fb9A zu%=YwSRqI39Gd8qkQn)THDaEPJYtd6edLYG#IrlcJTXuqbR|mUX)3 z7>m??R$mu%WT%V1%4f>5-KmNIO#o#_|aOU#A?`pP(M1d)Ro*gHbX33Sw z3ur9;9Tz;sf}<^|h)~3bFr>Zgn7qV60IhPD+`IozDrO)RPQ)K7=I}w|?b>NB6QE7j z6gOrfcWdL3HuYx%>8wOdKCv6EPaPucwXCKZNvF?AslIyDbmLCWQwY4qg$4~@NIYuF zK2vBEvC!Rg_8>0DD>Y$S9BHKr|3;%brKYPNI=7yv8ezqo0hULqn&;rKC~*8B?ZIdP zU}S6tEF=Iq>C{coLzVTLsI?RF;t1Z8b=`QIy0O`HMa434#_-s-S6^r%Nj)p50_pS^ z#5U=_R}@Uh&htJn^$n^LnAs*7k%|hw3hVQzbx=HamKPNCe`9pl)&_^7)F_JQn9V)K95dtjS;rq10v(1DMJ}eP z#KHr#n9SE!xHtVJ--z0~+(|Sjt}4y41O!kjt(1$clpDku3V{hji=swcLhRG?4aFbw zUK6cCZ-G(`h8}P}IS6P}C{g-(!hndm?X?L*dkap>zSUk1P$G%I@gc3fsCO=jY0pJa zqqdf(ED=@`!7kZ;?&3n5QnwL>^ua<9-~>0>w8~VFGiXqF?Ii%cd0=?|AC49Rp!nUU!L6hW(o;|6LW1bL%z8VE-bDfm+f zbn_q}N0cc?6h0I08445Zn>F%saRRgE$PyB!1D9G?Xh05_2&8_FKW41cj^4tFPEhIv zbkk$yA}pqib9QkqnCB^vNRWYW5LOfV10wD6)IfUeY0(50)xT80Bmb=;sON@2pkyX_^0uMD&#whQ0qClw*n>7+++k*s_21TU=ou=dr%LAE^rU3T&z*++}7=AO;N0d>BT; zJzQfj#)*)Ej!?m0J}@Nx*a+%f@|ivKa3V2qU9~#Mz`qF*=uZc%W5$Y(N{+Cr_yPjS z3xuU|6$)~i)Jp__aj3=5B!4?FLZ+HZcx%LQWDA>>0%l@Rw^->Vw9}oCu_6RR=3b;I z7R-}~oCH!7&WRMVF;nym7#F=U2Xyc;flC6p<&4crz!)J3hsaOA>zC}5O7m&{dQ z_q23H^nv`J`}U38{O5Q$KtLR;p+Io|bKkzE<@c`==H_N5-~Zmi@1>udFIji?@`TxV zGN_o91VS=8?lpx5He@iqca?hoC|F)Tub);GcOpaE4BW*pob8J?5-l|nc;=l#Bm60* zmCbP&Ddh3p=iSw<>&2^eqmuLVVGH4d^YPHO)q9!0YB77u=jOt24?wlGes&*zx3}w7 zZ_xE|IDK%Q{_%A2@%(=3(*Bk`J-(rT{c?BSUR{lRagluw+}gj{xhBBRV2IV;-C04{ zl)iB|_YOc#Pj*RH%+^32cQNEz8+Ms8;^uzsUOGGc(z-@5bQpej5x((O+M0}L_>Cz% z_~ye2DnR=B!OF{W?>>sNdfdt3dd~c%Zkfu*R*0&5+1t(IjnneRsn*a-PoVnVr^x0h z+1%U5=c7sA$Hi)IZQQG%`-!pD@50;1P0+BTwC&zCzxada!+6{=emFZYJ-9jfz}=^% z(`D_z(V;*6?%eXu{fuj6F)m*5NRpO_`=-XwFgR;9CwOgeY2T*`@p}Dz@9Hzt^e|tw ztv&ZPPHaQyIFqX_3E;+)O8e3)@ifi)$XnxdtsB4vs9svsu&R7(d3Ug+(}ogX<&9Ln zpLMq4y4kV3N|Vb;4!-by?bx)&Cd!WIlW~7#l-Pgs`B>V}uj3c6CG0yW9$dTePA25R zUwf|;AmAh9CF1{Zdga@!cxZ30-ePb@E?=k~eWR%Cu0RtLnpkXK@NzJ3T|TpDUm*2h z))A}$^w!|^Sm*g#qo~l) zEu^K0^!_qz*i=5rslC3nrC3}XK$OH(PNWeXJ%0D{vh&n;H+N$H^pTZx>T{74y|nj% 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 Pt9T&x!1M@6`F{5=bXT~+ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/AccumulatedResponses.java b/src/java/com/twitter/search/earlybird_root/mergers/AccumulatedResponses.java deleted file mode 100644 index abfebf20d..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/AccumulatedResponses.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.twitter.search.earlybird_root.mergers; - -import java.util.List; -import java.util.Map; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; - -import com.twitter.search.common.query.thriftjava.EarlyTerminationInfo; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.TierResponse; - -/** - * Collection of EarlybirdResponses and associated stats to be merged. - */ -public class AccumulatedResponses { - // The list of the successful responses from all earlybird futures. This does not include empty - // responses resulted from null requests. - private final List successResponses; - // The list of the unsuccessful responses from all earlybird futures. - private final List errorResponses; - // the list of max statusIds seen in each earlybird. - private final List maxIds; - // the list of min statusIds seen in each earlybird. - private final List minIds; - - private final EarlyTerminationInfo mergedEarlyTerminationInfo; - private final boolean isMergingAcrossTiers; - private final PartitionCounts partitionCounts; - private final int numSearchedSegments; - - public static final class PartitionCounts { - private final int numPartitions; - private final int numSuccessfulPartitions; - private final List perTierResponse; - - public PartitionCounts(int numPartitions, int numSuccessfulPartitions, List - perTierResponse) { - this.numPartitions = numPartitions; - this.numSuccessfulPartitions = numSuccessfulPartitions; - this.perTierResponse = perTierResponse; - } - - public int getNumPartitions() { - return numPartitions; - } - - public int getNumSuccessfulPartitions() { - return numSuccessfulPartitions; - } - - public List getPerTierResponse() { - return perTierResponse; - } - } - - /** - * Create AccumulatedResponses - */ - public AccumulatedResponses(List successResponses, - List errorResponses, - List maxIds, - List minIds, - EarlyTerminationInfo mergedEarlyTerminationInfo, - boolean isMergingAcrossTiers, - PartitionCounts partitionCounts, - int numSearchedSegments) { - this.successResponses = successResponses; - this.errorResponses = errorResponses; - this.maxIds = maxIds; - this.minIds = minIds; - this.mergedEarlyTerminationInfo = mergedEarlyTerminationInfo; - this.isMergingAcrossTiers = isMergingAcrossTiers; - this.partitionCounts = partitionCounts; - this.numSearchedSegments = numSearchedSegments; - } - - public List getSuccessResponses() { - return successResponses; - } - - public List getErrorResponses() { - return errorResponses; - } - - public List getMaxIds() { - return maxIds; - } - - public List getMinIds() { - return minIds; - } - - public EarlyTerminationInfo getMergedEarlyTerminationInfo() { - return mergedEarlyTerminationInfo; - } - - public boolean foundError() { - return !errorResponses.isEmpty(); - } - - /** - * Tries to return a merged EarlybirdResponse that propagates as much information from the error - * responses as possible. - * - * If all error responses have the same error response code, the merged response will have the - * same error response code, and the debugString/debugInfo on the merged response will be set to - * the debugString/debugInfo of one of the merged responses. - * - * If the error responses have at least 2 different response codes, TRANSIENT_ERROR will be set - * on the merged response. Also, we will look for the most common error response code, and will - * propagate the debugString/debugInfo from an error response with that response code. - */ - public EarlybirdResponse getMergedErrorResponse() { - Preconditions.checkState(!errorResponses.isEmpty()); - - // Find a response that has the most common error response code. - int maxCount = 0; - EarlybirdResponse errorResponseWithMostCommonErrorResponseCode = null; - Map responseCodeCounts = Maps.newHashMap(); - for (EarlybirdResponse errorResponse : errorResponses) { - EarlybirdResponseCode responseCode = errorResponse.getResponseCode(); - Integer responseCodeCount = responseCodeCounts.get(responseCode); - if (responseCodeCount == null) { - responseCodeCount = 0; - } - ++responseCodeCount; - responseCodeCounts.put(responseCode, responseCodeCount); - if (responseCodeCount > maxCount) { - errorResponseWithMostCommonErrorResponseCode = errorResponse; - } - } - - // If all error responses have the same response code, set it on the merged response. - // Otherwise, set TRANSIENT_ERROR on the merged response. - EarlybirdResponseCode mergedResponseCode = EarlybirdResponseCode.TRANSIENT_ERROR; - if (responseCodeCounts.size() == 1) { - mergedResponseCode = responseCodeCounts.keySet().iterator().next(); - } - - EarlybirdResponse mergedResponse = new EarlybirdResponse() - .setResponseCode(mergedResponseCode); - - // Propagate the debugString/debugInfo of the selected error response to the merged response. - Preconditions.checkNotNull(errorResponseWithMostCommonErrorResponseCode); - if (errorResponseWithMostCommonErrorResponseCode.isSetDebugString()) { - mergedResponse.setDebugString(errorResponseWithMostCommonErrorResponseCode.getDebugString()); - } - if (errorResponseWithMostCommonErrorResponseCode.isSetDebugInfo()) { - mergedResponse.setDebugInfo(errorResponseWithMostCommonErrorResponseCode.getDebugInfo()); - } - - // Set the numPartitions and numPartitionsSucceeded on the mergedResponse - mergedResponse.setNumPartitions(partitionCounts.getNumPartitions()); - mergedResponse.setNumSuccessfulPartitions(partitionCounts.getNumSuccessfulPartitions()); - - return mergedResponse; - } - - public boolean isMergingAcrossTiers() { - return isMergingAcrossTiers; - } - - public boolean isMergingPartitionsWithinATier() { - return !isMergingAcrossTiers; - } - - public PartitionCounts getPartitionCounts() { - return partitionCounts; - } - - public int getNumSearchedSegments() { - return numSearchedSegments; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/BUILD b/src/java/com/twitter/search/earlybird_root/mergers/BUILD deleted file mode 100644 index cd818b753..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/log4j", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/collections", - "src/java/com/twitter/common/quantity", - "src/java/com/twitter/search/common/futures", - "src/java/com/twitter/search/common/logging", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/partitioning/snowflakeparser", - "src/java/com/twitter/search/common/relevance:utils", - "src/java/com/twitter/search/common/schema/earlybird", - "src/java/com/twitter/search/common/search", - "src/java/com/twitter/search/common/util:finagleutil", - "src/java/com/twitter/search/common/util/earlybird", - "src/java/com/twitter/search/earlybird_root/collectors", - "src/java/com/twitter/search/earlybird_root/common", - "src/java/com/twitter/search/queryparser/query:core-query-nodes", - "src/thrift/com/twitter/search:earlybird-java", - "src/thrift/com/twitter/search/common:query-java", - ], -) diff --git a/src/java/com/twitter/search/earlybird_root/mergers/BUILD.docx b/src/java/com/twitter/search/earlybird_root/mergers/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..23ef81ced5dc64a861021ec5aa1805850fba9df2 GIT binary patch literal 36964 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 G;sF56cK?z9 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/EarlyTerminateTierMergePredicate.docx b/src/java/com/twitter/search/earlybird_root/mergers/EarlyTerminateTierMergePredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..2e82c1b87f10fb7a72b5ed5c05f766a27d2a3e59 GIT binary patch literal 36853 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

RQ~C7QbD6F996_s(Gee&0 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 0) { - return DebugMessageBuilder.getDebugLevel(request.getDebugMode()); - } else if (request.isSetDebugOptions()) { - return DebugMessageBuilder.Level.DEBUG_BASIC; - } else { - return DebugMessageBuilder.Level.DEBUG_NONE; - } - } - - protected boolean isDebugMode() { - return debugMessageBuilder.getDebugLevel() > 0; - } - - void append(String msg) { - debugString.append(msg); - } - - void debugAndLogWarning(String msg) { - if (isDebugMode()) { - debugString.append(msg).append('\n'); - } - LOG.warn(msg); - } - - void debugDetailed(String format, Object... args) { - debugAtLevel(DebugMessageBuilder.Level.DEBUG_DETAILED, format, args); - } - - void debugVerbose(String format, Object... args) { - debugAtLevel(DebugMessageBuilder.Level.DEBUG_VERBOSE, format, args); - } - - void debugVerbose2(String format, Object... args) { - debugAtLevel(DebugMessageBuilder.Level.DEBUG_VERBOSE_2, format, args); - } - - void debugAtLevel(DebugMessageBuilder.Level level, String format, Object... args) { - boolean levelOK = debugMessageBuilder.isAtLeastLevel(level); - if (levelOK || LOG.isDebugEnabled()) { - // We check both modes here in order to build the formatted message only once. - String message = String.format(format, args); - - LOG.debug(message); - - if (levelOK) { - debugString.append(message).append('\n'); - } - } - } - - String debugString() { - return debugString.toString(); - } - - DebugMessageBuilder getDebugMessageBuilder() { - return debugMessageBuilder; - } - - void logBelowSuccessThreshold(ThriftSearchQuery searchQuery, int numSuccessResponses, - int numPartitions, double successThreshold) { - String rawQuery = (searchQuery != null && searchQuery.isSetRawQuery()) - ? "[" + searchQuery.getRawQuery() + "]" : "null"; - String serializedQuery = (searchQuery != null && searchQuery.isSetSerializedQuery()) - ? "[" + searchQuery.getSerializedQuery() + "]" : "null"; - // Not enough successful responses from partitions. - String errorMessage = String.format( - "Only %d valid responses returned out of %d partitions for raw query: %s" - + " serialized query: %s. Lower than threshold of %s", - numSuccessResponses, numPartitions, rawQuery, serializedQuery, successThreshold); - - TOO_MANY_FAILED_PARTITIONS_LOG.warn(errorMessage); - - insufficientValidResponseCounter.increment(); - validPartitionResponseCounter.add(numSuccessResponses); - debugString.append(errorMessage); - } - - - @VisibleForTesting - void logResponseDebugInfo(EarlybirdRequest earlybirdRequest, - String partitionTierName, - EarlybirdResponse response) { - if (response.isSetDebugString() && !response.getDebugString().isEmpty()) { - debugString.append(String.format("Received response from [%s] with debug string [%s]", - partitionTierName, response.getDebugString())).append("\n"); - } - - if (!response.isSetResponseCode()) { - debugAndLogWarning(String.format( - "Received Earlybird null response code for query [%s] from [%s]", - earlybirdRequest, partitionTierName)); - } else if (response.getResponseCode() != EarlybirdResponseCode.SUCCESS - && response.getResponseCode() != EarlybirdResponseCode.PARTITION_SKIPPED - && response.getResponseCode() != EarlybirdResponseCode.PARTITION_DISABLED - && response.getResponseCode() != EarlybirdResponseCode.TIER_SKIPPED) { - debugAndLogWarning(String.format( - "Received Earlybird response error [%s] for query [%s] from [%s]", - response.getResponseCode(), earlybirdRequest, partitionTierName)); - } - - if (debugMessageBuilder.isVerbose2()) { - debugVerbose2("Earlybird [%s] returned response: %s", partitionTierName, response); - } else if (debugMessageBuilder.isVerbose()) { - if (response.isSetSearchResults() && response.getSearchResults().getResultsSize() > 0) { - String ids = JOINER.join(Iterables.transform( - response.getSearchResults().getResults(), - new Function() { - @Nullable - @Override - public Long apply(ThriftSearchResult result) { - return result.getId(); - } - })); - debugVerbose("Earlybird [%s] returned TweetIDs: %s", partitionTierName, ids); - } - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/EarlybirdResponseMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/EarlybirdResponseMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..a8c64c3d542d0617ddd12339a7864cca4c7a3e94 GIT binary patch literal 44060 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 i!GH0e^8eGt{> responses; - protected AccumulatedResponses accumulatedResponses; - - - @VisibleForTesting - static final Map MERGER_CREATED_STATS = - perRequestTypeCounterImmutableMap("earlybird_response_merger_%s_created_count"); - - @VisibleForTesting - static final Map - MIN_SEARCHED_STATUS_ID_LARGER_THAN_REQUEST_MAX_ID = perRequestTypeCounterImmutableMap( - "merger_%s_min_searched_status_id_larger_than_request_max_id"); - - @VisibleForTesting - static final Map - MIN_SEARCHED_STATUS_ID_LARGER_THAN_REQUEST_UNTIL_TIME = perRequestTypeCounterImmutableMap( - "merger_%s_min_searched_status_id_larger_than_request_until_time"); - - private static Map perRequestTypeCounterImmutableMap( - String statPattern) { - Map statsMap = Maps.newEnumMap(EarlybirdRequestType.class); - for (EarlybirdRequestType earlybirdRequestType : EarlybirdRequestType.values()) { - String statName = String.format(statPattern, earlybirdRequestType.getNormalizedName()); - statsMap.put(earlybirdRequestType, SearchCounter.export(statName)); - } - - return Maps.immutableEnumMap(statsMap); - } - - public static final com.google.common.base.Function> - HIT_COUNT_GETTER = - response -> response.getSearchResults() == null - ? null - : response.getSearchResults().getHitCounts(); - - private final ChainMerger chainMerger; - - private class ChainMerger { - private final EarlybirdRequestContext requestContext; - private final ResponseAccumulator responseAccumulator; - private final List> responses; - private final EarlybirdResponseDebugMessageBuilder responseMessageBuilder; - private int currentFutureIndex = -1; - - public ChainMerger(EarlybirdRequestContext requestContext, - ResponseAccumulator responseAccumulator, - List> responses, - EarlybirdResponseDebugMessageBuilder responseMessageBuilder) { - this.requestContext = requestContext; - this.responseAccumulator = responseAccumulator; - this.responses = responses; - this.responseMessageBuilder = responseMessageBuilder; - } - - public Future merge() { - // 'responseFutures' should always be sorted. - // When returned by EarlybirdScatterGather service, the responses are sorted by partition ID. - // When returned by EarlybirdChainedScatterGatherService, - // responses are sorted descending by tier start date. See: - // com.twitter.search.earlybird_root.EarlybirdChainedScatterGatherService.TIER_COMPARATOR. - // - // When merging responses from partitions, we want to wait for responses from all partitions, - // so the order in which we wait for those results does not matter. When merging responses - // from tiers, we want to wait for the response from the latest. If we don't need any more - // responses to compute the final response, then we don't need to wait for the responses from - // other tiers. If we cannot terminate early, then we want to wait for the responses from the - // second tier, and so on. - // - // We do not need to have any explicit synchronization, because: - // 1. The callbacks for future_i are set by the flatMap() callback on future_{i-1} (when - // recursively calling merge() inside the flatMap()). - // 2. Before setting the callbacks on future_i, future_{i-1}.flatMap() adds the response - // results to mergeHelper. - // 3. When the callbacks on future_i are set, the memory barrier between - // thread_running_future_{i-1} and thread_running_future_i is crossed. This guarantees - // that thread_running_future_i will see the updates to mergeHelper before it sees the - // callbacks. (Or thread_running_future_{i-1} == thread_running_future_i, in which case - // synchronization is not an issue, and correctness is guarateed by the order in which - // things will run.) - // 4. The same reasoning applies to currentFutureIndex. - - ++currentFutureIndex; - if (currentFutureIndex >= responses.size()) { - return Future.value(getTimedMergedResponse(responseAccumulator.getAccumulatedResults())); - } - - final String partitionTierName = - responseAccumulator.getNameForLogging(currentFutureIndex, responses.size()); - final String nameForEarlybirdResponseCodeStats = - responseAccumulator.getNameForEarlybirdResponseCodeStats( - currentFutureIndex, responses.size()); - - // If a tier in the chain throws an exception, convert it to a null response, and let the - // mergeHelper handle it appropriately. - return responses.get(currentFutureIndex) - .handle(Function.func(t -> { - if (FinagleUtil.isCancelException(t)) { - return new EarlybirdResponse() - .setResponseCode(EarlybirdResponseCode.CLIENT_CANCEL_ERROR); - } else if (FinagleUtil.isTimeoutException(t)) { - return new EarlybirdResponse() - .setResponseCode(EarlybirdResponseCode.SERVER_TIMEOUT_ERROR); - } else { - SearchCounter.export( - String.format(PARTITION_OR_TIER_ERROR_COUNTER_NAME_FORMAT, partitionTierName)) - .increment(); - if (responseMessageBuilder.isDebugMode()) { - responseMessageBuilder.debugAndLogWarning( - String.format("[%s] failed, exception [%s]", - partitionTierName, t.toString())); - } - LOG.warn("exception response from: " + partitionTierName, t); - return new EarlybirdResponse() - .setResponseCode(EarlybirdResponseCode.TRANSIENT_ERROR); - } - })) - .flatMap(Function.func(response -> { - Preconditions.checkNotNull(response); - - SearchCounter.export( - String.format(PARTITION_OR_TIER_RESPONSE_CODE_COUNTER_NAME_FORMAT, - nameForEarlybirdResponseCodeStats, - response.getResponseCode().name().toLowerCase())) - .increment(); - - if ((response.getResponseCode() != EarlybirdResponseCode.PARTITION_SKIPPED) - && (response.getResponseCode() != EarlybirdResponseCode.TIER_SKIPPED)) { - SearchCounter.export( - String.format(PARTITION_OR_TIER_COUNTER_NAME_FORMAT, partitionTierName)) - .increment(); - } - - if (response.getResponseCode() == EarlybirdResponseCode.CLIENT_CANCEL_ERROR) { - // the request has been cancelled, no need to proceed - return Future.value(response); - } - - rewriteResponseCodeIfSearchResultsMissing(requestContext, partitionTierName, response); - responseMessageBuilder.logResponseDebugInfo( - requestContext.getRequest(), - partitionTierName, - response); - responseAccumulator.addResponse( - responseMessageBuilder, - requestContext.getRequest(), - response); - - if (responseAccumulator.shouldEarlyTerminateMerge(EarlybirdResponseMerger.this)) { - return Future.value(getTimedMergedResponse( - responseAccumulator.getAccumulatedResults())); - } - return merge(); - })); - } - } - - private void rewriteResponseCodeIfSearchResultsMissing( - EarlybirdRequestContext earlybirdRequestContext, - String partitionTierName, - EarlybirdResponse response) { - // We always require searchResults to be set, even for term stats and facet requests. - // This is because searchResults contains important info such as pagination cursors - // like minSearchStatusId and minSearchedTimeSinceEpoch. - // We expect all successful responses to have searchResults set. - if (response.isSetResponseCode() - && response.getResponseCode() == EarlybirdResponseCode.SUCCESS - && response.getSearchResults() == null) { - NO_SEARCH_RESULT_COUNTER.increment(); - LOG.warn("Received Earlybird response with null searchResults from [{}]" - + " EarlybirdRequest [{}] EarlybirdResponse [{}] ", - partitionTierName, earlybirdRequestContext.getRequest(), response); - response.setResponseCode(EarlybirdResponseCode.TRANSIENT_ERROR); - } - } - - /** - * Construct a EarlybirdResponseMerger to merge responses from multiple partitions or tiers - * based on mode. - */ - EarlybirdResponseMerger(EarlybirdRequestContext requestContext, - List> responses, - ResponseAccumulator responseAccumulator) { - this.requestContext = requestContext; - this.responses = ImmutableList.copyOf(responses); - this.responseMessageBuilder = - new EarlybirdResponseDebugMessageBuilder(requestContext.getRequest()); - this.chainMerger = new ChainMerger(requestContext, responseAccumulator, responses, - responseMessageBuilder); - } - - /** - * Get a response merger to merge the given responses. - */ - public static EarlybirdResponseMerger getResponseMerger( - EarlybirdRequestContext requestContext, - List> responses, - ResponseAccumulator helper, - EarlybirdCluster cluster, - EarlybirdFeatureSchemaMerger featureSchemaMerger, - int numPartitions) { - EarlybirdRequestType type = requestContext.getEarlybirdRequestType(); - MERGER_CREATED_STATS.get(type).increment(); - switch (type) { - case FACETS: - return new FacetResponseMerger(requestContext, responses, helper); - case TERM_STATS: - return new TermStatisticsResponseMerger(requestContext, responses, helper); - case RECENCY: - return new RecencyResponseMerger(requestContext, responses, helper, featureSchemaMerger); - case STRICT_RECENCY: - return new StrictRecencyResponseMerger( - requestContext, responses, helper, featureSchemaMerger, cluster); - case RELEVANCE: - return new RelevanceResponseMerger( - requestContext, responses, helper, featureSchemaMerger, numPartitions); - case TOP_TWEETS: - return new TopTweetsResponseMerger(requestContext, responses, helper); - default: - throw new RuntimeException("EarlybirdRequestType " + type + "is not supported by merge"); - } - } - - /** - * This method can perform two types of merges: - * 1. merge responses within a tier from different partitions. - * 2. merge responses from multiple tiers. - */ - public final Future merge() { - return chainMerger.merge() - .onSuccess(checkMinSearchedStatusIdFunction( - "max_id", - EarlybirdRequestUtil.getRequestMaxId(requestContext.getParsedQuery()), - MIN_SEARCHED_STATUS_ID_LARGER_THAN_REQUEST_MAX_ID.get( - requestContext.getEarlybirdRequestType()))) - .onSuccess(checkMinSearchedStatusIdFunction( - "until_time", - EarlybirdRequestUtil.getRequestMaxIdFromUntilTime(requestContext.getParsedQuery()), - MIN_SEARCHED_STATUS_ID_LARGER_THAN_REQUEST_UNTIL_TIME.get( - requestContext.getEarlybirdRequestType()))); - } - - /** - * Returns the function that checks if the minSearchedStatusID on the merged response is higher - * than the max ID in the request. - */ - private Function checkMinSearchedStatusIdFunction( - final String operator, final Optional requestMaxId, final SearchCounter stat) { - return Function.cons(mergedResponse -> { - if (requestMaxId.isPresent() - && requestMaxId.get() != Long.MAX_VALUE - && (mergedResponse.getResponseCode() == EarlybirdResponseCode.SUCCESS) - && mergedResponse.isSetSearchResults() - && mergedResponse.getSearchResults().isSetMinSearchedStatusID()) { - long minSearchedStatusId = mergedResponse.getSearchResults().getMinSearchedStatusID(); - // We sometimes set minSearchedStatusId = max_id + 1 when a request times out even - // before any search happens. - // Check SEARCH-10134 for more details. - if (minSearchedStatusId > requestMaxId.get() + 1) { - stat.increment(); - String logMessage = "Response has a minSearchedStatusID ({}) larger than request " - + operator + " ({})." - + "\nrequest type: {}" - + "\nrequest: {}" - + "\nmerged response: {}" - + "\nSuccessful accumulated responses:"; - List logMessageParams = Lists.newArrayList(); - logMessageParams.add(minSearchedStatusId); - logMessageParams.add(requestMaxId.get()); - logMessageParams.add(requestContext.getEarlybirdRequestType()); - logMessageParams.add(requestContext.getRequest()); - logMessageParams.add(mergedResponse); - for (EarlybirdResponse response : accumulatedResponses.getSuccessResponses()) { - logMessage += "\naccumulated response: {}"; - logMessageParams.add(response); - } - MIN_SEARCHED_STATUS_ID_LOGGER.warn(logMessage, logMessageParams.toArray()); - } - } - }); - } - - private EarlybirdResponse getTimedMergedResponse(AccumulatedResponses accResponses) { - long start = System.nanoTime(); - try { - return getMergedResponse(accResponses); - } finally { - long totalTime = System.nanoTime() - start; - getMergedResponseTimer().timerIncrement(totalTime); - } - } - - private EarlybirdResponse initializeMergedSuccessResponseFromAccumulatedResponses() { - EarlybirdResponse mergedResponse = new EarlybirdResponse(); - - AccumulatedResponses.PartitionCounts partitionCounts = - accumulatedResponses.getPartitionCounts(); - - mergedResponse.setNumPartitions(partitionCounts.getNumPartitions()) - .setNumSuccessfulPartitions(partitionCounts.getNumSuccessfulPartitions()) - .setPerTierResponse(partitionCounts.getPerTierResponse()) - .setNumSearchedSegments(accumulatedResponses.getNumSearchedSegments()); - - mergedResponse.setEarlyTerminationInfo(accumulatedResponses.getMergedEarlyTerminationInfo()); - mergedResponse.setResponseCode(EarlybirdResponseCode.SUCCESS); - - return mergedResponse; - } - - private EarlybirdResponse getMergedResponse(AccumulatedResponses accResponses) { - accumulatedResponses = accResponses; - EarlybirdResponse mergedResponse; - - if (accumulatedResponses.getSuccessResponses().isEmpty() - && !accumulatedResponses.foundError()) { - // No successful or error responses. This means that all tiers / partitions are intentionally - // skipped. Return a blank successful response. - NO_RESPONSES_TO_MERGE.increment(); - mergedResponse = new EarlybirdResponse() - .setResponseCode(EarlybirdResponseCode.SUCCESS) - .setSearchResults(new ThriftSearchResults()) - .setDebugString("No responses to merge, probably because all tiers/partitions " - + "were skipped."); - } else if (accumulatedResponses.isMergingAcrossTiers()) { - mergedResponse = getMergedResponseAcrossTiers(); - } else { - mergedResponse = getMergedResponseAcrossPartitions(); - } - - saveMergedDebugString(mergedResponse); - return mergedResponse; - } - - private EarlybirdResponse getMergedResponseAcrossTiers() { - Preconditions.checkState( - !accumulatedResponses.getSuccessResponses().isEmpty() - || accumulatedResponses.foundError()); - - // When merging across tiers, if we have one failed tier, we should fail the whole - // response. Note that due to early termination, if a tier that is old fails - // but the newer tiers return enough results, the failed tier won't show up - // here in accumulatedResponses -- the only tiers that show up here - // will be successful. - if (accumulatedResponses.foundError()) { - // The TierResponseAccumulator early terminates on the first error, so we should - // never get more than one error. This means that the getMergedErrorResponse will - // return an error response with the error code of that one error, and will never - // have to decide which error response to return if the error responses are all - // different. - - // Perhaps we should just return accumulatedResponses.getErrorResponses().get(0); - Preconditions.checkState(accumulatedResponses.getErrorResponses().size() == 1); - return accumulatedResponses.getMergedErrorResponse(); - } else { - EarlybirdResponse mergedResponse = initializeMergedSuccessResponseFromAccumulatedResponses(); - return internalMerge(mergedResponse); - } - } - - private EarlybirdResponse getMergedResponseAcrossPartitions() { - Preconditions.checkState( - !accumulatedResponses.getSuccessResponses().isEmpty() - || accumulatedResponses.foundError()); - - EarlybirdResponse mergedResponse; - - // Unlike tier merging, one failed response doesn't mean the merged response should - // fail. If we have successful responses we can check the success ratio and if its - // good we can still return a successful merge. - if (!accumulatedResponses.getSuccessResponses().isEmpty()) { - // We have at least one successful response, but still need to check the success ratio. - // mergedResponse is a SUCCESS response after this call, but we will - // set it to failure below if necessary. - mergedResponse = initializeMergedSuccessResponseFromAccumulatedResponses(); - - int numSuccessResponses = mergedResponse.getNumSuccessfulPartitions(); - int numPartitions = mergedResponse.getNumPartitions(); - double successThreshold = getSuccessResponseThreshold(); - if (checkSuccessPartitionRatio(numSuccessResponses, numPartitions, successThreshold)) { - // Success! Proceed with merging. - mergedResponse.setResponseCode(EarlybirdResponseCode.SUCCESS); - mergedResponse = internalMerge(mergedResponse); - } else { - responseMessageBuilder.logBelowSuccessThreshold( - requestContext.getRequest().getSearchQuery(), numSuccessResponses, numPartitions, - successThreshold); - mergedResponse.setResponseCode(EarlybirdResponseCode.TOO_MANY_PARTITIONS_FAILED_ERROR); - } - } else { - mergedResponse = accumulatedResponses.getMergedErrorResponse(); - } - - return mergedResponse; - } - - /** - * Derive class should implement the logic to merge the specific type of results (recency, - * relevance, Top Tweets, etc..) - */ - protected abstract EarlybirdResponse internalMerge(EarlybirdResponse response); - - protected abstract SearchTimerStats getMergedResponseTimer(); - - /** - * Do we have enough results so far that we can early terminate and not continue onto next tier? - */ - public boolean shouldEarlyTerminateTierMerge(int totalResultsFromSuccessfulShards, - boolean foundEarlyTermination) { - // We are taking the most conservative tier response merging. - // This is the most conservative merge logic --- as long as we have some results, we should - // not return anything from the next tier. This may cause not ideal experience where a - // page is not full, but the use can still scroll further. - - return foundEarlyTermination || totalResultsFromSuccessfulShards >= 1; - } - - private void saveMergedDebugString(EarlybirdResponse mergedResponse) { - if (responseMessageBuilder.isDebugMode()) { - String message = responseMessageBuilder.debugString(); - mergedResponse.setDebugString(message); - if (!accumulatedResponses.getSuccessResponses().isEmpty() - && accumulatedResponses.getSuccessResponses().get(0).isSetDebugInfo()) { - - EarlybirdDebugInfo debugInfo = - accumulatedResponses.getSuccessResponses().get(0).getDebugInfo(); - mergedResponse.setDebugInfo(debugInfo); - } - } - } - - private double getSuccessResponseThreshold() { - EarlybirdRequest request = requestContext.getRequest(); - if (request.isSetSuccessfulResponseThreshold()) { - double successfulResponseThreshold = request.getSuccessfulResponseThreshold(); - Preconditions.checkArgument(successfulResponseThreshold > 0, - "Invalid successfulResponseThreshold %s", successfulResponseThreshold); - Preconditions.checkArgument(successfulResponseThreshold <= 1.0, - "Invalid successfulResponseThreshold %s", successfulResponseThreshold); - return successfulResponseThreshold; - } else { - return getDefaultSuccessResponseThreshold(); - } - } - - protected abstract double getDefaultSuccessResponseThreshold(); - - private static boolean checkSuccessPartitionRatio( - int numSuccessResponses, - int numPartitions, - double goodResponseThreshold) { - Preconditions.checkArgument(goodResponseThreshold > 0.0, - "Invalid goodResponseThreshold %s", goodResponseThreshold); - return numSuccessResponses >= (numPartitions * goodResponseThreshold); - } - - /** - * Merge hit counts from all results. - */ - protected Map aggregateHitCountMap() { - Map hitCounts = ResultsUtil - .aggregateCountMap(accumulatedResponses.getSuccessResponses(), HIT_COUNT_GETTER); - if (hitCounts.size() > 0) { - if (responseMessageBuilder.isDebugMode()) { - responseMessageBuilder.append("Hit counts:\n"); - for (Map.Entry entry : hitCounts.entrySet()) { - responseMessageBuilder.append(String.format(" %10s seconds: %d hits\n", - entry.getKey() / 1000, entry.getValue())); - } - } - return hitCounts; - } - return null; - } - - /** - * Returns the number of results to keep as part of merge-collection. - */ - protected final int computeNumResultsToKeep() { - return EarlybirdResponseMergeUtil.computeNumResultsToKeep(requestContext.getRequest()); - } - - /** - * Remove exact duplicates (same id) from the result set. - */ - protected static void trimExactDups(ThriftSearchResults searchResults, TrimStats trimStats) { - int numResults = searchResults.getResultsSize(); - List oldResults = searchResults.getResults(); - List newResults = Lists.newArrayListWithCapacity(numResults); - HashSet resultSet = Sets.newHashSetWithExpectedSize(numResults); - - for (ThriftSearchResult result : oldResults) { - if (resultSet.contains(result.getId())) { - trimStats.increaseRemovedDupsCount(); - continue; - } - - newResults.add(result); - resultSet.add(result.getId()); - } - - searchResults.setResults(newResults); - } - - protected final int addResponsesToCollector(MultiwayMergeCollector collector) { - int totalResultSize = 0; - for (EarlybirdResponse response : accumulatedResponses.getSuccessResponses()) { - if (response.isSetSearchResults()) { - totalResultSize += response.getSearchResults().getResultsSize(); - } - collector.addResponse(response); - } - return totalResultSize; - } - - /** - * Given a sorted searchResults (for recency, sorted by ID; for relevance, sorted by score), - * returns the first 'computeNumResultsToKeep()' number of results. - * - * @param searchResults the searchResults to be truncated. - */ - protected final void truncateResults(ThriftSearchResults searchResults, TrimStats trimStats) { - int numResultsRequested = computeNumResultsToKeep(); - - int to = numResultsRequested == Integer.MAX_VALUE ? searchResults.getResultsSize() - : Math.min(numResultsRequested, searchResults.getResultsSize()); - if (searchResults.getResultsSize() > to) { - trimStats.setResultsTruncatedFromTailCount(searchResults.getResultsSize() - to); - - if (to > 0) { - searchResults.setResults(searchResults.getResults().subList(0, to)); - } else { - // No more results for the next page - EARLYBIRD_RESPONSE_NO_MORE_RESULTS.increment(); - searchResults.setResults(Collections.emptyList()); - } - } - } - - EarlybirdRequest getEarlybirdRequest() { - return requestContext.getRequest(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/FacetResponseMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/FacetResponseMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..2262d607608dd74c130f8866a880e67e2260410d GIT binary patch literal 40573 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 responses, - ResponseAccumulator mode) { - super(requestContext, responses, mode); - debugMessageBuilder = responseMessageBuilder.getDebugMessageBuilder(); - debugMessageBuilder.verbose("--- Request Received: %s", requestContext.getRequest()); - } - - @Override - protected SearchTimerStats getMergedResponseTimer() { - return TIMER; - } - - @Override - protected double getDefaultSuccessResponseThreshold() { - return SUCCESSFUL_RESPONSE_THRESHOLD; - } - - @Override - protected EarlybirdResponse internalMerge(EarlybirdResponse facetsResponse) { - - final Map facetFieldInfoMap = - new HashMap<>(); - final Set userIDWhitelist = new HashSet<>(); - - // First, parse the responses and build up our facet info map. - boolean termStatsFilteringMode = FacetsResultsUtils.prepareFieldInfoMap( - requestContext.getRequest().getFacetRequest(), facetFieldInfoMap); - // Iterate through all futures and get results. - collectResponsesAndPopulateMap(facetFieldInfoMap, userIDWhitelist); - - // Next, aggregate the top facets and update the blender response. - facetsResponse - .setFacetResults(new ThriftFacetResults() - .setFacetFields(new HashMap<>()) - .setUserIDWhitelist(userIDWhitelist)); - - // keep track of how many facets a user contributed - this map gets reset for every field - Map perFieldAntiGamingMap = new HashMap<>(); - - // this one is used for images and twimges - Map imagesAntiGamingMap = new HashMap<>(); - - Set twimgDedupSet = null; - - for (final Map.Entry entry - : facetFieldInfoMap.entrySet()) { - // reset for each field - String field = entry.getKey(); - final Map antiGamingMap; - if (field.equals(EarlybirdFieldConstant.IMAGES_FACET) - || field.equals(EarlybirdFieldConstant.TWIMG_FACET)) { - antiGamingMap = imagesAntiGamingMap; - } else { - perFieldAntiGamingMap.clear(); - antiGamingMap = perFieldAntiGamingMap; - } - - ThriftFacetFieldResults results = new ThriftFacetFieldResults(); - FacetsResultsUtils.FacetFieldInfo info = entry.getValue(); - results.setTotalCount(info.totalCounts); - results.setTopFacets(new ArrayList<>()); - FacetsResultsUtils.fillTopLanguages(info, results); - if (info.topFacets != null && !info.topFacets.isEmpty()) { - fillFacetFieldResults(info, antiGamingMap, results); - } - - if (field.equals(EarlybirdFieldConstant.TWIMG_FACET)) { - if (twimgDedupSet == null) { - twimgDedupSet = Sets.newHashSet(); - } - FacetsResultsUtils.dedupTwimgFacet(twimgDedupSet, results, debugMessageBuilder); - } - - facetsResponse.getFacetResults().putToFacetFields(entry.getKey(), results); - } - - if (!termStatsFilteringMode) { - // in term stats filtering mode, if doing it here would break term stats filtering - FacetsResultsUtils.mergeTwimgResults( - facetsResponse.getFacetResults(), - Collections.reverseOrder( - FacetsResultsUtils.getFacetCountComparator( - requestContext.getRequest().getFacetRequest()))); - } - - // Update the numHitsProcessed on ThriftSearchResults. - int numHitsProcessed = 0; - int numPartitionsEarlyTerminated = 0; - for (EarlybirdResponse earlybirdResponse: accumulatedResponses.getSuccessResponses()) { - ThriftSearchResults searchResults = earlybirdResponse.getSearchResults(); - if (searchResults != null) { - numHitsProcessed += searchResults.getNumHitsProcessed(); - numPartitionsEarlyTerminated += searchResults.getNumPartitionsEarlyTerminated(); - } - } - ThriftSearchResults searchResults = new ThriftSearchResults(); - searchResults.setResults(new ArrayList<>()); // required field - searchResults.setNumHitsProcessed(numHitsProcessed); - searchResults.setNumPartitionsEarlyTerminated(numPartitionsEarlyTerminated); - facetsResponse.setSearchResults(searchResults); - - LOG.debug("Facets call completed successfully: {}", facetsResponse); - - FacetsResultsUtils.fixNativePhotoUrl(facetsResponse); - return facetsResponse; - } - - private void fillFacetFieldResults(FacetsResultsUtils.FacetFieldInfo facetFieldInfo, - Map antiGamingMap, - ThriftFacetFieldResults results) { - int minWeightedCount = 0; - int minSimpleCount = 0; - int maxPenaltyCount = Integer.MAX_VALUE; - double maxPenaltyCountRatio = 1; - boolean excludePossiblySensitiveFacets = false; - boolean onlyReturnFacetsWithDisplayTweet = false; - int maxHitsPerUser = -1; - - EarlybirdRequest request = requestContext.getRequest(); - if (request.getFacetRequest() != null) { - ThriftFacetRankingOptions rankingOptions = request.getFacetRequest().getFacetRankingOptions(); - - if (request.getSearchQuery() != null) { - maxHitsPerUser = request.getSearchQuery().getMaxHitsPerUser(); - } - - if (rankingOptions != null) { - LOG.debug("FacetsResponseMerger: Using rankingOptions={}", rankingOptions); - - if (rankingOptions.isSetMinCount()) { - minWeightedCount = rankingOptions.getMinCount(); - } - if (rankingOptions.isSetMinSimpleCount()) { - minSimpleCount = rankingOptions.getMinSimpleCount(); - } - if (rankingOptions.isSetMaxPenaltyCount()) { - maxPenaltyCount = rankingOptions.getMaxPenaltyCount(); - } - if (rankingOptions.isSetMaxPenaltyCountRatio()) { - maxPenaltyCountRatio = rankingOptions.getMaxPenaltyCountRatio(); - } - if (rankingOptions.isSetExcludePossiblySensitiveFacets()) { - excludePossiblySensitiveFacets = rankingOptions.isExcludePossiblySensitiveFacets(); - } - if (rankingOptions.isSetOnlyReturnFacetsWithDisplayTweet()) { - onlyReturnFacetsWithDisplayTweet = rankingOptions.isOnlyReturnFacetsWithDisplayTweet(); - } - } - } else { - LOG.warn("earlybirdRequest.getFacetRequest() is null"); - } - - ThriftFacetCount[] topFacetsArray = new ThriftFacetCount[facetFieldInfo.topFacets.size()]; - - facetFieldInfo.topFacets.values().toArray(topFacetsArray); - Arrays.sort(topFacetsArray, Collections.reverseOrder( - FacetsResultsUtils.getFacetCountComparator(request.getFacetRequest()))); - - int numResults = capFacetFieldWidth(facetFieldInfo.fieldRequest.numResults); - - if (topFacetsArray.length < numResults) { - numResults = topFacetsArray.length; - } - - int collected = 0; - for (int i = 0; i < topFacetsArray.length; ++i) { - ThriftFacetCount count = topFacetsArray[i]; - - if (onlyReturnFacetsWithDisplayTweet - && (!count.isSetMetadata() || !count.getMetadata().isSetStatusId() - || count.getMetadata().getStatusId() == -1)) { - // status id must be set - continue; - } - - if (excludePossiblySensitiveFacets && count.isSetMetadata() - && count.getMetadata().isStatusPossiblySensitive()) { - // the display tweet may be offensive or NSFW - if (DebugMessageBuilder.DEBUG_VERBOSE <= debugMessageBuilder.getDebugLevel()) { - debugMessageBuilder.verbose2("[%d] FacetsResponseMerger EXCLUDED: offensive or NSFW %s, " - + "explanation: %s", - i, facetCountSummary(count), - count.getMetadata().getExplanation()); - } - continue; - } - - boolean filterOutUser = false; - if (maxHitsPerUser != -1 && count.isSetMetadata()) { - ThriftFacetCountMetadata metadata = count.getMetadata(); - if (!metadata.dontFilterUser) { - long twitterUserId = metadata.getTwitterUserId(); - int numResultsFromUser = 1; - if (twitterUserId != -1) { - Integer perUser = antiGamingMap.get(twitterUserId); - if (perUser != null) { - numResultsFromUser = perUser + 1; - filterOutUser = numResultsFromUser > maxHitsPerUser; - } - antiGamingMap.put(twitterUserId, numResultsFromUser); - } - } - } - - // Filter facets those don't meet the basic criteria. - if (count.getSimpleCount() < minSimpleCount) { - if (DebugMessageBuilder.DEBUG_VERBOSE <= debugMessageBuilder.getDebugLevel()) { - debugMessageBuilder.verbose2( - "[%d] FacetsResponseMerger EXCLUDED: simpleCount:%d < minSimpleCount:%d, %s", - i, count.getSimpleCount(), minSimpleCount, facetCountSummary(count)); - } - continue; - } - if (count.getWeightedCount() < minWeightedCount) { - if (DebugMessageBuilder.DEBUG_VERBOSE <= debugMessageBuilder.getDebugLevel()) { - debugMessageBuilder.verbose2( - "[%d] FacetsResponseMerger EXCLUDED: weightedCount:%d < minWeightedCount:%d, %s", - i, count.getWeightedCount(), minWeightedCount, facetCountSummary(count)); - } - continue; - } - if (filterOutUser) { - if (DebugMessageBuilder.DEBUG_VERBOSE <= debugMessageBuilder.getDebugLevel()) { - debugMessageBuilder.verbose2( - "[%d] FacetsResponseMerger EXCLUDED: antiGaming filterd user: %d: %s", - i, count.getMetadata().getTwitterUserId(), facetCountSummary(count)); - } - continue; - } - if (count.getPenaltyCount() > maxPenaltyCount) { - if (DebugMessageBuilder.DEBUG_VERBOSE <= debugMessageBuilder.getDebugLevel()) { - debugMessageBuilder.verbose2( - "[%d] FacetsResponseMerger EXCLUCED: penaltyCount:%.3f > maxPenaltyCount:%.3f, %s", - i, count.getPenaltyCount(), maxPenaltyCount, facetCountSummary(count)); - } - continue; - } - if (((double) count.getPenaltyCount() / count.getSimpleCount()) > maxPenaltyCountRatio) { - if (DebugMessageBuilder.DEBUG_VERBOSE <= debugMessageBuilder.getDebugLevel()) { - debugMessageBuilder.verbose2( - "[%d] FacetsResponseMerger EXCLUDED: penaltyCountRatio: %.3f > " - + "maxPenaltyCountRatio:%.3f, %s", - i, (double) count.getPenaltyCount() / count.getSimpleCount(), maxPenaltyCountRatio, - facetCountSummary(count)); - } - continue; - } - results.addToTopFacets(count); - - collected++; - if (collected >= numResults) { - break; - } - } - } - - private static int capFacetFieldWidth(int numResults) { - int ret = numResults; - if (numResults <= 0) { - // this in theory should not be allowed, but for now we issue the request with goodwill length - ret = 10; // default to 10 for future merge code to terminate correctly - } - if (numResults >= 100) { - ret = 100; - } - return ret; - } - - private static String facetCountSummary(final ThriftFacetCount count) { - if (count.isSetMetadata()) { - return String.format("Label: %s (s:%d, w:%d, p:%d, score:%.2f, sid:%d (%s))", - count.getFacetLabel(), count.getSimpleCount(), count.getWeightedCount(), - count.getPenaltyCount(), count.getScore(), count.getMetadata().getStatusId(), - count.getMetadata().getStatusLanguage()); - } else { - return String.format("Label: %s (s:%d, w:%d, p:%d, score:%.2f)", count.getFacetLabel(), - count.getSimpleCount(), count.getWeightedCount(), count.getPenaltyCount(), - count.getScore()); - } - } - - // Iterate through the backend responses and fill up the FacetFieldInfo map. - private void collectResponsesAndPopulateMap( - final Map facetFieldInfoMap, - final Set userIDWhitelist) { - // Next, iterate through the backend responses. - int i = 0; - for (EarlybirdResponse facetsResponse : accumulatedResponses.getSuccessResponses()) { - if (facetsResponse.isSetFacetResults()) { - LOG.debug("Facet response from earlybird {} is {} ", i, facetsResponse.getFacetResults()); - i++; - ThriftFacetResults facetResults = facetsResponse.getFacetResults(); - if (facetResults.isSetUserIDWhitelist()) { - userIDWhitelist.addAll(facetResults.getUserIDWhitelist()); - } - FacetsResultsUtils.fillFacetFieldInfo( - facetResults, facetFieldInfoMap, - userIDWhitelist); - } - } - LOG.debug("Earlybird facet response total size {}", i); - } -} - diff --git a/src/java/com/twitter/search/earlybird_root/mergers/PartitionResponseAccumulator.docx b/src/java/com/twitter/search/earlybird_root/mergers/PartitionResponseAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..6404f6cffdf0f5b7fe82b16a351ce4f2e2920c07 GIT binary patch literal 37202 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 searchCounterMap; - - EarlyTerminationTrimmingStats(String prefix) { - Map tempMap = Maps.newEnumMap(Type.class); - - tempMap.put(NOT_EARLY_TERMINATED, - SearchCounter.export(prefix + "_not_early_terminated_after_merging")); - tempMap.put(ALREADY_EARLY_TERMINATED, - SearchCounter.export(prefix + "_early_terminated_before_merge_trimming")); - tempMap.put(TRUNCATED, - SearchCounter.export(prefix + "_early_terminated_after_merging_truncated")); - tempMap.put(FILTERED, - SearchCounter.export(prefix + "_early_terminated_after_merging_filtered")); - tempMap.put(FILTERED_AND_TRUNCATED, - SearchCounter.export(prefix + "_early_terminated_after_merging_filtered_and_truncated")); - tempMap.put(TERMINATED_GOT_EXACT_NUM_RESULTS, - SearchCounter.export(prefix + "_early_terminated_after_merging_got_exact_num_results")); - - searchCounterMap = Maps.immutableEnumMap(tempMap); - } - - public SearchCounter getCounterFor(Type type) { - return searchCounterMap.get(type); - } - } - - private final EarlybirdFeatureSchemaMerger featureSchemaMerger; - - public RecencyResponseMerger(EarlybirdRequestContext requestContext, - List> responses, - ResponseAccumulator mode, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - super(requestContext, responses, mode); - this.featureSchemaMerger = featureSchemaMerger; - } - - @Override - protected double getDefaultSuccessResponseThreshold() { - return SUCCESSFUL_RESPONSE_THRESHOLD; - } - - @Override - protected SearchTimerStats getMergedResponseTimer() { - return RECENCY_TIMER; - } - - @Override - protected EarlybirdResponse internalMerge(EarlybirdResponse mergedResponse) { - // The merged maxSearchedStatusId and minSearchedStatusId - long maxId = findMaxFullySearchedStatusID(); - long minId = findMinFullySearchedStatusID(); - - RecencyMergeCollector collector = new RecencyMergeCollector(responses.size()); - int totalResultSize = addResponsesToCollector(collector); - ThriftSearchResults searchResults = collector.getAllSearchResults(); - - TrimStats trimStats = trimResults(searchResults, minId, maxId); - setMergedMaxSearchedStatusId(searchResults, maxId); - setMergedMinSearchedStatusId( - searchResults, minId, trimStats.getResultsTruncatedFromTailCount() > 0); - - mergedResponse.setSearchResults(searchResults); - - // Override some components of the response as appropriate to real-time. - searchResults.setHitCounts(aggregateHitCountMap()); - if (accumulatedResponses.isMergingPartitionsWithinATier() - && clearEarlyTerminationIfReachingTierBottom(mergedResponse)) { - RECENCY_CLEARED_EARLY_TERMINATION_COUNT.increment(); - } else { - setEarlyTerminationForTrimmedResults(mergedResponse, trimStats); - } - - responseMessageBuilder.debugVerbose("Hits: %s %s", totalResultSize, trimStats); - responseMessageBuilder.debugVerbose( - "Hash Partitioned Earlybird call completed successfully: %s", mergedResponse); - - featureSchemaMerger.collectAndSetFeatureSchemaInResponse( - searchResults, - requestContext, - "merger_recency_tier", - accumulatedResponses.getSuccessResponses()); - - return mergedResponse; - } - - /** - * When we reached tier bottom, pagination can stop working even though we haven't got - * all results. e.g. - * Results from partition 1: [101 91 81], minSearchedStatusId is 81 - * Results from Partition 2: [102 92], minSearchedStatusId is 92, not early terminated. - * - * After merge, we get [102, 101, 92], with minResultId == 92. Since results from - * partition 2 is not early terminated, 92 is the tier bottom here. Since results are - * filtered, early termination for merged result is set to true, so blender will call again, - * with maxDocId == 91. This time we get result: - * Results from partition 1: [91 81], minSearchedStatusId is 81 - * Results from partition 2: [], minSearchedStatusId is still 92 - * After merge we get [] and minSearchedStatusId is still 92. No progress can be made on - * pagination and clients get stuck. - * - * So in this case, we clear the early termination flag to tell blender there is no more - * result in this tier. Tweets below tier bottom will be missed, but that also happens - * without this step, as the next pagination call will return empty results anyway. - * So even if there is NOT overlap between tiers, this is still better. - * - * Return true if early termination is cleared due to this, otherwise return false. - * To be safe, we do nothing here to keep existing behavior and only override it in - * StrictRecencyResponseMerger. - */ - protected boolean clearEarlyTerminationIfReachingTierBottom(EarlybirdResponse mergedResponse) { - return false; - } - - /** - * Determines if the merged response should be early-terminated when it has exactly as many - * trimmed results as requested, as is not early-terminated because of other reasons. - */ - protected boolean shouldEarlyTerminateWhenEnoughTrimmedResults() { - return true; - } - - /** - * If the end results were trimmed in any way, reflect that in the response as a query that was - * early terminated. A response can be either (1) truncated because we merged more results than - * what was asked for with numResults, or (2) we filtered results that were smaller than the - * merged minSearchedStatusId. - * - * @param mergedResponse the merged response. - * @param trimStats trim stats for this merge. - */ - private void setEarlyTerminationForTrimmedResults( - EarlybirdResponse mergedResponse, - TrimStats trimStats) { - - responseMessageBuilder.debugVerbose("Checking for merge trimming, trimStats %s", trimStats); - - EarlyTerminationTrimmingStats stats = getEarlyTerminationTrimmingStats(); - - EarlyTerminationInfo earlyTerminationInfo = mergedResponse.getEarlyTerminationInfo(); - Preconditions.checkNotNull(earlyTerminationInfo); - - if (!earlyTerminationInfo.isEarlyTerminated()) { - if (trimStats.getMinIdFilterCount() > 0 || trimStats.getResultsTruncatedFromTailCount() > 0) { - responseMessageBuilder.debugVerbose("Setting early termination, trimStats: %s, results: %s", - trimStats, mergedResponse); - - earlyTerminationInfo.setEarlyTerminated(true); - addEarlyTerminationReasons(earlyTerminationInfo, trimStats); - - if (trimStats.getMinIdFilterCount() > 0 - && trimStats.getResultsTruncatedFromTailCount() > 0) { - stats.getCounterFor(FILTERED_AND_TRUNCATED).increment(); - } else if (trimStats.getMinIdFilterCount() > 0) { - stats.getCounterFor(FILTERED).increment(); - } else if (trimStats.getResultsTruncatedFromTailCount() > 0) { - stats.getCounterFor(TRUNCATED).increment(); - } else { - Preconditions.checkState(false, "Invalid TrimStats: %s", trimStats); - } - } else if ((computeNumResultsToKeep() == mergedResponse.getSearchResults().getResultsSize()) - && shouldEarlyTerminateWhenEnoughTrimmedResults()) { - earlyTerminationInfo.setEarlyTerminated(true); - earlyTerminationInfo.addToMergedEarlyTerminationReasons( - TERMINATED_COLLECTED_ENOUGH_RESULTS); - stats.getCounterFor(TERMINATED_GOT_EXACT_NUM_RESULTS).increment(); - } else { - stats.getCounterFor(NOT_EARLY_TERMINATED).increment(); - } - } else { - stats.getCounterFor(ALREADY_EARLY_TERMINATED).increment(); - // Even if the results were already marked as early terminated, we can add additional - // reasons for debugging (if the merged results were filtered or truncated). - addEarlyTerminationReasons(earlyTerminationInfo, trimStats); - } - } - - private void addEarlyTerminationReasons( - EarlyTerminationInfo earlyTerminationInfo, - TrimStats trimStats) { - - if (trimStats.getMinIdFilterCount() > 0) { - earlyTerminationInfo.addToMergedEarlyTerminationReasons( - MERGING_EARLY_TERMINATION_REASON_FILTERED); - } - - if (trimStats.getResultsTruncatedFromTailCount() > 0) { - earlyTerminationInfo.addToMergedEarlyTerminationReasons( - MERGING_EARLY_TERMINATION_REASON_TRUNCATED); - } - } - - private EarlyTerminationTrimmingStats getEarlyTerminationTrimmingStats() { - if (accumulatedResponses.isMergingPartitionsWithinATier()) { - return getEarlyTerminationTrimmingStatsForPartitions(); - } else { - return getEarlyTerminationTrimmingStatsForTiers(); - } - } - - protected EarlyTerminationTrimmingStats getEarlyTerminationTrimmingStatsForPartitions() { - return PARTITION_MERGING_EARLY_TERMINATION_TRIMMING_STATS; - } - - protected EarlyTerminationTrimmingStats getEarlyTerminationTrimmingStatsForTiers() { - return TIER_MERGING_EARLY_TERMINATION_TRIMMING_STATS; - } - - /** - * If we get enough results, no need to go on. - * If one of the partitions early terminated, we can't go on or else there could be a gap. - */ - @Override - public boolean shouldEarlyTerminateTierMerge(int totalResultsFromSuccessfulShards, - boolean foundEarlyTermination) { - - - int resultsRequested = computeNumResultsToKeep(); - - boolean shouldEarlyTerminate = foundEarlyTermination - || totalResultsFromSuccessfulShards >= resultsRequested; - - if (shouldEarlyTerminate && totalResultsFromSuccessfulShards < resultsRequested) { - RECENCY_TIER_MERGE_EARLY_TERMINATED_WITH_NOT_ENOUGH_RESULTS.increment(); - } - - return shouldEarlyTerminate; - } - - /** - * Find the min status id that has been _completely_ searched across all partitions. The - * largest min status id across all partitions. - * - * @return the min searched status id found - */ - protected long findMinFullySearchedStatusID() { - List minIds = accumulatedResponses.getMinIds(); - if (minIds.isEmpty()) { - return Long.MIN_VALUE; - } - - if (accumulatedResponses.isMergingPartitionsWithinATier()) { - // When merging partitions, the min ID should be the largest among the min IDs. - return Collections.max(accumulatedResponses.getMinIds()); - } else { - // When merging tiers, the min ID should be the smallest among the min IDs. - return Collections.min(accumulatedResponses.getMinIds()); - } - } - - /** - * Find the max status id that has been _completely_ searched across all partitions. The - * smallest max status id across all partitions. - * - * This is where we reconcile replication lag by selecting the oldest maxid from the - * partitions searched. - * - * @return the max searched status id found - */ - protected long findMaxFullySearchedStatusID() { - List maxIDs = accumulatedResponses.getMaxIds(); - if (maxIDs.isEmpty()) { - return Long.MAX_VALUE; - } - Collections.sort(maxIDs); - - final long newest = maxIDs.get(maxIDs.size() - 1); - final long newestTimestamp = SnowflakeIdParser.getTimestampFromTweetId(newest); - - for (int i = 0; i < maxIDs.size(); i++) { - long oldest = maxIDs.get(i); - long oldestTimestamp = SnowflakeIdParser.getTimestampFromTweetId(oldest); - long deltaMs = newestTimestamp - oldestTimestamp; - - if (i == 0) { - LOG.debug("Max delta is {}", deltaMs); - } - - if (deltaMs < ALLOWED_REPLICATION_LAG_MS) { - if (i != 0) { - LOG.debug("{} partition replicas lagging more than {} ms", i, ALLOWED_REPLICATION_LAG_MS); - } - return oldest; - } - } - - // Can't get here - by this point oldest == newest, and delta is 0. - return newest; - } - - /** - * Trim the ThriftSearchResults if we have enough results, to return the first - * 'computeNumResultsToKeep()' number of results. - * - * If we don't have enough results after trimming, this function will first try to back fill - * older results, then newer results - * - * @param searchResults ThriftSearchResults that hold the to be trimmed List - * @return TrimStats containing statistics about how many results being removed - */ - protected TrimStats trimResults( - ThriftSearchResults searchResults, - long mergedMin, - long mergedMax) { - if (!searchResults.isSetResults() || searchResults.getResultsSize() == 0) { - // no results, no trimming needed - return TrimStats.EMPTY_STATS; - } - - if (requestContext.getRequest().getSearchQuery().isSetSearchStatusIds()) { - // Not a normal search, no trimming needed - return TrimStats.EMPTY_STATS; - } - - TrimStats trimStats = new TrimStats(); - trimExactDups(searchResults, trimStats); - - int numResultsRequested = computeNumResultsToKeep(); - if (shouldSkipTrimmingWhenNotEnoughResults(searchResults, numResultsRequested)) { - ////////////////////////////////////////////////////////// - // We don't have enough results, let's not do trimming - ////////////////////////////////////////////////////////// - return trimStats; - } - - if (accumulatedResponses.isMergingPartitionsWithinATier()) { - trimResultsBasedSearchedRange( - searchResults, trimStats, numResultsRequested, mergedMin, mergedMax); - } - - // Respect "computeNumResultsToKeep()" here, only keep "computeNumResultsToKeep()" results. - truncateResults(searchResults, trimStats); - - return trimStats; - } - - /** - * When there's not enough results, we don't remove results based on the searched range. - * This has a tradeoff: with this, we don't reduce our recall when we already don't have enough - * results. However, with this, we can lose results while paginating because we return results - * outside of the valid searched range. - */ - protected boolean shouldSkipTrimmingWhenNotEnoughResults( - ThriftSearchResults searchResults, int numResultsRequested) { - return searchResults.getResultsSize() <= numResultsRequested; - } - - - /** - * Trim results based on search range. The search range [x, y] is determined by: - * x is the maximun of the minimun search IDs; - * y is the minimun of the maximum search IDs. - * - * Ids out side of this range are removed. - * If we do not get enough results after the removal, we add IDs back until we get enough results. - * We first add IDs back from the older side back. If there's still not enough results, - * we start adding IDs from the newer side back. - */ - private void trimResultsBasedSearchedRange(ThriftSearchResults searchResults, - TrimStats trimStats, - int numResultsRequested, - long mergedMin, - long mergedMax) { - /////////////////////////////////////////////////////////////////// - // we have more results than requested, let's do some trimming - /////////////////////////////////////////////////////////////////// - - // Save the original results before trimming - List originalResults = searchResults.getResults(); - - filterResultsByMergedMinMaxIds(searchResults, mergedMax, mergedMin, trimStats); - - // This does happen. It is hard to say what we should do here so we just return the original - // result here. - if (searchResults.getResultsSize() == 0) { - RECENCY_ZERO_RESULT_COUNT_AFTER_FILTERING_MAX_MIN_IDS.increment(); - searchResults.setResults(originalResults); - - // Clean up min/mix filtered count, since we're bringing back whatever we just filtered. - trimStats.clearMaxIdFilterCount(); - trimStats.clearMinIdFilterCount(); - - if (LOG.isDebugEnabled() || responseMessageBuilder.isDebugMode()) { - String errMsg = "No trimming is done as filtered results is empty. " - + "maxId=" + mergedMax + ",minId=" + mergedMin; - LOG.debug(errMsg); - responseMessageBuilder.append(errMsg + "\n"); - } - } else { - // oops! we're trimming too many results. Let's put some back - if (searchResults.getResultsSize() < numResultsRequested) { - RECENCY_TRIMMED_TOO_MANY_RESULTS_COUNT.increment(); - - List trimmedResults = searchResults.getResults(); - long firstTrimmedResultId = trimmedResults.get(0).getId(); - long lastTrimmedResultId = trimmedResults.get(trimmedResults.size() - 1).getId(); - - // First, try to back fill with older results - int i = 0; - for (; i < originalResults.size(); ++i) { - ThriftSearchResult result = originalResults.get(i); - if (result.getId() < lastTrimmedResultId) { - trimmedResults.add(result); - trimStats.decreaseMinIdFilterCount(); - if (trimmedResults.size() >= numResultsRequested) { - break; - } - } - } - - // still not enough results? back fill with newer results - // find the oldest of the newer results - if (trimmedResults.size() < numResultsRequested) { - // still not enough results? back fill with newer results - // find the oldest of the newer results - for (i = originalResults.size() - 1; i >= 0; --i) { - ThriftSearchResult result = originalResults.get(i); - if (result.getId() > firstTrimmedResultId) { - trimmedResults.add(result); - trimStats.decreaseMaxIdFilterCount(); - if (trimmedResults.size() >= numResultsRequested) { - break; - } - } - } - - // newer results were added to the back of the list, re-sort - Collections.sort(trimmedResults, ResultComparators.ID_COMPARATOR); - } - } - } - } - - protected void setMergedMinSearchedStatusId( - ThriftSearchResults searchResults, - long currentMergedMin, - boolean resultsWereTrimmed) { - if (accumulatedResponses.getMinIds().isEmpty()) { - return; - } - - long merged; - if (searchResults == null - || !searchResults.isSetResults() - || searchResults.getResultsSize() == 0) { - merged = currentMergedMin; - } else { - List results = searchResults.getResults(); - long firstResultId = results.get(0).getId(); - long lastResultId = results.get(results.size() - 1).getId(); - merged = Math.min(firstResultId, lastResultId); - if (!resultsWereTrimmed) { - // If the results were trimmed, we want to set minSearchedStatusID to the smallest - // tweet ID in the response. Otherwise, we want to take the min between that, and - // the current minSearchedStatusID. - merged = Math.min(merged, currentMergedMin); - } - } - - searchResults.setMinSearchedStatusID(merged); - } - - private void setMergedMaxSearchedStatusId( - ThriftSearchResults searchResults, - long currentMergedMax) { - if (accumulatedResponses.getMaxIds().isEmpty()) { - return; - } - - long merged; - if (searchResults == null - || !searchResults.isSetResults() - || searchResults.getResultsSize() == 0) { - merged = currentMergedMax; - } else { - List results = searchResults.getResults(); - long firstResultId = results.get(0).getId(); - long lastResultId = results.get(results.size() - 1).getId(); - long maxResultId = Math.max(firstResultId, lastResultId); - merged = Math.max(maxResultId, currentMergedMax); - } - - searchResults.setMaxSearchedStatusID(merged); - } - - protected static void filterResultsByMergedMinMaxIds( - ThriftSearchResults results, long maxStatusId, long minStatusId, TrimStats trimStats) { - List trimedResults = - Lists.newArrayListWithCapacity(results.getResultsSize()); - - for (ThriftSearchResult result : results.getResults()) { - long statusId = result.getId(); - - if (statusId > maxStatusId) { - trimStats.increaseMaxIdFilterCount(); - } else if (statusId < minStatusId) { - trimStats.increaseMinIdFilterCount(); - } else { - trimedResults.add(result); - } - } - - results.setResults(trimedResults); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/RelevanceResponseMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/RelevanceResponseMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..ccf9b429c2ea587113b9641514ef844d58f89867 GIT binary patch literal 40076 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 CS{`Kp literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/RelevanceResponseMerger.java b/src/java/com/twitter/search/earlybird_root/mergers/RelevanceResponseMerger.java deleted file mode 100644 index e58e79951..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/RelevanceResponseMerger.java +++ /dev/null @@ -1,268 +0,0 @@ -package com.twitter.search.earlybird_root.mergers; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; -import com.google.common.base.Preconditions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.util.earlybird.EarlybirdResponseUtil; -import com.twitter.search.common.util.earlybird.ResultsUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRankingMode; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird_root.collectors.RelevanceMergeCollector; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.util.Future; - -/** - * Merger class to merge relevance search EarlybirdResponse objects - */ -public class RelevanceResponseMerger extends EarlybirdResponseMerger { - private static final Logger LOG = LoggerFactory.getLogger(RelevanceResponseMerger.class); - - private static final SearchTimerStats TIMER = - SearchTimerStats.export("merge_relevance", TimeUnit.NANOSECONDS, false, true); - - private static final SearchCounter RELVEANCE_TIER_MERGE_EARLY_TERMINATED_WITH_NOT_ENOUGH_RESULTS = - SearchCounter.export("merger_relevance_tier_merge_early_terminated_with_not_enough_results"); - - private static final String PARTITION_NUM_RESULTS_COUNTER_SKIP_STATS = - "merger_relevance_post_trimmed_results_skip_stat_tier_%s_partition_%d"; - - @VisibleForTesting - public static final String PARTITION_NUM_RESULTS_COUNTER_NAME_FORMAT = - "merger_relevance_post_trimmed_results_from_tier_%s_partition_%d"; - - protected static final Function> LANG_MAP_GETTER = - response -> response.getSearchResults() == null - ? null - : response.getSearchResults().getLanguageHistogram(); - - private static final double SUCCESSFUL_RESPONSE_THRESHOLD = 0.8; - - private final EarlybirdFeatureSchemaMerger featureSchemaMerger; - - // The number of partitions are not meaningful when it is invoked through multi-tier merging. - private final int numPartitions; - - public RelevanceResponseMerger(EarlybirdRequestContext requestContext, - List> responses, - ResponseAccumulator mode, - EarlybirdFeatureSchemaMerger featureSchemaMerger, - int numPartitions) { - super(requestContext, responses, mode); - this.featureSchemaMerger = Preconditions.checkNotNull(featureSchemaMerger); - this.numPartitions = numPartitions; - } - - @Override - protected double getDefaultSuccessResponseThreshold() { - return SUCCESSFUL_RESPONSE_THRESHOLD; - } - - @Override - protected SearchTimerStats getMergedResponseTimer() { - return TIMER; - } - - @Override - protected EarlybirdResponse internalMerge(EarlybirdResponse mergedResponse) { - final ThriftSearchQuery searchQuery = requestContext.getRequest().getSearchQuery(); - long maxId = findMaxFullySearchedStatusID(); - long minId = findMinFullySearchedStatusID(); - - Preconditions.checkNotNull(searchQuery); - Preconditions.checkState(searchQuery.isSetRankingMode()); - Preconditions.checkState(searchQuery.getRankingMode() == ThriftSearchRankingMode.RELEVANCE); - - // First get the results in score order (the default comparator for this merge collector). - RelevanceMergeCollector collector = new RelevanceMergeCollector(responses.size()); - int totalResultSize = addResponsesToCollector(collector); - ThriftSearchResults searchResults = collector.getAllSearchResults(); - - TrimStats trimStats = trimResults(searchResults); - featureSchemaMerger.collectAndSetFeatureSchemaInResponse( - searchResults, - requestContext, - "merger_relevance_tier", - accumulatedResponses.getSuccessResponses()); - - mergedResponse.setSearchResults(searchResults); - - searchResults = mergedResponse.getSearchResults(); - searchResults - .setHitCounts(aggregateHitCountMap()) - .setLanguageHistogram(aggregateLanguageHistograms()); - - if (!accumulatedResponses.getMaxIds().isEmpty()) { - searchResults.setMaxSearchedStatusID(maxId); - } - - if (!accumulatedResponses.getMinIds().isEmpty()) { - searchResults.setMinSearchedStatusID(minId); - } - - LOG.debug("Hits: {} Removed duplicates: {}", totalResultSize, trimStats.getRemovedDupsCount()); - LOG.debug("Hash Partition'ed Earlybird call completed successfully: {}", mergedResponse); - - publishNumResultsFromPartitionStatistics(mergedResponse); - - return mergedResponse; - } - - /** - * If any of the partitions has an early termination, the tier merge must also early terminate. - * - * If a partition early terminated (we haven't fully searched that partition), and we instead - * moved onto the next tier, there will be a gap of unsearched results. - * - * If our early termination condition was only if we had enough results, we could get bad quality - * results by only looking at 20 hits when asking for 20 results. - */ - @Override - public boolean shouldEarlyTerminateTierMerge(int totalResultsFromSuccessfulShards, - boolean foundEarlyTermination) { - - // Don't use computeNumResultsToKeep because if returnAllResults is true, it will be - // Integer.MAX_VALUE and we will always log a stat that we didn't get enough results - int resultsRequested; - EarlybirdRequest request = requestContext.getRequest(); - if (request.isSetNumResultsToReturnAtRoot()) { - resultsRequested = request.getNumResultsToReturnAtRoot(); - } else { - resultsRequested = request.getSearchQuery().getCollectorParams().getNumResultsToReturn(); - } - if (foundEarlyTermination && totalResultsFromSuccessfulShards < resultsRequested) { - RELVEANCE_TIER_MERGE_EARLY_TERMINATED_WITH_NOT_ENOUGH_RESULTS.increment(); - } - - return foundEarlyTermination; - } - - /** - * Merge language histograms from all queries. - * - * @return Merge per-language count map. - */ - private Map aggregateLanguageHistograms() { - Map totalLangCounts = new TreeMap<>( - ResultsUtil.aggregateCountMap( - accumulatedResponses.getSuccessResponses(), LANG_MAP_GETTER)); - if (totalLangCounts.size() > 0) { - if (responseMessageBuilder.isDebugMode()) { - responseMessageBuilder.append("Language Distrbution:\n"); - int count = 0; - for (Map.Entry entry : totalLangCounts.entrySet()) { - responseMessageBuilder.append( - String.format(" %10s:%6d", entry.getKey(), entry.getValue())); - if (++count % 5 == 0) { - responseMessageBuilder.append("\n"); - } - } - responseMessageBuilder.append("\n"); - } - } - return totalLangCounts; - } - - /** - * Find the min status id that has been searched. Since no results are trimmed for Relevance mode, - * it should be the smallest among the min IDs. - */ - private long findMinFullySearchedStatusID() { - // The min ID should be the smallest among the min IDs - return accumulatedResponses.getMinIds().isEmpty() ? 0 - : Collections.min(accumulatedResponses.getMinIds()); - } - - /** - * Find the max status id that has been searched. Since no results are trimmed for Relevance mode, - * it should be the largest among the max IDs. - */ - private long findMaxFullySearchedStatusID() { - // The max ID should be the largest among the max IDs - return accumulatedResponses.getMaxIds().isEmpty() ? 0 - : Collections.max(accumulatedResponses.getMaxIds()); - } - - /** - * Return all the searchResults except duplicates. - * - * @param searchResults ThriftSearchResults that hold the to be trimmed List - * @return TrimStats containing statistics about how many results being removed - */ - private TrimStats trimResults(ThriftSearchResults searchResults) { - if (!searchResults.isSetResults() || searchResults.getResultsSize() == 0) { - // no results, no trimming needed - return TrimStats.EMPTY_STATS; - } - - if (requestContext.getRequest().getSearchQuery().isSetSearchStatusIds()) { - // Not a normal search, no trimming needed - return TrimStats.EMPTY_STATS; - } - - TrimStats trimStats = new TrimStats(); - trimExactDups(searchResults, trimStats); - - truncateResults(searchResults, trimStats); - - return trimStats; - } - - private void publishNumResultsFromPartitionStatistics(EarlybirdResponse mergedResponse) { - - // Keep track of all of the results that were kept after merging - Set mergedResults = - EarlybirdResponseUtil.getResults(mergedResponse).getResults() - .stream() - .map(result -> result.getId()) - .collect(Collectors.toSet()); - - // For each successful response (pre merge), count how many of its results were kept post merge. - // Increment the appropriate stat. - for (EarlybirdResponse response : accumulatedResponses.getSuccessResponses()) { - if (!response.isSetEarlybirdServerStats()) { - continue; - } - int numResultsKept = 0; - for (ThriftSearchResult result - : EarlybirdResponseUtil.getResults(response).getResults()) { - if (mergedResults.contains(result.getId())) { - ++numResultsKept; - } - } - - // We only update partition stats when the partition ID looks sane. - String tierName = response.getEarlybirdServerStats().getTierName(); - int partition = response.getEarlybirdServerStats().getPartition(); - if (partition >= 0 && partition < numPartitions) { - SearchCounter.export(String.format(PARTITION_NUM_RESULTS_COUNTER_NAME_FORMAT, - tierName, - partition)) - .add(numResultsKept); - } else { - SearchCounter.export(String.format(PARTITION_NUM_RESULTS_COUNTER_SKIP_STATS, - tierName, - partition)).increment(); - } - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/ResponseAccumulator.docx b/src/java/com/twitter/search/earlybird_root/mergers/ResponseAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..3d386c5cd8b41e19f7d2e151bb70b294532f2e83 GIT binary patch literal 39854 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 k@x*%YH(o92k0Ewc9qMb710(3isA2$F0>eW# MIN_MAX_SEARCHED_ID_STATS_MAP; - static { - EnumMap statsMap - = Maps.newEnumMap(EarlybirdRequestType.class); - for (EarlybirdRequestType earlybirdRequestType : EarlybirdRequestType.values()) { - statsMap.put(earlybirdRequestType, new MinMaxSearchedIdStats(earlybirdRequestType)); - } - - MIN_MAX_SEARCHED_ID_STATS_MAP = Maps.immutableEnumMap(statsMap); - } - - // Merge has encountered at least one early terminated response. - private boolean foundEarlyTermination = false; - // Empty but successful response counter (E.g. when a tier or partition is skipped) - private int successfulEmptyResponseCount = 0; - // The list of the successful responses from all earlybird futures. This does not include empty - // responses resulted from null requests. - private final List successResponses = new ArrayList<>(); - // The list of the error responses from all earlybird futures. - private final List errorResponses = new ArrayList<>(); - // the list of max statusIds seen in each earlybird. - private final List maxIds = new ArrayList<>(); - // the list of min statusIds seen in each earlybird. - private final List minIds = new ArrayList<>(); - - private int numResponses = 0; - - private int numResultsAccumulated = 0; - private int numSearchedSegments = 0; - - /** - * Returns a string that can be used for logging to identify a single response out of all the - * responses that are being merged. - * - * @param responseIndex the index of a response's partition or tier, depending on the type of - * responses being accumulated. - * @param numTotalResponses the total number of partitions or tiers that are being merged. - */ - public abstract String getNameForLogging(int responseIndex, int numTotalResponses); - - /** - * Returns a string that is used to export per-EarlybirdResponseCode stats for partitions and tiers. - * - * @param responseIndex the index of of a response's partition or tier. - * @param numTotalResponses the total number of partitions or tiers that are being merged. - * @return a string that is used to export per-EarlybirdResponseCode stats for partitions and tiers. - */ - public abstract String getNameForEarlybirdResponseCodeStats( - int responseIndex, int numTotalResponses); - - abstract boolean shouldEarlyTerminateMerge(EarlyTerminateTierMergePredicate merger); - - /** - * Add a EarlybirdResponse - */ - public void addResponse(EarlybirdResponseDebugMessageBuilder responseMessageBuilder, - EarlybirdRequest request, - EarlybirdResponse response) { - numResponses++; - numSearchedSegments += response.getNumSearchedSegments(); - - if (isSkippedResponse(response)) { - // This is an empty response, no processing is required, just need to update statistics. - successfulEmptyResponseCount++; - handleSkippedResponse(response.getResponseCode()); - } else if (isErrorResponse(response)) { - errorResponses.add(response); - handleErrorResponse(response); - } else { - handleSuccessfulResponse(responseMessageBuilder, request, response); - } - } - - private boolean isErrorResponse(EarlybirdResponse response) { - return !response.isSetResponseCode() - || response.getResponseCode() != EarlybirdResponseCode.SUCCESS; - } - - private boolean isSkippedResponse(EarlybirdResponse response) { - return response.isSetResponseCode() - && (response.getResponseCode() == EarlybirdResponseCode.PARTITION_SKIPPED - || response.getResponseCode() == EarlybirdResponseCode.TIER_SKIPPED); - } - - /** - * Record a response corresponding to a skipped partition or skipped tier. - */ - protected abstract void handleSkippedResponse(EarlybirdResponseCode responseCode); - - /** - * Handle an error response - */ - protected abstract void handleErrorResponse(EarlybirdResponse response); - - /** - * Subclasses can override this to perform more successful response handling. - */ - protected void extraSuccessfulResponseHandler(EarlybirdResponse response) { } - - /** - * Whether the helper is for merging results from partitions within a single tier. - */ - protected final boolean isMergingPartitionsWithinATier() { - return !isMergingAcrossTiers(); - } - - /** - * Whether the helper is for merging results across different tiers. - */ - protected abstract boolean isMergingAcrossTiers(); - - - /** - * Record a successful response. - */ - public final void handleSuccessfulResponse( - EarlybirdResponseDebugMessageBuilder responseMessageBuilder, - EarlybirdRequest request, - EarlybirdResponse response) { - successResponses.add(response); - if (response.isSetSearchResults()) { - ThriftSearchResults searchResults = response.getSearchResults(); - numResultsAccumulated += searchResults.getResultsSize(); - - recordMinMaxSearchedIdsAndUpdateStats(responseMessageBuilder, request, response, - searchResults); - } - if (response.isSetEarlyTerminationInfo() - && response.getEarlyTerminationInfo().isEarlyTerminated()) { - foundEarlyTermination = true; - } - extraSuccessfulResponseHandler(response); - } - - private void recordMinMaxSearchedIdsAndUpdateStats( - EarlybirdResponseDebugMessageBuilder responseMessageBuidler, - EarlybirdRequest request, - EarlybirdResponse response, - ThriftSearchResults searchResults) { - - boolean isMaxIdSet = searchResults.isSetMaxSearchedStatusID(); - boolean isMinIdSet = searchResults.isSetMinSearchedStatusID(); - - if (isMaxIdSet) { - maxIds.add(searchResults.getMaxSearchedStatusID()); - } - if (isMinIdSet) { - minIds.add(searchResults.getMinSearchedStatusID()); - } - - updateMinMaxIdStats(responseMessageBuidler, request, response, searchResults, isMaxIdSet, - isMinIdSet); - } - - private void updateMinMaxIdStats( - EarlybirdResponseDebugMessageBuilder responseMessageBuilder, - EarlybirdRequest request, - EarlybirdResponse response, - ThriftSearchResults searchResults, - boolean isMaxIdSet, - boolean isMinIdSet) { - // Now just track the stats. - EarlybirdRequestType requestType = EarlybirdRequestType.of(request); - MinMaxSearchedIdStats minMaxSearchedIdStats = MIN_MAX_SEARCHED_ID_STATS_MAP.get(requestType); - - minMaxSearchedIdStats.checkedMaxMinSearchedStatusId.increment(); - if (isMaxIdSet && isMinIdSet) { - if (searchResults.getMinSearchedStatusID() > searchResults.getMaxSearchedStatusID()) { - // We do not expect this case to happen in production. - minMaxSearchedIdStats.flippedMinMaxSearchedId.increment(); - } else if (searchResults.getResultsSize() == 0 - && searchResults.getMaxSearchedStatusID() == searchResults.getMinSearchedStatusID()) { - minMaxSearchedIdStats.sameMinMaxSearchedIdWithoutResults.increment(); - responseMessageBuilder.debugVerbose( - "Got no results, and same min/max searched ids. Request: %s, Response: %s", - request, response); - } else if (searchResults.getResultsSize() == 1 - && searchResults.getMaxSearchedStatusID() == searchResults.getMinSearchedStatusID()) { - minMaxSearchedIdStats.sameMinMaxSearchedIdWithOneResult.increment(); - responseMessageBuilder.debugVerbose( - "Got one results, and same min/max searched ids. Request: %s, Response: %s", - request, response); - } else if (searchResults.getMaxSearchedStatusID() - == searchResults.getMinSearchedStatusID()) { - minMaxSearchedIdStats.sameMinMaxSearchedIdWithResults.increment(); - responseMessageBuilder.debugVerbose( - "Got multiple results, and same min/max searched ids. Request: %s, Response: %s", - request, response); - } - } else if (!isMaxIdSet && isMinIdSet) { - // We do not expect this case to happen in production. - minMaxSearchedIdStats.unsetMaxSearchedStatusId.increment(); - responseMessageBuilder.debugVerbose( - "Got unset maxSearchedStatusID. Request: %s, Response: %s", request, response); - } else if (isMaxIdSet && !isMinIdSet) { - // We do not expect this case to happen in production. - minMaxSearchedIdStats.unsetMinSearchedStatusId.increment(); - responseMessageBuilder.debugVerbose( - "Got unset minSearchedStatusID. Request: %s, Response: %s", request, response); - } else { - Preconditions.checkState(!isMaxIdSet && !isMinIdSet); - minMaxSearchedIdStats.unsetMaxAndMinSearchedStatusId.increment(); - responseMessageBuilder.debugVerbose( - "Got unset maxSearchedStatusID and minSearchedStatusID. Request: %s, Response: %s", - request, response); - } - } - - - /** - * Return partition counts with number of partitions, number of successful responses, and list of - * responses per tier. - */ - public abstract AccumulatedResponses.PartitionCounts getPartitionCounts(); - - public final AccumulatedResponses getAccumulatedResults() { - return new AccumulatedResponses(successResponses, - errorResponses, - maxIds, - minIds, - ResponseMergerUtils.mergeEarlyTerminationInfo(successResponses), - isMergingAcrossTiers(), - getPartitionCounts(), - getNumSearchedSegments()); - } - - // Getters are only intended to be used by subclasses. Other users should get data from - // AccumulatedResponses - - int getNumResponses() { - return numResponses; - } - - int getNumSearchedSegments() { - return numSearchedSegments; - } - - List getSuccessResponses() { - return successResponses; - } - - int getNumResultsAccumulated() { - return numResultsAccumulated; - } - - int getSuccessfulEmptyResponseCount() { - return successfulEmptyResponseCount; - } - - boolean foundError() { - return !errorResponses.isEmpty(); - } - - boolean foundEarlyTermination() { - return foundEarlyTermination; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/StrictRecencyResponseMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/StrictRecencyResponseMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..19147218fc6e91e5bca28bf2a3bafe07bae2e9d3 GIT binary patch literal 40591 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/StrictRecencyResponseMerger.java b/src/java/com/twitter/search/earlybird_root/mergers/StrictRecencyResponseMerger.java deleted file mode 100644 index 4ea72717e..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/StrictRecencyResponseMerger.java +++ /dev/null @@ -1,297 +0,0 @@ -package com.twitter.search.earlybird_root.mergers; - -import java.util.Collections; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.util.Future; - -/** - * A RecencyResponseMerger that prioritizes not losing results during pagination. - * As of now, this merger is used by Gnip to make sure that scrolling returns all results. - * - * The logic used for merging partitions is a bit tricky, because on one hand, we want to make sure - * that we do miss results on the next pagination request; on the other hand, we want to return as - * many results as we can, and we want to set the minSearchedStatusID of the merged response as low - * as we can, in order to minimize the number of pagination requests. - * - * The merging logic is: - * - * Realtime cluster: - * 1. merge results from all partitions - * 2. if at least one partition response is early-terminated, set earlyTerminated = true - * on the merged response - * 3. set trimmingMinId = max(minSearchedStatusIDs of all partition responses) - * 4. trim all results to trimmingMinId - * 5. set minSearchedStatusID on the merged response to trimmingMinId - * 6. if we have more than numRequested results: - * - keep only the newest numRequested results - * - set minSearchedStatusID of the merged response to the lowest tweet ID in the response - * 7. if at least one partition response is not early-terminated, set - * tierBottomId = max(minSearchedStatusIDs of all non-early-terminated responses) - * (otherwise, set tierBottomId to some undefined value: -1, Long.MAX_VALUE, etc.) - * 8. if minSearchedStatusID of the merged response is the same as tierBottomId, - * clear the early-termination flag on the merged response - * - * The logic in steps 7 and 8 can be a little tricky to understand. They basically say: when we've - * exhausted the "least deep" partition in the realtime cluster, it's time to move to the full - * archive cluster (if we keep going past the "least deep" partition, we might miss results). - * - * Full archive cluster: - * 1. merge results from all partitions - * 2. if at least one partition response is early-terminated, set earlyTerminated = true - * on the merged response - * 3. set trimmingMinId to: - * - max(minSearchedStatusIDs of early-terminated responses), if at least one partition response - * is early-terminated - * - min(minSearchedStatusIDs of all responses), if all partition responses are not - * early-terminated - * 4. trim all results to trimmingMinId - * 5. set minSearchedStatusID of the merged response to trimmingMinId - * 6. if we have more than numRequested results: - * - keep only the newest numRequested results - * - set minSearchedStatusID of the merged response to the lowest tweet ID in the response - * - * The logic in step 3 can be a little tricky to understand. On one hand, if we always set - * trimmingMinId to the highest minSearchedStatusID, then some tweets at the very bottom of some - * partitions will never be returned. Consider the case: - * - * partition 1 has tweets 10, 8, 6 - * partition 2 has tweets 9, 7, 5 - * - * In this case, we would always trim all results to minId = 6, and tweet 5 would never be returned. - * - * On the other hand, if we always set trimmingMinId to the lowest minSearchedStatusID, then we - * might miss tweets from partitions that early-terminated. Consider the case: - * - * partition 1 has tweets 10, 5, 3, 1 that match our query - * partition 2 has tweets 9, 8, 7, 6, 2 that match our query - * - * If we ask for 3 results, than partition 1 will return tweets 10, 5, 3, and partition 2 will - * return tweets 9, 8, 7. If we set trimmingMinId = min(minSearchedStatusIDs), then the next - * pagination request will have [max_id = 2], and we will miss tweet 6. - * - * So the intuition here is that if we have an early-terminated response, we cannot set - * trimmingMinId to something lower than the minSearchedStatusID returned by that partition - * (otherwise we might miss results from that partition). However, if we've exhausted all - * partitions, then it's OK to not trim any result, because tiers do not intersect, so we will not - * miss any result from the next tier once we get there. - */ -public class StrictRecencyResponseMerger extends RecencyResponseMerger { - private static final SearchTimerStats STRICT_RECENCY_TIMER_AVG = - SearchTimerStats.export("merge_recency_strict", TimeUnit.NANOSECONDS, false, true); - - @VisibleForTesting - static final EarlyTerminationTrimmingStats PARTITION_MERGING_EARLY_TERMINATION_TRIMMING_STATS = - new EarlyTerminationTrimmingStats("strict_recency_partition_merging"); - - @VisibleForTesting - static final EarlyTerminationTrimmingStats TIER_MERGING_EARLY_TERMINATION_TRIMMING_STATS = - new EarlyTerminationTrimmingStats("strict_recency_tier_merging"); - - private final EarlybirdCluster cluster; - - public StrictRecencyResponseMerger(EarlybirdRequestContext requestContext, - List> responses, - ResponseAccumulator mode, - EarlybirdFeatureSchemaMerger featureSchemaMerger, - EarlybirdCluster cluster) { - super(requestContext, responses, mode, featureSchemaMerger); - this.cluster = cluster; - } - - @Override - protected SearchTimerStats getMergedResponseTimer() { - return STRICT_RECENCY_TIMER_AVG; - } - - /** - * Unlike {@link com.twitter.search.earlybird_root.mergers.RecencyResponseMerger}, this method - * takes a much simpler approach by just taking the max of the maxSearchedStatusIds. - * - * Also, when no maxSearchedStatusId is available at all, Long.MIN_VALUE is used instead of - * Long.MAX_VALUE. This ensures that we don't return any result in these cases. - */ - @Override - protected long findMaxFullySearchedStatusID() { - return accumulatedResponses.getMaxIds().isEmpty() - ? Long.MIN_VALUE : Collections.max(accumulatedResponses.getMaxIds()); - } - - /** - * This method is subtly different from the base class version: when no minSearchedStatusId is - * available at all, Long.MAX_VALUE is used instead of Long.MIN_VALUE. This ensures that we - * don't return any result in these cases. - */ - @Override - protected long findMinFullySearchedStatusID() { - List minIds = accumulatedResponses.getMinIds(); - if (minIds.isEmpty()) { - return Long.MAX_VALUE; - } - - if (accumulatedResponses.isMergingPartitionsWithinATier()) { - return getTrimmingMinId(); - } - - // When merging tiers, the min ID should be the smallest among the min IDs. - return Collections.min(minIds); - } - - @Override - protected TrimStats trimResults( - ThriftSearchResults searchResults, long mergedMin, long mergedMax) { - if (!searchResults.isSetResults() || searchResults.getResultsSize() == 0) { - // no results, no trimming needed - return TrimStats.EMPTY_STATS; - } - - TrimStats trimStats = new TrimStats(); - trimExactDups(searchResults, trimStats); - filterResultsByMergedMinMaxIds(searchResults, mergedMax, mergedMin, trimStats); - int numResults = computeNumResultsToKeep(); - if (searchResults.getResultsSize() > numResults) { - trimStats.setResultsTruncatedFromTailCount(searchResults.getResultsSize() - numResults); - searchResults.setResults(searchResults.getResults().subList(0, numResults)); - } - - return trimStats; - } - - /** - * This method is different from the base class version because when minResultId is bigger - * than currentMergedMin, we always take minResultId. - * If we don't do this, we would lose results. - * - * Illustration with an example. Assuming we are outside of the lag threshold. - * Num results requested: 3 - * Response 1: min: 100 max: 900 results: 400, 500, 600 - * Response 2: min: 300 max: 700 results: 350, 450, 550 - * - * Merged results: 600, 550, 500 - * Merged max: 900 - * Merged min: we could take 300 (minId), or take 500 (minResultId). - * - * If we take minId, and use 300 as the pagination cursor, we'd lose results - * 350 and 450 when we paginate. So we have to take minResultId here. - */ - @Override - protected void setMergedMinSearchedStatusId( - ThriftSearchResults searchResults, - long currentMergedMin, - boolean resultsWereTrimmed) { - if (accumulatedResponses.getMinIds().isEmpty()) { - return; - } - - long minId = currentMergedMin; - if (resultsWereTrimmed - && (searchResults != null) - && searchResults.isSetResults() - && (searchResults.getResultsSize() > 0)) { - List results = searchResults.getResults(); - minId = results.get(results.size() - 1).getId(); - } - - searchResults.setMinSearchedStatusID(minId); - } - - @Override - protected boolean clearEarlyTerminationIfReachingTierBottom(EarlybirdResponse mergedResponse) { - if (EarlybirdCluster.isArchive(cluster)) { - // We don't need to worry about the tier bottom when merging partition responses in the full - // archive cluster: if all partitions were exhausted and we didn't trim the results, then - // the early-terminated flag on the merged response will be false. If at least one partition - // is early-terminated, or we trimmed some results, then the ealry-terminated flag on the - // merged response will be true, and we should continue getting results from this tier before - // we move to the next one. - return false; - } - - ThriftSearchResults searchResults = mergedResponse.getSearchResults(); - if (searchResults.getMinSearchedStatusID() == getTierBottomId()) { - mergedResponse.getEarlyTerminationInfo().setEarlyTerminated(false); - mergedResponse.getEarlyTerminationInfo().unsetMergedEarlyTerminationReasons(); - responseMessageBuilder.debugVerbose( - "Set earlytermination to false because minSearchedStatusId is tier bottom"); - return true; - } - return false; - } - - @Override - protected boolean shouldEarlyTerminateWhenEnoughTrimmedResults() { - return false; - } - - @Override - protected final EarlyTerminationTrimmingStats getEarlyTerminationTrimmingStatsForPartitions() { - return PARTITION_MERGING_EARLY_TERMINATION_TRIMMING_STATS; - } - - @Override - protected final EarlyTerminationTrimmingStats getEarlyTerminationTrimmingStatsForTiers() { - return TIER_MERGING_EARLY_TERMINATION_TRIMMING_STATS; - } - - /** Determines the bottom of the realtime cluster, based on the partition responses. */ - private long getTierBottomId() { - Preconditions.checkState(!EarlybirdCluster.isArchive(cluster)); - - long tierBottomId = -1; - for (EarlybirdResponse response : accumulatedResponses.getSuccessResponses()) { - if (!isEarlyTerminated(response) - && response.isSetSearchResults() - && response.getSearchResults().isSetMinSearchedStatusID() - && (response.getSearchResults().getMinSearchedStatusID() > tierBottomId)) { - tierBottomId = response.getSearchResults().getMinSearchedStatusID(); - } - } - - return tierBottomId; - } - - /** Determines the minId to which all results should be trimmed. */ - private long getTrimmingMinId() { - List minIds = accumulatedResponses.getMinIds(); - Preconditions.checkArgument(!minIds.isEmpty()); - - if (!EarlybirdCluster.isArchive(cluster)) { - return Collections.max(minIds); - } - - long maxOfEarlyTerminatedMins = -1; - long minOfAllMins = Long.MAX_VALUE; - for (EarlybirdResponse response : accumulatedResponses.getSuccessResponses()) { - if (response.isSetSearchResults() - && response.getSearchResults().isSetMinSearchedStatusID()) { - long minId = response.getSearchResults().getMinSearchedStatusID(); - minOfAllMins = Math.min(minOfAllMins, minId); - if (isEarlyTerminated(response)) { - maxOfEarlyTerminatedMins = Math.max(maxOfEarlyTerminatedMins, minId); - } - } - } - if (maxOfEarlyTerminatedMins >= 0) { - return maxOfEarlyTerminatedMins; - } else { - return minOfAllMins; - } - } - - /** Determines if the given earlybird response is early terminated. */ - private boolean isEarlyTerminated(EarlybirdResponse response) { - return response.isSetEarlyTerminationInfo() - && response.getEarlyTerminationInfo().isEarlyTerminated(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/SuperRootResponseMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/SuperRootResponseMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..956fb82000383f93a089f12624b98c823d82892f GIT binary patch literal 44108 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/SuperRootResponseMerger.java b/src/java/com/twitter/search/earlybird_root/mergers/SuperRootResponseMerger.java deleted file mode 100644 index 5f1c7aa87..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/SuperRootResponseMerger.java +++ /dev/null @@ -1,688 +0,0 @@ -package com.twitter.search.earlybird_root.mergers; - -import java.util.Collections; -import java.util.List; -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.Lists; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.collections.Pair; -import com.twitter.common.quantity.Amount; -import com.twitter.common.quantity.Time; -import com.twitter.common.util.Clock; -import com.twitter.search.common.futures.Futures; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.partitioning.snowflakeparser.SnowflakeIdParser; -import com.twitter.search.common.query.thriftjava.EarlyTerminationInfo; -import com.twitter.search.common.relevance.utils.ResultComparators; -import com.twitter.search.common.search.EarlyTerminationState; -import com.twitter.search.common.util.FinagleUtil; -import com.twitter.search.common.util.earlybird.EarlybirdResponseMergeUtil; -import com.twitter.search.common.util.earlybird.EarlybirdResponseUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRankingMode; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird.thrift.ThriftTweetSource; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.common.EarlybirdServiceResponse; -import com.twitter.util.Function; -import com.twitter.util.Function0; -import com.twitter.util.Future; - -/** Utility functions for merging recency and relevance results. */ -public class SuperRootResponseMerger { - private static final Logger LOG = LoggerFactory.getLogger(SuperRootResponseMerger.class); - private static final String ALL_STATS_PREFIX = "superroot_response_merger_"; - - private static final SearchCounter FULL_ARCHIVE_MIN_ID_GREATER_THAN_REALTIME_MIN_ID = - SearchCounter.export("full_archive_min_id_greater_than_realtime_min_id"); - - private static final String ERROR_FORMAT = "%s%s_errors_from_cluster_%s_%s"; - - private final ThriftSearchRankingMode rankingMode; - private final EarlybirdFeatureSchemaMerger featureSchemaMerger; - private final String featureStatPrefix; - private final Clock clock; - private final String rankingModeStatPrefix; - - private final SearchCounter mergedResponseSearchResultsNotSet; - private final SearchCounter invalidMinStatusId; - private final SearchCounter invalidMaxStatusId; - private final SearchCounter noMinIds; - private final SearchCounter noMaxIds; - private final SearchCounter mergedResponses; - private final SearchCounter mergedResponsesWithExactDups; - private final LoadingCache, SearchCounter> dupsStats; - - private static final EarlybirdResponse EMPTY_RESPONSE = - new EarlybirdResponse(EarlybirdResponseCode.SUCCESS, 0) - .setSearchResults(new ThriftSearchResults() - .setResults(Lists.newArrayList())); - - /** - * Creates a new SuperRootResponseMerger instance. - * @param rankingMode The ranking mode to use when merging results. - * @param featureSchemaMerger The merger that can merge feature schema from different tiers. - * @param clock The clock that will be used to merge results. - */ - public SuperRootResponseMerger(ThriftSearchRankingMode rankingMode, - EarlybirdFeatureSchemaMerger featureSchemaMerger, - Clock clock) { - this.rankingModeStatPrefix = rankingMode.name().toLowerCase(); - - this.rankingMode = rankingMode; - this.featureSchemaMerger = featureSchemaMerger; - this.clock = clock; - this.featureStatPrefix = "superroot_" + rankingMode.name().toLowerCase(); - - mergedResponseSearchResultsNotSet = SearchCounter.export( - ALL_STATS_PREFIX + rankingModeStatPrefix + "_merged_response_search_results_not_set"); - invalidMinStatusId = - SearchCounter.export(ALL_STATS_PREFIX + rankingModeStatPrefix + "_invalid_min_status_id"); - invalidMaxStatusId = - SearchCounter.export(ALL_STATS_PREFIX + rankingModeStatPrefix + "_invalid_max_status_id"); - noMinIds = SearchCounter.export(ALL_STATS_PREFIX + rankingModeStatPrefix + "_no_min_ids"); - noMaxIds = SearchCounter.export(ALL_STATS_PREFIX + rankingModeStatPrefix + "_no_max_ids"); - mergedResponses = SearchCounter.export(ALL_STATS_PREFIX + rankingModeStatPrefix - + "_merged_responses"); - mergedResponsesWithExactDups = - SearchCounter.export(ALL_STATS_PREFIX + rankingModeStatPrefix - + "_merged_responses_with_exact_dups"); - dupsStats = CacheBuilder.newBuilder() - .build(new CacheLoader, SearchCounter>() { - @Override - public SearchCounter load(Pair key) { - return SearchCounter.export( - ALL_STATS_PREFIX + rankingModeStatPrefix + "_merged_responses_with_exact_dups_" - + key.getFirst().name() + "_" + key.getSecond().name()); - } - }); - } - - private void incrErrorCount(String cluster, @Nullable EarlybirdResponse response) { - String cause; - if (response != null) { - cause = response.getResponseCode().name().toLowerCase(); - } else { - cause = "null_response"; - } - String statName = String.format( - ERROR_FORMAT, ALL_STATS_PREFIX, rankingModeStatPrefix, cluster, cause - ); - - SearchCounter.export(statName).increment(); - } - - /** - * Merges the given response futures. - * - * @param earlybirdRequestContext The earlybird request. - * @param realtimeResponseFuture The response from the realtime cluster. - * @param protectedResponseFuture The response from the protected cluster. - * @param fullArchiveResponseFuture The response from the full archive cluster. - * @return A future with the merged results. - */ - public Future mergeResponseFutures( - final EarlybirdRequestContext earlybirdRequestContext, - final Future realtimeResponseFuture, - final Future protectedResponseFuture, - final Future fullArchiveResponseFuture) { - Future mergedResponseFuture = Futures.map( - realtimeResponseFuture, protectedResponseFuture, fullArchiveResponseFuture, - new Function0() { - @Override - public EarlybirdResponse apply() { - // If the realtime response is not valid, return an error response. - // Also, the realtime service should always be called. - EarlybirdServiceResponse realtimeResponse = Futures.get(realtimeResponseFuture); - - if (realtimeResponse.getServiceState().serviceWasRequested() - && (!realtimeResponse.getServiceState().serviceWasCalled() - || !EarlybirdResponseMergeUtil.isValidResponse( - realtimeResponse.getResponse()))) { - - incrErrorCount("realtime", realtimeResponse.getResponse()); - return EarlybirdResponseMergeUtil.transformInvalidResponse( - realtimeResponse.getResponse(), "realtime"); - } - - // If we have a protected response and it's not valid, return an error response. - EarlybirdServiceResponse protectedResponse = Futures.get(protectedResponseFuture); - if (protectedResponse.getServiceState().serviceWasCalled()) { - if (!EarlybirdResponseMergeUtil.isValidResponse(protectedResponse.getResponse())) { - incrErrorCount("protected", protectedResponse.getResponse()); - - return EarlybirdResponseMergeUtil.transformInvalidResponse( - protectedResponse.getResponse(), "protected"); - } - } - - // If we have a full archive response, check if it's valid. - EarlybirdServiceResponse fullArchiveResponse = Futures.get(fullArchiveResponseFuture); - boolean archiveHasError = - fullArchiveResponse.getServiceState().serviceWasCalled() - && !EarlybirdResponseMergeUtil.isValidResponse(fullArchiveResponse.getResponse()); - - // Merge the responses. - EarlybirdResponse mergedResponse = mergeResponses( - earlybirdRequestContext, - realtimeResponse.getResponse(), - protectedResponse.getResponse(), - fullArchiveResponse.getResponse()); - - // If the realtime clusters didn't return any results, and the full archive cluster - // returned an error response, return an error merged response. - if (archiveHasError && !EarlybirdResponseUtil.hasResults(mergedResponse)) { - incrErrorCount("full_archive", fullArchiveResponse.getResponse()); - - return EarlybirdResponseMergeUtil.failedEarlybirdResponse( - fullArchiveResponse.getResponse().getResponseCode(), - "realtime clusters had no results and archive cluster response had error"); - } - - // Corner case: the realtime response could have exactly numRequested results, and could - // be exhausted (not early-terminated). In this case, the request should not have been - // sent to the full archive cluster. - // - If the full archive cluster is not available, or was not requested, then we don't - // need to change anything. - // - If the full archive cluster is available and was requested (but wasn't hit - // because we found enough results in the realtime cluster), then we should set the - // early-termination flag on the merged response, to indicate that we potentially - // have more results for this query in our index. - if ((fullArchiveResponse.getServiceState() - == EarlybirdServiceResponse.ServiceState.SERVICE_NOT_CALLED) - && !EarlybirdResponseUtil.isEarlyTerminated(realtimeResponse.getResponse())) { - EarlyTerminationInfo earlyTerminationInfo = new EarlyTerminationInfo(true); - earlyTerminationInfo.setEarlyTerminationReason( - EarlyTerminationState.TERMINATED_NUM_RESULTS_EXCEEDED.getTerminationReason()); - mergedResponse.setEarlyTerminationInfo(earlyTerminationInfo); - } - - // If we've exhausted all clusters, set the minSearchedStatusID to 0. - if (!EarlybirdResponseUtil.isEarlyTerminated(mergedResponse)) { - mergedResponse.getSearchResults().setMinSearchedStatusID(0); - } - - return mergedResponse; - } - }); - - // Handle all merging exceptions. - return handleResponseException(mergedResponseFuture, - "Exception thrown while merging responses."); - } - - /** - * Merge the results in the given responses. - * - * @param earlybirdRequestContext The earlybird request context. - * @param realtimeResponse The response from the realtime cluster. - * @param protectedResponse The response from the protected cluster. - * @param fullArchiveResponse The response from the full archive cluster. - * @return The merged response. - */ - private EarlybirdResponse mergeResponses( - EarlybirdRequestContext earlybirdRequestContext, - @Nullable EarlybirdResponse realtimeResponse, - @Nullable EarlybirdResponse protectedResponse, - @Nullable EarlybirdResponse fullArchiveResponse) { - - EarlybirdRequest request = earlybirdRequestContext.getRequest(); - ThriftSearchQuery searchQuery = request.getSearchQuery(); - int numResultsRequested; - - if (request.isSetNumResultsToReturnAtRoot()) { - numResultsRequested = request.getNumResultsToReturnAtRoot(); - } else { - numResultsRequested = searchQuery.getNumResults(); - } - - Preconditions.checkState(numResultsRequested > 0); - - EarlybirdResponse mergedResponse = EMPTY_RESPONSE.deepCopy(); - if ((realtimeResponse != null) - && (realtimeResponse.getResponseCode() != EarlybirdResponseCode.TIER_SKIPPED)) { - mergedResponse = realtimeResponse.deepCopy(); - } - - if (!mergedResponse.isSetSearchResults()) { - mergedResponseSearchResultsNotSet.increment(); - mergedResponse.setSearchResults( - new ThriftSearchResults(Lists.newArrayList())); - } - - // If either the realtime or the full archive response is early-terminated, we want the merged - // response to be early-terminated too. The early-termination flag from the realtime response - // carries over to the merged response, because mergedResponse is just a deep copy of the - // realtime response. So we only need to check the early-termination flag of the full archive - // response. - if ((fullArchiveResponse != null) - && EarlybirdResponseUtil.isEarlyTerminated(fullArchiveResponse)) { - mergedResponse.setEarlyTerminationInfo(fullArchiveResponse.getEarlyTerminationInfo()); - } - - // If realtime has empty results and protected has some results then we copy the early - // termination information if that is present - if (protectedResponse != null - && mergedResponse.getSearchResults().getResults().isEmpty() - && !protectedResponse.getSearchResults().getResults().isEmpty() - && EarlybirdResponseUtil.isEarlyTerminated(protectedResponse)) { - mergedResponse.setEarlyTerminationInfo(protectedResponse.getEarlyTerminationInfo()); - } - - // Merge the results. - List mergedResults = mergeResults( - numResultsRequested, realtimeResponse, protectedResponse, fullArchiveResponse); - - // Trim the merged results if necessary. - boolean resultsTrimmed = false; - if (mergedResults.size() > numResultsRequested - && !(searchQuery.isSetRelevanceOptions() - && searchQuery.getRelevanceOptions().isReturnAllResults())) { - // If we have more results than requested, trim the result list and re-adjust - // minSearchedStatusID. - mergedResults = mergedResults.subList(0, numResultsRequested); - - // Mark early termination in merged response - if (!EarlybirdResponseUtil.isEarlyTerminated(mergedResponse)) { - EarlyTerminationInfo earlyTerminationInfo = new EarlyTerminationInfo(true); - earlyTerminationInfo.setEarlyTerminationReason( - EarlyTerminationState.TERMINATED_NUM_RESULTS_EXCEEDED.getTerminationReason()); - mergedResponse.setEarlyTerminationInfo(earlyTerminationInfo); - } - - resultsTrimmed = true; - } - - mergedResponse.getSearchResults().setResults(mergedResults); - featureSchemaMerger.mergeFeatureSchemaAcrossClusters( - earlybirdRequestContext, - mergedResponse, - featureStatPrefix, - realtimeResponse, - protectedResponse, - fullArchiveResponse); - - // Set the minSearchedStatusID and maxSearchedStatusID fields on the merged response. - setMinSearchedStatusId(mergedResponse, realtimeResponse, protectedResponse, fullArchiveResponse, - resultsTrimmed); - setMaxSearchedStatusId(mergedResponse, realtimeResponse, protectedResponse, - fullArchiveResponse); - - int numRealtimeSearchedSegments = - (realtimeResponse != null && realtimeResponse.isSetNumSearchedSegments()) - ? realtimeResponse.getNumSearchedSegments() - : 0; - - int numProtectedSearchedSegments = - (protectedResponse != null && protectedResponse.isSetNumSearchedSegments()) - ? protectedResponse.getNumSearchedSegments() - : 0; - - int numArchiveSearchedSegments = - (fullArchiveResponse != null && fullArchiveResponse.isSetNumSearchedSegments()) - ? fullArchiveResponse.getNumSearchedSegments() - : 0; - - mergedResponse.setNumSearchedSegments( - numRealtimeSearchedSegments + numProtectedSearchedSegments + numArchiveSearchedSegments); - - if (earlybirdRequestContext.getRequest().getDebugMode() > 0) { - mergedResponse.setDebugString( - mergeClusterDebugStrings(realtimeResponse, protectedResponse, fullArchiveResponse)); - } - - return mergedResponse; - } - - /** - * Merges the given responses. - * - * @param numResults the number of results requested - * @param realtimeResponse the response from the realtime response - * @param protectedResponse the response from the protected response - * @param fullArchiveResponse the response from the full archive response - * @return the list of merged results - */ - private List mergeResults(int numResults, - @Nullable EarlybirdResponse realtimeResponse, - @Nullable EarlybirdResponse protectedResponse, - @Nullable EarlybirdResponse fullArchiveResponse) { - mergedResponses.increment(); - // We first merge the results from the two realtime clusters, Realtime cluster and - // Realtime Protected Tweets cluster - List mergedResults = mergePublicAndProtectedRealtimeResults( - numResults, - realtimeResponse, - protectedResponse, - fullArchiveResponse, - clock); - - EarlybirdResponseMergeUtil.addResultsToList(mergedResults, fullArchiveResponse, - ThriftTweetSource.FULL_ARCHIVE_CLUSTER); - - List distinctMergedResults = - EarlybirdResponseMergeUtil.distinctByStatusId(mergedResults, dupsStats); - if (mergedResults != distinctMergedResults) { - mergedResponsesWithExactDups.increment(); - } - - if (rankingMode == ThriftSearchRankingMode.RELEVANCE - || rankingMode == ThriftSearchRankingMode.TOPTWEETS) { - distinctMergedResults.sort(ResultComparators.SCORE_COMPARATOR); - } else { - distinctMergedResults.sort(ResultComparators.ID_COMPARATOR); - } - - return distinctMergedResults; - } - - /** - * Method for merging tweets from protected and realtime clusters - * - realtime, guaranteed newer than any archive tweets - * - protected, also realtime, but with a potentially larger window (optional) - * - archive, public, guaranteed older than any public realtime tweets (optional, used for - * id limits, *not added to results*) - * It adds the ThriftSearchResults from protected tweets to the realtimeResponse - * - * Algorithm diagram: (with newer tweets at the top) - * ------------------------------------ <--- protected maxSearchedStatusID - * |C:Newest protected realtime tweets| - * | (does not exist if realtime | - * | maxID >= protected maxID) | - * - * | ------------------------ | <--- 60 seconds ago - * |D:Newer protected realtime tweets | - * | (does not exist if realtime | - * | maxID >= 60 seconds ago) | - * ---------- | ------------------------ | <--- public realtime maxSearchedStatusID - * |A:Public| |E:Automatically valid protected | - * |realtime| |realtime tweets | - * ---------- | ------------------------ | <--- public realtime minSearchedStatusID - * | | - * ---------- | E if archive is present | <--- public archive maxSearchedStatusID - * ---------- | E if archive is present | <--- public archive maxSearchedStatusID - * |B:Public| | F is archive is not present | - * |archive | | | - * ---------- | ------------------------ | <--- public archive minSearchedStatusID - * |F:Older protected realtime tweets | - * | (does not exist if protected | - * | minID >= public minID) | - * ------------------------------------ <--- protected minSearchedStatusID - * Step 1: Select tweets from groups A, and E. If this is enough, return them - * Step 2: Select tweets from groups A, E, and F. If this is enough, return them - * Step 3: Select tweets from groups A, D, E, and F and return them - * - * There are two primary tradeoffs, both of which favor public tweets: - * (1) Benefit: While public indexing latency is < 60s, auto-updating never misses public tweets - * Cost: Absence of public tweets may delay protected tweets from being searchable for 60s - * (2) Benefit: No failure or delay from the protected cluster will affect realtime results - * Cost: If the protected cluster indexes more slowly, auto-update may miss its tweets - * - * @param fullArchiveTweets - used solely for generating anchor points, not merged in. - */ - @VisibleForTesting - static List mergePublicAndProtectedRealtimeResults( - int numRequested, - EarlybirdResponse realtimeTweets, - EarlybirdResponse realtimeProtectedTweets, - @Nullable EarlybirdResponse fullArchiveTweets, - Clock clock) { - // See which results will actually be used - boolean isRealtimeUsable = EarlybirdResponseUtil.hasResults(realtimeTweets); - boolean isArchiveUsable = EarlybirdResponseUtil.hasResults(fullArchiveTweets); - boolean isProtectedUsable = EarlybirdResponseUtil.hasResults(realtimeProtectedTweets); - - long minId = Long.MIN_VALUE; - long maxId = Long.MAX_VALUE; - if (isRealtimeUsable) { - // Determine the actual upper/lower bounds on the tweet id - if (realtimeTweets.getSearchResults().isSetMinSearchedStatusID()) { - minId = realtimeTweets.getSearchResults().getMinSearchedStatusID(); - } - if (realtimeTweets.getSearchResults().isSetMaxSearchedStatusID()) { - maxId = realtimeTweets.getSearchResults().getMaxSearchedStatusID(); - } - - int justRight = realtimeTweets.getSearchResults().getResultsSize(); - if (isArchiveUsable) { - justRight += fullArchiveTweets.getSearchResults().getResultsSize(); - if (fullArchiveTweets.getSearchResults().isSetMinSearchedStatusID()) { - long fullArchiveMinId = fullArchiveTweets.getSearchResults().getMinSearchedStatusID(); - if (fullArchiveMinId <= minId) { - minId = fullArchiveMinId; - } else { - FULL_ARCHIVE_MIN_ID_GREATER_THAN_REALTIME_MIN_ID.increment(); - } - } - } - if (isProtectedUsable) { - for (ThriftSearchResult result : realtimeProtectedTweets.getSearchResults().getResults()) { - if (result.getId() >= minId && result.getId() <= maxId) { - justRight++; - } - } - } - if (justRight < numRequested) { - // Since this is only used as an upper bound, old (pre-2010) ids are still handled correctly - maxId = Math.max( - maxId, - SnowflakeIdParser.generateValidStatusId( - clock.nowMillis() - Amount.of(60, Time.SECONDS).as(Time.MILLISECONDS), 0)); - } - } - - List mergedSearchResults = Lists.newArrayListWithCapacity(numRequested * 2); - - // Add valid tweets in order of priority: protected, then realtime - // Only add results that are within range (that check only matters for protected) - if (isProtectedUsable) { - EarlybirdResponseMergeUtil.markWithTweetSource( - realtimeProtectedTweets.getSearchResults().getResults(), - ThriftTweetSource.REALTIME_PROTECTED_CLUSTER); - for (ThriftSearchResult result : realtimeProtectedTweets.getSearchResults().getResults()) { - if (result.getId() <= maxId && result.getId() >= minId) { - mergedSearchResults.add(result); - } - } - } - - if (isRealtimeUsable) { - EarlybirdResponseMergeUtil.addResultsToList( - mergedSearchResults, realtimeTweets, ThriftTweetSource.REALTIME_CLUSTER); - } - - // Set the minSearchedStatusID and maxSearchedStatusID on the protected response to the - // minId and maxId that were used to trim the protected results. - // This is needed in order to correctly set these IDs on the merged response. - ThriftSearchResults protectedResults = - EarlybirdResponseUtil.getResults(realtimeProtectedTweets); - if ((protectedResults != null) - && protectedResults.isSetMinSearchedStatusID() - && (protectedResults.getMinSearchedStatusID() < minId)) { - protectedResults.setMinSearchedStatusID(minId); - } - if ((protectedResults != null) - && protectedResults.isSetMaxSearchedStatusID() - && (protectedResults.getMaxSearchedStatusID() > maxId)) { - realtimeProtectedTweets.getSearchResults().setMaxSearchedStatusID(maxId); - } - - return mergedSearchResults; - } - - /** - * Merges the debug strings of the given cluster responses. - * - * @param realtimeResponse The response from the realtime cluster. - * @param protectedResponse The response from the protected cluster. - * @param fullArchiveResponse The response from the full archive cluster. - * @return The merged debug string. - */ - public static String mergeClusterDebugStrings(@Nullable EarlybirdResponse realtimeResponse, - @Nullable EarlybirdResponse protectedResponse, - @Nullable EarlybirdResponse fullArchiveResponse) { - StringBuilder sb = new StringBuilder(); - if ((realtimeResponse != null) && realtimeResponse.isSetDebugString()) { - sb.append("Realtime response: ").append(realtimeResponse.getDebugString()); - } - if ((protectedResponse != null) && protectedResponse.isSetDebugString()) { - if (sb.length() > 0) { - sb.append("\n"); - } - sb.append("Protected response: ").append(protectedResponse.getDebugString()); - } - if ((fullArchiveResponse != null) && fullArchiveResponse.isSetDebugString()) { - if (sb.length() > 0) { - sb.append("\n"); - } - sb.append("Full archive response: ").append(fullArchiveResponse.getDebugString()); - } - - if (sb.length() == 0) { - return null; - } - return sb.toString(); - } - - /** - * Sets the minSearchedStatusID field on the merged response. - * - * @param mergedResponse The merged response. - * @param fullArchiveResponse The full archive response. - * @param resultsTrimmed Whether the merged response results were trimmed. - */ - private void setMinSearchedStatusId(EarlybirdResponse mergedResponse, - EarlybirdResponse realtimeResponse, - EarlybirdResponse protectedResponse, - EarlybirdResponse fullArchiveResponse, - boolean resultsTrimmed) { - Preconditions.checkNotNull(mergedResponse.getSearchResults()); - if (resultsTrimmed) { - // We got more results that we asked for and we trimmed them. - // Set minSearchedStatusID to the ID of the oldest result. - ThriftSearchResults searchResults = mergedResponse.getSearchResults(); - if (searchResults.getResultsSize() > 0) { - List results = searchResults.getResults(); - long lastResultId = results.get(results.size() - 1).getId(); - searchResults.setMinSearchedStatusID(lastResultId); - } - return; - } - - // We did not get more results that we asked for. Get the min of the minSearchedStatusIDs of - // the merged responses. - List minIDs = Lists.newArrayList(); - if (fullArchiveResponse != null - && fullArchiveResponse.isSetSearchResults() - && fullArchiveResponse.getSearchResults().isSetMinSearchedStatusID()) { - minIDs.add(fullArchiveResponse.getSearchResults().getMinSearchedStatusID()); - if (mergedResponse.getSearchResults().isSetMinSearchedStatusID() - && mergedResponse.getSearchResults().getMinSearchedStatusID() - < fullArchiveResponse.getSearchResults().getMinSearchedStatusID()) { - invalidMinStatusId.increment(); - } - } - - if (protectedResponse != null - && !EarlybirdResponseUtil.hasResults(realtimeResponse) - && EarlybirdResponseUtil.hasResults(protectedResponse) - && protectedResponse.getSearchResults().isSetMinSearchedStatusID()) { - minIDs.add(protectedResponse.getSearchResults().getMinSearchedStatusID()); - } - - if (mergedResponse.getSearchResults().isSetMinSearchedStatusID()) { - minIDs.add(mergedResponse.getSearchResults().getMinSearchedStatusID()); - } - - if (!minIDs.isEmpty()) { - mergedResponse.getSearchResults().setMinSearchedStatusID(Collections.min(minIDs)); - } else { - noMinIds.increment(); - } - } - - /** - * Sets the maxSearchedStatusID field on the merged response. - * - * @param mergedResponse The merged response. - * @param fullArchiveResponse The full archive response. - */ - private void setMaxSearchedStatusId(EarlybirdResponse mergedResponse, - EarlybirdResponse realtimeResponse, - EarlybirdResponse protectedResponse, - EarlybirdResponse fullArchiveResponse) { - - Preconditions.checkNotNull(mergedResponse.getSearchResults()); - List maxIDs = Lists.newArrayList(); - if (fullArchiveResponse != null - && fullArchiveResponse.isSetSearchResults() - && fullArchiveResponse.getSearchResults().isSetMaxSearchedStatusID()) { - maxIDs.add(fullArchiveResponse.getSearchResults().getMaxSearchedStatusID()); - if (mergedResponse.getSearchResults().isSetMaxSearchedStatusID() - && fullArchiveResponse.getSearchResults().getMaxSearchedStatusID() - > mergedResponse.getSearchResults().getMaxSearchedStatusID()) { - invalidMaxStatusId.increment(); - } - } - - if (protectedResponse != null - && !EarlybirdResponseUtil.hasResults(realtimeResponse) - && EarlybirdResponseUtil.hasResults(protectedResponse) - && protectedResponse.getSearchResults().isSetMaxSearchedStatusID()) { - - maxIDs.add(protectedResponse.getSearchResults().getMaxSearchedStatusID()); - } - - if (mergedResponse.getSearchResults().isSetMaxSearchedStatusID()) { - maxIDs.add(mergedResponse.getSearchResults().getMaxSearchedStatusID()); - } - - ThriftSearchResults searchResults = mergedResponse.getSearchResults(); - if (searchResults.getResultsSize() > 0) { - List results = searchResults.getResults(); - maxIDs.add(results.get(0).getId()); - } - - if (!maxIDs.isEmpty()) { - mergedResponse.getSearchResults().setMaxSearchedStatusID(Collections.max(maxIDs)); - } else { - noMaxIds.increment(); - } - } - - /** - * Handles exceptions thrown while merging responses. Timeout exceptions are converted to - * SERVER_TIMEOUT_ERROR responses. All other exceptions are converted to PERSISTENT_ERROR - * responses. - */ - private Future handleResponseException( - Future responseFuture, final String debugMsg) { - return responseFuture.handle( - new Function() { - @Override - public EarlybirdResponse apply(Throwable t) { - EarlybirdResponseCode responseCode = EarlybirdResponseCode.PERSISTENT_ERROR; - if (FinagleUtil.isTimeoutException(t)) { - responseCode = EarlybirdResponseCode.SERVER_TIMEOUT_ERROR; - } - EarlybirdResponse response = new EarlybirdResponse(responseCode, 0); - response.setDebugString(debugMsg + "\n" + t); - return response; - } - }); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/TermStatisticsResponseMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/TermStatisticsResponseMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..d5a717c62a102484c9fc1c352dfe76d2f5e73209 GIT binary patch literal 37845 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 responses, - ResponseAccumulator mode) { - super(requestContext, responses, mode); - } - - @Override - protected SearchTimerStats getMergedResponseTimer() { - return TIMER; - } - - @Override - protected double getDefaultSuccessResponseThreshold() { - return SUCCESSFUL_RESPONSE_THRESHOLD; - } - - @Override - protected EarlybirdResponse internalMerge(EarlybirdResponse termStatsResponse) { - ThriftTermStatisticsRequest termStatisticsRequest = - requestContext.getRequest().getTermStatisticsRequest(); - - Collection termStatsResults = - Collections2.filter(accumulatedResponses.getSuccessResponses(), - earlybirdResponse -> earlybirdResponse.isSetTermStatisticsResults()); - - ThriftTermStatisticsResults results = - new ThriftTermResultsMerger( - termStatsResults, - termStatisticsRequest.getHistogramSettings()) - .merge(); - - if (results.getTermResults().isEmpty()) { - final String line = "No results returned from any backend for term statistics request: {}"; - - // If the termstats request was not empty and we got empty results. log it as a warning - // otherwise log is as a debug. - if (termStatisticsRequest.getTermRequestsSize() > 0) { - LOG.warn(line, termStatisticsRequest); - } else { - LOG.debug(line, termStatisticsRequest); - } - } - - termStatsResponse.setTermStatisticsResults(results); - termStatsResponse.setSearchResults(ThriftTermResultsMerger.mergeSearchStats(termStatsResults)); - - FacetsResultsUtils.fixNativePhotoUrl(results.getTermResults().values()); - - LOG.debug("TermStats call completed successfully: {}", termStatsResponse); - - return termStatsResponse; - } - - @Override - public boolean shouldEarlyTerminateTierMerge(int totalResultsFromSuccessfulShards, - boolean foundEarlyTermination) { - // To get accurate term stats, must never early terminate - return false; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/ThriftTermResultsMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/ThriftTermResultsMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..51357daa8a4499fc1314f2b7a2f1a920237195dc GIT binary patch literal 42580 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 z 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 mostRecentBinIds; - /** - * The first binId in the {@link #mostRecentBinIds} list. This value is not meant to be used in - * case mostRecentBinIds is an empty list. - */ - private final int firstBinId; - - /** - * For each unique ThriftTermRequest, stores an array of the total counts for all the binIds - * that we will return, summed up across all earlybird responses. - * - * The values in each totalCounts array correspond to the binIds in the - * {@link #mostRecentBinIds} list. - * - * Key: thrift term request. - * Value: array of the total counts summed up across all earlybird responses for the key's - * term request, corresponding to the binIds in {@link #mostRecentBinIds}. - */ - private final Map mergedTermRequestTotalCounts = Maps.newHashMap(); - /** - * The set of all unique binIds that we are merging. - */ - private final Map termResultsMap = Maps.newHashMap(); - private final ThriftHistogramSettings histogramSettings; - - /** - * Only relevant for merging responses with histogram settings. - * This will be null either if (1) the request is not asking for histograms at all, or if - * (2) numBins was set to 0 (and no bin can be considered complete). - * If not null, the minCompleteBinId will be computed as the max over all merged responses' - * minCompleteBinId's. - */ - @Nullable - private final Integer minCompleteBinId; - - /** - * Create merger with collections of results to merge - */ - public ThriftTermResultsMerger(Collection termStatsResults, - ThriftHistogramSettings histogramSettings) { - this.histogramSettings = histogramSettings; - - Collection filteredTermStatsResults = - filterOutEmptyEarlybirdResponses(termStatsResults); - - this.mostRecentBinIds = findMostRecentBinIds(histogramSettings, filteredTermStatsResults); - this.firstBinId = mostRecentBinIds.isEmpty() - ? Integer.MAX_VALUE // Should not be used if mostRecentBinIds is empty. - : mostRecentBinIds.get(0); - - List minCompleteBinIds = - Lists.newArrayListWithCapacity(filteredTermStatsResults.size()); - for (EarlybirdResponse response : filteredTermStatsResults) { - Preconditions.checkState(response.getResponseCode() == EarlybirdResponseCode.SUCCESS, - "Unsuccessful responses should not be given to ThriftTermResultsMerger."); - Preconditions.checkState(response.getTermStatisticsResults() != null, - "Response given to ThriftTermResultsMerger has no termStatisticsResults."); - - ThriftTermStatisticsResults termStatisticsResults = response.getTermStatisticsResults(); - List binIds = termStatisticsResults.getBinIds(); - - for (Map.Entry entry - : termStatisticsResults.getTermResults().entrySet()) { - ThriftTermRequest termRequest = entry.getKey(); - ThriftTermResults termResults = entry.getValue(); - - adjustTotalCount(termResults, binIds); - addTotalCountData(termRequest, termResults); - - if (histogramSettings != null) { - Preconditions.checkState(termStatisticsResults.isSetBinIds()); - addHistogramData(termRequest, termResults, termStatisticsResults.getBinIds()); - } - } - - if (histogramSettings != null) { - addMinCompleteBinId(minCompleteBinIds, response); - } - } - - minCompleteBinId = minCompleteBinIds.isEmpty() ? null : Collections.max(minCompleteBinIds); - } - - /** - * Take out any earlybird responses that we know did not match anything relevant to the query, - * and may have erroneous binIds. - */ - private Collection filterOutEmptyEarlybirdResponses( - Collection termStatsResults) { - List emptyResponses = Lists.newArrayList(); - List nonEmptyResponses = Lists.newArrayList(); - for (EarlybirdResponse response : termStatsResults) { - // Guard against erroneously merging and returning 0 counts when we actually have data to - // return from other partitions. - // When a query doesn't match anything at all on an earlybird, the binIds that are returned - // do not correspond at all to the actual query, and are just based on the data range on the - // earlybird itself. - // We can identify these responses as (1) being non-early terminated, and (2) having 0 - // hits processed. - if (isTermStatResponseEmpty(response)) { - emptyResponses.add(response); - } else { - nonEmptyResponses.add(response); - } - } - - // If all responses were "empty", we will just use those to merge into a new set of empty - // responses, using the binIds provided. - return nonEmptyResponses.isEmpty() ? emptyResponses : nonEmptyResponses; - } - - private boolean isTermStatResponseEmpty(EarlybirdResponse response) { - return response.isSetSearchResults() - && (response.getSearchResults().getNumHitsProcessed() == 0 - || drivingQueryHasNoHits(response)) - && response.isSetEarlyTerminationInfo() - && !response.getEarlyTerminationInfo().isEarlyTerminated(); - } - - /** - * If the global count bins are all 0, then we know the driving query has no hits. - * This check is added as a short term solution for SEARCH-5476. This short term fix requires - * the client to set the includeGlobalCounts to kick in. - */ - private boolean drivingQueryHasNoHits(EarlybirdResponse response) { - ThriftTermStatisticsResults termStatisticsResults = response.getTermStatisticsResults(); - if (termStatisticsResults == null || termStatisticsResults.getTermResults() == null) { - // If there's no term stats response, be conservative and return false. - return false; - } else { - ThriftTermResults globalCounts = - termStatisticsResults.getTermResults().get(GLOBAL_COUNT_REQUEST); - if (globalCounts == null) { - // We cannot tell if driving query has no hits, be conservative and return false. - return false; - } else { - for (Integer i : globalCounts.getHistogramBins()) { - if (i > 0) { - return false; - } - } - RESPONSE_WITHOUT_DRIVING_QUERY_HIT.increment(); - return true; - } - } - } - - private static List findMostRecentBinIds( - ThriftHistogramSettings histogramSettings, - Collection filteredTermStatsResults) { - Integer largestFirstBinId = null; - List binIdsToUse = null; - - if (histogramSettings != null) { - int numBins = histogramSettings.getNumBins(); - for (EarlybirdResponse response : filteredTermStatsResults) { - ThriftTermStatisticsResults termStatisticsResults = response.getTermStatisticsResults(); - Preconditions.checkState(termStatisticsResults.getBinIds().size() == numBins, - "expected all results to have the same numBins. " - + "request numBins: %s, response numBins: %s", - numBins, termStatisticsResults.getBinIds().size()); - - if (termStatisticsResults.getBinIds().size() > 0) { - Integer firstBinId = termStatisticsResults.getBinIds().get(0); - if (largestFirstBinId == null - || largestFirstBinId.intValue() < firstBinId.intValue()) { - largestFirstBinId = firstBinId; - binIdsToUse = termStatisticsResults.getBinIds(); - } - } - } - } - return binIdsToUse == null - ? Collections.emptyList() - // Just in case, make a copy of the binIds so that we don't reuse the same list from one - // of the responses we're merging. - : Lists.newArrayList(binIdsToUse); - } - - private void addMinCompleteBinId(List minCompleteBinIds, - EarlybirdResponse response) { - Preconditions.checkNotNull(histogramSettings); - ThriftTermStatisticsResults termStatisticsResults = response.getTermStatisticsResults(); - - if (termStatisticsResults.isSetMinCompleteBinId()) { - // This is the base case. Early terminated or not, this is the proper minCompleteBinId - // that we're told to use for this response. - minCompleteBinIds.add(termStatisticsResults.getMinCompleteBinId()); - } else if (termStatisticsResults.getBinIds().size() > 0) { - // This is the case where no bins were complete. For the purposes of merging, we need to - // mark all the binIds in this response as non-complete by marking the "max(binId)+1" as the - // last complete bin. - // When returning the merged response, we still have a guard for the resulting - // minCompleteBinId being outside of the binIds range, and will set the returned - // minCompleteBinId value to null, if this response's binIds end up being used as the most - // recent ones, and we need to signify that none of the bins are complete. - int binSize = termStatisticsResults.getBinIds().size(); - Integer maxBinId = termStatisticsResults.getBinIds().get(binSize - 1); - minCompleteBinIds.add(maxBinId + 1); - - LOG.debug("Adjusting null minCompleteBinId for response: {}, histogramSettings {}", - response, histogramSettings); - MIN_COMPLETE_BIN_ID_ADJUSTED_NULL.increment(); - } else { - // This should only happen in the case where numBins is set to 0. - Preconditions.checkState(histogramSettings.getNumBins() == 0, - "Expected numBins set to 0. response: %s", response); - Preconditions.checkState(minCompleteBinIds.isEmpty(), - "minCompleteBinIds: %s", minCompleteBinIds); - - LOG.debug("Got null minCompleteBinId with no bins for response: {}, histogramSettings {}", - response, histogramSettings); - MIN_COMPLETE_BIN_ID_NULL_WITHOUT_BINS.increment(); - } - } - - private void addTotalCountData(ThriftTermRequest request, ThriftTermResults results) { - ThriftTermResults termResults = termResultsMap.get(request); - if (termResults == null) { - termResultsMap.put(request, results); - } else { - termResults.setTotalCount(termResults.getTotalCount() + results.getTotalCount()); - if (termResults.isSetMetadata()) { - termResults.setMetadata( - FacetsResultsUtils.mergeFacetMetadata(termResults.getMetadata(), - results.getMetadata(), null)); - } - } - } - - /** - * Set results.totalCount to the sum of hits in only the bins that will be returned in - * the merged response. - */ - private void adjustTotalCount(ThriftTermResults results, List binIds) { - int adjustedTotalCount = 0; - List histogramBins = results.getHistogramBins(); - if ((binIds != null) && (histogramBins != null)) { - Preconditions.checkState( - histogramBins.size() == binIds.size(), - "Expected ThriftTermResults to have the same number of histogramBins as binIds set in " - + " ThriftTermStatisticsResults. ThriftTermResults.histogramBins: %s, " - + " ThriftTermStatisticsResults.binIds: %s.", - histogramBins, binIds); - for (int i = 0; i < binIds.size(); ++i) { - if (binIds.get(i) >= firstBinId) { - adjustedTotalCount += histogramBins.get(i); - } - } - } - - results.setTotalCount(adjustedTotalCount); - } - - private void addHistogramData(ThriftTermRequest request, - ThriftTermResults results, - List binIds) { - - int[] requestTotalCounts = mergedTermRequestTotalCounts.get(request); - if (requestTotalCounts == null) { - requestTotalCounts = new int[mostRecentBinIds.size()]; - mergedTermRequestTotalCounts.put(request, requestTotalCounts); - } - - // Only consider these results if they fall into the mostRecentBinIds range. - // - // The list of returned binIds is expected to be both sorted (in ascending order), and - // contiguous, which allows us to use firstBinId to check if it overlaps with the - // mostRecentBinIds range. - if (binIds.size() > 0 && binIds.get(binIds.size() - 1) >= firstBinId) { - int firstBinIndex; - if (binIds.get(0) == firstBinId) { - // This should be the common case when all partitions have the same binIds, - // no need to do a binary search. - firstBinIndex = 0; - } else { - // The firstBinId must be in the binIds range. We can find it using binary search since - // binIds are sorted. - firstBinIndex = Collections.binarySearch(binIds, firstBinId); - Preconditions.checkState(firstBinIndex >= 0, - "Expected to find firstBinId (%s) in the result binIds: %s, " - + "histogramSettings: %s, termRequest: %s", - firstBinId, binIds, histogramSettings, request); - } - - // Skip binIds that are before the smallest binId that we will use in the merged results. - for (int i = firstBinIndex; i < binIds.size(); i++) { - final Integer currentBinValue = results.getHistogramBins().get(i); - requestTotalCounts[i - firstBinIndex] += currentBinValue.intValue(); - } - } - } - - /** - * Return a new ThriftTermStatisticsResults with the total counts merged, and if enabled, - * histogram bins merged. - */ - public ThriftTermStatisticsResults merge() { - ThriftTermStatisticsResults results = new ThriftTermStatisticsResults(termResultsMap); - - if (histogramSettings != null) { - mergeHistogramBins(results); - } - - return results; - } - - - /** - * Takes multiple histogram results and merges them so: - * 1) Counts for the same binId (represents the time) and term are summed - * 2) All results are re-indexed to use the most recent bins found from the union of all bins - */ - private void mergeHistogramBins(ThriftTermStatisticsResults mergedResults) { - - mergedResults.setBinIds(mostRecentBinIds); - mergedResults.setHistogramSettings(histogramSettings); - - setMinCompleteBinId(mergedResults); - - useMostRecentBinsForEachThriftTermResults(); - } - - private void setMinCompleteBinId(ThriftTermStatisticsResults mergedResults) { - if (mostRecentBinIds.isEmpty()) { - Preconditions.checkState(minCompleteBinId == null); - // This is the case where the requested numBins is set to 0. We don't have any binIds, - // and the minCompleteBinId has to be unset. - LOG.debug("Empty binIds returned for mergedResults: {}", mergedResults); - } else { - Preconditions.checkNotNull(minCompleteBinId); - - Integer maxBinId = mostRecentBinIds.get(mostRecentBinIds.size() - 1); - if (minCompleteBinId <= maxBinId) { - mergedResults.setMinCompleteBinId(minCompleteBinId); - } else { - // Leaving the minCompleteBinId unset as it is outside the range of the returned binIds. - LOG.debug("Computed minCompleteBinId: {} is out of maxBinId: {} for mergedResults: {}", - minCompleteBinId, mergedResults); - MIN_COMPLETE_BIN_ID_OUT_OF_RANGE.increment(); - } - } - } - - /** - * Check that the binIds we are using are contiguous. Increment the provided stat if we find - * a gap, as we don't expect to find any. - * See: SEARCH-4362 - * - * @param sortedBinIds most recent numBins sorted binIds. - * @param binIdGapCounter stat to increment if we see a gap in the binId range. - */ - @VisibleForTesting - static void checkForBinIdGaps(List sortedBinIds, SearchCounter binIdGapCounter) { - for (int i = sortedBinIds.size() - 1; i > 0; i--) { - final Integer currentBinId = sortedBinIds.get(i); - final Integer previousBinId = sortedBinIds.get(i - 1); - - if (previousBinId < currentBinId - 1) { - binIdGapCounter.increment(); - break; - } - } - } - - /** - * Returns a view containing only the last N items from the list - */ - private static List takeLastN(List lst, int n) { - Preconditions.checkArgument(n <= lst.size(), - "Attempting to take more elements than the list has. List size: %s, n: %s", lst.size(), n); - return lst.subList(lst.size() - n, lst.size()); - } - - private void useMostRecentBinsForEachThriftTermResults() { - for (Map.Entry entry : termResultsMap.entrySet()) { - ThriftTermRequest request = entry.getKey(); - ThriftTermResults results = entry.getValue(); - - List histogramBins = Lists.newArrayList(); - results.setHistogramBins(histogramBins); - - int[] requestTotalCounts = mergedTermRequestTotalCounts.get(request); - Preconditions.checkNotNull(requestTotalCounts); - - for (int totalCount : requestTotalCounts) { - histogramBins.add(totalCount); - } - } - } - - /** - * Merges search stats from several earlybird responses and puts them in - * {@link ThriftSearchResults} structure. - * - * @param responses earlybird responses to merge the search stats from - * @return merged search stats inside of {@link ThriftSearchResults} structure - */ - public static ThriftSearchResults mergeSearchStats(Collection responses) { - int numHitsProcessed = 0; - int numPartitionsEarlyTerminated = 0; - - for (EarlybirdResponse response : responses) { - ThriftSearchResults searchResults = response.getSearchResults(); - - if (searchResults != null) { - numHitsProcessed += searchResults.getNumHitsProcessed(); - numPartitionsEarlyTerminated += searchResults.getNumPartitionsEarlyTerminated(); - } - } - - ThriftSearchResults searchResults = new ThriftSearchResults(new ArrayList<>()); - searchResults.setNumHitsProcessed(numHitsProcessed); - searchResults.setNumPartitionsEarlyTerminated(numPartitionsEarlyTerminated); - return searchResults; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/TierResponseAccumulator.docx b/src/java/com/twitter/search/earlybird_root/mergers/TierResponseAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..8a32b636a7e450a42b6fba8227cdede5edbcb93a GIT binary patch literal 37682 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/TierResponseAccumulator.java b/src/java/com/twitter/search/earlybird_root/mergers/TierResponseAccumulator.java deleted file mode 100644 index 58b7cb877..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/TierResponseAccumulator.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.twitter.search.earlybird_root.mergers; - -import java.util.ArrayList; -import java.util.List; - -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.TierResponse; - -public final class TierResponseAccumulator extends ResponseAccumulator { - private static final String TARGET_TYPE_TIER = "tier"; - - private final List tierResponses = new ArrayList<>(); - // Total number of partitions the request was sent to, across all tiers. - private int totalPartitionsQueriedInAllTiers = 0; - // Among the above partitions, the number of them that returned successful responses. - private int totalSuccessfulPartitionsInAllTiers = 0; - - @Override - public String getNameForLogging(int responseIndex, int numTotalResponses) { - return TARGET_TYPE_TIER + (numTotalResponses - responseIndex); - } - - @Override - public String getNameForEarlybirdResponseCodeStats(int responseIndex, int numTotalResponses) { - return TARGET_TYPE_TIER + (numTotalResponses - responseIndex); - } - - @Override - protected boolean isMergingAcrossTiers() { - return true; - } - - @Override - public boolean shouldEarlyTerminateMerge(EarlyTerminateTierMergePredicate merger) { - if (foundError()) { - return true; - } - - int numResults = 0; - for (EarlybirdResponse resp : getSuccessResponses()) { - if (resp.isSetSearchResults()) { - numResults += resp.getSearchResults().getResultsSize(); - } - } - - return merger.shouldEarlyTerminateTierMerge(numResults, foundEarlyTermination()); - } - - @Override - public void handleSkippedResponse(EarlybirdResponseCode responseCode) { - tierResponses.add(new TierResponse() - .setNumPartitions(0) - .setNumSuccessfulPartitions(0) - .setTierResponseCode(responseCode)); - } - - @Override - public void handleErrorResponse(EarlybirdResponse response) { - // TierResponse, which is only returned if merging results from different tiers. - TierResponse tr = new TierResponse(); - if (response != null) { - if (response.isSetResponseCode()) { - tr.setTierResponseCode(response.getResponseCode()); - } else { - tr.setTierResponseCode(EarlybirdResponseCode.TRANSIENT_ERROR); - } - tr.setNumPartitions(response.getNumPartitions()); - tr.setNumSuccessfulPartitions(0); - totalPartitionsQueriedInAllTiers += response.getNumPartitions(); - } else { - tr.setTierResponseCode(EarlybirdResponseCode.TRANSIENT_ERROR) - .setNumPartitions(0) - .setNumSuccessfulPartitions(0); - } - - tierResponses.add(tr); - } - - @Override - public AccumulatedResponses.PartitionCounts getPartitionCounts() { - return new AccumulatedResponses.PartitionCounts(totalPartitionsQueriedInAllTiers, - totalSuccessfulPartitionsInAllTiers, tierResponses); - } - - @Override - public void extraSuccessfulResponseHandler(EarlybirdResponse response) { - // Record tier stats. - totalPartitionsQueriedInAllTiers += response.getNumPartitions(); - totalSuccessfulPartitionsInAllTiers += response.getNumSuccessfulPartitions(); - - tierResponses.add(new TierResponse() - .setNumPartitions(response.getNumPartitions()) - .setNumSuccessfulPartitions(response.getNumSuccessfulPartitions()) - .setTierResponseCode(EarlybirdResponseCode.SUCCESS)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/TopTweetsResponseMerger.docx b/src/java/com/twitter/search/earlybird_root/mergers/TopTweetsResponseMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..48e53cbc14a98b9b41a73b657d7f85b2ac20ae34 GIT binary patch literal 37505 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 B7C-<1 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/TopTweetsResponseMerger.java b/src/java/com/twitter/search/earlybird_root/mergers/TopTweetsResponseMerger.java deleted file mode 100644 index 5d76ab4cd..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/TopTweetsResponseMerger.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.twitter.search.earlybird_root.mergers; - -import java.util.List; -import java.util.concurrent.TimeUnit; - -import com.google.common.base.Preconditions; - -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRankingMode; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird_root.collectors.RelevanceMergeCollector; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.util.Future; - -/** - * Merger class to merge toptweets EarlybirdResponse objects - */ -public class TopTweetsResponseMerger extends EarlybirdResponseMerger { - - private static final double SUCCESSFUL_RESPONSE_THRESHOLD = 0.9; - - private static final SearchTimerStats TIMER = - SearchTimerStats.export("merge_top_tweets", TimeUnit.NANOSECONDS, false, true); - - public TopTweetsResponseMerger(EarlybirdRequestContext requestContext, - List> responses, - ResponseAccumulator mode) { - super(requestContext, responses, mode); - } - - @Override - protected SearchTimerStats getMergedResponseTimer() { - return TIMER; - } - - @Override - protected double getDefaultSuccessResponseThreshold() { - return SUCCESSFUL_RESPONSE_THRESHOLD; - } - - @Override - protected EarlybirdResponse internalMerge(EarlybirdResponse mergedResponse) { - final ThriftSearchQuery searchQuery = requestContext.getRequest().getSearchQuery(); - - Preconditions.checkNotNull(searchQuery); - Preconditions.checkState(searchQuery.isSetRankingMode()); - Preconditions.checkState(searchQuery.getRankingMode() == ThriftSearchRankingMode.TOPTWEETS); - - int numResultsRequested = computeNumResultsToKeep(); - - RelevanceMergeCollector collector = new RelevanceMergeCollector(responses.size()); - - addResponsesToCollector(collector); - ThriftSearchResults searchResults = collector.getAllSearchResults(); - if (numResultsRequested < searchResults.getResults().size()) { - searchResults.setResults(searchResults.getResults().subList(0, numResultsRequested)); - } - - mergedResponse.setSearchResults(searchResults); - - return mergedResponse; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/mergers/TrimStats.docx b/src/java/com/twitter/search/earlybird_root/mergers/TrimStats.docx new file mode 100644 index 0000000000000000000000000000000000000000..445201c8590c15969748d140d96e938716d17fe1 GIT binary patch literal 37152 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/mergers/TrimStats.java b/src/java/com/twitter/search/earlybird_root/mergers/TrimStats.java deleted file mode 100644 index 284f3bc1b..000000000 --- a/src/java/com/twitter/search/earlybird_root/mergers/TrimStats.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.twitter.search.earlybird_root.mergers; - -/** - * Tracks what situations are encountered when trimming results - */ -class TrimStats { - protected static final TrimStats EMPTY_STATS = new TrimStats(); - - private int maxIdFilterCount = 0; - private int minIdFilterCount = 0; - private int removedDupsCount = 0; - private int resultsTruncatedFromTailCount = 0; - - int getMinIdFilterCount() { - return minIdFilterCount; - } - - int getRemovedDupsCount() { - return removedDupsCount; - } - - int getResultsTruncatedFromTailCount() { - return resultsTruncatedFromTailCount; - } - - void decreaseMaxIdFilterCount() { - maxIdFilterCount--; - } - - void decreaseMinIdFilterCount() { - minIdFilterCount--; - } - - public void clearMaxIdFilterCount() { - this.maxIdFilterCount = 0; - } - - public void clearMinIdFilterCount() { - this.minIdFilterCount = 0; - } - - void increaseMaxIdFilterCount() { - maxIdFilterCount++; - } - - void increaseMinIdFilterCount() { - minIdFilterCount++; - } - - void increaseRemovedDupsCount() { - removedDupsCount++; - } - - void setResultsTruncatedFromTailCount(int resultsTruncatedFromTailCount) { - this.resultsTruncatedFromTailCount = resultsTruncatedFromTailCount; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - - builder.append("TrimStats{"); - builder.append("maxIdFilterCount=").append(maxIdFilterCount); - builder.append(", minIdFilterCount=").append(minIdFilterCount); - builder.append(", removedDupsCount=").append(removedDupsCount); - builder.append(", resultsTruncatedFromTailCount=").append(resultsTruncatedFromTailCount); - builder.append("}"); - - return builder.toString(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/quota/BUILD b/src/java/com/twitter/search/earlybird_root/quota/BUILD deleted file mode 100644 index 8f81a89fa..000000000 --- a/src/java/com/twitter/search/earlybird_root/quota/BUILD +++ /dev/null @@ -1,15 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/commons-io", - "3rdparty/jvm/org/json", - "src/java/com/twitter/common/util:system-mocks", - "src/java/com/twitter/search/common/dark", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/util/io/periodic", - "src/java/com/twitter/search/common/util/json", - ], -) diff --git a/src/java/com/twitter/search/earlybird_root/quota/BUILD.docx b/src/java/com/twitter/search/earlybird_root/quota/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..761e079377afbfb957d26d6088d57c82e5d6edc1 GIT binary patch literal 36832 zcmagEWmp}_wm*!!dvFQv?k<7g?ruRh?rc0ja0n3G-QC?Cg1ZF?1b6@M%*;7w=G=SV z_e=9oRqH2fbyrpQE+tt=C@e5AFgP%{RBo*bm4diLa4@h@7%(tQP^+#uz~05&-o;SO z)4|+XpUK0{wjohoaa9EE^Vth_60;Dgw>T5c=914A6XL{-`ikM4GfaO5I7aVQRuL$yczDCb_xeIm7`(m zUHVUZqe^Zs<9_bs590oknJ-IBR2msJX$Y+WJm12N&ef$p8`a16JJ+~P(APOxsyo)M z_7tFa3?c&1zW=c6W^y0XWIuwbEs4BV)!D$X4*78cunDHBo;`%j)O@q&&puw&p#Rja zqaCg0YjqSPjqi0Qj*@=d9Y{-EN2dQ3CY7x{rot!quJ7)Swjk!c(8E%g!QI@fyxq9E z|1j!jPIciLl{V3sq!D&r?l;FHadO|A>|otxUI_)?b_qj4ngEf0@B0gsr+s7S6})?- zfXX}R=Z?ZX*VVvWQ#pntTHTjKqI~qOIO8YpN5rDCcM?K9&x=Ltd%~l4>Jf3@|O)H4(0QO zy1$K|7TN=)3s*WjlqK}FaC(Rj&UQ^L7Si$vmgoy@gEURF=L2&Vd$cxbFY4P2*Wi-i z+XKiv)OLckZBrv|C{RSqsqVNeG)RT$H!ufuY3ojBL@UK44C(BoQHq00640*^U1&62 zeHmu~FaRmJM$Ruq6)it(-M`!mH@Zk0`HLLII-skjD44P0^5mn)IAUIl%N$Ham&UfF zGtrLG&tq9HP&CuL`(dB)J;j8k*QAB(Mv$_f!xZr^ zmYU=HlG0{2pyClGk~d*6Trcl*%aVp{`)4+h#ynv zV?mR=^O2mB*9gBtgOik@13&umQ5q{?spXb~Q{HwglWSsgH{VVto8FChlYi*SL1>-3 zp$XD7BtC>BH0~_G>VsP(S_v7p(l_j6)Xm^A%J`zH8CZtRn ztG?Vq7#~G{Ehop^=Si}RW|hL6Loro!`Q^_VBJnh>6v(7|ShPO_0*J#CDB|nTOPUIa z!P3!-bHKxs`i^Dl zJ`5PC?5CU4RKu_lp13_gBcXz`izuh4xHoICZGAa$c5>XDa)Z<_Luv{|LP>g;Gjmd0 zE)tjnx2Eg10q8HN8Je5hSz~mj^cQw9Yi6&;d}$oxp-wgirmyFq47m$hhQeojy}Q1! zVom!hgH|xOM-va<$84$ z_ZUN6;;NI4_pwP5nsozj!$oz8zui3 z2i3y51N40e!{+_Wd=t)J$NyA6`m`u&0b8%|NgaFaA$M5GaUG$d>dVmn>cj!LGgK*b z3AV-ny1t{~)M&*#3?sZtil$QKs5g0?$@m2^tb?;6{glfJipWO2cVU}?gU|G{xrpR1 zx0?I@^F*bFrHyaOEQ(*sAYZCJm3bCV337hey*biON<>DHf-rtzhZ^%Nv!YoJlfsoJ zC15q`I3NE6WsT_Va#L&e6Fu9~P8U~TmO|v1n8D$47U{kp;Rmj1{+0-E`bNs3EaQ}B z6%6-F{c#@5n^Bfr?vGmZq^ia4weQEWnE3Z`GpDB$WBHxE)m#U-Q`_?OEcPx~3wm|sP#2$x&Y z-}_F^2uaqARhNC-VJasRtQ@3%pG5RzLP9`qN_(n#a3H>@qpzSFg`LHTkM2gf9Rh3t z-vdxXf3*?BQ~KbhvqN(C3I7F+>B5fnVC%tE5b?+zh6mVO2Tz=Q0&n{=5;;a3&}_Sz zoG3J*x%r+yG#yvn+g33yxqnqgxIpnkM|&FcGc)lyeA>em!Q1@JFOq-W7~-efX1_oW zt2pwX53D=D$&4BF)VkV%7N_5L#)RfNV3q~V@1QE|QbnX*VI@BC(@$b9yB+Wnlk;FS zCn9b~T)$yAjMlD9XQ37H>A4CQ2Gp9V&ZqUWN!(T5uKN+hs@xS8+IUeO1Q=p$i9$KE zk*(w8<89lmcM+0b5NSWLEh(`#f9v9_+Et5>S2Y$CL8Gd~mU&*&!KN^iR^a8Lm<&sj zs{9ou9sR?408X-Djus!*c>4NlQZPQ`DN{{x^#wl<6RP;`x9fFBv~dv&lZXpyijrdg zk;FMdT{Kr1oX1Kv@ou%HT1xtF>pbP35LGFGC6a5#NKFFi@<>oSUvN8WeWaTxS2#OD zgo4d%oaPJKb3!>7{j0I4EUlB9igJ6*Hi883&JC&?5Q>Hv9}@>TIrzK94~r_$nRWJ2 zDL(gr)9;Wr;)E*QuUk%;b=@Bo6<7$jEIYPz%+#v!bGQ+%d~j?U2#nfd)mq0t3AKo( za85IYCPAaV7?P8YN`__$jP$M~f8qV5Ae&;ZSC+ac)@C8!&R6LWcP|S+5WRo!iGQ*E zmroS^bDoiG)XjcFT4Pkay*df%Aw+akFVsD)Jn}sD%>l81R1$vf1;$z0o7<1)$IZ=* zxxB!W-g%bh>x`}xKOH|DOFIu)AH|3h7~N@A*i@B!BUPS3t+dSqKIa(WfSrE)$tc%> zxUx;T(ei8>`t{aKu9Yr~Ee8gq6d$)mdw?DRZDwE13{(rBJ%+uF1>?N_ui|JxddrYN}=4bjO0|Ug{u_ z38TOs`ugs_}ht%M63-lH4?O9h8r9<|y-y2zt?piFEf=Re{i6@J*6;!9IZbM!cu}6sV zP}ZiZ2HS+Zo3P=rzMlEo@1+3m;tdNSyekx0M7YCCq-CQ#rupGmu=o5MMgS?b9gg!# zvBtj9nk>)C^-L8M??cdc=6~iostkuef*B0VKph$k^4~KPm5>KMZ!(TyZZMJ>lbaw^KDNDvp;XzLPK|tJYQ-BUhUpm zH$s?!D$9dbiAMD zSI4~EzX-oMXaV}r@7i{+_HR7iosTh2od*L0+%y~ytVD!7L7kE7-uI> z990XS3TM3H2+28pxKP?23Jtn9WL|v&iE`ic+c-fT8#;Mh_vM*>5f+;eJki_$ZH(-^ z`K0`afkN;7sQd=r5O3RNFHVo$$9Apj9`HUQ!+IbH2lIosabV7mXsg(FGZSWoE8~AO>!a&am zwKgCA6HKzI@Yw5WROo`xQw+YT&^px6s!HLPYC~UbVPBpQ=JvK2^AKFWm)C-86xRK4eF;Bxz>fMA9D*=cAp_h}}#;_;iW!5L7nGRuDP4YR*9DYAK`>qOyTH3qPA z|KqJjr%Ni6ptDt1itB;)v75{5j+K)7^?r5Vjr#zRx8!2rtu2g@>efWY(||b-uZutf zA$13?_S^19WaBc_?P63`6_Q?c5|eVFehJ?&TA#34psQQw_0Wmc05yVv+CzBYtQs(P ziy|?LrdeW-8i7~|)YL;StXvHM{kPBX(r^9lP5*vedI?s@USZYM90H%Nu=V}P=1aQ( zgD^=_)s*|pnog_=TW@I7P{L9L%Dnwe-_Pnz-%2b~ZEKU~E4%ln|WcKynQsi%|KM~6Gdmm!(kE8&wfp>$=b2L1WD^S=G7tDmQR&gmTV zAuWUjno)0k`yQpl=~p!BL5R!Kd-s%n=Ol}YX-&xy)=<-7HuPVrOC@i2v zI=f%mx-TdQBG%rt%zXl$vWg=Cnla27R_(D(UqTkO_}p-xPF~M{+R>*I4}M4Y!6v(f z`!4E3WJn_uSwO*)AarI?rartT@vKG`^HEw^x)?*{D|=Zm!yXnrnJnYtN4R)})~<5D zO+w~-jnVcYtcCJ+*0eluW!sCark4`@Z#rKXUZ2*jI`}Kk`tz5+RI{>g$}DNw?IfV( zb3uNDQ%OUhgz7nva3niQ$O~p@&{h$PU2&l$gR|Vg>NbSCD)h$+_EZ%?SZSvvMYP)} z&&ZR8Q=y>82y}>V@+VFIq0b)^hnAn&UKX-N2>{pT8POF%Q@F%I3r=W<9%dA~#EA`z zZHLa!{@wWr)QR)2PN?no0C3U2##c7rQ!+s@dm;|^%4|UV3;Tp49u!In8b|v_s167% z1cdvK&_Ai5N~q7Q$vpmx;7pkU)PnGbillaEvz-4S@jpkSw$%c7H^W3`nN_8e81l=+U|9*Mh0LWamsMp*6Sf*tR@0X8XzzDafRo z^n5n3{&eHoqHjOoE&ANIIPRA7Y02YC_kM6Tt7_Y$>gT+W;=$hjNbdH1)TXe0(~Sg4 zwEYg#vPhy{^ciOy{@arSk~pL1lo1-kS_x75=D-^1?J3Z0Dcv1;V6~IUZzxOJ?${~* zpygNp7eLicKxGVCiLEbPZD&Nwn^*JT3Z5*9=taSB9C*5U#{eDTs)8*o>`e_nn1Sjmc zwB7>}YKTr9XS>93AuaIbwg0?O@nDQ?!-Y7!U1l^*<>Oe|)^mI*H#DvI!kN4b9|>FC ztf!4=qU_0nU%CW_=KI3AWwTn(9W%p)?VqqF zoz^I1dVIv5cICHvo{hd3B=wD$%H*aL+*XdG{}wmXB0x{B%du^n zo5J_G@ckmknWSkYZWL?Br!{0|r>JvsOSG5$jzg@Yoqcfn>x$HSrlca(B{4$EcWZ_D6?H~Qj@jXRY2uk zH8Bd9^VIS4&)6R53*EfJsS%ZeE^OSo>cDdN(Ml61VB;7O@8=PlmepWj_Fk-F`diI1PM3$G!5oEXvCpx(L(+D! zKPMr~0-D|^O)4Ur#*c>xYpLN!qD}d0IRt#&6rwluf=<_+F#^uT;wn09tO|2}|Ll$a zy_jMTbjAS^HN}@&RKZQ*mv>F#lfr=O-WFx2`Mg5?TQP}Lo|(n zW_xvp-V3g_CX*S~g@K!S3)ddVRY@cDF&{5aYlU(>1A76T{y7!d6sigwg*CnT?=C;W zN+>^@9(p}Ew($K*xhYFNOeBwK1%ibXv(@)3ff3S@wjO%`&OW7AGi?xj?iUMSfs$yM)h#?CvMbaE`Eh4gQofi ze>iCEFkt#}Z(1pOImT@*xZvMq2R_?kZIT=nEAFk zye}q0AN{d{N33?I7*V6#&n7AVWKCtYMY_?s&8V%Ads#-uNzZzOHJ);asOkNy6t@h! z!p8|7QMTQDL{52Mz+nR{u0h40)s&}x_&luMHewXda8;aoB^pV0 zW~wKM?Ili6tyjVbmfA8~;m0wQWe-rAPe7iTWgUN6MayR8sKbkdLHWR*e3Q~LUU917 z= iTW-SOX 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 Vyjg)c2$ZV?84`inBeNUC0{}vl!AAf9 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/quota/ClientIdQuotaManager.docx b/src/java/com/twitter/search/earlybird_root/quota/ClientIdQuotaManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..4c33b40a203b6618217519a7b5061ea278e0d503 GIT binary patch literal 36996 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/quota/ClientIdQuotaManager.java b/src/java/com/twitter/search/earlybird_root/quota/ClientIdQuotaManager.java deleted file mode 100644 index 2a5723a3d..000000000 --- a/src/java/com/twitter/search/earlybird_root/quota/ClientIdQuotaManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.twitter.search.earlybird_root.quota; - -import java.util.Optional; - -/** A manager that determines how quota restrictions should be applied for each client. */ -public interface ClientIdQuotaManager { - /** - * Returns the quota for the given client, if one is set. - * - * @param clientId The ID of the client. - * @return The quota for the given client (in requests per second), if one is set. - */ - Optional getQuotaForClient(String clientId); - - /** - * Returns the common pool quota. A common pool quota must always be set. - * - * @return The common pool quota (in requests per second). - */ - QuotaInfo getCommonPoolQuota(); - -} diff --git a/src/java/com/twitter/search/earlybird_root/quota/ConfigBasedQuotaConfig.docx b/src/java/com/twitter/search/earlybird_root/quota/ConfigBasedQuotaConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..d110bc1b6cd30401821c9526273dd661f4bf2cd6 GIT binary patch literal 38848 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∾5*8bpDQ1Z$3X*l7OFp?9L5z>-!=;7Pi<+^d` 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 z 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 Sg1)UPPLMsYJoM7OefvN1should_enforce property of type boolean - * - * If this two properties are not present an exception will be thrown. - */ -public class ConfigBasedQuotaConfig extends PeriodicFileLoader { - private static final String UNSET_EMAIL = "unset"; - - private static final String PER_CLIENT_QUOTA_GAUGE_NAME_PATTERN = - "config_based_quota_for_client_id_%s"; - private static final String PER_EMAIL_QUOTA_GAUGE_NAME_PATTERN = - "config_based_quota_for_email_%s"; - - @VisibleForTesting - static final SearchLongGauge TOTAL_QUOTA = - SearchLongGauge.export("total_config_based_quota"); - - @VisibleForTesting - static final SearchLongGauge ENTRIES_COUNT = - SearchLongGauge.export("config_repo_quota_config_entries_count"); - - private final AtomicReference> clientQuotas = - new AtomicReference<>(); - - private String clientQuotaKey; - private boolean requireQuotaConfigForClients; - - /** - * Creates the object that manages loads the config from: quotaConfigPath. It periodically - * reloads the config file using the given executor service. - * - * @param quotaConfigPath Path to configuration file. - * @param executorService ScheduledExecutorService to be used for periodically reloading the file. - * @param clientQuotaKey The key that will be used to extract client quotas. - * @param requireQuotaConfigForClients Determines whether a client can be skipped - * if the associated object is missing the quota key - * (ie a client that is a SuperRoot client but the current service is Archive) - */ - public static ConfigBasedQuotaConfig newConfigBasedQuotaConfig( - String quotaConfigPath, - String clientQuotaKey, - boolean requireQuotaConfigForClients, - ScheduledExecutorService executorService, - Clock clock - ) throws Exception { - ConfigBasedQuotaConfig configLoader = new ConfigBasedQuotaConfig( - quotaConfigPath, - clientQuotaKey, - requireQuotaConfigForClients, - executorService, - clock - ); - configLoader.init(); - return configLoader; - } - - public ConfigBasedQuotaConfig( - String quotaConfigPath, - String clientQuotaKey, - boolean requireQuotaConfigForClients, - ScheduledExecutorService executorService, - Clock clock - ) throws Exception { - super("quotaConfig", quotaConfigPath, executorService, clock); - this.clientQuotaKey = clientQuotaKey; - this.requireQuotaConfigForClients = requireQuotaConfigForClients; - } - - /** - * Returns the quota information for a specific client id. - */ - public Optional getQuotaForClient(String clientId) { - return Optional.ofNullable(clientQuotas.get().get(clientId)); - } - - /** - * Load the json format and store it in a map. - */ - @Override - protected void accept(InputStream fileStream) throws JSONException, IOException { - String fileContents = IOUtils.toString(fileStream, StandardCharsets.UTF_8); - JSONObject quotaConfig = new JSONObject(JSONParsingUtil.stripComments(fileContents)); - - Map perEmailQuotas = Maps.newHashMap(); - ImmutableMap.Builder quotasBuilder = new ImmutableMap.Builder<>(); - Iterator clientIds = quotaConfig.keys(); - - long totalQuota = 0; - while (clientIds.hasNext()) { - String clientId = clientIds.next(); - JSONObject clientQuota = quotaConfig.getJSONObject(clientId); - - // Skip clients that don't send requests to this service. - // (ie some SuperRoot clients are not Archive clients) - if (!requireQuotaConfigForClients && !clientQuota.has(clientQuotaKey)) { - continue; - } - - int quotaValue = clientQuota.getInt(clientQuotaKey); - boolean shouldEnforce = clientQuota.optBoolean("should_enforce", false); - String tierValue = clientQuota.optString("tier", QuotaInfo.DEFAULT_TIER_VALUE); - boolean archiveAccess = clientQuota.optBoolean("archive_access", - QuotaInfo.DEFAULT_ARCHIVE_ACCESS_VALUE); - String email = clientQuota.optString("email", UNSET_EMAIL); - - quotasBuilder.put( - clientId, - new QuotaInfo(clientId, email, quotaValue, shouldEnforce, tierValue, archiveAccess)); - - SearchLongGauge perClientQuota = SearchLongGauge.export( - String.format(PER_CLIENT_QUOTA_GAUGE_NAME_PATTERN, clientId)); - perClientQuota.set(quotaValue); - totalQuota += quotaValue; - - Integer emailQuota = perEmailQuotas.get(email); - if (emailQuota == null) { - emailQuota = 0; - } - perEmailQuotas.put(email, emailQuota + quotaValue); - } - - clientQuotas.set(quotasBuilder.build()); - TOTAL_QUOTA.set(totalQuota); - ENTRIES_COUNT.set(clientQuotas.get().size()); - - for (String email : perEmailQuotas.keySet()) { - SearchLongGauge.export(String.format(PER_EMAIL_QUOTA_GAUGE_NAME_PATTERN, email)).set( - perEmailQuotas.get(email)); - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/quota/ConfigRepoBasedQuotaManager.docx b/src/java/com/twitter/search/earlybird_root/quota/ConfigRepoBasedQuotaManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..d458799a26d37e7548412b870ae75e28cb1ae542 GIT binary patch literal 37442 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 getQuotaForClient(String clientId) { - Optional quotaForClient = quotaConfig.getQuotaForClient(clientId); - - if (!quotaForClient.isPresent()) { - return Optional.empty(); - } - - QuotaInfo quota = quotaForClient.get(); - - int quotaValue = quota.getQuota(); - int rootInstanceCount = serverSetResolver.getServerSetSize(); - if (rootInstanceCount > 0) { - quotaValue = (int) Math.ceil((double) quotaValue / rootInstanceCount); - } - - return Optional.of( - new QuotaInfo( - quota.getQuotaClientId(), - quota.getQuotaEmail(), - quotaValue, - quota.shouldEnforceQuota(), - quota.getClientTier(), - quota.hasArchiveAccess())); - } - - @Override - public QuotaInfo getCommonPoolQuota() { - Optional commonPoolQuota = getQuotaForClient(COMMON_POOL_CLIENT_ID); - Preconditions.checkState(commonPoolQuota.isPresent()); - return commonPoolQuota.get(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/quota/QuotaInfo.docx b/src/java/com/twitter/search/earlybird_root/quota/QuotaInfo.docx new file mode 100644 index 0000000000000000000000000000000000000000..eed9ac48e4f1cc592e3903882ae9f7dc9d5adc4d GIT binary patch literal 37347 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 Tj-X$oiWp#q93D6Fe*OC&)fA-~ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/AbstractRecencyAndRelevanceRequestRouter.java b/src/java/com/twitter/search/earlybird_root/routers/AbstractRecencyAndRelevanceRequestRouter.java deleted file mode 100644 index bf4154e1a..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/AbstractRecencyAndRelevanceRequestRouter.java +++ /dev/null @@ -1,442 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import com.google.common.base.Preconditions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.finagle.Service; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.futures.Futures; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.util.earlybird.EarlybirdResponseMergeUtil; -import com.twitter.search.earlybird.thrift.AdjustedRequestParams; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRankingMode; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird_root.common.ClientErrorException; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.common.EarlybirdRequestUtil; -import com.twitter.search.earlybird_root.common.EarlybirdServiceResponse; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.mergers.SuperRootResponseMerger; -import com.twitter.search.queryparser.util.QueryUtil; -import com.twitter.util.Function; -import com.twitter.util.Function0; -import com.twitter.util.Future; - -/** - * For Recency traffic SuperRoot hits realtime and/or protected realtime first and then archive - */ -public abstract class AbstractRecencyAndRelevanceRequestRouter extends RequestRouter { - public static final String FULL_ARCHIVE_AVAILABLE_FOR_GET_PROTECTED_TWEETS_ONLY_DECIDER_KEY = - "superroot_full_archive_cluster_available_for_get_protected_tweets_only_requests"; - public static final String FULL_ARCHIVE_AVAILABLE_FOR_NOT_ENOUGH_PROTECTED_RESULTS_DECIDER_KEY = - "superroot_full_archive_cluster_available_for_requests_without_enough_protected_results"; - - private static final Logger LOG = - LoggerFactory.getLogger(AbstractRecencyAndRelevanceRequestRouter.class); - - private final String skipProtectedClusterDeciderKey; - private final String skipFullArchiveClusterDeciderKey; - - private final SearchCounter realtimeResponseInvalidCounter; - private final SearchCounter realtimeResponseSearchResultsNotSetCounter; - private final SearchCounter minSearchedStatusIdLargerThanRequestMaxIdCounter; - private final SearchCounter minSearchedStatusIdLargerThanRequestUntilTimeCounter; - - private final Service realtime; - private final Service protectedRealtime; - private final Service fullArchive; - private final SuperRootResponseMerger responseMerger; - private final SearchDecider decider; - - AbstractRecencyAndRelevanceRequestRouter( - Service realtime, - Service protectedRealtime, - Service fullArchive, - EarlybirdTimeRangeFilter realtimeTimeRangeFilter, - EarlybirdTimeRangeFilter protectedTimeRangeFilter, - EarlybirdTimeRangeFilter fullArchiveTimeRangeFilter, - ThriftSearchRankingMode rankingMode, - Clock clock, - SearchDecider decider, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - LOG.info("Instantiating AbstractRecencyAndRelevanceRequestRouter"); - this.realtime = realtimeTimeRangeFilter.andThen(realtime); - this.protectedRealtime = protectedTimeRangeFilter.andThen(protectedRealtime); - this.fullArchive = fullArchiveTimeRangeFilter.andThen(fullArchive); - this.responseMerger = new SuperRootResponseMerger(rankingMode, featureSchemaMerger, clock); - this.decider = decider; - - String rankingModeForStats = rankingMode.name().toLowerCase(); - skipProtectedClusterDeciderKey = - String.format("superroot_skip_protected_cluster_for_%s_requests", rankingModeForStats); - skipFullArchiveClusterDeciderKey = - String.format("superroot_skip_full_archive_cluster_for_%s_requests", rankingModeForStats); - - realtimeResponseInvalidCounter = - SearchCounter.export(rankingModeForStats + "_realtime_response_invalid"); - realtimeResponseSearchResultsNotSetCounter = - SearchCounter.export(rankingModeForStats + "_realtime_response_search_results_not_set"); - minSearchedStatusIdLargerThanRequestMaxIdCounter = SearchCounter.export( - rankingModeForStats + "_min_searched_status_id_larger_than_request_max_id"); - minSearchedStatusIdLargerThanRequestUntilTimeCounter = SearchCounter.export( - rankingModeForStats + "_min_searched_status_id_larger_than_request_until_time"); - } - - private void checkRequestPreconditions(EarlybirdRequest request) { - // CollectorParams should be set in EarlybirdRequestUtil.checkAndSetCollectorParams(). - Preconditions.checkNotNull(request.getSearchQuery().getCollectorParams()); - - // return a Client error if the num results are less than 0 - if (request.getSearchQuery().getNumResults() < 0) { - throw new ClientErrorException("The request.searchQuery.numResults field can't be negative"); - } - - if (request.getSearchQuery().getCollectorParams().getNumResultsToReturn() < 0) { - throw new ClientErrorException("The request.searchQuery.collectorParams.numResultsToReturn " - + "field can't be negative"); - } - } - - /** - * Hit realtime and/or protected realtime first, if not enough results, then hit archive, - * merge the results. - */ - @Override - public Future route(final EarlybirdRequestContext requestContext) { - EarlybirdRequest request = requestContext.getRequest(); - - this.checkRequestPreconditions(request); - - ArrayList savedRequestResponses = new ArrayList<>(); - - // If clients do not define numResults to return or the numResults requested are 0 - // return an empty EarlyBirdResponse without hitting any service. - if (request.getSearchQuery().getNumResults() == 0 - || request.getSearchQuery().getCollectorParams().getNumResultsToReturn() == 0) { - return Future.value(successNoResultsResponse()); - } - - // Realtime earlybird response is already required. Even if the service is not called - // the result passed to the mergers should be a valid one. - EarlybirdServiceResponse.ServiceState realtimeServiceState = - getRealtimeServiceState(requestContext); - final Future realtimeResponseFuture = - realtimeServiceState.serviceWasCalled() - ? getRealtimeResponse(savedRequestResponses, requestContext) - : Future.value(EarlybirdServiceResponse.serviceNotCalled(realtimeServiceState)); - - // If no flock response (followedUserIds) is set, request wont be sent to protected. - EarlybirdServiceResponse.ServiceState protectedServiceState = - getProtectedServiceState(requestContext); - final Future protectedResponseFuture = - protectedServiceState.serviceWasCalled() - ? getProtectedResponse(savedRequestResponses, requestContext) - : Future.value(EarlybirdServiceResponse.serviceNotCalled(protectedServiceState)); - - final Future archiveResponseFuture = - Futures.flatMap(realtimeResponseFuture, protectedResponseFuture, - new Function0>() { - @Override - public Future apply() { - EarlybirdServiceResponse realtimeResponse = Futures.get(realtimeResponseFuture); - EarlybirdServiceResponse protectedResponse = Futures.get(protectedResponseFuture); - EarlybirdServiceResponse.ServiceState fullArchiveServiceState = - getFullArchiveServiceState(requestContext, realtimeResponse, protectedResponse); - return fullArchiveServiceState.serviceWasCalled() - ? getFullArchiveResponse(savedRequestResponses, requestContext, - realtimeResponse.getResponse(), protectedResponse.getResponse()) - : Future.value( - EarlybirdServiceResponse.serviceNotCalled(fullArchiveServiceState)); - } - } - ); - - Future mergedResponse = responseMerger.mergeResponseFutures( - requestContext, realtimeResponseFuture, protectedResponseFuture, archiveResponseFuture); - mergedResponse = mergedResponse - .map(RequestRouterUtil.checkMinSearchedStatusId( - requestContext, - "max_id", - EarlybirdRequestUtil.getRequestMaxId(requestContext.getParsedQuery()), - realtimeResponseFuture, - protectedResponseFuture, - archiveResponseFuture, - minSearchedStatusIdLargerThanRequestMaxIdCounter)) - .map(RequestRouterUtil.checkMinSearchedStatusId( - requestContext, - "until_time", - EarlybirdRequestUtil.getRequestMaxIdFromUntilTime(requestContext.getParsedQuery()), - realtimeResponseFuture, - protectedResponseFuture, - archiveResponseFuture, - minSearchedStatusIdLargerThanRequestUntilTimeCounter)); - - return this.maybeAttachSentRequestsToDebugInfo( - savedRequestResponses, - requestContext, - mergedResponse - ); - } - - private EarlybirdResponse successNoResultsResponse() { - return new EarlybirdResponse(EarlybirdResponseCode.SUCCESS, 0) - .setSearchResults(new ThriftSearchResults().setResults(Collections.emptyList())); - } - - protected abstract boolean shouldSendRequestToFullArchiveCluster( - EarlybirdRequest request, EarlybirdResponse realtimeResponse); - - /** Determines if the protected service is available and if a request should be sent to it. */ - private EarlybirdServiceResponse.ServiceState getProtectedServiceState( - EarlybirdRequestContext requestContext) { - if (!requestContext.getRequest().isSetFollowedUserIds() - || requestContext.getRequest().getFollowedUserIds().isEmpty()) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_REQUESTED; - } - - if (decider.isAvailable(skipProtectedClusterDeciderKey)) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_AVAILABLE; - } - - return EarlybirdServiceResponse.ServiceState.SERVICE_CALLED; - } - - /** Determines if the realtime service is available and if a request should be sent to it. */ - private EarlybirdServiceResponse.ServiceState getRealtimeServiceState( - EarlybirdRequestContext requestContext) { - EarlybirdRequest request = requestContext.getRequest(); - - // SERVICE_NOT_REQUESTED should always be returned before other states as - // SuperRootResponseMerger has special logic for this case. - if (request.isSetGetProtectedTweetsOnly() && request.isGetProtectedTweetsOnly()) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_REQUESTED; - } - - return EarlybirdServiceResponse.ServiceState.SERVICE_CALLED; - } - - /** Determines if the full archive service is available and if a request should be sent to it. */ - private EarlybirdServiceResponse.ServiceState getFullArchiveServiceState( - EarlybirdRequestContext requestContext, - EarlybirdServiceResponse publicServiceResponse, - EarlybirdServiceResponse protectedServiceResponse) { - - // SERVICE_NOT_REQUESTED should be always be returned before other states as - // SuperRootResponseMerger has special logic for this case. - if (!requestContext.getRequest().isSetGetOlderResults() - || !requestContext.getRequest().isGetOlderResults()) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_REQUESTED; - } - - // allow requesting full archive service when decider is enabled - if (!decider.isAvailable(FULL_ARCHIVE_AVAILABLE_FOR_GET_PROTECTED_TWEETS_ONLY_DECIDER_KEY) - && requestContext.getRequest().isSetGetProtectedTweetsOnly() - && requestContext.getRequest().isGetProtectedTweetsOnly()) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_REQUESTED; - } - - if (decider.isAvailable(skipFullArchiveClusterDeciderKey)) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_AVAILABLE; - } - - boolean serviceWasCalledForPublic = - getFullArchiveServiceState(requestContext, publicServiceResponse).serviceWasCalled(); - boolean serviceWasCalledForProtected = - decider.isAvailable(FULL_ARCHIVE_AVAILABLE_FOR_NOT_ENOUGH_PROTECTED_RESULTS_DECIDER_KEY) - && getFullArchiveServiceState(requestContext, protectedServiceResponse).serviceWasCalled(); - if (!serviceWasCalledForPublic && !serviceWasCalledForProtected) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_CALLED; - } - - return EarlybirdServiceResponse.ServiceState.SERVICE_CALLED; - } - - private EarlybirdServiceResponse.ServiceState getFullArchiveServiceState( - EarlybirdRequestContext requestContext, - EarlybirdServiceResponse realtimeServiceResponse) { - EarlybirdResponse realtimeResponse = realtimeServiceResponse.getResponse(); - - if (!EarlybirdResponseMergeUtil.isValidResponse(realtimeResponse)) { - realtimeResponseInvalidCounter.increment(); - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_CALLED; - } - - if (!realtimeResponse.isSetSearchResults()) { - realtimeResponseSearchResultsNotSetCounter.increment(); - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_CALLED; - } - - if (!shouldSendRequestToFullArchiveCluster(requestContext.getRequest(), realtimeResponse)) { - return EarlybirdServiceResponse.ServiceState.SERVICE_NOT_CALLED; - } - - return EarlybirdServiceResponse.ServiceState.SERVICE_CALLED; - } - - /** - * Modify the original request context based on the followedUserId field and then send the - * request to the protected cluster. - */ - private Future getProtectedResponse( - ArrayList savedRequestResponses, - final EarlybirdRequestContext requestContext) { - EarlybirdRequestContext protectedRequestContext = - EarlybirdRequestContext.newContextWithRestrictFromUserIdFilter64(requestContext); - Preconditions.checkArgument( - protectedRequestContext.getRequest().getSearchQuery().isSetFromUserIDFilter64()); - - // SERVICE_NOT_REQUESTED should be always be returned before other states as - // SuperRootResponseMerger has special logic for this case. - if (protectedRequestContext.getRequest().getSearchQuery().getFromUserIDFilter64().isEmpty()) { - return Future.value(EarlybirdServiceResponse.serviceNotCalled( - EarlybirdServiceResponse.ServiceState.SERVICE_NOT_REQUESTED)); - } - - if (requestContext.getRequest().isSetAdjustedProtectedRequestParams()) { - adjustRequestParams(protectedRequestContext.getRequest(), - requestContext.getRequest().getAdjustedProtectedRequestParams()); - } - - LOG.debug("Request sent to the protected cluster: {}", protectedRequestContext.getRequest()); - return toEarlybirdServiceResponseFuture( - savedRequestResponses, - protectedRequestContext, - "protected", - this.protectedRealtime - ); - } - - private Future getRealtimeResponse( - ArrayList savedRequestResponses, - EarlybirdRequestContext requestContext) { - return toEarlybirdServiceResponseFuture( - savedRequestResponses, - requestContext, - "realtime", - this.realtime); - } - - /** - * Modifying the existing max id filter of the request or appending a new - * max id filter and then send the request to the full archive cluster. - */ - private Future getFullArchiveResponse( - ArrayList savedRequestResponses, - EarlybirdRequestContext requestContext, - EarlybirdResponse realtimeResponse, - EarlybirdResponse protectedResponse) { - long realtimeMinId = getMinSearchedId(realtimeResponse); - long protectedMinId = getMinSearchedId(protectedResponse); - // if both realtime and protected min searched ids are available, the larger(newer) one is used - // to make sure no tweets are left out. However, this means it might introduce duplicates for - // the other response. The response merger will dedup the response. This logic is enabled - // when full archive cluster is available for requests without enough protected results. - long minId = - decider.isAvailable(FULL_ARCHIVE_AVAILABLE_FOR_NOT_ENOUGH_PROTECTED_RESULTS_DECIDER_KEY) - ? Math.max(realtimeMinId, protectedMinId) : realtimeMinId; - - if (minId <= 0) { - // If the realtime response doesn't have a minSearchedStatusID set, get all results from - // the full archive cluster. - minId = Long.MAX_VALUE; - } - - // The [max_id] operator is inclusive in earlybirds. This means that a query with [max_id X] - // will return tweet X, if X matches the rest of the query. So we should add a [max_id (X - 1)] - // operator to the full archive query (instead of [max_id X]). Otherwise, we could end up with - // duplicates. For example: - // - // realtime response: results = [ 100, 90, 80 ], minSearchedStatusID = 80 - // full archive request: [max_id 80] - // full archive response: results = [ 80, 70, 60 ] - // - // In this case, tweet 80 would be returned from both the realtime and full archive clusters. - EarlybirdRequestContext archiveRequestContext = - EarlybirdRequestContext.copyRequestContext( - requestContext, - QueryUtil.addOrReplaceMaxIdFilter( - requestContext.getParsedQuery(), - minId - 1)); - - if (requestContext.getRequest().isSetAdjustedFullArchiveRequestParams()) { - adjustRequestParams(archiveRequestContext.getRequest(), - requestContext.getRequest().getAdjustedFullArchiveRequestParams()); - } - - LOG.debug("Request sent to the full archive cluster: {},", archiveRequestContext.getRequest()); - return toEarlybirdServiceResponseFuture( - savedRequestResponses, - archiveRequestContext, - "archive", - this.fullArchive - ); - } - - private long getMinSearchedId(EarlybirdResponse response) { - return response != null && response.isSetSearchResults() - ? response.getSearchResults().getMinSearchedStatusID() : 0; - } - - private void adjustRequestParams(EarlybirdRequest request, - AdjustedRequestParams adjustedRequestParams) { - ThriftSearchQuery searchQuery = request.getSearchQuery(); - - if (adjustedRequestParams.isSetNumResults()) { - searchQuery.setNumResults(adjustedRequestParams.getNumResults()); - if (searchQuery.isSetCollectorParams()) { - searchQuery.getCollectorParams().setNumResultsToReturn( - adjustedRequestParams.getNumResults()); - } - } - - if (adjustedRequestParams.isSetMaxHitsToProcess()) { - searchQuery.setMaxHitsToProcess(adjustedRequestParams.getMaxHitsToProcess()); - if (searchQuery.isSetRelevanceOptions()) { - searchQuery.getRelevanceOptions().setMaxHitsToProcess( - adjustedRequestParams.getMaxHitsToProcess()); - } - if (searchQuery.isSetCollectorParams() - && searchQuery.getCollectorParams().isSetTerminationParams()) { - searchQuery.getCollectorParams().getTerminationParams().setMaxHitsToProcess( - adjustedRequestParams.getMaxHitsToProcess()); - } - } - - if (adjustedRequestParams.isSetReturnAllResults()) { - if (searchQuery.isSetRelevanceOptions()) { - searchQuery.getRelevanceOptions().setReturnAllResults( - adjustedRequestParams.isReturnAllResults()); - } - } - } - - private Future toEarlybirdServiceResponseFuture( - List savedRequestResponses, - EarlybirdRequestContext requestContext, - String sentTo, - Service service) { - Future responseFuture = service.apply(requestContext); - this.saveRequestResponse( - savedRequestResponses, sentTo, requestContext, responseFuture - ); - - return responseFuture.map(new Function() { - @Override - public EarlybirdServiceResponse apply(EarlybirdResponse response) { - return EarlybirdServiceResponse.serviceCalled(response); - } - }); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/BUILD b/src/java/com/twitter/search/earlybird_root/routers/BUILD deleted file mode 100644 index 1f9f71b60..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/BUILD +++ /dev/null @@ -1,25 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/org/slf4j:slf4j-api", - "finatra/inject/inject-core/src/main/scala", - "src/java/com/twitter/common/collections", - "src/java/com/twitter/search/common/decider", - "src/java/com/twitter/search/common/futures", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/partitioning/snowflakeparser", - "src/java/com/twitter/search/common/util/earlybird", - "src/java/com/twitter/search/earlybird/common", - "src/java/com/twitter/search/earlybird/config", - "src/java/com/twitter/search/earlybird_root/common", - "src/java/com/twitter/search/earlybird_root/filters", - "src/java/com/twitter/search/earlybird_root/mergers", - "src/java/com/twitter/search/queryparser", - "src/java/com/twitter/search/queryparser/query:core-query-nodes", - "src/thrift/com/twitter/search:earlybird-java", - ], -) diff --git a/src/java/com/twitter/search/earlybird_root/routers/BUILD.docx b/src/java/com/twitter/search/earlybird_root/routers/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..aec56289dfb48b53b956addc7c21ed2afc96251b GIT binary patch literal 36958 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouter.docx b/src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouter.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f71d83ebb0ed39a1ab07f7dd207a3e7f7705659 GIT binary patch literal 37143 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ʨfKR&~E+UbW6HU1nYrC-BD|pM4vK{i6;$ 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 q85$}m9WQkK= realtime; - - /** Creates a new FacetsRequestRouter instance to be used by the SuperRoot. */ - @Inject - public FacetsRequestRouter( - @Named(InjectionNames.REALTIME) - Service realtime, - @Named(FacetsRequestRouterModule.TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter timeRangeFilter) { - - this.realtime = timeRangeFilter.andThen(realtime); - } - - @Override - public Future route(EarlybirdRequestContext requestContext) { - return realtime.apply(requestContext); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouterModule.docx b/src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouterModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..88e371e02a9e6f495a989a440b7357aeadfe5484 GIT binary patch literal 37135 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouterModule.java b/src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouterModule.java deleted file mode 100644 index 87aa5852e..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/FacetsRequestRouterModule.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.filters.RealtimeServingRangeProvider; -import com.twitter.search.earlybird_root.filters.ServingRangeProvider; - -public class FacetsRequestRouterModule extends TwitterModule { - public static final String TIME_RANGE_FILTER = "facets_time_range_filter"; - - public static final String SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_facets_serving_range_boundary_hours_ago"; - - private ServingRangeProvider getServingRangeProvider(final SearchDecider decider) - throws Exception { - return new RealtimeServingRangeProvider( - decider, SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - @Provides - @Singleton - @Named(TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesTimeRangeFilter(SearchDecider decider) throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getServingRangeProvider(decider)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouter.docx b/src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouter.docx new file mode 100644 index 0000000000000000000000000000000000000000..d27c22a6980d6e707799a741dcc8137fa1bffdc2 GIT binary patch literal 37642 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 realtime, - @Named(InjectionNames.PROTECTED) - Service protectedRealtime, - @Named(InjectionNames.FULL_ARCHIVE) - Service fullArchive, - @Named(RecencyRequestRouterModule.REALTIME_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter realtimeTimeRangeFilter, - @Named(RecencyRequestRouterModule.PROTECTED_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter protectedTimeRangeFilter, - @Named(RecencyRequestRouterModule.FULL_ARCHIVE_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter fullArchiveTimeRangeFilter, - Clock clock, - SearchDecider decider, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - super(realtime, - protectedRealtime, - fullArchive, - realtimeTimeRangeFilter, - protectedTimeRangeFilter, - fullArchiveTimeRangeFilter, - ThriftSearchRankingMode.RECENCY, - clock, - decider, - featureSchemaMerger); - } - - @Override - protected boolean shouldSendRequestToFullArchiveCluster( - EarlybirdRequest request, EarlybirdResponse realtimeResponse) { - boolean isEarlyTerminated = realtimeResponse.isSetEarlyTerminationInfo() - && realtimeResponse.getEarlyTerminationInfo().isEarlyTerminated(); - if (isEarlyTerminated) { - SKIPPED_ARCHIVE_DUE_TO_REALTIME_EARLY_TERMINATION_COUNTER.increment(); - return false; - } - - // Check if we have the minimum number of results to fulfill the original request. - int numResultsRequested = request.getSearchQuery().getNumResults(); - int actualNumResults = realtimeResponse.getSearchResults().getResultsSize(); - if (actualNumResults >= numResultsRequested) { - SKIPPED_ARCHIVE_DUE_TO_REALTIME_ENOUGH_RESULTS_COUNTER.increment(); - return false; - } - - return true; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouterModule.docx b/src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouterModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..52e05ecdedfd2c08e36b84a89324582b2d5728d8 GIT binary patch literal 37322 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 R2$ZV?84`inBe)mD0{{iIy7mA7 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouterModule.java b/src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouterModule.java deleted file mode 100644 index 009c04a68..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/RecencyRequestRouterModule.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.filters.FullArchiveServingRangeProvider; -import com.twitter.search.earlybird_root.filters.RealtimeServingRangeProvider; -import com.twitter.search.earlybird_root.filters.ServingRangeProvider; - -public class RecencyRequestRouterModule extends TwitterModule { - public static final String FULL_ARCHIVE_TIME_RANGE_FILTER = - "recency_full_archive_time_range_filter"; - public static final String REALTIME_TIME_RANGE_FILTER = - "recency_realtime_time_range_filter"; - public static final String PROTECTED_TIME_RANGE_FILTER = - "recency_protected_time_range_filter"; - - public static final String REALTIME_RANGE_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_recency_realtime_serving_range_boundary_hours_ago"; - public static final String PROTECTED_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_recency_protected_serving_range_boundary_hours_ago"; - public static final String FULL_ARCHIVE_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_recency_full_archive_serving_range_boundary_hours_ago"; - - private ServingRangeProvider getFullArchiveServingRangeProvider(final SearchDecider decider) - throws Exception { - return new FullArchiveServingRangeProvider( - decider, FULL_ARCHIVE_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - private ServingRangeProvider getRealtimeServingRangeProvider(final SearchDecider decider) - throws Exception { - return new RealtimeServingRangeProvider( - decider, REALTIME_RANGE_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - private ServingRangeProvider getProtectedServingRangeProvider(final SearchDecider decider) - throws Exception { - return new RealtimeServingRangeProvider( - decider, PROTECTED_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - @Provides - @Singleton - @Named(FULL_ARCHIVE_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesFullArchiveTimeRangeFilter(SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getFullArchiveServingRangeProvider(decider)); - } - - @Provides - @Singleton - @Named(REALTIME_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesRealtimeTimeRangeFilter(SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getRealtimeServingRangeProvider(decider)); - } - - @Provides - @Singleton - @Named(PROTECTED_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesProtectedTimeRangeFilter(SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getProtectedServingRangeProvider(decider)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouter.docx b/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouter.docx new file mode 100644 index 0000000000000000000000000000000000000000..ac5ce3c59bba4d1408a1335e5818c8ac1c527c41 GIT binary patch literal 38079 zcmagFWmp_t)-H@|a1HM6?hb+A?h-U;<4)tj-QC?Cg1cLAw;+Mw?x*uSGxN^Od(QX$ zDK1vkx@E2E+Iv^;R+5E;!UO{Yg9C$4=hmuHDT+%12Ll^}0RzJTMRmmicFtyY&W36p z_GV7{OzyTeO-b^KYa*!M&R?;TnT1Ha#8I%yckOBH8RGCHYBFwlw3nGrIJ*Jo2higB~JDAGc^myAWOUpHu9Oy%(?d^<49$er1uEt2VrVk zGrd1fbAhw$)%Nolq6eRg<>~|^X+45PQ&+`kpc4-T!>I_4L5J29%yQ>-klU-N9FI`% z(SO|^Q*wQs@O2}56!(+NeqCmw(#W#TK=|&@lNx4pp)U2!s4;%Psm^thzQNH#-JyQ1 zw+PvN2oZq#%nX&L+B5@Xu3#br4nU+!189=DQt#?#Y@4{nrj1 z?PxV0%i}<4JkNV^QvF1jbheI|D(|5C{`-5{q8JLH$K_Ci`}sL}+X;2Q z5tMJ7>cVv@?V>TsqwKug?+(Y}WIngKLAoov5(+*Y5{7~_{vrcj50}W#2VbC9aUVYT zSKmv&bQbTstOewo$T1|->b@os7NT{>eR=kJLM*BHC?VAQvQ)CMFFbZnmj8??ZvdwB zA6@jIk`;LXb#D^_3=9$U*U-_-#)+Bf&#@|g@-rkWs^7Vg3u^mvlc(tojSwde6yO-$je9y#uF{1!~nZDR2P}5j@As}z5S8I#*va#K89WEKZ z!=Kb$Z8u2UCOzVo99hJS>YmG7gG7ja6Jt=9w&846v|3EUkj_>bxiqLO0qq9SnMTva zhj9)71CWwy<_s^XYWr#97XBdI>@02MCvqHXkEWWYV9JWaQ;00%fN>)(b2uGc9^00Q z{r#z3>8ozVCDT!$xT30oJH-vmWC!{Hk42+E$!zQ1rvpX`@<~n4DRY<2KxJS1X`) zeYwR@KJtNjPLBC+Q>0m~D#dw6VybBJE8jFk;%UB90}o3c_#!uD05!K<0UzkNV*}-iSFNMCd$g&`inrE`wB}s<{mJBt)fY&pgB0}p z)1Z;cL8ci^EespMsp}*32NZC25#=-$w^j|d?eJ44M~AIxS4jPe4=o`dkdr^=&7PK4 ziUj1rt?RmO0tSlehUe#Z*BPBC{e+!OTiI(dUYo~xs8hZGGdJ>(hus7%Lg2F!?{6+G zSu+x4FiS);p=7>G|6u5v%s*=IegE|KahZVrf%_5)_t*m2fOgJJ{OzUh3jaU*ac98pi@p6{ZBZMyTVp}(c&3NacMi9N6;;NK4_FkP72m+Cjn8bEA0zu5 z2i3;93-oym#p3h8!!2jGh_Piu&4%?{kRUK>mF@HqKVFRJ5CVco{ZSs)J391~r z3`=7WP2a(AdaP;zh7sO5O;f3Q%!{nSc;b=>*4{~xe%g5zS!A=(tGHdk-h1Z7Ohodx zYu&@ZMUqm}@@A?si(+^M3XjrhLC#Nmx5wJaNl3_25MN%|p~gKbENNCkrEug) z@L7#IFDAZ1Ss{8k-`1P{Ld&(V)x{B*BNsU#Vz9rO`|vP;@DsFMo99D9)fJ=`c=*-N=Yys^c8fYuyQ!@&|E2Zf`M(| z`v7X_L~B7@rBALpyTtcj@m^7xE^S#4w;x>u5s%$qcz~@9@I)!6@HVfbk>f=Etu|XJ zNkWsFTNL~unKvr7PmgB25V{-0Qo3D5FT0--9i>#zP7$nNTM?r z&At{QJ&KbeLiEOrj5#-YT3ZRTB%ls&i^Q!F!RSc~nE1irei|aP)ZKC?23?<9$yqzLAReEz)gt`ju zxKro}F#Sp|Q+x&dx;Ug5DHHdD23w_|#yvVqLKUXbfjbVJU^VSWsP~Q6yCD^fu8{Fe1_X*f(n()Xh6$>qLsZroQGUSgrBHs_6e8epg7CF@ovtf&&OT< zwo>7zYBUl(2HD~EvYC8Bo0Y3BkwY15C&rprR&#k8-;j!~i+HUgCJtiG4lG3H*!Jj} zIKb4ay!R$2XyntUkoc$7Z&BGsAM`$r(8i(BjBG=T@T@LL8A7N9{rC_yH_bl;rBtpN zg)Yp~9p3wCoNI;?OtoDW$tCg;GIg@*0vR!|G)TQTjHApvS*O%Qq*j3u<{~_ZV6-#Z`7Bz-x{Bd};G#2=6fa$vmwT*MPAq_~s5U&b6$3ofGjEwb zDW)vnaC&M}6U;W1FdLNYZ?FwyfZex*=beq$!}hmVm;0^Kz^i~M|AT?q-DEZ?^-dR0 zn!c8eML?NLvW#B&uSvR!6rQ>jV1v5(YZ)Tn9`N3ruj4c)S-?v};1xpILso=O+&b-d zib(gTc%$OpZ&S#9(_ddaR?p?1mxg6g85lW5sAjyRi(w4y?9STvHqZNoqnFcPg6fz| zVfkvpizhdcu~Z&fy+) zTt>@NLZZoB4GP9%cV(8a%~s>5*W?vKvc zU{PT;5YmVV=iP%j5i{AO+K#Itk8E?l3V(O&1Y(iUh3T1B&=_bp*}=)yT$&oKb-eR8 zn;jnV#-T4WxeR8vF{Z=!!W~EllYQ9?y6CXW4)6WZ?a82w#URsNvq4(F^7?JJ6VB7) z(@I%{W0X63ks`V}3@Y63pCnm+raRk)2RqKM^Umv7N2+zNF41c90dd#Sr=Suj3Qhs`^bMWhi)I87;Cl*!b39cAYS37mqsiU zH&$inv;5#^Y7*F!CfY@E0gGKCP8&}Wl-ubS&KBeaF5W2aw2+L#-w)le>wUb=>p%K2 z6HVwwTP!PnM;f9HQEB9-`lg#r&hc`6^1{Fjo>XYB7F>(#7lz#r9sxN=>-Ej4Se_K$ z^-fLE9OGMuR>1mceCx`Zp~l)LHB$)3TDr$2JgZ7nJ!!m|y0Mg0IV=zHes{vt_v+<% zgPs(1zl5C4jD*Q5YU(nJM|58%B~Hplc3oZ@12Tz<5(0v&3lO-zi1}`r?+=#*P4cqL zobx~Wq~tu*$DW$p@zspI8?&}sFl^C4Kr~Q<(gi8|nQ)MMib|&|eQa)O9nFOkk1~4d z!8}FmmdM*_8m(P{)ur)T)1gbStY&2qIDYoaXvgO3zZ*@if`STZc(|O<89G+}8>i8{D+Cx}56mbAPRXEXr*>tR?w&53>Y^$Yb6KSQ* zHeaFD=vRqAC300xDpnmO!hq9>uSTaOG>}nly|(HqepnHW&Oa){Hyu7g>1&&ay;Bs` zEd7|d7gT#zDc1(h>%Q|1d3v~N0hRrMN|cr+7$%2b&lO<}2CRk6wXRHvxQlZb{Vc0| zz%67+S|RdHFi}Vv<>V7Tdfpa+Il((8>I<9pkgAmopaYD_xuAY$>F>Jw*soOA5#G^V zVx=CPm2dbpImgREt$a;5WLB~;nOH61-5<`Rv##o_sOr{Z)SN8{S<1aVzFk(WeIk%) z)u20$;%_o{nrVMI%n)Tf$CH^`>98^A`n8{hfotlu)zN9AzxrMm8aSF`?>bx7#Kg48 zHJL<8@V-Y#!2JW!t}g9U1n$#TGq9;o4!qF@LX9!sECbDV-$uIj6WC-8jz$M_kbxyk zSo5R}pC$`*XBxx=XY(4y8MTZcd4?lf{wj1LfGOjnC@uaS%WFy8(3S66^&856j{J6h z_~>k)Dd9M1N=N{j68<&v|Gl93_woPl#Z989Vjv6dxAQlIzTgDRV!Mcszw@cu>7;6k zyo04y(>-lxHW>hE*L^cqFA7|E-=| z2SQt7Ha_)BNKUr1XFJ*DWOeIRXQlPF@J6~*@3umNMnE4LRNeA|kv=&mrP1#B;mqxW zDS_`RtO0^~;{t(r@xK3yyj~Q#A(X~_CS*VRgOTOfp828)n1oxmc#1e%QEjH`4&+q{ zdxR(tWqrD8kah6KNoyXfo7uzxPX%~qFIWiSJ)y`Ff?ZxhEokAXj!|FhOn71;a{%wS*!>d;^)|E#r>vxkkD)1NsOXyKl) zD^>5)-JM@x`0~>>HVABZ$_^~vmEen4XLj8=yFB~c@0l5#uQ8{FzLcaQ#Of;Q8lTJK z>-qb#v6X1|HM0`b%wAt}d^>E;friA<8Lwv>-2L51U2VGO8qXz@XV>ij;47{-|Kq`# zyUtm5^4hE2>sf~I(lFrdG3Nd8dFed5M7ZT-PygX@R5NXXu?$7{X7 zo9+Ae&0uEWDzQOw$;EX4VMxmU&iL9%OU3K>$yKArx(#=UFmYvXPp9HH-q6VU_Z!Ow z9k1twwQ*0kaN&1*EkHloef!?^!L9qp(~6O=hW8;QOZ~tmA)k86d`gtOkTh2$JRT`KJihXg(tGOs;@M7eGGZl0oy51&45`0&iU3X4q&o@#D_ z)_t~Kd{VwdKp_fWD&N6(#Jl#n%d-==@ja`CN8Hayu4eH9#I+WP6!Y!of6Nv9lrBo6R$l* z80Zn9*6z)Jia}Zv7JE~R0$mhxhR!z~(tr|DQ!V^jYv`jb?86hx+|eFm7L4Qj`gYiF z?hE&Nv+?SjuJ=+4Tn5Ug@LKMP6WKFj7-JbCvqI0p(==h!X1V+?d9N4BnZpDG-# z#Q=66e!kb~bW3I9cYW8D;(DZg>f!RdXQiZmdssVgl2dqB6>px6LFT)DiDXh7eLEzC9f2TOz zdhHNk5GGEpnRc69*NIhO>kDZaPFSu&Ua-6E|5dx?Q;lh&ZDstDvUIrb;8clSSo#!$ zcG32{^yONO)@mTl;vw+8L%(`)`uTM3$^PEqby()^TKM!_C{tOgNq=GfqW|Ff`qx>% zQzi#}a2r99X4HHCfqOYo<~5CaAmYl*{sX1&1@V$%MoUVB71T_qHGOz(xg?JWS{%3p z(U(HDuAbNSo=bB4i1l|ZGjIRroYF{uW(;$dWk+mFc<_=IpDWJu>D$FGTl!3*p&w}8 zSfqDwKSaF=4QXT|i^zErgwD+?)JN7OUeriqK1(Z0m!hjAvR4E#>|@fC$}%o}hKpDD z-d*XtMZo-^G1f7Rxmel3no$6*Y;&2@@>+(MsuRxe_Pk-)$zOdwP`DCa%gVkbv#e#i zn}Ax#1^F3HB?EyHs`pUBf%G_`Ac&z!TSY8()tQzQ&SDd@#}Mwi*bg(vLsbM}wS$%f z(RQ;kt3Vn~g`6Hez&^gkk0kS_K7ULcYGHOqMesHy09>1AR96I5;R+iyD4_#-gi-7Y zJ2oJ;1G+Hx&&jW#li2?}3AIB302lqo_0>&yluS^}9*84-GMfm_&-pwo>$e_0V$xX{#}?W zK1h!WD#$Bl<4;BsM8^M;$VdW5?STmQm+JWhwjg<+7*C!w=I z(nX}<;&c88?yK#qL%i6Y)bklZ(m#bdF}Ad|*}ZGaw+%yg+180bLTmoOp?zg|+~$oT zQjkeE`Q?0Y$3Z`?!(YrPR)*c&94O^#l!uB(fplt%$QTZ8K)cV|G?y^)8ju)xDoX> zS>;`cOgjVf@U{pQ4#KSBJ55UV_gEj__kEPd5YAa&u3db+-OgJRC{T(vokD9DZy8nB z2r0(CM`|u7V7FV2`Kg{W^s_ ziXD1V-slbqHB6_Dy;Ekmm=W;$HgHj_csS0s=}Z*XAv2bt@_9UC`z5}d8=6*p@myYp zkC?4t&cj+XN%nNnH&X&#lcIQj#kAgI*VJ(FWGP4N5e4-8gp>F69(fwwdzyPgwdzS5 z*mQ8oc(8qLQT@pz{LM4_c#X^5yPnGwFi>FU>zg~{*S-y0D5W8m$Kvl%6>`Axp}SQ;p}`r65a3;(zZ@JIhvSlMMvSR4+WgV03qTEBjq?>b$5+ zJT{U%A_1PUYO(2W<6)XVBiWFCTs}_s$FE41O`l`pEQvBzXm>jZ68n99oZTTfrO8_B zBB1iImIxWlY5L^lS8OlzrEWp-^r%WvHyMGqTXtbSK-;7#Cy6S5Z2TdZcZw)-HHd9Iv{{4pTDIwp+}vv1zl%AA6XNpO&)oPo0U%~hGG51(TSs& zy@D!PP2$2wYr4@meQ+i0c(sKSuz7-r`|FrZ%W^0ncRyA!^Sy2byW3sSV4hsG)cZu; zK6$6qkCOmq5mj%DCLNJY6~W|bMg zU+(6>eoU!58si|bn&N9cir|*;>&F)HDPh1(Uz@VyLP4?q9UH;e)!2&7k$lHhe9z1n zgPv;4?+Fb1q=&|7oF3v1WhvY#4H}`DF#NWS0{xHzkVZaoA?Ak(YVx_pSrb4w%KM5ykc1LpH;-WphM^bg@(At|Oq2S6`lx^51 znEk#sav&x{AN{$CN34Fg6j7tn*E+fIbX{ewO}g2s-Kf2odqqaaQO|0WHJ);qu!Z7H zid%+V;qxSqDBE5kqPdMlLt3F=Nzq*<*^1LDw3k)uPK10c_Nd3bM@4n~iBkN4mKKNc zs-nx`c2y;L>)ydJt~M@0Ob@9E$_Q#b?9XPKbLVCDW@gHieX_{jY6dV$d3wYrt)=L~ zN7(kR+?TH^)<+*H(D9^XWK~?-NWG>Qq*h27t1F+3mYPa>L^o7>HkYmCac@`32=9-g z?s>D{%aLsbam{rnCMb(QI#zKy82j~c}@T$iR_ zi$>C&o9GE*d5Y6h>y+z(#e@}gs1 zah1_H%~sztLOMV0>VwHA3gDPGNxci{u0lCXioiOsz(X{w$@9sn!8o&OHz2yYpnAEU zGsnm1Ji52KCFx4dqAajJT#X>qGm|Mhe0{snJYRqeHs6|xcT}L2XeXE%61tFZs)RXW zHK)?Scv$@q|6Ov-FKD?jV-30k+}0H*R7n>zl_bn_JxK4O)S{Rw_q<(bIIfrPR3z$Y;0}<>z?s|qiZj+uc z;-HJ4T>QnoGIv&nv-sr!n6voSB|?y$b=<$Lqc?}n=Ie2OLz%k4cgi1LKYktaQnH7r zAxNIdh<57mj5CApOoLR=+q##Mvp2S=zQgYPLMM&Zi8Z}!p3i;fzm{Im zqP#6P%Z0LCwiMqsrKs|`y?7jooj^GLhse3y7DBoVdYgd(81DPEL7UE*d!QNt zT-2Hv!~mw+Vt@lbjPV@k6==Od-iD$4D!_ixi>3Jlx} zK2ja)Prz26++f{)zKfV?U->X{QWh+aqYMD0V}J0G>ijFc^dIT-|4KjllO9MU)>-bu zbz}Df^2*cdbxv|Vqrs}#MKVX38M;HM2jjSiR{|xa9OpLvG}fjhz|*5M>PIQg=5nY~ zjg>EYX9m81N45@?3)<~LWxDO-ti`-6I5Xx&kf$Z`Y=6XPJnu~Myz;Jj6NU@5o7f=xxDP=Nu0d!8TlysT3w5tI7$cY}Ju=u`T`uF7sPTpD0O~U};c#fo^fAgz-AEl!YYwX(UwL0Q%3zj-8c#+Zh`TCxZjNQ*x<|4*Eyjq zMtMn;z=Dh|45fq%4VwUsy}C{i;VFFS7Xc+6B{Ze}=ksCHLhTDnT_}n*nN@{i5|hUU zlC`i?F8inQVo8y!D2=l0At6l@MUg9BLGS8lvRry4s15?4oTNw)84002s&Ke3#1JCSQ{6GnyvE;m*=u50c zR{WL_Z|Wh&$=k-DLXsRXqB3;7V$>^GiEh2?C+#msh|23X3P}btpz#wL&F~k3Vcv)h zHQPx5SeuD|1FY12T3c)Z{`S#;5uWg~J~wi~O4z+led=!Si2ydFFfdC?juf9M;L>}- zve7zEo)ncfH(?6Qk>pbj_&`szeG0Y&Loq$WH?oGTk;V!gwqM>X2d3gUwg~>x;4aUQ zBmRx=kfHvBCM1lZT5_6NA0*BB2{)PChB{rPO36p6WxR!19^eYIMPK`^^EqDI#>@c2csE09h`P%% zb981e3D<(LoN`Jgvtf-Skf#LrUGpGw!O*6>g`OG|OyIFtQi&fhwKW?5x|<0~n)*A5 z=YJ<9P3|+^9$XFZhB=`h{-H{(M6$V%&%_vi7~qX!|LEC)epo5l^yj=QzA5VAyyE>> zX2TT?nCvSJ*ly-uaYjlRxkZ>}6Y8ljGwSyvn=|nT*@2DkoSXeWUjjK zBm2IG+MswZa&P&f8mzXB@r!uvR#tS}7U7=}`si_MqnqKqUAQABSQ%GFF9g-nb)8|3 z`DwK2==Sg^YC^F(x@3O;@xZbm(%ib9nWdy;#emb30A|YhcimZkpUl~J$tYgf`db6g zgME?_W)^__E&H6sr>eQ(V6|15XgeTQuVmwAo=TPLmtK8d25_`~ z|Iparb|lHw$Sk3LG|1a%7#V>zMDHB!g?XgJ+|6=4hMhZ=sXlafa?|CNLGvp zY=Hs#5K1j$9tN~}`<5><8Fh0OTE@AXvqqq)c!Qvqs^y*4b1l@Z#)1)i%Z532a*vlS zIzw+TWgAdGO{;N-)PR?v7rp;W*dJ=yzo^kc)UdLDX5SNSn~O-vMt@PenvR30`MLh4 z{y~Wmf&BlVzU&%+?+D8=-1Khy)M*5NTvgtSZa0_Bz~Jxpn^Y^HqnV=pL>ME2+&xqi zS+;h-UW?3h$F4t~%cNwwc0ize~{m~jDW~hVgDj;VdcPxVETWM z&l<^WKSrl)tvmjMyw6DHQAP6sL9;~}^GBca57;Bswm9ZaLxZhO|2DygM)vOrS%mN3 zkH$Xd-##qurgj!Xl@vZRXd#FHiUQOn4*4wSiqfs}YRnb*%6Dc}9bdXNAH*_PlyA;~ z=_sEz$te=Lxb?4THg%#H)~C;K-WGlrEVC!KDG^HE&!dziVdGz;=9geD3A^G&V#wRQZ4kU@WF)uUi%kYciqdU-QMwu5vyjOb`bxwDJ zR~HTv4#8{L6!jIsbGdae&T4D2NUc^JZ%vO-4aZJ%?FxwY(s_; zfQk8qf`5T(C6P%aVJ@ZS5v{s44T*!8FoC0I>9pa>hRtqGX$r$u0;nS~+qcJ=>Q2OvX|=tmcL(2uiMbFX{e5_6%)0Y?u`%rnN-rWREoui?9Apn7Dl16` z7!E}k&QIuDXl5GDy{fh#AA2^r4xkNFCAdlxP6Fn%o(uP zq!vvS__6V4=6;$5=&4B<$5>29!^|ef)5u0PSj@!D~PEyA>GrS`a7{l{6!K z2)Z8#2p#PkkrTA5oeM`=@VdnXKw-0VS-rd&N3CPk%aRri3+K~rBy*`+aG6@n>xRpL zz8r?PSF1IduR6cOKLh)fIpgXk>(kDE*^Yd{Po4VVaNVa_{F8+-*v@HOZT7=hdmFPm1tT{Pj0Rh-9o?EQ?XhMf^`BJ zU$u>9V!4A?-;2)IfFBUoh*VvNUVVx(6VqV!vJ*8CQX~f*{@ z9n7B9)uPsL4wk(6E4Wg(Xnq2JBT%2vhCQZ%*@Zp2%)kx2DE&siMZH)qVlvkO#631` z9V=u#mgQq!v|dQ|G+A#rA82mM&8PsVq$g@1Cje~rS@U*tazT7b2cY5wJ;HxLGy*~t z1f=F%w8l@=IId^2bYtUTH21zR2*WL7DJ-g@U$cX)qhFuoqlG^1uyn`aJlGgb%bhT? zb>C$qm$M72CqfY6{3f~mn+khT1%L=D0_4PW+B7y|3Sk~O%{2xtX5(~?r`Cv2_p$Pq z=NF0Lq>V#OPCLU?!)r$KwUxs|7}cE;iUSL(?G^#S`1JYwONe zjy@q_$v;G0(>1PD8B;G~_};q5NL`>B_&q}Jm7Um=%?Gmy`-_Sq4OfH&-{8~`VJ#}? zIqR*Q?WphF1wA&+Fmyznzr6J9B=%_kcdMpzJb$a;uvfK=ysQdKi~OU0_ONC8C&g^t zSFb)7wmx&_q1nofwASkbolc9;%G7oKqBk-&U*Uq$@joW#nhqt)tB{%82Prh!^Yl@{ ze&gD|ke=5GhZ-1&Z6Odh&JMvtGYjySL~h+2HJK8mq|o6DBdwFwwYT*5yr5z8qH z7P=uQt-(<$Ls?i>`_1n1r0haIslZOYWtBDQRqXb1S}Dy8VeZ00BtI z{LtixnaK-^cD&2LYG52lQSd3y^%_mGE|fdDL4 z5FR5;z2O^(_pWf^+Ug7-E|00edZD{JE6@l;FLI0zd50oCoqhi|7&er3m%P! zv}wk6kwNv%1-Nu>gF4CvEe!B@xB_j3p;LRz$2r^8^b791%uVYvV8f@M{)w~*!>_gd zaX^?CR*0CbN^ev&P;V*1jMgDE4I|^5UVwRQ6^lrTgt|Tgt|CgQZvOpE6Uy{>2`5~> zDGfmIOV1)jwP+K^u-+zt<#E^;q&k)j&>pN3eE-|=?5w;xM5$7@I=txm=>3Vf&{dar z3lQEmU>mBJb!vnXRe_`-8x%$vw%apDRh zOLT=CG>?Hm{dch8-eGkNf^!T49HHLmZJypsrap(IdV=u-D6rm3>?u`y&>Q~&Br*GS zcdr}RXzrp3gB}MxGrFG3UH^D!9%Lc8_-*%`?beG&HmG6vXg9QI{x1H;W%)Z>4Fzf* zg9gz*@A@U99Y}dLvHlytLGcg3aoAq~_V;c9dr-seaKooPMA6Gz?tGP*3ici5fsqgv zeA!|6LEEjDcSk4$fX`{2etWHBYJPiz{kRDB1m38Sy_Z704m+Eb|4^VCI6FY-1mU;s zj%Ym`f?>gj!wuK#uy;C3%(I!u<^?|NkW>aX98ndIXiuTwxL1h z4|ZAs?GfPZ2ZJ2{olXlmy!Y^WgN;H!I~gYhhpFZuD^JnLd6((?pT z?>M1%-&m@Kk$VUdH^sp&@K>{K-Wvr{ktl^?hcU)GoI)Ve#Y+e}1ZCY7&l6UMvWUKA zOSC=oQX4dQM{HpYr?d)*-g$t2$G%s-4~ER=w(!C{81zT@yZS$f&qU>WE-w$C^{8 z`W1H~_pXa7bovAfv%#Ta0S%aQz~{;dC=Dvmc$qYsuhgg8W$Z&^;YyK`_Y=-`evt(V*NS|qGd<>6;rH(DD(tl{|W!9U`0>EJ^A8K3A z#+({u@mq4aQkPPLYI-dE)z+i(!{$M<)<-t_@!RS#IT7T#qsl!IwS^iHYanDi#nGZsZ>- zmWV;)?Ye1h6Oc`|R1X$nPaETr@9IwmGTBL3{NmSIA3H=j>ex&*l24wJ)BN;k=*L}L zr#|o*7a25uA@!;)|3s-#%u0XV*@Lv4pwx_Iaj2Ch@*AE0goeIh=*(uKdV~#s2Gkzu z8s7bb;-K;U^n0TPfRV8osF47ac(bQm6gjRnZsk- zK7C1dN9&Sf$u~kEGewE{z!sK2rI%c_(#q7lwH1I zmQZflW${*%fRpvyRyWT-oEDWcdDQu z=s0Z&w9uhk@!Lb2j6sqotO+%)w_Ywb#MD0GS^TDPJIrwSa(vv9X~!TpW~$g3l-L>X zPdWkcP#ADjsB*E*r50Y`CFFi~BE1>U1x7T$3Ky~9`08}aQZPW7j8YzsQeH4u7!(#9 z9jY2hDT!~7HEIC#ohEvv-U5{x90TBNauCp@P^$Ffm=OtU+h-Gw?go;MW2?OaphOyp z>q}O5-r!mq+n)D9jmAcvs#HWt6sL6isf!zZO5Iir+86tSAQz;`rd5_wUSWv}9$gPU z9h%w^tlHNu8HKIfzU3Syf-ow#Ch_2PB(q$xJQQ+K=m3Ot5oqQMs?01$kO(?8Tn}&y zVd!g(lOP1jD4`!p;G6q_xnj(@Vu)GzPcT>z);1{1C5bGWBTL9wj@)WpVS%|2qR{%e z0a$S^J9-PpI>Bk@u+0xui||;VU2{tEAiPg_MS~4Qg0Y)1?vd!0rv@_WPKqb6ssE({ z5#?_c!9CZ63Khy4)mAQ50f&mbNP1~4;mBBTF3SR!q+&00m>-veK8&URm|qgyCuJ_r zh?OuqM}><`l(*ZZN8cmvZHKWDOUc;Xhmf46uI?rcxhOc8AN87tVw>Ej&R+FWJ-ROa z8bwSMc%(V=4%Ue|(*w2}C6*_0Yd&(Mf1E)IkB`b#ih*Bhi(`dCI01S*P1~u=X?rWZ zvs(wD+PGoLNfI<5;^z5>NQ%QZTnbR^^%*QvDS+0fl7&k3IBZdv+g_ybw5Tej7__CQ z*j6aC4+W2=LfBpB3M9c#IojlfETHek&HKp?7S#*l#2`^3+-#g#@TZp%E44vDD*ph& z`U9lid|*oXvlBMB6|i{e;YMNNxodThLs|Q4u* zW5tP$N{w)+_yK|_3Pq&z6bf^j)k_6Id1xh1q<=dwLZO~Yd~L#YVh^8{232BEw?yeV ztkaW-sWKGv^POmM9E3M91u3)`f(sdRQl{0*@4W%N2)>kSS6M0ZD*i z*FVK2hpg<-KZU!{{&DG&`2D|rBVptbFvrUY2If=)1BUmX`}Q?0oxe(&o12+9|GkCZ zM?a-Ns{Zu(5v%EVP%%3hjC6F|X9^u+$Y6Z$GVSg`sG?$CKfOBs_%mG#Xcxaojvx9+ zjPyv*DKM2*2F^e*CdZ`Y&2pzHl$djBlr{qg+$>Fva={WWKLd_({0`Sz^6rUvEwJm(IywSTj7 zO;CW*5WBs*vy!MeW8+}%4S^5b@!}HR;bb9cmZH;p1Ama8s zV&k=}Ed|NYnmHom`rQR4Q0D61%Exl=E}E-m+{N)~&iuK4ncCM*n7Vrz=;8IsWqIvV zXXv9RSaauFZ2OpE4)pbXZ`Sv9v)Wr5_bKdtWNPz22l{#l8FrL?zjH4rdFOpM9(PI@ z&I!s0X-V1l^lj~QTibVX?9aG8v%K{@06C- zwf?qu`H6XYn7_u(foB^xt}$$!+1-v5aP3X4ec_XIl5TSd)Hqq|25IMaISKrqJztn4f4=&@FKy`83kcc~ z_3f7ou3ZCDhRj=_%|!>+uLil7+p~+7HURcDXY3G(Zz))7TXtm z9L?L7Pc7OP$h_G22xX^*i*VR{A8XevkYOu^7hc;lZ#N7_)w`Lqx3>7FCd(eHZ+>1I zzdm|9w!PhL5!c_R@!qhqKE46#Uhn#UulC)avu)TvkuNES`D1@%dmc7yu9)P~UfjPG+tk)`*E2zkPn*dF;ELJ9c<{ z&rUw^Jx`8V+Iz<*K6o!144GW>^!3h_g%vy}Di9`0uKAUpsaJ1M*#F}6RB?Di-5yyd zjt{6fVI)Mslp{uddvDm-X)73$6J*5sRqexF*~CTJc))^>0~n^X8YZ{0keH8FoS#Z9 z&4O3vR~>Y{%LpM?X|Qco&Cb~ni9WaBhTD5yLCSpqx&{(=gF;8!pb#!7#C~@x z?4?EU*7dj}{eiQ)`fhrB_10FpE;IWst=$lNZSe4P_x2alJ~Vgnar)!Mox`--oOnRS zTkV#e%AKysxC5MxBy){o#D|5`QF$2=VovOjkK+A7%j z?D9BlP#%}V?M56;PzvmU_uMa8I4pV9?+YRJV0fa0>^1vYvS4Qj$orYs%3zOFZ3wY} zhxo1~RK001B{1rf$Z-eaP(kKqO_iY8Yu>#c0yTo1+_aZjOQyCO!sf zwy>bplXzUuU=(idgUuq{poEA^p;ZT6Im)>4uJhKlng!qT(0b0+(Q=2q5s!>!%=Z4= zyt0&F8Y1@n!J*Tz+HIU)D1iyuYx1=4{}A>TP;qQqw=izOgS)%C1qp7AySuvt3-0dj z?(XjHPH=aEClDa7$vOAFd+z_e?;ky=9*o*O*PL@#Rj<9PcP+30x!NK)b<$NW$VwFJ zdaz}*FIwKxBJ0(@LjJF6y*Pbhbox>D;zv7Qm3di0sLS!w2GA~}Ckbz_?`QY(ep$ELuPi0|J3y?Em2UH>Gc2XY?p`z-F+(W>$YU>$S7} zu)`$U^p3L$#sxqBj`N=l{zG%ESR>@37ReT{87i>ZyEH^A#|p`3#K*ha=wCsH#D`iG zFEx@0ogm&`i$3%M^eqz);3MbsXsR1F8PmUu$Bz?8~@t8d;VrD9)c8f{{ z?BFAzg&eJ9%haA|M(b*D=FYM;l1U`<@$WZ)8_U2*lPaF>XE%_WS{dx$(IQv z%(tIzPcWB`o~N%HS>5P-Ssh!yP8q79n>&odv#SZ<_u2$p_RkRrA{V#U4s`*an2fil z9&np0USlGRE8p4}x^^FKW4@k_9WOmkJRPjvzgW~wX*=SF-UTVOU2$bjd!eMgJeah3 zy>hqpdk*Z%dnaMx^>_?z3?S5h5gF@;m9V(TjXis`%DUN+s5ZB z((#Rzs_m4o>+L_~hFYpl$L8&{oPguk^>l)1pY`-;qpKMAs~f`k*PR!-YJu<)Xb8e@ zycg)-zhj2T?s;%+Vl8lEA4eMV=VYM)jQO*(j6Kg6h2ivF%lj_OAsR>_j$WS4Kt|1^R*7RhZ;Y`5O^6u%8ubt@axms?*$Z`|VqJehSd`es7Wc_#Ja;*9(*T3nkoJ@q`{0o)2Y^(kCQ)q0q?>MZvkwn2CBRUrPO=dkB5b@ zbi>N3f`~vZz^xKxaKAfX^*eHCm(X(!%-+}eC^eYh?NWClkb^MU%A{`jD18atq;A&y z{!2l@Lc1bj=2)|z-8B&o%fzVUejy%)J;^V(V_Av53WHS-39}%g`=u#GmrayBhQKRL zKFP;NmBV!kJ6x*@%<;?iDc`V#pvgYe6?Y7{EZqTI_bvtak8?9#UiW#j-1X%8y7v?K z-s(mXTpZWDo?c#JMENrgz3((%7xu^NUm68;Iq+o48D3h~zH>6-(c2=~Jub4PMXTI& z%Z<40w0V0zwQgh^#uYgX2-_yd*YQ!<<`IacRUI5paUZL$Rb|iIO=C7ezEFHPGia3K zmhYM%Y~hw?J+JNEyS;9fws#3d!4wBRMZws08tFLnT*rWu?xK0JsNB&L-_fp$J6;GJuu=W7zO8v=o%$v=m$5c00CF?)@5v5 z)9pK@^<2Gx5x#{E`G$e-3wU=WU&i00x(Yk?le4=Mov@~jdhVuIzPNkRdG8>)VfVwL zoiEn8Yw_i{McvqHBMuKZ)PLG?)_xWNY%aTh~l!Bsx0gi%6dIrJGP(-5j=;3_Uw(jy_y}0hb}aOp32M zQWh!PWpKh5$VO~!x4vjxHX*k<&YKWPo+|FJ=1Of`HtSozyQ?>J+{$8Ls`z2+5`8cl zld_%i0e{NbY-!_@uE7Rc^{GP1AwgC8w-N$&o8XoE(sj+4H!nAnqI_XFO!cL#g5-_{ z%W=XQbMJ9prR}Wbk6Gyi4_a4q<Cf} zd$&sX{tB{sSD1uf+FaPU?cW@}`JJ+M+q#Z53rt%pC8;5Xtl2v~6zyA&w%;m_;JbCE z0P2Nx-OJ9S+z2P6-ITnw+8(nclsTu!ADeaXA?t)2FFnX=kaV=czScac!8p1rvj}}{ z4deoG$P$nD*g)8kC4hg_bgaA^xwze@etSs$MIJ6Z(DWg;Al`yT0D0qPuWwi2F@&YP z*XJ_oRv~x5%R%1ixr=u*b3(rV;`Gk5jo`_%P4@vTfqUW^c`$v2h5zV{iKHQvh)3+< z1S_t=J%0S+=L&Wkw5Nx$V84YGec3NOOq1Agi3xQqB!tP zy$44QHZegK8Ez!NR&q3!`Q-=inSfV|fAzE%`;;D)9I_xuQj&2~|Gg9n)1%&1+eEnz zsS8`Z(vc-mEzaOcd`NgGCcI`F?4l*3zUD^m*jNoVm^CL#u{4Z|9KU82Hw6x4@~t(K z`~oG3k-Y65aR_ox88{D+%BzMpOEGI=m#13dr1gBixbX9on%5+jl{)5CW>YvQTG%yy zUvIo3Z8v@lLE@}VYQ)bmArLnU?L3QFIN?|8g}X*qEJj7=Y*onshVk>5zN1G+ee_w` zID}}U+K*dV4cvYk=|fM&3cs&a8A?GH=PJ%$ujU_~7}l(FKA!1q<=yp}?<6^!za^Zt z^m|LdU8iq#)0>K{ZhmW{d6HN5W~edCoNou9yGyW`G1}1=I~sVH+4HxqK;}pQiq5Y;e*2-Nbuxz09Yy#gk@4<1yQ;c(L{wZ0EyImvju@m*L@8|B0s^ zS+MNMXw~LkJiHqpn{FuJNHb(fFJ&4ZBPDepC~WQ92Nybxgm~DYn{P-XB!!C}J*Ezb z2tC$}RbHAlUw%OVe@uutDihz&#vNhsbg|~;RLo=*epf6AYbUwevB$>Cr-hh_6m;~6 z#Hqgow~|ryrOTt6y9QwvvNLf@(14P@=b$BC8nKtg_3~zi(fuN8Ru!`M81fqWr75Im z04$Yn_7f=Gp!|00TnsEY)?4$&)ptpGZRo~iUwdtqYzDgPUH7(Cj5e>^KB!Tt%m-ChcDZvy!IO zblqLSo8@YF{6>c{9w_pY7KYQXDO9{bq$^0WxAN_4W`uwdnM9h1PSupyvwVSc_@CgXy~#hrQj-mb|bkZWCGu_(UoB z2Cjas4SavsDSJ&c@L6wq8XC!J$1(j~b-}L0(C8`c;LN-n=<@RvM%1ub{3A8l z-tLdoAH^%3Jdp#EYzDWMj9<{MqKXCtceWxSHZrU^769#>SN40d;E%TUF7m&Qx7_-y z`G5TXvjeb2+~s`PaAa@g#6SY~^W6W?%DD!okmYPgvXX-&mCv~%o9}Za%a{GEJI0_v zM?%~1!KoSP2hu-5FP8XKiY21+XW!fIXpjH6>TE z**#vuovHT2sNP~ZQu3#5OG;l(OdDTAXJ1>kT?reiGM+!$8^Y6@i35cKFgHTK5}hbXg&%gRkC30MpUD6QrxX?N&zx<2Y^ zeAG?zN;b#m&c&T(k?lI^=WUqh9l&F9Mr^z+0>z>S7hck;km=2OSf;ACOYyY2(+7@s z(NM0JPn?V*?Q!8$R2}RmJ3@{d$stnsXLn}I@zBJS9laPIWyTZJm!L0Op98A zx%E%*%-6NRnKYq-%Ue{_L1=sNFKX`EIWAY$=Ae|ua8iA?s(JF8MD7N7C3LTj7btukS> z;&W>IdCyA5*nY7n{LRJ9O4h>)xOPfus9(#fUn@aQvYK?)ZGd{J3{%I=O4Y+E6+C#_ zuepmIq`*YK)Wa%iZL47mN3{Hlo7LI`j@%%_4M{z=#g<74LH+1}meqYn6W`WtnjMhh zZq=BX`bwNY*Dn0!Vgy4cJ8c*HB&hJQ;QAJh?;H!0a#z#%!Gnff6p7QP&ZY~KsN*Ee z9PeP`s+24biEt#lDoML4-xeoy%gL1MM+-SXMj_e#HB2vOEX4c z7fRuB-nvdZ9Vmzt#Kn?vdau|gn;#FC)J%#r4;e}ZA{ExF08l)bH+p~pn*0EK@IBHg zp>ywWQ=t+u2#7E%(;(WyEW$oj`|9{g)fB-cfC&U<@v{@oA(N_a=Tt9;8F zBqFnWXktscllp-$$Rr^6wGQ;B%Ap{=v+(fD4{YJWoW_{WV}zH0(EkjH4EnE-=c{JG zkS-U0Lh?KYFV>m;9WoONnM5$O7g4r1TXDRI7|h9%+6oFd` zUqaQqB0D$1F!j%$K0^!#!u*WrnwYeYTQ)grk@$t$pjGHzhV0i0+BX!i0P-0E24yu5 z)_w+SlUDUIT?K~(nKjR8ZJvhdw#Ehq#n~9{E(qo#tv|Jo{@nvQZ{t}|&y{#U5DWBhvCYBOVt=SZ+{UQX20bk)G*ja#so2$T=zCjh<+%MhQu3e!B7xlFkUv$E9?T#p>myu zaVr#^Bqx z&!hicbG{52)He?s%kazsPfVAq^}WNq|K|<^;FJ6uxpjDWyamqtrf$3dvjQ$%r!Va% zS0sM45YY8W@W^<%Pu}{mZ?t=sJujq6-mk66kPdwYv7u1oxCw9w;~5EIAIG&4emx3~ z6ZC@|1%cA=eIM`}@XhH%A$+4n{53K(kTSDArPUvDm%Q%TAm_-#*4fC`-OAS0DKQ=r zBn?w~w{xxM$3ysCFO3uz9hFHXaU}BMC32B^w1p&W0XIpRzAdHgiRg7i`>1{-61`7m zl}7Va_;XZI)>zfiV2}u% zgl3=*((i7R-@4vXY~7=cwUcZ;vsl7goo+1f)iJRMaeWJR!wVxD7gHO7BirpGgzW}+ zqU0ZRAE~^&?>ta+eZCDur>^9@N+9X>Fzf#2BY@tIH&g~3LXkI}(xxS>-6p|HS^t!J zEbR2wh`4^`S&*$!P{6d=dZGuBi$P1iGz%(Gh{f)P_Yrjp*)b}5Fc$r(8ROW4YG z_sVzR8BC*bT`#`-kg)<}xK6yb1ZE!aBkQC?4|i1 zYX#TOQ|F>?uOlp z%WFKw?gJ2S@H{04HHwjio{n{jk!^Uk<#SxWmy3+sE6}ynjIOkd>*w_!&s8<8 zJ_;rgU2pO8T_(B$qM&+iuWJ+La6bV7eXYg;x3rv8WwLr>naW=g(F0fxd6X~4&_Ro!u%T2RG|GIK*}|$6u_%cLXU~Oe(f)NQTrwabR4Q>l1fNpW@2ohf5enr zmH<_YV(`WXQN}m)5SWhN@+tYnn_2jqX8HUgZSjM4agT*;Gt*n!^2B0aE-03HqwcQL zYZI4hl1$^*Y!Ec6TtQjB!p=?VrhaA%FgHEET>+JF`P@IpJC8gyiIPH;z61_$jFXQoub*f>tfse?S6Kr; zN9Tzx!upQ!+}0n#+)IF7A7pOIC_|hs#Ma>SbPiI;L%e%}ZxL#G6e^88bp{H>f-nb9 z#U#bHPb+sNpG+BI4iu692jg!MXM)0P?;?P#{&x{kgCY&mUAlh>V9te|gQx8zFkLTT zIYXYh2%>(c<;viL@2gBnhSx=kFgJB}LJ@QEY0yasU9=3;;kB$A87{~vo7;`nYUlvUj)M;tDLW&fuzce*@&(sO( zxvw$HHFJ7%XsxoqyQVa?u)lFX`x>!OHzDd&%cRgUY_7XCY<-{SuJcr{@|Nwme|??U z6UewkYA|+?w6jQK`n_h`G@2a=7@5D5I}MuD6*cum zr0G*ESk560q|ZT9qRWnu{Rhl+G5ZfLTykISl|q#~`u3~|$uP-UP;&i_Xjt&Byqm4b zgj_%a#ZGKbf*sJ9!F8Kab)#Ym0qzwa+K#9hMbXvdxB7#M6}CR3S8deqA|U8oh@mE83YrJriaGQnudNN0dhD#y09%Nd6ZRF8LanK0^=B^2v(2U;kL~G4G)UG;{!U98#ZfYw1PiK0a}?hBLHc*=+#d^2r;-wJP?NF2iy*ebSO!DzeeW zrVXN_XL|EHn%?BvEBkgGfJ5R)CElDT8;8#h)Y1}Q@an#UT`d)0tzg_ch-_qobLy)2 z8<%CqN<4}{^%cu0SbS|X_8jm%#6p+nV06xB{k-`=giJw#8K!9Mlv)Mx@}oPY!>>J% zc*O}cXRNo$G(?jl85mY%Q;B-l@CH0#NB{A7%R;;$!GW+@ML#jRwmkI2`g7E%)mWiI zKZycJ^;ayH1{0j5#m3aLq5#Ca;G6bJ_BAhF`lUuDcw{RsqQ!XifxBCHlWDV1c4RAw zTiFOFeBpYHiFhlriD312)H*Rb`Wp1c`g6l~)Ji|~zfp&9k_ylMpw=Wcs_w|E()y}{*98|U`g5%?7a|7GwTY!chq7nF(4$)oqK<0`(RMH_ zhazAP;)Jqm`Yy#NaB5X5P(%Bd>GGT)TVc`ov7;-u(=W3L{F|$S*+^bx19%;jA%bKS zp+mKi1SGMBV-%PuPz;JD&2nhc=Q@8?SDi`}T$Xo5jUW|-1-8xV1&X6^N?p#g#LG12+)C=s8(DwgWQSedqm5EmBeKL%A2tk?56L=W9(ArLY2EB=I+xt zc_g~3v*Xnf?1sWnz~E6B`VU5nQy5mtQcQ;BDTq9SIKfi-vPbJvE6t=?wLkGgNVWrMuto z8c|J3bcWR^Xcvhhe!7TXa})J?F%7PAD2V4r{Be*DKkt*7V6~CmGW!NjT`O3fo-58F zq45!|k;xMqmLBgt*=tlr<7QT7p%g{{W?-?xv)w7~L$)Qu%*9Fj+G8RyC zVZLW-Jr^pB{)&*=%9D~wg-Xm+N=gz#|3oc>{U<6BVlX-3Vl71~g7V)MXx9QQi2H!? zZoyPXc)}CW{c6NcsRv4;hnm7r=3+-U4V1~2igF$0kLvt((YY_^vPD9M#YfHp>y+_<^2pdnde~@i8eIiW)LUL zOvj*Xe6g9RReM_|FQxI>SL{@7bQeM$U*f|ugLb@>ptp34R5*Z~J0LW(Lnt{r5Q_T5 zxf--rxUQfjXp3P>rl8uJmLFk&F^eOyv7uLZ-5P|6jK(=^RsFU{?OXEodJ^gPjU%WU zzVxVzD#C;m*wx32oFp{uIS^1HTtWe9MH<=@mY1|syzxnAWJ{vOM9Re|%7I)q&%|X-V8mqqM-NyXj$TmE2uhSB16p>k}uXRv?xG znxV-_ZD|@lV3OfUaHZsNZZL-gf)@fQal6ga#Srs~^c{d>NN_zao)ab6w~n=T1`f>p zfbBlF@<#I{-L+R%cc7xJ6zum4R65(2gX&I^giO*>?gTSJPO%r!Oo_7>`IZuEFOr@T zZ$F3tBgK^oMYQXjA082h8vSvInHOvDjPczm24TBaBOrYVzrY2jYmow`=+$hN1SEB$ z-Bl&=2<84=iv3$uM1gHJXwwe`tGKWs1-EI!8c*=3h-8_!#?_%cbn3ql=h z?}3A3DZR9j~XjAKgC)MHR=9j702c647cy{~s{cnpr z^-ifJAdOXQuFpa_Dn91LlUT<*`5ccyeDb9XxF;-Wu*pS4QpSz8>@tNfS^H+1^4WLy zKKdkAq0a$*=G;&`A2egKUy5LG*kF0I8~4<%*?P5-fhQbC_l(bD1Rz*&*DB(wBXCG z;vn`7^dKR!PcEDP&j8Sy5GusY*jHlwic-Ekq#d(Rfkv6?qky?yqhH&I0x{+Dp-g5d zKE0VuX452ZzCQyHxI|w-Z=e^L!+!#!ylt%BSo0aBd^c{}3>5$d68I|+Us&?=4YaZL zXJFe9-a*249G~j~s!25+F2=>DdE!t3-yGsMeTcSnC?O_8vmkN_kcgk)dq}Abu2UNC z+-gBfLIsH4^m)Wkd_an32|s@rupeg79(3#g{$Gva!(`-LHbThf_fwdI%lG}0@2zKx zehOoSB$)SWmwp=l9Q70YC-xo^eL@BBHi%TXkNXQ>xfE%CCXl|Kec%I{S1it zx01P^!oW!{$y~0PYoK5O;g>!bNA#HYAzaT_ZvvGf6odEP;I^81mvaM+YY*&=J)~kI zpd5L)S7gMahIlzQbz9Coq+a$tB-2SoAYkjN_mf4_dP4x>=~~Bt#Ua;#TP*h`Ad^@w z`M_K)+8G<8!`Ce{!z5t9CrG1N@2zeIq1ZI3l{|i$N3SUjp8b-dIR4(ly0k40ve%r5 zC6JT?3eO6^A)I-J;MaAdoA!LHX7aVk=zR^osEv685*#Qf8rC<(50(hKOplHVxq|-u zkR^U9paZ3PwY^N1SYjGIKkpT{YKH~*dt$%1(C<(UC^Qc$JnoG#>8n)+SHP=bSJ%_o zS8j&j&qRHF^h~i&#@=7GFk5>Nze&u3fVgs;**N5=1qo@B28T^q%l1=tPR9q7tobbf zPbrQPcYZ7czUGAs+XLB`vfTAKA-Ei2wt!bT9{Ol$NZblTG-|)e)Q^hFZaqUEPzu;){(-6>Xfu0&;ilr1^X?U&4|#mj^fWUIRUIfCIGG}`}7Q#ba$zgULY~} zk~T)(8|RBCXcJnn%p-5^skrkQ=nHkIkMQ>C9p`K}{#7lRr#N&r*`Q-(4dUUw!{ zPR`6u^GYqceXvWoHI;?piqQ|QZ6utInnrNB{xk!ctFQNj3*V;+c$eYu0K|*4jAD9Zq$fX2Et}g+iKgpGtk%t zX{;79m-uj<%#HZHQ;ShU>7OlLzCG>=0CW$3i6D_Nc*1y5rN8Za5y2ICcgavQ{&+cb zbhu?;`d#H^^P-9-8h18sDC!Vc-;1Rj-yifzNfPd%+p$XNgpA};nu?rcN|^REO%-(* zFbSZ9Y6`Sd6{h#oG|bW5o9uc@&6>mX2(v(>+eXyDn(ycL;orzNoQFEfO&b-e&XSwf z1PQfWB1@e-MwwwR83G(zK5g) zhU7j?aYU8NXQHVvbL)Wp%aUM$0nU->nDiz`aLWC~ZB)}1MxZx)9)t%}*E;lnZFEeowi%tnZ zC57;rn_AmE(@~L%HI@`X*Va8n0RWfu+p(%6XxSw3W85P-aC4NGc`w6_J(LiN&p)~{ zA3~6p@B}`PVeVzl3UnnkJHA*NI zG7F9$@Fom!b2kg)QH;W+fY%Uo`_hp(3lqo=b|pGSfC?RzON-;j`31bE(yfMq2Qg~r zWmc2Tzdsh^@#$_CgWaEl2|7v;(Xq;!(FR1MMT{wD2HJo*L!5h{UWgQCPamtk2ydBm z_Y#hEtD35;LZdiSK5-?`QL%NF>#$H>lT;k%W#g71X^vFyl4a$&6qqiGApz4x77rLU zq{BkJaY?jc@5!x|yQbXSOc+|qjfnV9ix}gQYKb4sE@p-=V6Yot@DdXyER>QG{^rEN z>e1-SO-1P#YeiWg{sCkzdu{+}AT*0LYN*y)9$;Evk5&iCuuLk%%`D7KO~R5wJ(~NW!5u))NLiO4PY`brUc0n&koQ`I!)J zqlC4vpBhk!{>cI(DFNurp~%0TaYTjA!>o16tH(-47?;GGG-GXc?Drs}qO_r=6sU6j zh0}ImAJ#4sFPjM$7N|<%H(@DRrew4#lGMTD41Xh79LMXlmhp-8>x!3c_7@GeV7$X_ z$$T|0kjrk>4*u*up__U!i-OhYgSxf3KhGF{T-K1 zUgFY}Uw@F8FON2AvHLl8fgj@vlpFHTYsm!dKpC7nYA-OmUJq2?hKeJ0VHGxjX~(C~ zbj(7BJDQHWsB{R_QL`2KpfRQiMGzn=#-f3lA0{|W^>NH%7u)gRp27)tlzOx*ULjTq z|6nmD-+r(wZ&eUbpuq>f28MX|hk*M|!$BemEZ^S*C=Q{x(Xq!I*s?sqMCD}2N`lNr z;}$aJg^5atN~FYu04{+K`}T_Qk|9lb>Ouf<1MPSb-zSNw_=R@m4h=`CI5W(HMtkB> z3&Oi>|IF|B0?D{xW0@ z{+&+}5aEv@#mV46K9VaLfvm24QE9WQB95BCe&X(uq(yXub1XLox+H!(#&jzsl~u=q zhC6C;E3pvo?>s4P>6`iXwZo&5xF|$=v90t2LwZkaY(zap`qjoXB|OQc<7;QiaDmbqOcBLHY+k+2skZDl+5bI{ebDu`5440MLAoW#SNA4#Aj$W2la)m^<$Mu z%=<5e`B)KN>XN$Wr-=T{kTfu^^%Ar5qk=|MPIM=l#G$RF^pXHEL?44hrOeuEvqZ%T z^id<*2=VCVV*!oHqJU2;U)CZs(yA(E=<1_@I3xpZ9NBd}1SV7Hxax(&;w1WUE*A0i zbnzszsOrYMpKC|EYb8z-(V81ZXJa;eUkz!``}#-_PDQLV4pwt`807T)M4RW;+BFXN z;0LgOYuEXS0;fU1Ff>wTs3u6LZ?XMEfk$)11wusP6utp(MCQzKK)hOy1`;BMg#@MM z1c^9s8oWUXo++W>F-^324v1uo3_TD(W2Wvj1cgy{69=Pith1L#7f~p|2Z5o{icD9} zNTmVx(gLWR7UZc2|Gq?6hpUrpm|?voyWkcjV68K$`D|A#tk|95r5 z$p2TJH9Sxq7fhG$>lymL!Hf@{o#LEJ{sOYaz=pnCi{6t>wxW}o_$taeM5!W#IH z0Fe5xAU5}$@$h+a+obE^W67qemlx=_Pt!f!PJ<(IjF||oxd=&y{BVr^b08wrv@{%d zb1Nm*F9vK($)Vv))cX89zSv*e-!Aw0+4boy(?C6tDGm?4TANgh62hokdc)dc;UN62 z%DC%(mT`Ur+&fhb7afGFYs!mV8lXZ7v0QA7KGiOhTxv&h(>Jj>+GI)6tXOG&{;^Mg z&+VXG(rYtp?+`@EATZ znH(zsb1+RVHk{x7C7@ts6%(t2w$35w$Y3_}c@lw_G7iHdH;CfdJ`<90p(83b9S#0S zc+%7@D)O0vobX}+U+5STD?@=dlM5sw?tBCF0}L)?B)12mG!#VEyH4UFr_LBNV)2< zwogo>wZoa-0k{gAE5nNStMI*y#@D)FMA`>45)mZ<{_vsaX-_%+?3l^S<*Le7W#2`D z5}qphC`MKyXzN+tu0^HJRRVT6vZspi>+rsj_OSu_56I#n#+)7CU>O56ygcE;s^d?W zZqZnx;xEpOp*T5rZwDkZa?H9~5#q`CgN!2%EYn@OPI>y3T7D5U32>()xLMT^bg)KwBAiu*S~&1NI$0U;(fu?6p53H{OQhGzGdinbPKSc5MTMa}xI~ zTYVl>NaO^6mzh*)I@g3*p6;vkb6wGu)gmQ&wv|O}Xu)pSi_6oO&+u;E16Td>H%auE z!V^jiY>HtH{s}A;9Sd3E(mxnb%552o$ zO1v(Nht9ILbSNE3vE5LigZI9EbRzn`SeN6{q%LKs>tcR_!Bb<;BrL(k;f1~W!YotR z$N9F&SmrA4xnjfz*=1rw_J^!Zk>1!Q6vw6M7AoX~>ozH&3GE3129IzJ_N zf%(wb2VG0#smwb-2D|64sOo{tdXMuwlH{MS*Tb!8VLpd@Tflh=pF42I=i|eC`Ur)9 z2$@}J%sLA=twaU}EScor=Djzpnm zBzrt^<|g1`sHx{4tQs6x9rqN(r^IDjJ~&ehJCb?t>+M;fRQGZ(7L5tNhin=RQ^D}U zL}8>~z$IR;7wVQnJ|lh(jT$5|EMuvcJVpjSDtQb$G8YejRUK~*7sc?5(l$^aYZH*~ zKvJq}fnNPmO+_#tb<;w{6)n}zI^F<^yX<}?B#uHqH9i;9ypd0T0)4CirqDTZVmAY0 z;*)m!MrfRPFToYeN6=u?sOZp1w>)~1h^^5D!00+*XR`>L=P;o2mN$=@SicFfd-4^B z&uZ=c=;DBY09{0kVfA*rZgUIyPse_7=QhSq-y>~1Fa z*?wcf8~*+^oGK+#$~vJ54TWYnxN!mz*AwI;UMlmiXTFH)kn^=!a z+DS4{e;90MVF_?z?%y*{hQIG$@ikk%(A86j(9pDg@5QmF>j!5p^g7@reD0bEHlmJt zLKgS`xSfV_xY5k0xnN4ws+!!ERYCE=%d^sD!&wJC5_X`R!mvLI3vR5IBgOH6g-(Ft z#)L>ck{y3G^eim`q_y4&*F7`>Mi?hnjYI-#m#1qxiHs%Mzk)exY23ymbX|GWfKF5} zkwwc?;b?^E&Y!yNI8-jGhDDh&i-IM_rR#*e60^lTJ+w7gT|cLlr6oAEYn;8*{D3= zMk+&JGNpp#JR!pK`e?uUDYGLl+%BQeU5jro53Y{O#qBO6i zGtaV>oJBMr?ScDd_~yj?yQ#HDZ?Y$c-&O`b>}BSb0#!1savYb*oi}#V;x<{JS$9WS z-~OO4`HnwXX{54t&khodajNe7;n%QfmzR`oit`c=*=n)!uQ&fyS~yXNq;(ir)x3iS z1O)wGhorN)iH!;4pDpvB3TK+KcIzBi-9OZj+Yc6>*ImNfMK4w_mx~clTZCg8MYOD` z6o^jAx)ClNdVLKxYX{&ing?pD1V3ENzoy&bHzS_tVNtJzQz&&iTbX{^bonx~4+8>O3_{3K>Px4qZdi9J&kqk185S1h z>1>eKx-~18D)SwbyR*$jqO?zF58f5?l9I7tLu`=o&J$6Nn-U30#mRCFTc^%A=M?Fh z!Nu8f3pAYPxGEoIKM5~T)ykR`tlOlU<6x(o^2`3d^=Pmyw4gB8_J8g2LPc*n6=MQJ3j{s2qB;zcIZ z3fDInznD37cbus1yABVXZ}SyTP{S~Kx%=zW{(8zxUxhfM?x*L&rTvi_f>&*b9@tk0 z)VHHwjBno0)IZOkzSw1ZHGzyK^ltk+U$p4;X!{~d4xZQKyx#1so!jyMz6+rgZAE|z zk=y|B3=QBt0lAQuqtR<5$EhdJ1IOGWa~>dcIuV9s@P7!b=)003_7n9*oX5A%88g%h zZDn>ZrEWT}50e;44sJd4z%h(aoX@LV1!+mdl3bU4xdCfiC4*h{v+t3ww5193NDw^2 zVb~}eenG?f#FCd_~X{(fjPJbZRCh7oR-1`BnjZm!$CBAOE*}89j&hi3s z`%<7NxP>~U`qnn{z+DXj}HweY$9B1R?6-_D@OPY(CNk3E~ zPR5XT&DlOTGl{ty(loiS8PRk&lOV6VWPvl0eQX9Vaye7r;YpnU*Km33HTEl;VNqec zJ_1Yj{%%+5wEI~C409R|K-;q=;=C3adMM}FmwP*BKQ2~LuXBn2jiIDIbN%YxhO+{H zRGgjC2u4d6fCW*`)kr@cC~ea5LEHLATIWKla-u3oeJV9L$miE<0pVX|!`vy9do$M3 z2P!fbJIwm(90t2Afz3mcTfc2rq?X)rVLq%{C&&a%e*3IJ#gu9m`iO#EYPh9rTkp$j z2Uu&b*mVNqV6R+R-fjKe(}lXceOM;1l;<5Evg0wQLgRp}B|vW@w>Oz1U+5vzqJj%4 zdeuX41Wu)$%YWbw$C^PzThPr@gLD!-$&0L~;#*09snsw~fP`2SrKwT1xMdmf<2#9^ z{P0PB!&5Q|iWT>dZR^UcKoZ)}reNYl_@}R(5=utJ-YB|&uE7Zj_Sh$rR31ykK3jE9C}q#2^c;IUTuS2{ zSWdFq(E_>Ab)XjwV#>9}#nAOj&X{h|ex80U@9*6-I#|aTuGbo!pV0rz#j<^QR!V?h zcu>IX^&{}z$i>Oo&PLtFn$g19#OBY}UR7irTt5>U$PaJPvG}oKo=~&}MPy2pJh*Df z=WkH)o$-Z+zqdkrcHF+$j~v;^zJU?4@c>#xC7tZyJTJungg@?%1n-c8&Vz)YGpmu! zmCVF7Tw2{AiRHjCX~xFT_O+QY79msv!OZN-5KgK>VP8k>u^Rn9mJj(ySgR#_QZ%vQ zh%+8pkoT9KHC#l#LhH_7JY1&me}gfR|3ao z*~0(*!^y@6siIYgB4)0%xID@C#QxraO8&ip0)fhc8ok}WE@5 zxSUh5zheMbl{&tta5|)$D11J5nxAD^yE>6hRb{i;)6vM0Q)r^^aX=wz1Uz4Q z1#MLygjH<~h5knD3_mBk*Z;}4#q7yeUosB;^Ddd>=YNgTVrN6btblVeVZiL}-(wD2 z7aKzpN8qf?dv-UazG=J1h1IoPA{Zy8-4vF<2Eo>tFQ}>$B}UqG2SR~WdzLfG%(QVO zeQ7jBTbU(L8qO+%>N*ki(Px|c%?t1X`SayEAbtxm49$t-DnP4bTbS-hdUARH?MKQ9 z#l;Ur*fmtt>Dg8vL5ttJZ!t5!P}b)mQE6&QsMLABQQoY6lSqrS=8fVE?Y~dnQ@>8E zIk1^5n^L32BlVmans>$DF;)xPVU|)FVhyr}R;tJ?cwymy+rOQ6$&}wTQg!I838f4z z+X?>wSJaMf6@*-~ejw&RA-@Mnp-#Z2CO>yEysTQQ(C47El*de}(rYd*nKpUuc=tIX zPb5@2e3F=zz>eCGg?0ubwA7zlnv;wBY&lUDl9OEWGFXnIL(X@5`aaFqlN}G1k=iFM zfNG4k#tdQ_GTJ;G&Os8^ZiSAP`|HogsX}h_FPngM0my9%agL4X%djq0?edQ=h-$lY zr_1xMLwt7n`H09-;&N8QklM&9af+QKITGi(O_Z$?MZR?}?L}RjU*sn04vnelhNRKg zg;<*NFIZDGo1elMttiiA)i)&NkNq{y+9@_ft~5mn_GbT0*QJ+0AqKtyZ zI1T=mZs{|rrYwU(BsCd&--l;~A%4Gg%eNZf3S4vYyVHY=Q8>k4bi*v-RR(3}fwV(H zCtN(+{HBJ*YFx1TIX+e?m}tVH|uM+Yi{|+j6+Zqb!JgR*}ni>&f33)BQAe6 z8J^q!FzleHJB}KPCh)_B?~)WZq@1}GEKlm$QBJAumULUW?}xSOn%%wXx|Y!uiR!xk zybax_qoy-_5acP!2xXgv&hxG7V|QN|GMg(He6R7DtY%~GP%<*v49)A^cb~W4h>e6{ zhM`;uWvc8^brh9$b#_qUjQZajhsYaBk4vx~v;!f!O zI{9lAUC&L;Ya9P7&vALQ>+kLlvSRSKxVwnZpz^xfKiqU~oSSa{Pg`dm4%Pn0@naqP z(u^dMns61_66Ol2TS}s&h0Ba(8jT?_E;A!dW6g5S*prB>`k`j(cA0C*m8E3gB4mn2 zmKoV<%60KOxpn0{=8rSa`9A0U`kwQBp6~a3-k;C&obQko%1zfe<>rz<`7NQ0_28Bl z4#QO0*j;U5%x8)V-aiv4zU!@i-~3>|tgbr^wGC{tWJQZ;~=74dtc~qbFavo<{ zdhLpp-_V15ECv9P8UUaSu2|s4-7Cu!=)A!B>F;rYup1wM#Z8{}4S+i%EGsCcI({t* zKjO*pR5nV6r>TGo^Hp_m{=gtA~UZB3nU#Q8R%C2VBca@_S|4ln>l6FKmS=iy0(3G z14Yt6Mg$wW|HB_uP5vd!0JGwwe5JiaV2oW>GX(ew`^YrrKkD{$DJPU2c`dD*K-<$0 zy(hy}O4(dZi5h_)D!()?VStc#*!pUjg=_&=K|o84)PO8gWw3#1p^&qwLPT7@M?8PtZSc(=MH|s42*-(o=I3Y=3vC zG)@uccPyw~v;XJ|GcHZxUSd7>F!|^DKiJ0fwut%!X;F#&TPz0^BAYP6+Nm@#Lz(U5 z$~Q59i|7X_pBdv2Ymt8OUULMv6>1zA`-|1h#9|rdi8E%ZU6HmM4O7A@N9j^V83?+K z0b`zPX_SQct%TmJlF74m$z=xrqS3lD7IUh|RVMvoA0xYtJUJ}&*Fts5C^KtI`EJ~{ z9EU)db&XtIT2~71b+2Hl;b4M#XYlgShs%DB!H+ zrY4_2a>6y`b#x-Qo6Bd?pG37;c1I->&)grAWwsp;_0f(jNz2%ociE)|Z;4;(d*#I; zaPUhrS-a)?HT~i2hz07v^T}aL7@U2B_s)_l0N>tInvaWBr;@IQu)0-Q>11(U2_O_v zZ_sb>#F4PcH`DunwspqdDuJ@tXq_>Yebb!eUOQ&JeABeb)WjR#!g6rqtGsiC)+bSF zkuQ4r%P$E=(cBFSCKaXB_alGW;JTD}an%JkigtC6Of>2wjo!UMtFj5}XZ8obS3RY% zqcEA5&E%uX&y4f6>b0+e`xG1P^SPfljqgBDrP!0s&k>vy!;3^y_KoEjws56HkHy&; zU8C)YwWs04+ox`k52A@XUz=*pS=VUki)JoJ=bVGVOGgx`y_(c}*Ck!$a;_oWMaQy6 zevP$%Xq@X&1<)(!NfRuhbdLSq{Eqlg_i+y_ zv~s7@){|6&zUr>N&^E6_^3xl%VDbTt=cpy&8io`sVez@Ghe8g;pm-n|FG-z245 zdr5aFGzW8`S!4|6$&E>D((9B(b32pJX$63%V?3h;jW)^%Prr`YfM76Yi z7iLqlEAF&bQhNBb8p^%;(&SDf3Mtrra#-^-c~Jd{>(m@8m22x1)HKl(qaM!fDB-D7 z!rtDwn-l)7Z#3shUQkm{hI=@6pqTY|zGvV^4vFnM%1pB4%suB^Ua(r^H`Ss)s+p7T zeF}X&ez7%dVer!;?uyx!p<&ivZhtQ(SuN)W8&=DvTKc%X6phx5M3P;UYxg=`WlX;f z46cpaIPO*)oz&)kv`jh1%00AA7o3KiD~N5Pi=-aTFy16MN9Q2B>}0c9R2Cx`-o!W#J%u;o9w zM?k=OcP+B0-qHjE01Z=U=b7L@tW*v_M6e(D?CZ(>sj3@{z|Nb%uGH3ao-FrO{_m52 z4_S8<5{ozf7_Sci?#^O>{2I~{c)D^UK|~S(yHc)%jsf(8lHc@Hp;D_gV#wzup&V$P zbd{qW{EhQn5d|uT7G756N~EuHNErr7fEFTF35UsF32Vv{P(3tjysGaH`>KcLkf8{u z|6WCOMXc+_p#Z4ST?G_Jeh*mB_Ci@u@3_h;i29zj)=5GsP^+~{sfhkMDr<}vR1b{@ gSM{gkzMEoeqeDkKF>nTbnN^B_2RJ=!>0i$N4|TFDx&QzG literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouter.java b/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouter.java deleted file mode 100644 index cb7d10504..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouter.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import java.util.concurrent.TimeUnit; - -import javax.inject.Inject; -import javax.inject.Named; - -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; -import com.twitter.finagle.Service; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.partitioning.snowflakeparser.SnowflakeIdParser; -import com.twitter.search.common.query.thriftjava.CollectorTerminationParams; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.ThriftSearchRankingMode; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.common.InjectionNames; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; - -public class RelevanceRequestRouter extends AbstractRecencyAndRelevanceRequestRouter { - private static final long MILLIS_IN_ONE_DAY = TimeUnit.DAYS.toMillis(1); - - @Inject - public RelevanceRequestRouter( - @Named(InjectionNames.REALTIME) - Service realtime, - @Named(InjectionNames.PROTECTED) - Service protectedRealtime, - @Named(InjectionNames.FULL_ARCHIVE) - Service fullArchive, - @Named(RelevanceRequestRouterModule.REALTIME_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter realtimeTimeRangeFilter, - @Named(RelevanceRequestRouterModule.PROTECTED_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter protectedTimeRangeFilter, - @Named(RelevanceRequestRouterModule.FULL_ARCHIVE_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter fullArchiveTimeRangeFilter, - Clock clock, - SearchDecider decider, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - super(realtime, - protectedRealtime, - fullArchive, - realtimeTimeRangeFilter, - protectedTimeRangeFilter, - fullArchiveTimeRangeFilter, - ThriftSearchRankingMode.RELEVANCE, - clock, - decider, - featureSchemaMerger); - } - - @Override - protected boolean shouldSendRequestToFullArchiveCluster( - EarlybirdRequest request, EarlybirdResponse realtimeResponse) { - int numResultsRequested = request.getSearchQuery().getNumResults(); - int numHitsProcessed = realtimeResponse.getSearchResults().isSetNumHitsProcessed() - ? realtimeResponse.getSearchResults().getNumHitsProcessed() - : -1; - if (numHitsProcessed < numResultsRequested) { - // Send query to the full archive cluster, if we went through fewer hits in the realtime - // cluster than the requested number of results. - return true; - } - - // If we have enough hits, don't query the full archive cluster yet. - int numSuccessfulPartitions = realtimeResponse.getNumSuccessfulPartitions(); - CollectorTerminationParams terminationParams = - request.getSearchQuery().getCollectorParams().getTerminationParams(); - - Preconditions.checkArgument(terminationParams.isSetMaxHitsToProcess()); - int maxHits = terminationParams.getMaxHitsToProcess() * numSuccessfulPartitions; - - if (numHitsProcessed >= maxHits) { - return false; - } - - // Check if there is a gap between the last result and the min status ID of current search. - // If the difference is larger than one day, then we can still get more tweets from the realtime - // cluster, so there's no need to query the full archive cluster just yet. If we don't check - // this, then we might end up with a big gap in the returned results. - int numReturnedResults = realtimeResponse.getSearchResults().getResultsSize(); - if (numReturnedResults > 0) { - ThriftSearchResult lastResult = - realtimeResponse.getSearchResults().getResults().get(numReturnedResults - 1); - long lastResultTimeMillis = SnowflakeIdParser.getTimestampFromTweetId(lastResult.getId()); - long minSearchedStatusID = realtimeResponse.getSearchResults().getMinSearchedStatusID(); - long minSearchedStatusIDTimeMillis = - SnowflakeIdParser.getTimestampFromTweetId(minSearchedStatusID); - if (lastResultTimeMillis - minSearchedStatusIDTimeMillis > MILLIS_IN_ONE_DAY) { - return false; - } - } - - return true; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouterModule.docx b/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouterModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..05c1c4288f0d759cb91b0f2e5fdb0add5511bb83 GIT binary patch literal 37323 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 RAW*InWJm;NkC0vv4*=p|w@Ls2 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouterModule.java b/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouterModule.java deleted file mode 100644 index eaed2c25e..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/RelevanceRequestRouterModule.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.filters.FullArchiveServingRangeProvider; -import com.twitter.search.earlybird_root.filters.RealtimeServingRangeProvider; -import com.twitter.search.earlybird_root.filters.ServingRangeProvider; - -public class RelevanceRequestRouterModule extends TwitterModule { - public static final String FULL_ARCHIVE_TIME_RANGE_FILTER = - "relevance_full_archive_time_range_filter"; - public static final String REALTIME_TIME_RANGE_FILTER = - "relevance_realtime_time_range_filter"; - public static final String PROTECTED_TIME_RANGE_FILTER = - "relevance_protected_time_range_filter"; - - public static final String REALTIME_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_relevance_realtime_serving_range_boundary_hours_ago"; - public static final String FULL_ARCHIVE_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_relevance_full_archive_serving_range_boundary_hours_ago"; - public static final String PROTECTED_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_relevance_protected_serving_range_boundary_hours_ago"; - - private ServingRangeProvider getFullArchiveServingRangeProvider(final SearchDecider decider) - throws Exception { - return new FullArchiveServingRangeProvider( - decider, FULL_ARCHIVE_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - private ServingRangeProvider getRealtimeServingRangeProvider(final SearchDecider decider) - throws Exception { - return new RealtimeServingRangeProvider( - decider, REALTIME_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - private ServingRangeProvider getProtectedServingRangeProvider(final SearchDecider decider) - throws Exception { - return new RealtimeServingRangeProvider( - decider, PROTECTED_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - @Provides - @Singleton - @Named(FULL_ARCHIVE_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesFullArchiveTimeRangeFilter(SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getFullArchiveServingRangeProvider(decider)); - } - - @Provides - @Singleton - @Named(REALTIME_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesRealtimeTimeRangeFilter(SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getRealtimeServingRangeProvider(decider)); - } - - @Provides - @Singleton - @Named(PROTECTED_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesProtectedTimeRangeFilter(SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getProtectedServingRangeProvider(decider)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/RequestRouter.docx b/src/java/com/twitter/search/earlybird_root/routers/RequestRouter.docx new file mode 100644 index 0000000000000000000000000000000000000000..12e9c8f54ab1bdf5a19fdde96468b2c092daf9f1 GIT binary patch literal 38124 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 RXvwPN08h|7f)khi{U6P earlybirdResponseFuture; - - RequestResponse(String sentTo, - EarlybirdRequestContext requestContext, - Future earlybirdResponseFuture) { - this.sentTo = sentTo; - this.requestContext = requestContext; - this.earlybirdResponseFuture = earlybirdResponseFuture; - } - - String getSentTo() { - return sentTo; - } - - public EarlybirdRequestContext getRequestContext() { - return requestContext; - } - - Future getEarlybirdResponseFuture() { - return earlybirdResponseFuture; - } - } - - /** - * Forward a request to different clusters and merge the responses back into one response. - * @param requestContext - */ - public abstract Future route(EarlybirdRequestContext requestContext); - - /** - * Save a request (and its response future) to be included in debug info. - */ - void saveRequestResponse( - List requestResponses, - String sentTo, - EarlybirdRequestContext earlybirdRequestContext, - Future earlybirdResponseFuture - ) { - requestResponses.add( - new RequestResponse( - sentTo, - earlybirdRequestContext, - earlybirdResponseFuture - ) - ); - } - - Future maybeAttachSentRequestsToDebugInfo( - List requestResponses, - EarlybirdRequestContext requestContext, - Future response - ) { - if (requestContext.getRequest().getDebugMode() >= 4) { - return this.attachSentRequestsToDebugInfo( - response, - requestResponses - ); - } else { - return response; - } - } - - /** - * Attaches saved client requests and their responses to the debug info within the - * main EarlybirdResponse. - */ - Future attachSentRequestsToDebugInfo( - Future currentResponse, - List requestResponses) { - - // Get all the response futures that we're waiting on. - List> allResponseFutures = new ArrayList<>(); - for (RequestResponse rr : requestResponses) { - allResponseFutures.add(rr.getEarlybirdResponseFuture()); - } - - // Pack all the futures into a single future. - Future>> allResponsesFuture = - Futures.collectAll(allResponseFutures); - - return currentResponse.flatMap(mainResponse -> { - if (!mainResponse.isSetDebugInfo()) { - mainResponse.setDebugInfo(new EarlybirdDebugInfo()); - } - - Future responseWithRequests = allResponsesFuture.map(allResponses -> { - // Get all individual response "Trys" and see if we can extract something from them - // that we can attach to the debugInfo. - for (int i = 0; i < allResponses.size(); i++) { - - Try responseTry = allResponses.get(i); - - if (responseTry.isReturn()) { - EarlybirdResponse attachedResponse = responseTry.get(); - - // Don't include the debug string, it's already a part of the main response's - // debug string. - attachedResponse.unsetDebugString(); - - EarlybirdRequestResponse reqResp = new EarlybirdRequestResponse(); - reqResp.setSentTo(requestResponses.get(i).getSentTo()); - reqResp.setRequest(requestResponses.get(i).getRequestContext().getRequest()); - reqResp.setResponse(attachedResponse.toString()); - - mainResponse.debugInfo.addToSentRequests(reqResp); - } - } - - return mainResponse; - }); - - return responseWithRequests; - }); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/RequestRouterUtil.docx b/src/java/com/twitter/search/earlybird_root/routers/RequestRouterUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..835043bcaea5337fc3d5d8cfd8d868eaa02619fc GIT binary patch literal 38085 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 checkMinSearchedStatusId( - final EarlybirdRequestContext requestContext, - final String operator, - final Optional requestMaxId, - final Future realtimeResponseFuture, - final Future protectedResponseFuture, - final Future fullArchiveResponseFuture, - final SearchCounter stat) { - return new Function() { - @Override - public EarlybirdResponse apply(EarlybirdResponse mergedResponse) { - if (requestMaxId.isPresent() - && (mergedResponse.getResponseCode() == EarlybirdResponseCode.SUCCESS) - && mergedResponse.isSetSearchResults() - && mergedResponse.getSearchResults().isSetMinSearchedStatusID()) { - long minSearchedStatusId = mergedResponse.getSearchResults().getMinSearchedStatusID(); - if (minSearchedStatusId > requestMaxId.get()) { - stat.increment(); - // We're logging this only for STRICT RECENCY as it was very spammy for all types of - // request. We don't expect this to happen for STRICT RECENCY but we're tracking - // with the stat when it happens for RELEVANCE and RECENCY - if (requestContext.getEarlybirdRequestType() == EarlybirdRequestType.STRICT_RECENCY) { - String logMessage = "Response has a minSearchedStatusID ({}) larger than request " - + operator + " ({})." - + "\nrequest type: {}" - + "\nrequest: {}" - + "\nmerged response: {}" - + "\nrealtime response: {}" - + "\nprotected response: {}" - + "\nfull archive response: {}"; - List logMessageParams = Lists.newArrayList(); - logMessageParams.add(minSearchedStatusId); - logMessageParams.add(requestMaxId.get()); - logMessageParams.add(requestContext.getEarlybirdRequestType()); - logMessageParams.add(requestContext.getRequest()); - logMessageParams.add(mergedResponse); - - // The realtime, protected and full archive response futures are "done" at this point: - // we have to wait for them in order to build the merged response. So it's ok to call - // Await.result() here to get the responses: it's a no-op. - try { - logMessageParams.add(Await.result(realtimeResponseFuture).getResponse()); - } catch (Exception e) { - logMessageParams.add(e); - } - try { - logMessageParams.add(Await.result(protectedResponseFuture).getResponse()); - } catch (Exception e) { - logMessageParams.add(e); - } - try { - logMessageParams.add(Await.result(fullArchiveResponseFuture).getResponse()); - } catch (Exception e) { - logMessageParams.add(e); - } - - LOG.warn(logMessage, logMessageParams.toArray()); - } - } - } - - return mergedResponse; - } - }; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouter.docx b/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouter.docx new file mode 100644 index 0000000000000000000000000000000000000000..6f3f9e143564065ff936efd163003f55145f6bc8 GIT binary patch literal 39481 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 bvcwKYhlaXTzzX`Ys+d8x!18EH`Em3&+ZNUW literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouter.java b/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouter.java deleted file mode 100644 index efc568748..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouter.java +++ /dev/null @@ -1,238 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import java.util.ArrayList; -import java.util.List; -import javax.inject.Inject; -import javax.inject.Named; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.Service; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.util.earlybird.EarlybirdResponseUtil; -import com.twitter.search.earlybird.config.ServingRange; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.common.InjectionNames; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.filters.ServingRangeProvider; -import com.twitter.search.earlybird_root.mergers.EarlybirdResponseMerger; -import com.twitter.search.earlybird_root.mergers.SuperRootResponseMerger; -import com.twitter.search.earlybird_root.mergers.TermStatisticsResponseMerger; -import com.twitter.search.earlybird_root.mergers.TierResponseAccumulator; -import com.twitter.util.Function; -import com.twitter.util.Future; - -import static com.twitter.search.common.util.earlybird.TermStatisticsUtil.determineBinSize; - -/** - * For TermStats traffic SuperRoot hits both realtime and archive in parallel, and then merges - * the results. - */ -public class TermStatsRequestRouter extends RequestRouter { - private static final Logger LOG = LoggerFactory.getLogger(TermStatsRequestRouter.class); - - private static final String SUPERROOT_SKIP_FULL_ARCHIVE_CLUSTER_FOR_TERM_STATS_REQUESTS = - "superroot_skip_full_archive_cluster_for_term_stats_requests"; - - private final Service realtimeService; - private final Service fullArchiveService; - - private final SearchDecider decider; - - private final ServingRangeProvider realtimeServingRangeProvider; - - @Inject - public TermStatsRequestRouter( - @Named(InjectionNames.REALTIME) - Service realtime, - @Named(TermStatsRequestRouterModule.REALTIME_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter realtimeTimeRangeFilter, - @Named(InjectionNames.FULL_ARCHIVE) - Service fullArchive, - @Named(TermStatsRequestRouterModule.FULL_ARCHIVE_TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter fullArchiveTimeRangeFilter, - SearchDecider decider) { - LOG.info("Instantiating a TermStatsRequestRouter"); - - this.realtimeService = realtimeTimeRangeFilter - .andThen(realtime); - - this.fullArchiveService = fullArchiveTimeRangeFilter - .andThen(fullArchive); - - this.decider = decider; - this.realtimeServingRangeProvider = realtimeTimeRangeFilter.getServingRangeProvider(); - } - - /** - * Hit both realtime and full-archive clusters then merges term stat request. - */ - @Override - public Future route(EarlybirdRequestContext requestContext) { - List requestResponses = new ArrayList<>(); - - Future realtimeResponseFuture = realtimeService.apply(requestContext); - this.saveRequestResponse(requestResponses, "realtime", requestContext, realtimeResponseFuture); - - Future archiveResponseFuture = - requestContext.getRequest().isGetOlderResults() - && !decider.isAvailable(SUPERROOT_SKIP_FULL_ARCHIVE_CLUSTER_FOR_TERM_STATS_REQUESTS) - ? fullArchiveService.apply(requestContext) - : Future.value(emptyResponse()); - this.saveRequestResponse(requestResponses, "archive", requestContext, archiveResponseFuture); - - Future mergedResponse = - merge(realtimeResponseFuture, archiveResponseFuture, requestContext); - - return this.maybeAttachSentRequestsToDebugInfo( - requestResponses, - requestContext, - mergedResponse - ); - } - - /** - * Merge responses from realtime and full archive clusters. - */ - private Future merge( - final Future realtimeResponseFuture, - final Future archiveResponseFuture, - final EarlybirdRequestContext requestContext) { - - return realtimeResponseFuture.flatMap( - new Function>() { - @Override - public Future apply(final EarlybirdResponse realtimeResponse) { - if (!EarlybirdResponseUtil.isSuccessfulResponse(realtimeResponse)) { - return Future.value(realtimeResponse); - } - - return archiveResponseFuture.flatMap( - new Function>() { - @Override - public Future apply(EarlybirdResponse archiveResponse) { - if (!EarlybirdResponseUtil.isSuccessfulResponse(archiveResponse)) { - return Future.value( - mergeWithUnsuccessfulArchiveResponse( - requestContext, realtimeResponse, archiveResponse)); - } - - List> responses = - ImmutableList.>builder() - .add(realtimeResponseFuture) - .add(archiveResponseFuture) - .build(); - - EarlybirdResponseMerger merger = new TermStatisticsResponseMerger( - requestContext, responses, new TierResponseAccumulator()); - - return merger.merge().map(new Function() { - @Override - public EarlybirdResponse apply(EarlybirdResponse mergedResponse) { - if (requestContext.getRequest().getDebugMode() > 0) { - mergedResponse.setDebugString( - SuperRootResponseMerger.mergeClusterDebugStrings( - realtimeResponse, null, archiveResponse)); - } - return mergedResponse; - } - }); - } - }); - } - }); - } - - private EarlybirdResponse mergeWithUnsuccessfulArchiveResponse( - EarlybirdRequestContext requestContext, - EarlybirdResponse realtimeResponse, - EarlybirdResponse archiveResponse) { - // If the realtime cluster was skipped, and the full archive returned an error - // response, return the full archive response. - if (isTierSkippedResponse(realtimeResponse)) { - return archiveResponse; - } - - // If the realtime response has results and the full archive cluster returned an error - // response, we return the realtime response. If the client needs more results, it can paginate, - // and on the next request it will get the error response from the full archive cluster. - if (realtimeResponse.isSetTermStatisticsResults() - && !realtimeResponse.getTermStatisticsResults().getTermResults().isEmpty()) { - realtimeResponse.setDebugString( - "Full archive cluster returned an error response (" - + archiveResponse.getResponseCode() + "). " - + SuperRootResponseMerger.mergeClusterDebugStrings( - realtimeResponse, null, archiveResponse)); - return updateMinCompleteBinId(requestContext, realtimeResponse); - } - - // If the realtime response has no results, and the full archive cluster returned an error - // response, return a PERSISTENT_ERROR response, and merge the debug strings from the two - // responses. - EarlybirdResponse mergedResponse = - new EarlybirdResponse(EarlybirdResponseCode.PERSISTENT_ERROR, 0); - mergedResponse.setDebugString( - "Full archive cluster returned an error response (" - + archiveResponse.getResponseCode() - + "), and the realtime response had no results. " - + SuperRootResponseMerger.mergeClusterDebugStrings( - realtimeResponse, null, archiveResponse)); - return mergedResponse; - } - - /** - * If we get a completed realtime response but a failed archive response, the minCompleteBinId we - * return will be incorrect -- the realtime minCompleteBinId is assumed to be the oldest bin - * returned, rather than the bin that intersects the realtime serving boundary. In these cases, we - * need to move the minCompleteBinId forward. - *

    - * Note that we cannot always set the minCompleteBinId for the realtime results to the bin - * intersecting the realtime serving boundary: somewhere in the guts of the merging logic, we set - * the minCompleteBinId of the merged response to the max of the minCompleteBinIds of the original - * responses. :-( - */ - private EarlybirdResponse updateMinCompleteBinId( - EarlybirdRequestContext requestContext, EarlybirdResponse realtimeResponse) { - Preconditions.checkArgument( - realtimeResponse.getTermStatisticsResults().isSetMinCompleteBinId()); - int roundedServingRange = roundServingRangeUpToNearestBinId(requestContext, realtimeResponse); - int minCompleteBinId = Math.max( - roundedServingRange, - realtimeResponse.getTermStatisticsResults().getMinCompleteBinId()); - realtimeResponse.getTermStatisticsResults().setMinCompleteBinId(minCompleteBinId); - return realtimeResponse; - } - - private static EarlybirdResponse emptyResponse() { - return new EarlybirdResponse(EarlybirdResponseCode.SUCCESS, 0) - .setSearchResults(new ThriftSearchResults() - .setResults(Lists.newArrayList())) - .setDebugString("Full archive cluster not requested or not available."); - } - - private static boolean isTierSkippedResponse(EarlybirdResponse response) { - return response.getResponseCode() == EarlybirdResponseCode.TIER_SKIPPED; - } - - /** - * Given a termstats request/response pair, round the serving range for the appropriate cluster up - * to the nearest binId at the appropriate resolution. - */ - private int roundServingRangeUpToNearestBinId( - EarlybirdRequestContext request, EarlybirdResponse response) { - ServingRange servingRange = realtimeServingRangeProvider.getServingRange( - request, request.useOverrideTierConfig()); - long servingRangeStartSecs = servingRange.getServingRangeSinceTimeSecondsFromEpoch(); - int binSize = determineBinSize(response.getTermStatisticsResults().getHistogramSettings()); - return (int) Math.ceil((double) servingRangeStartSecs / binSize); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouterModule.docx b/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouterModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..bd2d99746ba849115cd3b513006848120976f055 GIT binary patch literal 37369 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouterModule.java b/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouterModule.java deleted file mode 100644 index 6b11f5d43..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/TermStatsRequestRouterModule.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.filters.FullArchiveServingRangeProvider; -import com.twitter.search.earlybird_root.filters.RealtimeServingRangeProvider; -import com.twitter.search.earlybird_root.filters.ServingRangeProvider; - -public class TermStatsRequestRouterModule extends TwitterModule { - public static final String FULL_ARCHIVE_TIME_RANGE_FILTER = - "term_stats_full_archive_time_range_filter"; - public static final String REALTIME_TIME_RANGE_FILTER = - "term_stats_realtime_time_range_filter"; - - private static final String SUPERROOT_TERM_STATS_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_term_stats_serving_range_boundary_hours_ago"; - - private ServingRangeProvider getFullArchiveTimeRangeProvider(final SearchDecider decider) - throws Exception { - return new FullArchiveServingRangeProvider( - decider, SUPERROOT_TERM_STATS_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - private ServingRangeProvider getRealtimeTimeRangeProvider(final SearchDecider decider) - throws Exception { - return new RealtimeServingRangeProvider( - decider, SUPERROOT_TERM_STATS_SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - /** - * For term stats full archive cluster spans from 21 March to 2006 to 6 days ago from current time - */ - @Provides - @Singleton - @Named(FULL_ARCHIVE_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesFullArchiveTimeRangeFilter(final SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithQueryRewriter( - getFullArchiveTimeRangeProvider(decider), decider); - } - - /** - * For term stats realtime cluster spans from 6 days ago from current time to a far away date - * into the future - */ - @Provides - @Singleton - @Named(REALTIME_TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesRealtimeTimeRangeFilter(final SearchDecider decider) - throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithQueryRewriter( - getRealtimeTimeRangeProvider(decider), decider); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouter.docx b/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouter.docx new file mode 100644 index 0000000000000000000000000000000000000000..04a36b2b4f93248c8e65b070fa6bc7d06624d707 GIT binary patch literal 37146 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouter.java b/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouter.java deleted file mode 100644 index 20c2411b1..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouter.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import javax.inject.Inject; -import javax.inject.Named; - -import com.twitter.finagle.Service; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.common.InjectionNames; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.util.Future; - -/** - * For TopTweets traffic SuperRoot forwards all traffic to the realtime cluster. - */ -public class TopTweetsRequestRouter extends RequestRouter { - - private final Service realtime; - - /** Creates a new TopTweetsRequestRouter instance to be used by the SuperRoot. */ - @Inject - public TopTweetsRequestRouter( - @Named(InjectionNames.REALTIME) - Service realtime, - @Named(TopTweetsRequestRouterModule.TIME_RANGE_FILTER) - EarlybirdTimeRangeFilter timeRangeFilter) { - - this.realtime = timeRangeFilter.andThen(realtime); - } - - @Override - public Future route(EarlybirdRequestContext requestContext) { - return realtime.apply(requestContext); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouterModule.docx b/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouterModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..1ccdb3b3d39d413eb678442c05aee4b1e7ea4cb3 GIT binary patch literal 37139 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouterModule.java b/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouterModule.java deleted file mode 100644 index 03a247afb..000000000 --- a/src/java/com/twitter/search/earlybird_root/routers/TopTweetsRequestRouterModule.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.twitter.search.earlybird_root.routers; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.filters.RealtimeServingRangeProvider; -import com.twitter.search.earlybird_root.filters.ServingRangeProvider; - -public class TopTweetsRequestRouterModule extends TwitterModule { - public static final String TIME_RANGE_FILTER = "top_tweets_time_range_filter"; - - public static final String SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY = - "superroot_top_tweets_serving_range_boundary_hours_ago"; - - private ServingRangeProvider getServingRangeProvider(final SearchDecider decider) - throws Exception { - return new RealtimeServingRangeProvider(decider, SERVING_RANGE_BOUNDARY_HOURS_AGO_DECIDER_KEY); - } - - @Provides - @Singleton - @Named(TIME_RANGE_FILTER) - private EarlybirdTimeRangeFilter providesTimeRangeFilter(SearchDecider decider) throws Exception { - return EarlybirdTimeRangeFilter.newTimeRangeFilterWithoutQueryRewriter( - getServingRangeProvider(decider)); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/validators/BUILD b/src/java/com/twitter/search/earlybird_root/validators/BUILD deleted file mode 100644 index 3a39026c1..000000000 --- a/src/java/com/twitter/search/earlybird_root/validators/BUILD +++ /dev/null @@ -1,9 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "src/java/com/twitter/search/common/schema/earlybird", - "src/thrift/com/twitter/search:earlybird-java", - ], -) diff --git a/src/java/com/twitter/search/earlybird_root/validators/BUILD.docx b/src/java/com/twitter/search/earlybird_root/validators/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..a69f7f0870e1b9b5282bd068bdceebc51cc84740 GIT binary patch literal 36773 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