class CustomizedCrawlURIFacade extends CrawlURI {
        private static final long serialVersionUID = 1l;

        protected CrawlURI wrapped;
        protected UURI baseURI;

        public CustomizedCrawlURIFacade(CrawlURI wrapped, UURI baseURI) {
            super(wrapped.getUURI(), wrapped.getPathFromSeed(), wrapped.getVia(), wrapped.getViaContext());
            this.wrapped = wrapped;
            this.baseURI = baseURI;
        }

        /**
         * @return value set in {@link #CustomizedCrawlURIFacade(CrawlURI, UURI)}
         */
        @Override
        public UURI getBaseURI() {
            return baseURI;
        }

        /** Delegates to wrapped CrawlURI */
        @Override
        public CrawlURI createCrawlURI(UURI destination, LinkContext context,
                Hop hop) throws URIException {
            return wrapped.createCrawlURI(destination, context, hop);
        }

        /** Delegates to wrapped CrawlURI */
        @Override
        public Collection<CrawlURI> getOutLinks() {
            return wrapped.getOutLinks();
        }

        /** Delegates to wrapped CrawlURI */
        @Override
        public void incrementDiscardedOutLinks() {
            wrapped.incrementDiscardedOutLinks();
        }
    }

    public long considerStrings(Extractor ext, 
            CrawlURI curi, CharSequence cs, boolean handlingJSFile) {<FILL_FUNCTION_BODY>


        CrawlURI baseUri = curi;

        Matcher m = TextUtils.getMatcher("jQuery\\.extend\\(Drupal\\.settings,[^'\"]*['\"]basePath['\"]:[^'\"]*['\"]([^'\"]+)['\"]", cs);
        if (m.find()) {
            String basePath = m.group(1);
            try {
                basePath = StringEscapeUtils.unescapeJavaScript(basePath);
            } catch (NestableRuntimeException e) {
                LOGGER.log(Level.WARNING, "problem unescaping purported drupal basePath '" + basePath + "'", e);
            }

            try {
                UURI baseUURI =  UURIFactory.getInstance(curi.getUURI(), basePath);
                baseUri = new CustomizedCrawlURIFacade(curi, baseUURI);
            } catch (URIException e) {
                LOGGER.log(Level.WARNING, "problem creating UURI from drupal basePath '" + basePath + "'", e);
            }
        }
        TextUtils.recycleMatcher(m);
        
        // extract youtube videoid from youtube javascript embed and create link
        // for watch page
        m = TextUtils.getMatcher("new[\\s]+YT\\.Player\\(['\"][^'\"]+['\"],[\\s]+\\{[\\n\\s\\w:'\",]+videoId:[\\s]+['\"]([\\w-]+)['\"],", cs);

        if (m.find()) {
            String videoId = m.group(1);

            String newUri = "https://www.youtube.com/watch?v=" + videoId;

            try {
                addRelativeToBase(curi, ext.getExtractorParameters().getMaxOutlinks(), newUri, LinkContext.INFERRED_MISC,
                        Hop.INFERRED);
            } catch (URIException e) {
                // no way this should happen
                throw new IllegalStateException(newUri, e);
            }
        }
        
        TextUtils.recycleMatcher(m);
        
        return super.considerStrings(ext, baseUri, cs, handlingJSFile);
    
<methods>public non-sealed void <init>() ,public long considerStrings(org.archive.modules.extractor.Extractor, org.archive.modules.CrawlURI, java.lang.CharSequence) ,public long considerStrings(org.archive.modules.extractor.Extractor, org.archive.modules.CrawlURI, java.lang.CharSequence, boolean) <variables>protected static final java.lang.String JAVASCRIPT_STRING_EXTRACTOR,private static java.util.logging.Logger LOGGER,protected long numberOfCURIsHandled,private static final long serialVersionUID