diff --git a/API DADOS DA PATENTE.py b/API DADOS DA PATENTE.py new file mode 100644 index 0000000..5849f8c --- /dev/null +++ b/API DADOS DA PATENTE.py @@ -0,0 +1,584 @@ +import requests +import xmltodict +import csv +import re +import time +import datetime +from requests.auth import HTTPBasicAuth +from typing import Optional, Dict, Any, List + +# ============================================================================== +# ⚠️ CONFIGURAÇÃO OBRIGATÓRIA +# ------------------------------------------------------------------------------ +# SUBSTITUA PELAS SUAS CHAVES DE CONSUMO OBTIDAS NO PORTAL DO DESENVOLVEDOR DO EPO +CONSUMER_KEY = "3APxH4wxYoY7aZibQ4jDP9YGjezGbWzfcGji9xA6j3qY0ea1" +CONSUMER_SECRET = "OCeAZAVzxdlLZ80IJ4sootDyI8iKpleu3pD3qEGh1R1BYALewAfyRuhASN1XnJBk" + +# Caminhos dos arquivos +INPUT_FILE = r"C:\Users\Licitações\PycharmProjects\WEBSCRAPPING\PATENTES ADAPTADAS.txt" +OUTPUT_FILE = "patentes_dados_simples_inventor.csv" + +# Variáveis globais +ACCESS_TOKEN = None +MAX_RETRIES = 5 # Número máximo de tentativas em caso de falha de conexão ou 429 + +# CONSTANTES PARA CÁLCULO DE MÉTRICAS DO INVENTOR +PORTFOLIO_SAMPLE_SIZE = 25 # Limite de patentes do portfólio para amostrar e calcular médias +RECENCY_YEARS_PERIOD = 5 # Duração de cada período (A e B) para o cálculo da Taxa de Crescimento (5 anos) + + +# ============================================================================== + + +# --- 1. FUNÇÃO DE AUTENTICAÇÃO --- +def get_access_token(): + """Obtém o Access Token via OAuth 2.0 usando as chaves de consumidor.""" + global ACCESS_TOKEN + token_url = "https://ops.epo.org/3.2/auth/accesstoken" + try: + response = requests.post( + token_url, + data={'grant_type': 'client_credentials'}, + auth=HTTPBasicAuth(CONSUMER_KEY, CONSUMER_SECRET), + headers={'Content-Type': 'application/x-www-form-urlencoded'} + ) + response.raise_for_status() + token_data = response.json() + ACCESS_TOKEN = token_data.get('access_token') + print("✅ Access Token obtido com sucesso.") + return ACCESS_TOKEN + + except requests.exceptions.RequestException as e: + print(f"❌ Erro ao obter o token: {e}") + return None + + +# --- FUNÇÃO AUXILIAR PARA TRATAMENTO DE RETRY E 429 --- +def make_ops_request(url: str, headers: Dict[str, str], identifier: str, max_retries: int = MAX_RETRIES) -> Optional[ + requests.Response]: + """ + Realiza a requisição, tratando o limite de taxa (429) e erros de conexão. + """ + for attempt in range(max_retries): + try: + response = requests.get(url, headers=headers) + + if response.status_code == 429: + retry_after = response.headers.get('Retry-After') + try: + wait_time = int(retry_after) + except (TypeError, ValueError): + wait_time = 60 + + print( + f" [ALERTA 429 - {identifier}]: Limite de requisições atingido. Tentativa {attempt + 1}/{max_retries}. Esperando por {wait_time} segundos...") + time.sleep(wait_time) + + if attempt == max_retries - 1: + print(f" [FALHA 429]: Tentativas esgotadas para {identifier}.") + return None + continue + + response.raise_for_status() + return response + + except requests.exceptions.HTTPError as e: + if response.status_code == 404: + return response + return None + + except requests.exceptions.RequestException: + if attempt < max_retries - 1: + print( + f" [ERRO CONEXÃO]: Falha de conexão para {identifier}. Tentando novamente... ({attempt + 1}/{max_retries})") + time.sleep(5) + continue + return None + + return None + + +# --- FUNÇÃO AUXILIAR DE EXTRAÇÃO DO NÚMERO --- +def extract_pub_number(link): + """Extrai o número de publicação no formato EPODOC.""" + wipo_docid_match = re.search(r'docId=([A-Z]{2}\d+[A-Z]?\d*)', link) + if wipo_docid_match: + return wipo_docid_match.group(1) + + epo_pattern = re.search(r'([A-Z]{2}\d+[A-Z]?\d*)', link) + if epo_pattern: + return epo_pattern.group(1).replace('patent/', '') + google_match = re.search(r'patent/([A-Z]{2}\d+)', link) + if google_match: + return google_match.group(1) + return None + + +# --- 2. EXTRAÇÃO DE CITAÇÕES E DATA PARA UM ID ESPECÍFICO --- +def get_citation_and_date(pub_number: str, headers: Dict[str, str]) -> Dict[str, Any]: + """Obtém contagens de citações (forward/backward) e data de publicação.""" + base_url = "https://ops.epo.org/rest-services" + citations_url = f"{base_url}/published-data/publication/epodoc/{pub_number}/citations" + biblio_url = f"{base_url}/published-data/publication/epodoc/{pub_number}/biblio" + + forward_cites, backward_cites, pub_date = 0, 0, None + + # 1. Citações + cites_response = make_ops_request(citations_url, headers, f"Citação {pub_number}") + if cites_response and cites_response.status_code == 200: + try: + cites_data = xmltodict.parse(cites_response.text) + + # Citações Forward (Referenced by) + forward_list = cites_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}).get( + 'ops:forward-citations', {}).get('citation', []) + if isinstance(forward_list, dict): forward_list = [forward_list] + forward_cites = len(forward_list) + + # Citações Backward (References) + backward_list = cites_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}).get( + 'ops:backward-citations', {}).get('citation', []) + if isinstance(backward_list, dict): backward_list = [backward_list] + backward_cites = len(backward_list) + except Exception: + pass + + # 2. Data de Publicação (necessária para Recência) + biblio_response = make_ops_request(biblio_url, headers, f"Biblio Date {pub_number}") + if biblio_response and biblio_response.status_code == 200: + try: + biblio_data = xmltodict.parse(biblio_response.text) + date_raw = \ + biblio_data.get('ops:world-patent-data', {}).get('exchange-documents', {}).get('exchange-document', {}).get( + 'bibliographic-data', {}).get('publication-reference', {}).get('document-id', [{}])[0].get('date') + if date_raw: + pub_date = date_raw + except Exception: + pass + + return { + 'forward_cites': forward_cites, + 'backward_cites': backward_cites, + 'pub_date': pub_date + } + + +# --- 3. FUNÇÃO PARA EXTRAIR MÉTRICAS DO PORTFÓLIO DO INVENTOR --- +def get_inventor_portfolio_metrics(inventor_name: str) -> Dict[str, Any]: + """ + Calcula Recência (Taxa de Crescimento Refinada), Qualidade e Cobertura do Inventor. + """ + if not inventor_name or not ACCESS_TOKEN: + return {'recency_growth_rate': 0, 'quality': 0, 'coverage': 0, 'portfolio_size': 0} + + headers = {'Authorization': f'Bearer {ACCESS_TOKEN}'} + base_url = "https://ops.epo.org/rest-services" + + # Consulta de busca (in= para Inventor) - usa o nome já limpo (SOBRENOME, NOME) + search_url = f"{base_url}/rest-services/published-data/search/biblio?query=in%3D%22{requests.utils.quote(inventor_name)}%22&range=1-{PORTFOLIO_SAMPLE_SIZE}" + + print( + f" [BUSCA PORTFÓLIO]: Buscando amostra de {PORTFOLIO_SAMPLE_SIZE} patentes para o Inventor '{inventor_name}'...") + + search_response = make_ops_request(search_url, headers, f"Busca {inventor_name}") + + total_patents_found = 0 + patent_ids = [] + + if search_response and search_response.status_code == 200: + try: + search_data = xmltodict.parse(search_response.text) + + total_patents_found = int( + search_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}).get('@total-result-count', 0)) + + biblio_search = search_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}) + hits = biblio_search.get('ops:search-result', {}).get('ops:publication-reference', []) + + if isinstance(hits, dict): + hits = [hits] + + for hit in hits: + doc_id_list = hit.get('document-id', []) + if isinstance(doc_id_list, dict): doc_id_list = [doc_id_list] + + for doc_id in doc_id_list: + if doc_id.get('doc-number'): + patent_ids.append(doc_id.get('doc-number')) + break + + except Exception as e: + print(f" [ERRO PARSING BUSCA]: Falha ao processar a busca para {inventor_name}: {e}") + return {'recency_growth_rate': 0, 'quality': 0, 'coverage': 0, 'portfolio_size': 0} + + if not patent_ids: + print(f" [ALERTA PORTFÓLIO]: Nenhuma patente encontrada na amostra para o Inventor '{inventor_name}'.") + return {'recency_growth_rate': 0, 'quality': 0, 'coverage': 0, 'portfolio_size': total_patents_found} + + # ---------------------------------------------------------------------- + # ITERAÇÃO SOBRE A AMOSTRA E AGREGAÇÃO DE DADOS + # ---------------------------------------------------------------------- + + total_forward_cites = 0 + total_backward_cites = 0 + total_family_size = 0 + publication_years = {} # {year: count} + + current_year = datetime.datetime.now().year + + print(f" [CALC. MÉTRICAS]: Processando amostra de {len(patent_ids)} patentes do Inventor...") + + for pub_id in patent_ids: + + # Coleta de Citações e Data + metrics = get_citation_and_date(pub_id, headers) + + total_forward_cites += metrics['forward_cites'] + total_backward_cites += metrics['backward_cites'] + + if metrics['pub_date']: + try: + year = int(metrics['pub_date'][:4]) + publication_years[year] = publication_years.get(year, 0) + 1 + except (ValueError, TypeError): + pass + + # Coleta de Tamanho da Família + family_url = f"{base_url}/family/publication/epodoc/{pub_id}" + family_response = make_ops_request(family_url, headers, f"Família {pub_id}") + + family_count = 0 + if family_response and family_response.status_code == 200: + try: + family_data = xmltodict.parse(family_response.text) + family_members_raw = family_data.get('ops:world-patent-data', {}).get('ops:patent-family', {}).get( + 'ops:family-member', []) + + if isinstance(family_members_raw, dict): family_members_raw = [family_members_raw] + + family_count = len(family_members_raw) + total_family_size += family_count + except Exception: + pass + + time.sleep(1) # Pausa curta + + # ---------------------------------------------------------------------- + # CÁLCULO DAS MÉTRICAS FINAIS + # ---------------------------------------------------------------------- + + sample_count = len(patent_ids) + + # 1. Qualidade do Inventor (Média de Citações) + total_cites = total_forward_cites + total_backward_cites + quality = round(total_cites / sample_count, 2) if sample_count > 0 else 0 + + # 2. Cobertura do Inventor (Média de Membros da Família) + coverage = round(total_family_size / sample_count, 2) if sample_count > 0 else 0 + + # 3. Recência do Inventor (Taxa de Crescimento em 5 anos) - Lógica Refinada + + # Define os anos dos períodos + year_end_A = current_year + year_start_A = year_end_A - RECENCY_YEARS_PERIOD + 1 + year_start_B = year_start_A - RECENCY_YEARS_PERIOD + + # Soma as patentes em cada período + patents_A = sum( + count for year, count in publication_years.items() + if year >= year_start_A and year <= year_end_A + ) + patents_B = sum( + count for year, count in publication_years.items() + if year >= year_start_B and year < year_start_A + ) + + recency_growth_rate = 0.0 + if patents_B > 0: + # Crescimento percentual normal + recency_growth_rate = round((patents_A - patents_B) / patents_B, 4) + elif patents_A > 0: + # TRATAMENTO REFINADO para INÍCIO DE ATIVIDADE (P_B = 0, P_A > 0) + + # Encontra o ano mais antigo de publicação no Período A + recent_years_with_patents = [year for year in publication_years.keys() + if year >= year_start_A and year <= year_end_A] + + min_recent_year = min(recent_years_with_patents) if recent_years_with_patents else year_end_A + + # Calcula o número de anos ativos (inclui o ano atual) + years_active = current_year - min_recent_year + 1 + + # Métrica: Volume Médio Anual no período A (resolve a "explosão") + recency_growth_rate = round(patents_A / years_active, 4) + + # Se P_A=0 e P_B=0, a taxa é 0. + + print( + f" [MÉTRICAS INVENTOR]: Qualidade Média: {quality}, Cobertura Média: {coverage}, Recência (Taxa Cresc.): {recency_growth_rate}") + + return { + 'recency_growth_rate': recency_growth_rate, + 'quality': quality, + 'coverage': coverage, + 'portfolio_size': total_patents_found + } + + +# --- 4. FUNÇÃO DE EXTRAÇÃO DE DADOS BÁSICOS E INVENTOR --- +def get_patent_data(publication_number: str) -> Optional[Dict[str, Any]]: + """Consulta OPS para obter Classes, Família, e o nome do PRIMEIRO Inventor.""" + global ACCESS_TOKEN + if not ACCESS_TOKEN: return None + + headers = {'Authorization': f'Bearer {ACCESS_TOKEN}'} + base_url = "https://ops.epo.org/rest-services" + + # Inicializa variáveis + ipc_list, cpc_list = [], [] + family_count = 'N/A' + biblio_success = False + family_members_list = [] + ipc_diversity = 0 + cpc_diversity = 0 + inventor_name = None + + # ---------------------------------------------------------------------- + # A) REQUISIÇÃO PARA DADOS BIBLIOGRÁFICOS (IPC/CPC/Inventor) + # ---------------------------------------------------------------------- + biblio_url = f"{base_url}/published-data/publication/epodoc/{publication_number}/biblio" + biblio_response = make_ops_request(biblio_url, headers, publication_number) + + if biblio_response and biblio_response.status_code == 200: + try: + biblio_data = xmltodict.parse(biblio_response.text) + biblio_success = True + + # Funções auxiliares + def safe_extract_text(data): + if isinstance(data, list): + result = [] + for item in data: + if isinstance(item, dict) and 'text' in item: + result.append(item['text'].strip()) + return result + elif isinstance(data, dict) and 'text' in data: + return [data['text'].strip()] + return [] + + def build_cpc_code(cpc_item): + if not isinstance(cpc_item, dict) or cpc_item.get('classification-scheme', {}).get('@scheme') not in [ + 'CPCI', 'CPC']: return None + section = cpc_item.get('section', '') + class_ = cpc_item.get('class', '') + subclass = cpc_item.get('subclass', '') + main_group = cpc_item.get('main-group', '') + subgroup = cpc_item.get('subgroup', '') + if section and class_ and subclass and main_group and subgroup: + return f"{section}{class_}{subclass} {main_group}/{subgroup}" + return None + + exchange_docs_container = biblio_data.get('ops:world-patent-data', {}).get('exchange-documents') + if exchange_docs_container: + exchange_docs = exchange_docs_container.get('exchange-document') + + if isinstance(exchange_docs, list): + exchange_doc = exchange_docs[0] + else: + exchange_doc = exchange_docs + + if exchange_doc: + bib_data = exchange_doc.get('bibliographic-data', {}) + + # Extração e Limpeza do PRIMEIRO Inventor + inventors = bib_data.get('parties', {}).get('inventors', {}).get('inventor', []) + if isinstance(inventors, dict): inventors = [inventors] + + if inventors: + first_inventor = inventors[0] + addressbook = first_inventor.get('addressbook', {}) + last_name = addressbook.get('last-name') + first_name = addressbook.get('first-name') + + + if last_name and first_name: + # Formato preferido para busca EPO: "SOBRENOME, NOME" + inventor_name = f"{first_name}, {last_name}" + else: + # Fallback para o nome não estruturado e limpeza do código do país + name_container = first_inventor.get('inventor-name', {}).get('name') + if name_container: + # Remove código de país tipo [US] e espaços extras + inventor_name = re.sub(r'\s*\[[A-Z]{2,3}\]\s*', '', name_container).strip() + partes = inventor_name.split() + partes.append(partes.pop(0)) + inventor_name = ' '.join(partes) + print(inventor_name) + print("até aqui funciona") + + + # Extração de IPC e CPC (mantido) + ipc_parent = bib_data.get('classifications-ipcr', {}) + ipc_data = ipc_parent.get('classification-ipcr', []) + ipc_list = safe_extract_text(ipc_data) + + patent_classes = bib_data.get('patent-classifications', {}) + cpc_items = patent_classes.get('patent-classification', []) + if isinstance(cpc_items, dict): cpc_items = [cpc_items] + for item in cpc_items: + cpc_code = build_cpc_code(item) + if cpc_code: cpc_list.append(cpc_code) + + ipc_list = list(set(ipc_list)) + cpc_list = list(set(cpc_list)) + + ipc_diversity = len(set(ipc[:4] for ipc in ipc_list if len(ipc) >= 4)) + cpc_diversity = len(set(re.match(r'([A-Z]\d{2}[A-Z])', cpc).group(1) for cpc in cpc_list if + re.match(r'([A-Z]\d{2}[A-Z])', cpc))) + + + except Exception as e: + print(f" [ERRO PROCESSAMENTO XML BIBLIO]: Falha ao processar XML de {publication_number}: {e}") + biblio_success = False + + # ---------------------------------------------------------------------- + # B) REQUISIÇÃO PARA DADOS DA FAMÍLIA (Lógica anterior) + # ---------------------------------------------------------------------- + family_url = f"{base_url}/family/publication/epodoc/{publication_number}" + family_response = make_ops_request(family_url, headers, publication_number) + + if family_response and family_response.status_code == 200: + try: + family_data = xmltodict.parse(family_response.text) + family_container = family_data.get('ops:world-patent-data', {}).get('ops:patent-family') + + # Lógica de extração de Family Count e Members (mantida) + if family_container: + family_members_raw = family_container.get('ops:family-member') + if isinstance(family_members_raw, dict): + members_to_process = [family_members_raw] + elif isinstance(family_members_raw, list): + members_to_process = family_members_raw + else: + members_to_process = [] + family_count = len(members_to_process) + for member in members_to_process: + try: + pub_ref = member.get('ops:publication-reference', {}) + doc_ids = pub_ref.get('document-id') + if isinstance(doc_ids, dict): doc_ids = [doc_ids] + for doc_id in doc_ids: + doc_num = doc_id.get('doc-number') + if doc_num: + family_members_list.append(doc_num) + break + except Exception: + continue + else: + family_count = 0 + except Exception: + family_count = 'ERRO' + else: + family_count = 'FALHA REQ' + + if not biblio_success and family_count in ('ERRO', 'FALHA REQ', 0, 'N/A'): + return None + + return { + 'inventor_name': inventor_name, + 'family_count': family_count, + 'family_members': family_members_list, + 'num_ipc': len(ipc_list), + 'num_cpc': len(cpc_list), + 'ipc_diversity': ipc_diversity, + 'cpc_diversity': cpc_diversity, + 'IPC': ipc_list, + 'CPC': cpc_list + } + + +# --- FLUXO PRINCIPAL DO SCRIPT --- +if __name__ == "__main__": + + if not get_access_token(): + print("\nO script não pode continuar sem um Access Token válido.") + else: + try: + with open(INPUT_FILE, 'r', encoding='utf-8') as f: + links = [line.strip() for line in f.readlines() if line.strip()] + + except FileNotFoundError: + print(f"\n❌ ERRO: Arquivo de entrada não encontrado: {INPUT_FILE}") + exit() + + with open(OUTPUT_FILE, 'w', newline='', encoding='utf-8') as csvfile: + + # --- COLUNAS ATUALIZADAS PARA INVENTOR E NOVA MÉTRICA DE RECÊNCIA --- + fieldnames = ['link', 'publication_number', 'inventor_name', 'inventor_portfolio_size', + 'inventor_recency_growth_rate', 'inventor_quality_avg_cites', 'inventor_coverage_avg_family', + 'family_count', 'family_members', 'num_ipc', 'num_cpc', 'ipc_diversity', 'cpc_diversity', + 'IPC', 'CPC'] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + + for i, link in enumerate(links, 1): + pub_number = extract_pub_number(link) + total_links = len(links) + + if not pub_number: + print(f"[{i}/{total_links}] ⚠️ Não extraído do link/número: {link}") + fail_data = {f: 'N/A' for f in fieldnames} + fail_data.update({'link': link, 'publication_number': 'N/A'}) + writer.writerow(fail_data) + continue + + print(f"[{i}/{total_links}] Processando {pub_number}...") + + # 1. Extrai dados básicos e o NOME do PRIMEIRO Inventor (agora limpo) + basic_data = get_patent_data(pub_number) + + if not basic_data: + print(f" [FALHA TOTAL]: Não foi possível obter dados básicos de {pub_number}.") + fail_data = {f: 'FALHA' for f in fieldnames} + fail_data.update({'link': link, 'publication_number': pub_number, + 'num_ipc': 0, 'num_cpc': 0, 'ipc_diversity': 0, 'cpc_diversity': 0}) + writer.writerow(fail_data) + time.sleep(3) + continue + + # 2. Extrai Características do Inventor (usando o nome limpo) + inventor_name = basic_data.get('inventor_name') + inventor_metrics = {} + + if inventor_name: + print(f" [INVENTOR]: Extraindo características do Inventor principal: '{inventor_name}'.") + inventor_metrics = get_inventor_portfolio_metrics(inventor_name) + else: + print(" [ALERTA INVENTOR]: Inventor não encontrado na patente. Métricas setadas para 0/N/A.") + inventor_metrics = {'recency_growth_rate': 0, 'quality': 0, 'coverage': 0, 'portfolio_size': 0} + + # 3. CONSOLIDAÇÃO E ESCRITA + + row_data = { + 'link': link, + 'publication_number': pub_number, + 'inventor_name': inventor_name if inventor_name else 'N/A', + 'inventor_portfolio_size': inventor_metrics['portfolio_size'], + 'inventor_recency_growth_rate': inventor_metrics['recency_growth_rate'], + 'inventor_quality_avg_cites': inventor_metrics['quality'], + 'inventor_coverage_avg_family': inventor_metrics['coverage'], + 'family_count': basic_data['family_count'], + 'family_members': ', '.join(basic_data['family_members']), + 'num_ipc': basic_data['num_ipc'], + 'num_cpc': basic_data['num_cpc'], + 'ipc_diversity': basic_data['ipc_diversity'], + 'cpc_diversity': basic_data['cpc_diversity'], + 'IPC': ', '.join(basic_data['IPC']), + 'CPC': ', '.join(basic_data['CPC']) + } + + writer.writerow(row_data) + + time.sleep(3) + + print(f"\n✨ Processamento concluído. Resultados salvos em: {OUTPUT_FILE}") diff --git a/API INVENTORES.py b/API INVENTORES.py new file mode 100644 index 0000000..8a3b881 --- /dev/null +++ b/API INVENTORES.py @@ -0,0 +1,462 @@ +import requests +import xmltodict +import csv +import re +import time +import datetime +from requests.auth import HTTPBasicAuth +from typing import Optional, Dict, Any + +# ============================================================================== +# ⚠️ CONFIGURAÇÃO OBRIGATÓRIA +# ------------------------------------------------------------------------------ +CONSUMER_KEY = "3APxH4wxYoY7aZibQ4jDP9YGjezGbWzfcGji9xA6j3qY0ea1" +CONSUMER_SECRET = "OCeAZAVzxdlLZ80IJ4sootDyI8iKpleu3pD3qEGh1R1BYALewAfyRuhASN1XnJBk" + +# Arquivo de entrada: lista de nomes de inventores (um por linha) +INPUT_FILE = r"C:\Users\ATAF IP\COMPRAS\INVENTORES.txt" +OUTPUT_FILE = "inventores_metricas.csv" + +ACCESS_TOKEN = None +MAX_RETRIES = 5 +PORTFOLIO_SAMPLE_SIZE = 25 # Limite de patentes do portfólio para amostrar +RECENCY_YEARS_PERIOD = 5 # Duração de cada período para cálculo da Taxa de Crescimento + + +# ============================================================================== + + +def get_access_token(): + """Obtém o Access Token via OAuth 2.0.""" + global ACCESS_TOKEN + token_url = "https://ops.epo.org/3.2/auth/accesstoken" + try: + response = requests.post( + token_url, + data={'grant_type': 'client_credentials'}, + auth=HTTPBasicAuth(CONSUMER_KEY, CONSUMER_SECRET), + headers={'Content-Type': 'application/x-www-form-urlencoded'} + ) + response.raise_for_status() + token_data = response.json() + ACCESS_TOKEN = token_data.get('access_token') + print("✅ Access Token obtido com sucesso.") + return ACCESS_TOKEN + except requests.exceptions.RequestException as e: + print(f"❌ Erro ao obter o token: {e}") + return None + + +def make_ops_request(url: str, headers: Dict[str, str], identifier: str, max_retries: int = MAX_RETRIES) -> Optional[ + requests.Response]: + """Realiza a requisição com tratamento de retry e 429.""" + for attempt in range(max_retries): + try: + response = requests.get(url, headers=headers) + + if response.status_code == 429: + retry_after = response.headers.get('Retry-After') + try: + wait_time = int(retry_after) + except (TypeError, ValueError): + wait_time = 60 + + print( + f" [ALERTA 429 - {identifier}]: Limite atingido. Tentativa {attempt + 1}/{max_retries}. Esperando {wait_time}s...") + time.sleep(wait_time) + + if attempt == max_retries - 1: + print(f" [FALHA 429]: Tentativas esgotadas para {identifier}.") + return None + continue + + response.raise_for_status() + return response + + except requests.exceptions.HTTPError as e: + if response.status_code == 404: + return response + return None + + except requests.exceptions.RequestException: + if attempt < max_retries - 1: + print( + f" [ERRO CONEXÃO]: Falha para {identifier}. Tentando novamente... ({attempt + 1}/{max_retries})") + time.sleep(5) + continue + return None + + return None + + +def clean_inventor_name(name: str) -> str: + """Limpa e formata o nome do inventor.""" + if not name: + return None + + # Remove códigos de país [US], [BR], etc + name = re.sub(r'\s*\[[A-Z]{2,3}\]\s*', '', name).strip() + + # Remove pontuações extras + name = re.sub(r'[.,;]+$', '', name).strip() + + # Remove espaços múltiplos + name = re.sub(r'\s+', ' ', name) + + return name if name else None + + +def get_citation_and_date(pub_number: str, headers: Dict[str, str]) -> Dict[str, Any]: + """Obtém contagens de citações e data de publicação.""" + base_url = "https://ops.epo.org/rest-services" + citations_url = f"{base_url}/published-data/publication/epodoc/{pub_number}/citations" + biblio_url = f"{base_url}/published-data/publication/epodoc/{pub_number}/biblio" + + forward_cites, backward_cites, pub_date = 0, 0, None + + # Citações + cites_response = make_ops_request(citations_url, headers, f"Citação {pub_number}") + if cites_response and cites_response.status_code == 200: + try: + cites_data = xmltodict.parse(cites_response.text) + + forward_list = cites_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}).get( + 'ops:forward-citations', {}).get('citation', []) + if isinstance(forward_list, dict): forward_list = [forward_list] + forward_cites = len(forward_list) + + backward_list = cites_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}).get( + 'ops:backward-citations', {}).get('citation', []) + if isinstance(backward_list, dict): backward_list = [backward_list] + backward_cites = len(backward_list) + except Exception: + pass + + # Data de Publicação + biblio_response = make_ops_request(biblio_url, headers, f"Biblio Date {pub_number}") + if biblio_response and biblio_response.status_code == 200: + try: + biblio_data = xmltodict.parse(biblio_response.text) + date_raw = \ + biblio_data.get('ops:world-patent-data', {}).get('exchange-documents', {}).get('exchange-document', {}).get( + 'bibliographic-data', {}).get('publication-reference', {}).get('document-id', [{}])[0].get('date') + if date_raw: + pub_date = date_raw + except Exception: + pass + + return { + 'forward_cites': forward_cites, + 'backward_cites': backward_cites, + 'pub_date': pub_date + } + + +def get_inventor_portfolio_metrics(inventor_name: str) -> Dict[str, Any]: + """Calcula métricas completas do portfólio do inventor.""" + if not inventor_name or not ACCESS_TOKEN: + return { + 'portfolio_size': 0, + 'recency_growth_rate': 0, + 'quality_avg_cites': 0, + 'coverage_avg_family': 0, + 'total_forward_cites': 0, + 'total_backward_cites': 0, + 'avg_forward_cites': 0, + 'avg_backward_cites': 0, + 'years_active': 0, + 'first_patent_year': 'N/A', + 'last_patent_year': 'N/A', + 'patents_last_5_years': 0 + } + + headers = {'Authorization': f'Bearer {ACCESS_TOKEN}'} + base_url = "https://ops.epo.org/rest-services" + + # Limpa o nome do inventor + inventor_name = clean_inventor_name(inventor_name) + + # Encoding correto para a busca + encoded_name = requests.utils.quote(inventor_name) + search_url = f"{base_url}/published-data/search/biblio?q=in%3D{encoded_name}&Range=1-{PORTFOLIO_SAMPLE_SIZE}" + + print(f" [BUSCA PORTFÓLIO]: Buscando patentes do inventor '{inventor_name}'...") + print(f" [URL]: {search_url}") + + search_response = make_ops_request(search_url, headers, f"Busca {inventor_name}") + + total_patents_found = 0 + patent_ids = [] + + if search_response and search_response.status_code == 200: + try: + search_data = xmltodict.parse(search_response.text) + + # Debug: salvar resposta para análise + with open('debug_search_response.xml', 'w', encoding='utf-8') as debug_file: + debug_file.write(search_response.text) + + total_patents_found = int( + search_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}).get('@total-result-count', 0)) + + print(f" [RESULTADO]: {total_patents_found} patentes encontradas no portfólio total.") + + biblio_search = search_data.get('ops:world-patent-data', {}).get('ops:biblio-search', {}) + + # Tentar diferentes estruturas de resposta + search_result = biblio_search.get('ops:search-result', {}) + + # Estrutura 1: ops:publication-reference + hits = search_result.get('ops:publication-reference', []) + + # Estrutura 2: exchange-documents + if not hits: + exchange_docs = search_result.get('exchange-documents', {}) + if exchange_docs: + # Se já for lista, usa direto + if isinstance(exchange_docs, list): + hits = exchange_docs + else: + hits = exchange_docs.get('exchange-document', []) + + # Estrutura 3: Direto no biblio-search + if not hits: + hits = biblio_search.get('ops:publication-reference', []) + + # Estrutura 4: Verificar se search-result tem exchange-document direto + if not hits: + hits = search_result.get('exchange-document', []) + + if isinstance(hits, dict): + hits = [hits] + + print(f" [DEBUG HITS]: Encontrados {len(hits)} resultados para processar") + + for idx, hit in enumerate(hits): + # Tentar extrair document-id de diferentes locais + doc_id_list = hit.get('document-id', []) + + # Se não encontrou, tentar em bibliographic-data + if not doc_id_list: + bib_data = hit.get('bibliographic-data', {}) + pub_ref = bib_data.get('publication-reference', {}) + doc_id_list = pub_ref.get('document-id', []) + + if isinstance(doc_id_list, dict): + doc_id_list = [doc_id_list] + + for doc_id in doc_id_list: + doc_num = doc_id.get('doc-number') + if doc_num: + patent_ids.append(doc_num) + print(f" [{idx + 1}] Adicionado: {doc_num}") + break + + except Exception as e: + print(f" [ERRO PARSING BUSCA]: {e}") + import traceback + traceback.print_exc() + return { + 'portfolio_size': 0, + 'recency_growth_rate': 0, + 'quality_avg_cites': 0, + 'coverage_avg_family': 0, + 'total_forward_cites': 0, + 'total_backward_cites': 0, + 'avg_forward_cites': 0, + 'avg_backward_cites': 0, + 'years_active': 0, + 'first_patent_year': 'N/A', + 'last_patent_year': 'N/A', + 'patents_last_5_years': 0 + } + else: + print( + f" [ALERTA]: Nenhum resultado na busca. Status: {search_response.status_code if search_response else 'None'}") + + if not patent_ids: + print(f" [ALERTA PORTFÓLIO]: Nenhuma patente encontrada na amostra.") + return { + 'portfolio_size': total_patents_found, + 'recency_growth_rate': 0, + 'quality_avg_cites': 0, + 'coverage_avg_family': 0, + 'total_forward_cites': 0, + 'total_backward_cites': 0, + 'avg_forward_cites': 0, + 'avg_backward_cites': 0, + 'years_active': 0, + 'first_patent_year': 'N/A', + 'last_patent_year': 'N/A', + 'patents_last_5_years': 0 + } + + # Processamento da amostra + total_forward_cites = 0 + total_backward_cites = 0 + total_family_size = 0 + publication_years = {} + current_year = datetime.datetime.now().year + + print(f" [CALC. MÉTRICAS]: Processando {len(patent_ids)} patentes da amostra...") + + for idx, pub_id in enumerate(patent_ids, 1): + print(f" [{idx}/{len(patent_ids)}] Processando {pub_id}...") + + metrics = get_citation_and_date(pub_id, headers) + + total_forward_cites += metrics['forward_cites'] + total_backward_cites += metrics['backward_cites'] + + if metrics['pub_date']: + try: + year = int(metrics['pub_date'][:4]) + publication_years[year] = publication_years.get(year, 0) + 1 + except (ValueError, TypeError): + pass + + # Família + family_url = f"{base_url}/family/publication/epodoc/{pub_id}" + family_response = make_ops_request(family_url, headers, f"Família {pub_id}") + + if family_response and family_response.status_code == 200: + try: + family_data = xmltodict.parse(family_response.text) + family_members_raw = family_data.get('ops:world-patent-data', {}).get('ops:patent-family', {}).get( + 'ops:family-member', []) + + if isinstance(family_members_raw, dict): + family_members_raw = [family_members_raw] + + family_count = len(family_members_raw) + total_family_size += family_count + except Exception: + pass + + time.sleep(1) + + sample_count = len(patent_ids) + + # Cálculo das métricas + total_cites = total_forward_cites + total_backward_cites + quality = round(total_cites / sample_count, 2) if sample_count > 0 else 0 + avg_forward = round(total_forward_cites / sample_count, 2) if sample_count > 0 else 0 + avg_backward = round(total_backward_cites / sample_count, 2) if sample_count > 0 else 0 + coverage = round(total_family_size / sample_count, 2) if sample_count > 0 else 0 + + # Anos de atividade + years_list = list(publication_years.keys()) + first_year = min(years_list) if years_list else 'N/A' + last_year = max(years_list) if years_list else 'N/A' + years_active = (last_year - first_year + 1) if isinstance(first_year, int) and isinstance(last_year, int) else 0 + + # Patentes nos últimos 5 anos + patents_last_5 = sum(count for year, count in publication_years.items() if year >= current_year - 5) + + # Recência (Taxa de Crescimento) + year_end_A = current_year + year_start_A = year_end_A - RECENCY_YEARS_PERIOD + 1 + year_start_B = year_start_A - RECENCY_YEARS_PERIOD + + patents_A = sum(count for year, count in publication_years.items() if year >= year_start_A and year <= year_end_A) + patents_B = sum(count for year, count in publication_years.items() if year >= year_start_B and year < year_start_A) + + recency_growth_rate = 0.0 + if patents_B > 0: + recency_growth_rate = round((patents_A - patents_B) / patents_B, 4) + elif patents_A > 0: + recent_years_with_patents = [year for year in publication_years.keys() if + year >= year_start_A and year <= year_end_A] + min_recent_year = min(recent_years_with_patents) if recent_years_with_patents else year_end_A + years_active_recent = current_year - min_recent_year + 1 + recency_growth_rate = round(patents_A / years_active_recent, 4) + + print(f" [MÉTRICAS]: Qualidade: {quality}, Cobertura: {coverage}, Recência: {recency_growth_rate}") + + return { + 'portfolio_size': total_patents_found, + 'recency_growth_rate': recency_growth_rate, + 'quality_avg_cites': quality, + 'coverage_avg_family': coverage, + 'total_forward_cites': total_forward_cites, + 'total_backward_cites': total_backward_cites, + 'avg_forward_cites': avg_forward, + 'avg_backward_cites': avg_backward, + 'years_active': years_active, + 'first_patent_year': first_year, + 'last_patent_year': last_year, + 'patents_last_5_years': patents_last_5 + } + + +# === FLUXO PRINCIPAL === +if __name__ == "__main__": + + if not get_access_token(): + print("\n❌ O script não pode continuar sem um Access Token válido.") + exit() + + # Lê lista de inventores + try: + with open(INPUT_FILE, 'r', encoding='utf-8') as f: + inventors = [line.strip() for line in f.readlines() if line.strip()] + + except FileNotFoundError: + print(f"\n❌ ERRO: Arquivo de entrada não encontrado: {INPUT_FILE}") + exit() + + print(f"\n📋 Total de inventores a processar: {len(inventors)}\n") + + # Cria arquivo CSV de saída + with open(OUTPUT_FILE, 'w', newline='', encoding='utf-8') as csvfile: + + fieldnames = [ + 'inventor_name', + 'portfolio_size', + 'recency_growth_rate', + 'quality_avg_cites', + 'coverage_avg_family', + 'total_forward_cites', + 'total_backward_cites', + 'avg_forward_cites', + 'avg_backward_cites', + 'years_active', + 'first_patent_year', + 'last_patent_year', + 'patents_last_5_years' + ] + + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + + for i, inventor_name in enumerate(inventors, 1): + print(f"\n[{i}/{len(inventors)}] ========== Processando Inventor: {inventor_name} ==========") + + # Extrai métricas do inventor + metrics = get_inventor_portfolio_metrics(inventor_name) + + # Prepara dados para escrita + row_data = { + 'inventor_name': inventor_name, + 'portfolio_size': metrics['portfolio_size'], + 'recency_growth_rate': metrics['recency_growth_rate'], + 'quality_avg_cites': metrics['quality_avg_cites'], + 'coverage_avg_family': metrics['coverage_avg_family'], + 'total_forward_cites': metrics['total_forward_cites'], + 'total_backward_cites': metrics['total_backward_cites'], + 'avg_forward_cites': metrics['avg_forward_cites'], + 'avg_backward_cites': metrics['avg_backward_cites'], + 'years_active': metrics['years_active'], + 'first_patent_year': metrics['first_patent_year'], + 'last_patent_year': metrics['last_patent_year'], + 'patents_last_5_years': metrics['patents_last_5_years'] + } + + writer.writerow(row_data) + + print(f" ✅ Dados salvos para {inventor_name}") + + # Pausa entre inventores para não sobrecarregar a API + time.sleep(3) + + print(f"\n✨ Processamento concluído! Resultados salvos em: {OUTPUT_FILE}") \ No newline at end of file diff --git a/Data/wipoResults.xls b/Data/wipoResults.xls deleted file mode 100644 index c3a6b19..0000000 Binary files a/Data/wipoResults.xls and /dev/null differ diff --git a/Data/wipo_with_methanol.xls b/Data/wipo_with_methanol.xls new file mode 100644 index 0000000..3a85a89 Binary files /dev/null and b/Data/wipo_with_methanol.xls differ diff --git a/Data/wipo_without_methanol.xls b/Data/wipo_without_methanol.xls new file mode 100644 index 0000000..3d92588 Binary files /dev/null and b/Data/wipo_without_methanol.xls differ diff --git a/GOOGLE WEBSCRAPPING TRIAL.py b/GOOGLE WEBSCRAPPING TRIAL.py new file mode 100644 index 0000000..41cb816 --- /dev/null +++ b/GOOGLE WEBSCRAPPING TRIAL.py @@ -0,0 +1,243 @@ +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from selenium.common.exceptions import TimeoutException +from bs4 import BeautifulSoup +from openpyxl import load_workbook +import spacy +from collections import Counter +import re +from datetime import datetime + +# Caminho do Excel +excel_path = r"C:\Users\Licitações\Downloads\WEBSCRAPPING.xlsx" + +# Abre o Excel +wb = load_workbook(excel_path) +ws = wb["Planilha1"] + +# Configurações do Chrome +chrome_options = Options() +# chrome_options.add_argument("--headless") # descomente se quiser rodar sem abrir janela +driver = webdriver.Chrome(options=chrome_options) +wait = WebDriverWait(driver, 10) + +# Carrega modelo spaCy +nlp = spacy.load("en_core_web_sm") + +# Contadores de progresso +total_links = 0 +links_modificados = 0 +links_sem_dados = 0 + + +def extract_from_soup(soup, driver): + """Extrai todas as informações da patente e retorna em um dicionário.""" + result = {} + + # Inventores + inventors = [] + important_people = soup.select("dl.important-people.style-scope.patent-result") + if important_people: + dl = important_people[0] + dt_inventor = dl.find("dt", string=lambda x: x and "Inventor" in x) + if dt_inventor: + for dd in dt_inventor.find_all_next("dd"): + state = dd.find("state-modifier") + if state and state.has_attr("data-inventor"): + inventors.append(state["data-inventor"]) + else: + break + result["inventors_count"] = len(inventors) + + # Imagens + image_tags = soup.select("section#thumbnails img") + result["images_count"] = len(image_tags) + + # Backward citations + backward = [] + citations_section = soup.find("h3", id="patentCitations") + if citations_section: + table = citations_section.find_next("div", class_="responsive-table") + if table: + for m in table.find_all("state-modifier"): + data = m.get("data-result", "") + if "patent/" in data: + backward.append(data.split("patent/")[-1].split("/")[0]) + result["backward_count"] = len(backward) + + # Forward citations + cited_by = [] + cited_by_section = soup.find("h3", id="citedBy") + if cited_by_section: + table = cited_by_section.find_next("div", class_="responsive-table") + if table: + for m in table.find_all("state-modifier"): + data = m.get("data-result", "") + if "patent/" in data: + cited_by.append(data.split("patent/")[-1].split("/")[0]) + result["forward_count"] = len(cited_by) + + # Título e substantivos + title_tag = soup.find("h1", class_="scroll-target style-scope patent-result") + title_text = title_tag.get_text(strip=True) if title_tag else "" + result["title_text"] = title_text + doc = nlp(title_text) + result["num_nouns"] = sum(1 for token in doc if token.pos_ == "NOUN") + + # Priority apps + priority_apps = [] + priority_section = soup.find("h3", id="appsClaimingPriority") + if priority_section: + table = priority_section.find_next("div", class_="responsive-table style-scope patent-result") + if table: + for row_div in table.find_all("div", class_="tr style-scope patent-result"): + if row_div.find("span", class_="th style-scope patent-result"): + continue + state = row_div.find("state-modifier") + if state and state.has_attr("data-result"): + priority_apps.append(state["data-result"]) + result["priority_count"] = len(priority_apps) + + # Similaridade título/descrição + try: + desc_element = wait.until( + EC.presence_of_element_located((By.XPATH, "//patent-text/div/section")) + ) + description_text = desc_element.text.strip() + except TimeoutException: + description_text = "" + + doc_desc = nlp(description_text) + desc_words = [t.lemma_.lower() for t in doc_desc if t.is_alpha and not t.is_stop] + word_freq = Counter(desc_words) + top_10 = [w for w, _ in word_freq.most_common(10)] + + doc_title = nlp(title_text) + title_words = [t.lemma_.lower() for t in doc_title if t.is_alpha and not t.is_stop] + result["similarity_score"] = sum(title_words.count(w) for w in top_10) + + # NPL citations + num_npl = 0 + npl_section = soup.find("h3", id="nplCitations") + if npl_section: + match = re.search(r"\((\d+)\)", npl_section.get_text(strip=True)) + if match: + num_npl = int(match.group(1)) + else: + table = npl_section.find_next("div", class_="responsive-table") + if table: + num_npl = len(table.find_all("div", class_="tr style-scope patent-result")) + result["npl_count"] = num_npl + + # Número de claims + num_claims = 0 + for c in soup.find_all("div", class_="flex style-scope patent-result"): + text = c.get_text(strip=True) + if "Claims" in text or "Reivindicações" in text: + span = c.find("span", class_="style-scope patent-result") + if span: + m = re.search(r"\((\d+)\)", span.get_text(strip=True)) + if m: + num_claims = int(m.group(1)) + break + result["num_claims"] = num_claims + + # Data de aplicação + app_date_tag = soup.find("div", class_="filed style-scope application-timeline") + if app_date_tag: + app_date = app_date_tag.get_text(strip=True) + try: + app_date = datetime.strptime(app_date, "%Y-%m-%d").strftime("%d-%m-%Y") + except ValueError: + pass + else: + app_date = "" + result["app_date"] = app_date + + return result + + +# Loop principal +for row in range(2, 102): + url_original = ws[f"A{row}"].value + if not url_original: + continue + + total_links += 1 + print(f"\n[Linha {row}] Acessando: {url_original}") + urls_to_try = [url_original] + + # cria variação /BRPI se aplicável + if "/patent/BR" in url_original and "BRPI" not in url_original: + urls_to_try.append(url_original.replace("/patent/BR", "/patent/BRPI", 1)) + + final_results = None + link_used = "Link original" + + for idx, url in enumerate(urls_to_try, start=1): + try: + driver.get(url) + wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "body"))) + soup = BeautifulSoup(driver.page_source, "html.parser") + results = extract_from_soup(soup, driver) + + found_any = any([ + results["inventors_count"], + results["images_count"], + results["backward_count"], + results["forward_count"], + results["num_nouns"], + results["priority_count"], + results["similarity_score"], + results["npl_count"], + results["num_claims"], + bool(results["app_date"]), + bool(results["title_text"]), + ]) + + if found_any: + final_results = results + if url != url_original: + ws[f"A{row}"] = url + link_used = "Link modificado" + links_modificados += 1 + print(f" ✅ Dados encontrados (tentativa {idx})") + break + else: + print(f" ⚠️ Nenhum dado na tentativa {idx}") + except TimeoutException: + print(f" ⏳ Timeout ao acessar {url}") + except Exception as e: + print(f" ❌ Erro inesperado: {e}") + + # Grava resultados + if final_results: + ws[f"B{row}"] = final_results["inventors_count"] + ws[f"C{row}"] = final_results["images_count"] + ws[f"D{row}"] = final_results["backward_count"] + ws[f"E{row}"] = final_results["forward_count"] + ws[f"F{row}"] = final_results["num_nouns"] + ws[f"G{row}"] = final_results["priority_count"] + ws[f"H{row}"] = final_results["similarity_score"] + ws[f"I{row}"] = final_results["npl_count"] + ws[f"J{row}"] = final_results["num_claims"] + ws[f"K{row}"] = final_results["app_date"] + ws[f"L{row}"] = link_used + else: + ws[f"L{row}"] = "Sem dados" + links_sem_dados += 1 + +# Finaliza +driver.quit() +wb.save(excel_path) + +# 📊 Resumo final +print("\n====================== RESUMO ======================") +print(f"🔍 Total de patentes analisadas: {total_links}") +print(f"🧩 Links modificados: {links_modificados}") +print(f"⚠️ Patentes sem dados: {links_sem_dados}") +print("✅ Processo concluído. Dados salvos no Excel.") +print("====================================================") diff --git a/INVENTORES.txt b/INVENTORES.txt new file mode 100644 index 0000000..a504b66 --- /dev/null +++ b/INVENTORES.txt @@ -0,0 +1,3 @@ +PINTO JOSE RICARDO MEDEIROS +GALVAO CELIA MARIA ARAUJO +AUDI RICARDO \ No newline at end of file diff --git a/PATENTES ADAPTADAS.txt b/PATENTES ADAPTADAS.txt new file mode 100644 index 0000000..554c40d --- /dev/null +++ b/PATENTES ADAPTADAS.txt @@ -0,0 +1,6242 @@ +WO2013142934 +BR102012032807 +BR102012007299 +BR9905240 +BR9905239 +WO2015135046 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702351 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602148 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113262 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201388 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048238 +BR112018074366 +BR0301912 +BR0103326 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142935 +BR102012032807 +BR102012007299 +BR9905238 +BR9905237 +WO2015135047 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702352 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602149 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113263 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201389 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048239 +BR112018074366 +BR0095260 +BR0293846 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142936 +BR102012032807 +BR102012007299 +BR9905236 +BR9905235 +WO2015135048 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702353 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602150 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113264 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201390 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048240 +BR112018074366 +BR0492432 +BR0691018 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142937 +BR102012032807 +BR102012007299 +BR9905234 +BR9905233 +WO2015135049 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702354 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602151 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113265 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201391 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048241 +BR112018074366 +BR0889604 +BR1088190 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142938 +BR102012032807 +BR102012007299 +BR9905232 +BR9905231 +WO2015135050 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702355 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602152 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113266 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201392 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048242 +BR112018074366 +BR1286776 +BR1485362 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142939 +BR102012032807 +BR102012007299 +BR9905230 +BR9905229 +WO2015135051 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702356 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602153 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113267 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201393 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048243 +BR112018074366 +BR1683948 +BR1882534 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142940 +BR102012032807 +BR102012007299 +BR9905228 +BR9905227 +WO2015135052 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702357 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602154 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113268 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201394 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048244 +BR112018074366 +BR2081120 +BR2279706 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142941 +BR102012032807 +BR102012007299 +BR9905226 +BR9905225 +WO2015135053 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702358 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602155 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113269 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201395 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048245 +BR112018074366 +BR2478292 +BR2676878 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142942 +BR102012032807 +BR102012007299 +BR9905224 +BR9905223 +WO2015135054 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702359 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602156 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113270 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201396 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048246 +BR112018074366 +BR2875464 +BR3074050 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142943 +BR102012032807 +BR102012007299 +BR9905222 +BR9905221 +WO2015135055 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702360 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602157 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113271 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201397 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048247 +BR112018074366 +BR3272636 +BR3471222 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142944 +BR102012032807 +BR102012007299 +BR9905220 +BR9905219 +WO2015135056 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702361 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602158 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113272 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201398 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048248 +BR112018074366 +BR3669808 +BR3868394 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142945 +BR102012032807 +BR102012007299 +BR9905218 +BR9905217 +WO2015135057 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702362 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602159 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113273 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201399 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048249 +BR112018074366 +BR4066980 +BR4265566 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142946 +BR102012032807 +BR102012007299 +BR9905216 +BR9905215 +WO2015135058 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702363 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602160 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113274 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201400 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048250 +BR112018074366 +BR4464152 +BR4662738 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142947 +BR102012032807 +BR102012007299 +BR9905214 +BR9905213 +WO2015135059 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702364 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602161 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113275 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201401 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048251 +BR112018074366 +BR4861324 +BR5059910 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142948 +BR102012032807 +BR102012007299 +BR9905212 +BR9905211 +WO2015135060 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702365 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602162 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113276 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201402 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048252 +BR112018074366 +BR5258496 +BR5457082 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142949 +BR102012032807 +BR102012007299 +BR9905210 +BR9905209 +WO2015135061 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702366 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602163 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113277 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201403 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048253 +BR112018074366 +BR5655668 +BR5854254 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142950 +BR102012032807 +BR102012007299 +BR9905208 +BR9905207 +WO2015135062 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702367 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602164 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113278 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201404 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048254 +BR112018074366 +BR6052840 +BR6251426 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142951 +BR102012032807 +BR102012007299 +BR9905206 +BR9905205 +WO2015135063 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702368 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602165 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113279 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201405 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048255 +BR112018074366 +BR6450012 +BR6648598 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142952 +BR102012032807 +BR102012007299 +BR9905204 +BR9905203 +WO2015135064 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702369 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602166 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113280 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201406 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048256 +BR112018074366 +BR6847184 +BR7045770 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142953 +BR102012032807 +BR102012007299 +BR9905202 +BR9905201 +WO2015135065 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702370 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602167 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113281 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201407 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048257 +BR112018074366 +BR7244356 +BR7442942 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142954 +BR102012032807 +BR102012007299 +BR9905200 +BR9905199 +WO2015135066 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702371 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602168 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113282 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201408 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048258 +BR112018074366 +BR7641528 +BR7840114 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142955 +BR102012032807 +BR102012007299 +BR9905198 +BR9905197 +WO2015135067 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702372 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602169 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113283 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201409 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048259 +BR112018074366 +BR8038700 +BR8237286 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142956 +BR102012032807 +BR102012007299 +BR9905196 +BR9905195 +WO2015135068 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702373 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602170 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113284 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201410 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048260 +BR112018074366 +BR8435872 +BR8634458 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142957 +BR102012032807 +BR102012007299 +BR9905194 +BR9905193 +WO2015135069 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702374 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602171 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113285 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201411 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048261 +BR112018074366 +BR8833044 +BR9031630 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142958 +BR102012032807 +BR102012007299 +BR9905192 +BR9905191 +WO2015135070 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702375 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602172 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113286 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201412 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048262 +BR112018074366 +BR9230216 +BR9428802 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142959 +BR102012032807 +BR102012007299 +BR9905190 +BR9905189 +WO2015135071 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702376 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602173 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113287 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201413 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048263 +BR112018074366 +BR9627388 +BR9825974 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142960 +BR102012032807 +BR102012007299 +BR9905188 +BR9905187 +WO2015135072 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702377 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602174 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113288 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201414 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048264 +BR112018074366 +BR10024560 +BR10223146 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142961 +BR102012032807 +BR102012007299 +BR9905186 +BR9905185 +WO2015135073 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702378 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602175 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113289 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201415 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048265 +BR112018074366 +BR10421732 +BR10620318 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142962 +BR102012032807 +BR102012007299 +BR9905184 +BR9905183 +WO2015135074 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702379 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602176 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113290 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201416 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048266 +BR112018074366 +BR10818904 +BR11017490 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142963 +BR102012032807 +BR102012007299 +BR9905182 +BR9905181 +WO2015135075 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702380 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602177 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113291 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201417 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048267 +BR112018074366 +BR11216076 +BR11414662 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142964 +BR102012032807 +BR102012007299 +BR9905180 +BR9905179 +WO2015135076 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702381 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602178 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113292 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201418 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048268 +BR112018074366 +BR11613248 +BR11811834 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142965 +BR102012032807 +BR102012007299 +BR9905178 +BR9905177 +WO2015135077 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702382 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602179 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113293 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201419 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048269 +BR112018074366 +BR12010420 +BR12209006 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142966 +BR102012032807 +BR102012007299 +BR9905176 +BR9905175 +WO2015135078 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702383 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602180 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113294 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201420 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048270 +BR112018074366 +BR12407592 +BR12606178 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142967 +BR102012032807 +BR102012007299 +BR9905174 +BR9905173 +WO2015135079 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702384 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602181 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113295 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201421 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048271 +BR112018074366 +BR12804764 +BR13003350 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142968 +BR102012032807 +BR102012007299 +BR9905172 +BR9905171 +WO2015135080 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702385 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602182 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113296 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201422 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048272 +BR112018074366 +BR13201936 +BR13400522 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142969 +BR102012032807 +BR102012007299 +BR9905170 +BR9905169 +WO2015135081 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702386 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602183 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113297 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201423 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048273 +BR112018074366 +BR13599108 +BR13797694 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142970 +BR102012032807 +BR102012007299 +BR9905168 +BR9905167 +WO2015135082 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702387 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602184 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113298 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201424 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048274 +BR112018074366 +BR13996280 +BR14194866 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142971 +BR102012032807 +BR102012007299 +BR9905166 +BR9905165 +WO2015135083 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702388 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602185 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113299 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201425 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048275 +BR112018074366 +BR14393452 +BR14592038 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142972 +BR102012032807 +BR102012007299 +BR9905164 +BR9905163 +WO2015135084 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702389 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602186 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113300 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201426 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048276 +BR112018074366 +BR14790624 +BR14989210 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142973 +BR102012032807 +BR102012007299 +BR9905162 +BR9905161 +WO2015135085 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702390 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602187 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113301 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201427 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048277 +BR112018074366 +BR15187796 +BR15386382 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142974 +BR102012032807 +BR102012007299 +BR9905160 +BR9905159 +WO2015135086 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702391 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602188 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113302 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201428 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048278 +BR112018074366 +BR15584968 +BR15783554 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142975 +BR102012032807 +BR102012007299 +BR9905158 +BR9905157 +WO2015135087 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702392 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602189 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113303 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201429 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048279 +BR112018074366 +BR15982140 +BR16180726 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142976 +BR102012032807 +BR102012007299 +BR9905156 +BR9905155 +WO2015135088 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702393 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602190 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113304 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201430 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048280 +BR112018074366 +BR16379312 +BR16577898 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142977 +BR102012032807 +BR102012007299 +BR9905154 +BR9905153 +WO2015135089 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702394 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602191 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113305 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201431 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048281 +BR112018074366 +BR16776484 +BR16975070 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142978 +BR102012032807 +BR102012007299 +BR9905152 +BR9905151 +WO2015135090 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702395 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602192 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113306 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201432 +BR102021005636 +BR0708416 +BR0903273 +BR0801567 +BR1001144 +BR102012026872 +BR0622271 +BR0903040 +BR0804753 +BR102021003691 +WO2011048282 +BR112018074366 +BR17173656 +BR17372242 +WO2014106220 +WO2015039065 +WO2015019362 +BR102012023582 +WO2013142979 +BR102012032807 +BR102012007299 +BR9905150 +BR9905149 +WO2015135091 +BR0104107 +BR0014789 +BR0206132 +BR0203596 +BRMU8702396 +BR132021013813 +BR0207356 +BR1107340 +BR0104400 +BR102015021056 +BR9602193 +BR102021013005 +BR0106355 +BR9800336 +BR0007342 +BR102021003264 +BR112022012432 +BR0113307 +BR102013000525 +BR112017025511 +BR102020026212 +BR0201433 +BR102021005636 +BR112023003329 +WO2016016528 +WO2022051659 +BR0112716 +WO2012030711 +BR9102903 +BR9612743 +BR0711139 +WO2013116492 +BR0417720 +BR0214005 +BR0705915 +BR0313137 +BR8002061 +BR0115201 +BR0106413 +WO2013011295 +WO2019185843 +BR0211808 +BR102012028238 +BR0214549 +BR9808582 +BR0015784 +BR9910455 +BR0908659 +BR0116751 +BR0715109 +BR0203386 +BR112015027630 +BR0616796 +BR0800237 +WO2016046242 +BR7703676 +BR8606086 +BR0701010 +BR1000885 +BR0008178 +BR0705107 +BR112018004861 +WO2013052971 +WO2008150463 +BR8207521 +BR0821025 +BR6898619 +BR0413944 +WO2013164713 +BR102012026279 +BR0811465 +WO2014074066 +WO2015161877 +BR0207129 +BR112022018227 +BR0305167 +BR102021008484 +BR9710963 +BR0005833 +BR8402569 +BR1100741 +BR0010075 +WO2013040514 +BR0116675 +WO2019156854 +WO2012013646 +BR0707372 +BR0812267 +BR112013008387 +BR112022012615 +BR9808475 +BR1102238 +BR0715435 +BR102012032851 +BR0202602 +WO2022064351 +BR0615649 +WO2010099300 +BR8001310 +BR0313979 +BR0710303 +WO2013030116 +BR122012016827 +BR122012016826 +BR122012016825 +WO2001094292 +WO2003033540 +BR0708477 +BR122014004509 +BR0313473 +BR7707906 +BR8406451 +WO2011039611 +BR0211809 +BR8103665 +BR9907296 +BR112022015259 +BR0015385 +BR9909655 +WO2010028206 +WO2011021955 +BR0107816 +BR112013007616 +WO2020239338 +WO2011097197 +BR6908405 +WO2022130344 +WO2010099307 +BR102014009714 +BR112023002683 +WO2009003292 +BR0608580 +BR0317291 +BR102020026200 +BR112012024286 +BR8704349 +WO2018207694 +WO2004086878 +WO2014099707 +WO2010099309 +WO2017100907 +WO2008134390 +BR6911001 +WO2015077904 +BR0100752 +BR0905410 +WO2014096648 +BR9902606 +BR0612381 +BR0403175 +BR8807524 +BR0712398 +WO2014168889 +WO2017143118 +BR112018006089 +BR7504899 +BR0913830 +BR0312836 +WO2019086404 +BR0110695 +BR0806244 +WO2018023474 +WO2020185096 +BR0112251 +WO2019206994 +BR0803657 +BRMU8602942 +BR0618164 +WO2013119306 +BR9804026 +BR0308093 +WO2012025810 +BR0711627 +BR112019000839 +BR112022010438 +WO2009089866 +BR102012023857 +WO2012150683 +BR9814519 +BR9913474 +BR102020025449 +BR9802403 +BR7804408 +BR8501437 +BR0309301 +WO2008031811 +BR8403970 +BR112023001835 +BR0106663 +BR0411028 +BR0309145 +BR0010069 +WO2013116611 +WO2014097170 +BR0614215 +WO2019226972 +BRC10801836 +BR8406644 +WO2012142094 +BR9714185 +BR0108987 +BR112017006500 +BR7906334 +BR112023001974 +WO2012148459 +BR9407355 +WO2017177165 +BR9601818 +BR0005475 +BR0011941 +BR6786669 +BR9910307 +BR0107900 +WO2017202582 +BR9806786 +BR0619274 +BR0616222 +BR0813522 +BR8806934 +BR112014016848 +BR0621143 +BR0105179 +BR112014007687 +BR112022026649 +BR0401751 +WO2008068064 +BR8306714 +BR0211229 +BR0206288 +BR0703964 +BR112022011879 +BR9916754 +BR9811200 +BR112015008824 +BR9902677 +WO2021018717 +BR9714196 +WO2006012989 +BR0611610 +BR0013463 +BR0215982 +BR7705517 +WO2014086908 +BR9506996 +WO2013085870 +BR9810995 +BR8501963 +BR9201880 +BR0212971 +BR9915131 +BR9706692 +BR112017002448 +WO2014159382 +BR9910311 +WO2018104677 +BR0308434 +BR7908370 +BR0112285 +BR9712502 +BR0013681 +BR7900387 +BR0515922 +BR9917289 +WO2014093799 +WO2015088707 +BR7901479 +WO2007141404 +BR112019003416 +BR0301958 +WO2016077942 +WO2013017497 +WO2013189853 +BR112022017691 +BR0208079 +BR102021010052 +WO2018083301 +BR0113304 +WO2018087033 +BR0111239 +BR0208573 +BR9911729 +WO2016080550 +BR9711554 +BR9507268 +BR9405668 +WO2013014160 +BR0712112 +BR9811437 +WO2019207091 +WO2009006317 +BR0706806 +BR112021026306 +BR0114465 +BR0106010 +BR9806130 +BR0309347 +BR0114434 +BR0314075 +WO2017059010 +BR8307058 +BR8300381 +BR0013903 +BR102012020798 +WO2012076560 +BR9813115 +BR7800464 +BR0508693 +BR0209448 +BR8706531 +BR9808500 +WO2007017018 +BR9607105 +WO2017091330 +WO2018118740 +BR112022008546 +BR0205063 +BR102012004631 +BR9902784 +BR0701663 +BR9711078 +BR9813792 +BR0606632 +WO2008135665 +BR0707394 +WO2008022823 +BR0615132 +BR0001550 +BR112023004184 +BR112022018505 +BR112022008544 +BR0819551 +BR0116752 +WO2020063425 +WO2011088972 +BR112019018673 +BR0208056 +BR0707274 +BR0107428 +BR0314306 +BR0014220 +WO2016132760 +WO2007060893 +WO2005073161 +BR0614467 +BR9909460 +BR7404025 +BR8404539 +BR0713409 +BR112022005830 +BR9906651 +BR9902046 +WO2012082157 +BR9803955 +BR0901633 +BR0917666 +WO2008112727 +WO2022129903 +WO2005115965 +BR0415176 +BR9916054 +BR1002099 +BR0507874 +BR122019002801 +BR8804494 +WO2008051349 +BR0112651 +BR1101444 +BR0704611 +BR112022010303 +WO2018059745 +BR9807451 +BR0108128 +WO2010006834 +BR112015031263 +BR0112214 +BR0314230 +BR0213190 +WO2001044157 +BR112022020754 +BR9206118 +BR9813670 +BR6911006 +BR0116456 +BR0708203 +WO2021060861 +BR0209556 +BR0013804 +BR0621142 +BR112022008860 +WO2011117728 +BR102012007855 +WO2015101709 +BR0014681 +WO2013171302 +BR112018076592 +BR8704658 +WO2014151179 +BR0107708 +BR9814526 +WO2018001631 +WO2011037975 +BR7708301 +BR0706618 +WO2012077717 +BR112019020035 +BR8004142 +BR0314481 +BR0302324 +BR1006027 +WO2021110680 +BR0307896 +BR0014634 +BR0408680 +WO2012031884 +WO2010000382 +WO2015053026 +BR9809282 +BR0714120 +WO2020206863 +WO2017046110 +BR0004788 +WO2010033979 +BR0108825 +WO2014184345 +BR112020004922 +WO2009152285 +BR0605525 +BR0618037 +BR112016027080 +WO2008144878 +BR9815362 +BR112020003962 +WO2001054502 +BR8802024 +WO2009134276 +BR0112128 +BR0803573 +WO2010057961 +BR0410843 +BR0304725 +BR0110428 +BRMU6702739 +BR0811811 +BR0811809 +BR9608616 +BR112019022427 +BR112022020902 +BR9709373 +BR9909463 +BR0810184 +WO2003050100 +BR9003036 +BR9712018 +WO2017087846 +BR0622099 +WO2013156399 +BR0102576 +WO2011084784 +WO2008132154 +BR112018012788 +BR9810561 +BR9911708 +BR1101165 +WO1997011051 +WO2008151417 +BR9904202 +BR102013011131 +BR0216028 +BR8304160 +BR8106357 +WO2013087211 +BR0411030 +BR9903301 +BR0619100 +WO2020127708 +BR0620606 +BR9908512 +BR0008063 +BR0717228 +BR112022021933 +WO2008030160 +BR0616533 +WO2013000945 +BR0801672 +BR0304014 +BR0712518 +BR8102660 +BR0208742 +BR0709261 +BR9601555 +WO2017211784 +BR0706612 +BR0304463 +BR112019017209 +BR0811758 +BR9812935 +WO2005085162 +BR9900997 +WO2007074692 +BR9910953 +BR9910957 +BR0607257 +BR0313110 +BR0904979 +BR9813493 +BR112022022465 +BR0108850 +BR9306668 +BR112022014607 +BR0114962 +WO2013104924 +WO2014131743 +BR0304624 +WO2012078311 +BR9714127 +WO2006011779 +BR9813800 +BR0418990 +BR9812534 +WO2015054578 +BR0114143 +BR0615131 +BR9713038 +BR112023005254 +WO2010101359 +BR0417442 +BR0014806 +BR8001440 +BR9408267 +BR102012009741 +BR112021007290 +BR0113209 +BR0613808 +BR9905084 +BR0719435 +WO2010010309 +WO2016062821 +BR0818432 +BR0814640 +WO2014051090 +WO2019120753 +WO2003091203 +WO2017210780 +BR9103569 +WO1994027942 +WO2016024218 +BR0301141 +BR112014020052 +WO2018069372 +BR0416085 +BR112022004586 +BR0415046 +WO2014143938 +BR9307718 +BR9815544 +BR7606810 +BR112020004257 +BR0110589 +BR0704159 +BR8907250 +WO2011000463 +WO2012088180 +BR112022027128 +BR8801428 +BR9916648 +BR0416734 +BR0106511 +BR112022025298 +BR112023003954 +BR0102243 +BR0809392 +BR9908220 +WO2015075391 +BR112022005717 +BR8804493 +BR112016005228 +BR112018074704 +BR0410027 +BR0009980 +BR0619423 +WO2012170707 +BR0309709 +BR9200285 +BR8506271 +WO2010079187 +BR0207142 +BR0208457 +WO2019200134 +WO2017085120 +WO2012006388 +BR0010303 +WO2020159911 +BR0112864 +BR0301279 +WO1995034526 +BR102021011467 +BR112022023733 +BR9500804 +BR112022012602 +BR0307559 +BR112022005552 +BR9707235 +WO2012170520 +BR112023002587 +WO2016062823 +BR9804476 +BR112020001722 +BR112022013065 +BR112020004403 +BR0005637 +BR112023002512 +BR9915015 +BR9910156 +BR102013004484 +BR9706447 +BR0112090 +BR0011669 +WO1998045243 +BR9808484 +BR0620902 +BR112017013318 +BR9907865 +WO2009148945 +WO2015010895 +BR0514132 +BR0014732 +BR9302655 +BR9106434 +BR112022009919 +BR0200906 +BR0603184 +WO2015011285 +BR122020012639 +WO1996037457 +BR9713575 +BR0713406 +BR7108509 +BR112022013969 +BR8404346 +WO2013025805 +BR0207164 +WO2015063189 +BR0403174 +WO2016034344 +BR9814597 +WO2022002721 +BR0410529 +BR112023002602 +BR9800777 +WO2015003998 +BR8803499 +WO2012091071 +BR112022003712 +BR0709553 +BR112022024415 +WO1996001146 +BR0112436 +BR0512157 +BR102013018337 +BR0814261 +BR9203158 +BR8306389 +BR9916757 +BR8100056 +BR102021017019 +BR7500423 +BR112019000105 +BR9305007 +BR102021018590 +BR0806417 +BR0108444 +BR112022022030 +BR0100608 +BR8305300 +WO2014039638 +WO2022002720 +BR0107969 +BR8700304 +BR112016028080 +BR0408215 +BR112022021808 +BR102013001438 +BR7200917 +BR102018075529 +BR0515922 +BR0713698 +BR112014022649 +BR0016860 +BR0313245 +BR0109533 +BR0309600 +BR112018073864 +BR9911686 +BR0619959 +BR102018068459 +BR9915881 +WO2009042878 +BR0302205 +BR8102809 +BR112023006247 +BR9712940 +BR112023002219 +BR9712538 +BR0307222 +WO2016067180 +BR102012025628 +BR1100219 +WO2011115901 +BR9909360 +BR0709603 +BR1009936 +BR0807062 +BR9906147 +BR112012019361 +BR9900314 +BR0900700 +BR0821851 +BR9810701 +WO1994014757 +BR0620716 +BR9812974 +BR0113699 +WO2013073704 +WO2008073096 +BR0617342 +BR1004194 +WO2016189200 +BR102021016077 +BR0415477 +BR0305614 +BR8502824 +BR9915160 +BR9611296 +BR0306690 +BR0010370 +WO2010101360 +BR112017003272 +BR9909459 +BR112022016070 +WO2009113079 +WO2010014148 +BR9915339 +BR112020004818 +BR0711671 +BR8004759 +BR112019012201 +WO2005009341 +BR0613031 +BR0214863 +WO2013101256 +BR1105139 +BR0007815 +BR112015015415 +BR9508391 +WO2008071582 +WO2015075392 +BR8404937 +BR7905284 +BR0100615 +BR0207287 +BR0011817 +WO2014151805 +WO2011069033 +BR112013015830 +WO2019067394 +BR9803758 +BR0803522 +WO2012018963 +BR0903475 +BR112023005367 +WO2018063424 +BRMU7600735 +BR8107897 +WO2011089263 +BR0312005 +BR9502488 +WO2013025286 +BR112023001849 +BR0512234 +BR9607723 +WO2014118073 +BR9612653 +BR1100225 +BR9709697 +WO2015195749 +BR8303003 +BR9913555 +BR8900938 +BR0507573 +BR0001389 +BR9812117 +WO2015144600 +BR0017339 +BR112022026147 +BR8300416 +BR9811592 +BR9306158 +BR9101118 +BR9914217 +BR0212835 +BR0215536 +BR102012021748 +BR8802175 +BR9306417 +BR9708048 +WO2013017499 +BR112022006607 +BR0808988 +BR0616908 +BR9917533 +WO2017123333 +BR9609204 +BR0211296 +WO2015193547 +WO2013017496 +BR0311276 +BR9206380 +BR9007012 +BR0107611 +BR9806105 +BR0003314 +BR0211555 +BR9911664 +BR9913216 +BR8007348 +BR112022007360 +BR112022023398 +BR0507531 +BR9406563 +BR8003333 +BR0116944 +BR0714319 +BR0308891 +BR112022017255 +WO2013041061 +WO2011053366 +BR7808460 +BR0114715 +BR0015506 +BR112014031900 +BR0621194 +BR112022002700 +BR122022005622 +BR8801650 +BR0201364 +BR102021004173 +BR0107967 +BR0109439 +BR0002178 +WO2016094604 +BR9911267 +BR0514213 +WO2006037894 +WO2007147899 +WO2009083735 +BR0706663 +BR112018075784 +WO2013176261 +BR0003021 +BR0706146 +BR8403837 +BR9913032 +BR9714150 +BR9602850 +WO2019122259 +WO2014028773 +BR0201368 +BR0806726 +BR0307797 +BR9703797 +BR112023001780 +BR0412508 +BR9815652 +BR8404372 +BR0508606 +BR112019015590 +BR8205153 +BR8302106 +BR8006036 +BR0016187 +WO2022056366 +BR8401744 +BR9406658 +WO2012074923 +BR0213496 +BR8404428 +BR112015015057 +WO2017151742 +BR9105622 +BR9712771 +BR102013032677 +BR9703800 +WO2021032881 +BR112022005589 +BR112022024686 +BR9611847 +BR9810248 +BR9706843 +BR9205934 +BR202021018922 +BR0007930 +BR112023001834 +BR8602307 +BR122021014170 +BR122021014201 +BR122021014193 +BR122021014172 +BR122021014175 +BR122021014165 +BR0003114 +BR0014916 +WO2013040383 +BR9913919 +BR112022010168 +BR112015014632 +BR0713215 +WO2007113417 +BR112014032442 +BR9307654 +WO2015132349 +BR112022002966 +BR1001971 +WO2010119927 +WO2015099915 +BR0718314 +BR8500935 +BR0000186 +WO1998018835 +WO2015041265 +BR0712330 +BR9700636 +BR9810907 +BR0213690 +BR112022025706 +BR0314931 +WO2012054314 +BR9608013 +BR0015879 +WO2014027062 +WO2021250164 +BR9815277 +BR0304053 +WO2010115021 +WO2018103409 +BR0100200 +BR112022019960 +BR0113499 +BR9907997 +WO2011092136 +BR8604600 +BR0201365 +BR9813316 +BR0009499 +BR102021006380 +BR0717910 +BR0105605 +BR9917010 +BR8106002 +BR0605400 +BR9603510 +WO2012170807 +BR8700748 +BR112017015571 +BR0415550 +BR0508383 +BR8504456 +BR9900239 +BR9900960 +BR0009518 +BR9602928 +BR112022014799 +BR9810269 +WO2010051527 +WO2019089542 +BR0214697 +WO2011057710 +BR122020005661 +BR9107265 +WO2018063423 +WO2017009403 +BR7808570 +WO2015088892 +BR0924899 +WO2010018832 +BR0300729 +BR112018014014 +WO2019243501 +BR8007802 +BR0305444 +BR7107276 +BR0213869 +BR8602673 +WO2012088191 +BR112016007069 +BR102014027682 +BR1003908 +WO2020158925 +BR0003231 +BR0109882 +BR112020025133 +BR9904696 +WO2022051658 +BR112023001779 +BR0111191 +BR9910100 +BR0418477 +WO2001009102 +BR0012621 +BR112015022778 +BR0311166 +BR8506565 +BR7700392 +BR0210054 +BR9207122 +BR9609535 +BR9200208 +BR9813538 +BR112013031485 +BR0515805 +BR9811852 +BR0405563 +BR0405569 +WO2016127083 +BR0509497 +BR112021002867 +WO2011065449 +BR0303369 +BR8404126 +BR122022020015 +BR9903561 +BR112023000694 +BR0314007 +WO2019089410 +WO2009140674 +BR0600553 +BR7904645 +BR0302068 +BR9915373 +BR0016429 +WO2012106290 +BR8203147 +BR8705973 +BR0012324 +BR112016009619 +BR8006164 +BR0508438 +WO2016209776 +BR0108984 +BR8105592 +BR0714935 +BR8606980 +BR0614165 +BR112021022064 +BR9809367 +BR8107912 +BR8108577 +BRMU6100088 +BR8101780 +BR7908459 +WO2013004377 +BR9911146 +BR9103528 +BR9612725 +BR1005571 +BR9801034 +BR7908901 +BR0007821 +BR8604697 +BR7808650 +BR0209410 +BR8601489 +BR8106548 +BR0803123 +WO2009003167 +BR8701225 +BR9916353 +BR9503691 +BR9506262 +WO2011115903 +BR9000166 +BR9405896 +BR8607056 +WO2021122528 +BR0200325 +BR0713725 +BR0417592 +WO2017136915 +BR0214620 +BR8105326 +WO2009074774 +WO2011005635 +BR7905961 +BR0308929 +BR112015018359 +BR112023005106 +BR9501370 +BR9814697 +BR7702535 +BR9714605 +WO2012024068 +BR8202754 +BR0004487 +BR0609529 +BR8101391 +BR0715757 +BR9915519 +BR9814789 +BR102012032931 +BR0415124 +BR9705428 +BR9813548 +BR8807863 +BR6793768 +BR112022001704 +WO2014103898 +BR112022001710 +BR0617240 +BR0313190 +BR0215418 +BR112016008659 +BR9913089 +BR0313247 +BR8404212 +WO2021178948 +BR112017002094 +BR9901469 +WO2016088076 +BR8104076 +BR0109392 +BR0504239 +BR0814342 +WO2014070588 +WO2019067412 +BR9915913 +BR0215013 +BR8404743 +WO2013002029 +BR0015489 +BR9910679 +BR9712850 +BR9712731 +BR9704794 +WO2012085340 +BR112022027048 +WO2012018960 +BR0616096 +WO2016087559 +WO2011150410 +BR112019007169 +WO2010063032 +BR9307372 +BR9810192 +BR8003334 +WO2015054570 +BR8802252 +BR8606997 +BR112015019997 +BR9600743 +BR8506527 +BR9106435 +BR9916354 +BR9916352 +BR8507072 +WO2009094485 +WO2012106560 +BR8405314 +BR122021002081 +BR122021002082 +BR122021002118 +BR122021002102 +BR122021002108 +BR122021002088 +BR122021002085 +BR122021002092 +BR7800991 +BR0715687 +BR7801895 +WO2021195768 +BR0317068 +BR0617172 +BR0804276 +BR8201914 +BR8004159 +BR102012028485 +BR0102426 +BR0112869 +BR7502662 +WO2006106483 +BR0113428 +BR9610326 +BR0619443 +BR0620286 +BR0006978 +WO2004074227 +BR0705200 +WO2013025945 +BR9508591 +BR122019028113 +BR122019028124 +BR122020018663 +BR122020018667 +BR122019028110 +WO2013093411 +WO2006106484 +BR9814369 +WO2013104911 +BR8104417 +BR112016025970 +BR112015012017 +BR0306792 +BR8903924 +WO2014160184 +BR9914299 +BR9909040 +BR102021013693 +BR9806108 +BR0904782 +BR0302098 +WO2013043245 +BR0010738 +BR8304041 +BR0706791 +BR9802715 +WO2007123622 +BR8303437 +BR0508518 +BR9912289 +BR9916347 +WO1998010089 +BR112022019180 +BR0206912 +BR0818562 +BR0810214 +BR8601371 +BR112019006333 +BR9714744 +BR0408606 +BR0011502 +BR9916350 +BR0011129 +BR8801497 +BR9607170 +BR0211610 +BR9912910 +BR0306939 +WO2016153791 +BR8106533 +WO2016205401 +WO2014108856 +BR112022025823 +BR9601310 +BR112019022833 +BR8004459 +BR9105013 +BR9811677 +BR7905442 +BR0801708 +BR112020007688 +BR112014015564 +BR9204232 +BR0317023 +BR0016839 +BR0111964 +BR122021014158 +BR8105293 +BR0111316 +BR8706796 +BR9916351 +BR112014015212 +BR9915828 +WO2017112643 +BR8506166 +BR112022007162 +BR0519927 +BR0213428 +BR9810812 +BR9914160 +BR7019735 +BR0311441 +BR9807924 +BR0821203 +BR0618617 +BR9814567 +BR0910090 +BR7802346 +BR9908036 +BR0015635 +BR8306664 +BR102013033409 +BR9710486 +BR9809628 +BR112022006347 +BR0012842 +BR6788059 +BR7605325 +BR112019017044 +WO2013043513 +BR102012024128 +BR112016026973 +BR0515336 +BR0207405 +BR9607149 +WO2011026933 +BR7801644 +BR0012570 +BR9700635 +BR0708096 +BR0904305 +BR0706526 +BR7902147 +WO2012168668 +BR9916349 +BR9909286 +BR0804835 +BR0704304 +BR102014030303 +BR0301447 +BR8203026 +BR7601618 +BR0111412 +BR7605838 +BR112013027894 +BR0619099 +BR0510053 +BR0514906 +BR0620119 +BR8106082 +BR8204682 +BR0512761 +BR112012008608 +BR112012019096 +BR8407123 +BR0813055 +BR0015218 +WO2018109167 +BR0716247 +BR9607160 +BR0212552 +WO2007061918 +BR0316748 +BR0704999 +BR7700194 +BR9711039 +WO2019053438 +BR0414092 +BR8107709 +BR0918127 +BR112014029381 +BR8707684 +BR112020006451 +BR9709205 +BR0413792 +BR0417487 +BR0604047 +BR0514888 +BR112016025013 +BR9404346 +BR0311287 +BR9917285 +BR0316520 +BR9713206 +BR0516075 +BR112020018435 +WO2015007833 +BR8100507 +BR112019023830 +BR0700118 +BR0812035 +BR6456640 +BR102012001579 +BR9907164 +BR9815537 +BR9907688 +BR0606851 +BR0711237 +BR0009735 +WO2014105700 +BR9203020 +BR0113654 +BR0608565 +BR9510400 +BR8204671 +BR0618850 +WO2016120548 +BR112023003979 +BR8208085 +BR102012032320 +BR112022010375 +BR112019015047 +BR0507040 +BR112015019061 +BR9911270 +BR0309576 +WO2014185966 +BR0812882 +BR8104842 +BR9306802 +BR0207449 +WO2013159081 +BR7201868 +BR9712325 +WO2008022255 +BR112022002197 +BR0716839 +BR9807180 +BR112019013387 +BR0309937 +BR112022005548 +BR9811851 +BR9916348 +BR112022023465 +BR0317597 +BR112022011177 +BR0004535 +WO2011063325 +WO2018144679 +BR0616986 +BR8102397 +BR9813187 +WO2000012212 +BR9809338 +BR9803004 +WO2013134174 +BR9306445 +BR0112942 +WO2015175809 +BR9205286 +BR112022012219 +BR9603188 +BR9904405 +BR0800268 +BR0709502 +BR112022017430 +BR112023002710 +BR0620312 +BR0616069 +BR0306704 +BR0014613 +WO2014024989 +BR9600044 +BR0512192 +WO2014170641 +BR9802571 +BR9811404 +BR0707221 +BR0707214 +WO2016030644 +BR0509944 +BR0607785 +BR0210189 +BR0622186 +BR112022001702 +BR9804895 +BR8305446 +BR0011422 +BR9903417 +BR0701391 +BR1002386 +WO2017137440 +BR0210661 +BR112018074975 +BR122021017409 +BR0520048 +BR0411182 +BR9601959 +WO2017112635 +WO2012163831 +BR0403236 +WO2018206716 +BR0616573 +BR9600699 +BR9402411 +BR9610897 +BR0300384 +BR0109953 +BR7908881 +BR8900991 +BR102021018917 +BR0311618 +BR112022001842 +BR9501602 +BR112020000452 +WO2015054519 +BR9604918 +BR9706417 +BR112022022826 +WO1994012623 +BR9205765 +BR8307482 +BR8100550 +WO2011011685 +WO2010062480 +BR102013031734 +BR0415828 +BR0820895 +BR0710455 +BR0819240 +BR8502121 +BR112023001778 +BR9915399 +BR0207267 +BR0621743 +BR1000747 +BR0203599 +BR8202354 +BR8602552 +BR9806955 +BR9608071 +BR7906898 +BR9801130 +BR112018000729 +BR0107763 +BR0010223 +BR102020025471 +BR8603817 +BR112016027101 +BR7706950 +BR102021005399 +BR0819151 +BR0606427 +WO2017112631 +BR0013230 +BR1100908 +BR0707297 +BR9913878 +BR112015024587 +BR112019007526 +BR112023003972 +BR0114113 +BR9612547 +BR8506550 +BR7605494 +BR8105458 +BR9815441 +BR8005199 +BR0001435 +BR9804980 +BR9713348 +BR8306534 +WO2009135898 +BR8801498 +WO2012088467 +BR112020006741 +BR8003540 +BR0114820 +BR7704970 +BR8504106 +BR0211071 +BR0812042 +WO2011053367 +BR9803639 +WO2011003940 +BR0616590 +WO2021151161 +BR102017025531 +WO2014004842 +BR8107292 +BR8303848 +BR0113736 +BR8200312 +BR112020003777 +BR0012969 +BR8507297 +BR8601823 +BR112022020757 +WO2012145014 +BR9105939 +BR0708660 +BR0822284 +BR112021022739 +BR0212442 +BR7206251 +BR0709830 +BR0713846 +BR0709831 +BR9810336 +BR9804754 +BR9107268 +BR112014014664 +WO2016124822 +BR8001126 +BR112017000449 +BR9712484 +BR0819425 +BR8900108 +BR9506585 +BR0511395 +BR0117382 +BR0514003 +WO2013186153 +BR8806029 +BR7505493 +BR8003979 +BR8704642 +BR0314034 +BR8301238 +BR7907726 +BR112019009520 +BR0004550 +WO2014044961 +WO2010000649 +BR7017988 +BR0113455 +BR8107996 +BR8600836 +BR9916992 +BR1000862 +BR0112005 +BR9710645 +BR8804378 +BR8205956 +BR9812394 +BR9812565 +BR8700422 +BR0011682 +BR8402801 +BR9611805 +BR112023005104 +BR0109239 +BR0818335 +WO2012064844 +BR0112848 +BR8601906 +BR0614297 +BR0517754 +BR112022011596 +BR9810787 +BR0207907 +BR9105708 +BR0802934 +BR0407514 +BR0205499 +WO2016060171 +BR0800150 +BR9901155 +BR0109600 +BR0003908 +BR112022015815 +BR0414654 +BR0820552 +WO2013188305 +BR9811343 +BR112012030782 +BR0605017 +BR0606862 +BR0620572 +BR9501949 +BR112015023307 +BR7707180 +BR0211404 +BR0710324 +BR0514149 +BR9609241 +BR0114771 +BR0209972 +WO2017161387 +BR8505886 +BR102013018436 +BR0001230 +WO2012063044 +BR0707742 +BR7605929 +BR0408224 +WO2017207501 +BR9804748 +WO2012150051 +BR0809939 +BR0116305 +BR8102802 +BR8306881 +BR9903225 +BR0117018 +BR9402593 +BR0710431 +BR112017019419 +BR0810644 +BR1004612 +BR0007450 +BR9711551 +WO2007096228 +WO2005074912 +BR0607977 +BR9001675 +BR0010883 +WO2016088275 +BR112022014207 +BR112022005051 +WO2012091812 +BR112022006718 +BR9814936 +WO2022124482 +BR0704421 +WO2011008927 +BR102014003618 +BR0711378 +WO2010103223 +BR0607107 +BR0113850 +BR0603286 +BR9610050 +BR8001492 +BR0010565 +BR0720048 +BR9001169 +BR0305373 +BR8603309 +WO2011054483 +BR102012019436 +BR0716347 +BR122017006111 +BR8506644 +BR8902332 +BR9712955 +WO2017021931 +BR8103970 +BR9811357 +BR112023004593 +WO2018211093 +BR0403581 +WO2015118051 +BR8602944 +BR9917446 +WO2013003855 +BR8707835 +WO2012163837 +WO2011008924 +BR8001412 +BR9910941 +BR8008534 +BR7901384 +BR112023002501 +BR9505935 +BR0608314 +BR0000759 +BR0204332 +WO2016088274 +BR9711692 +BR8203382 +BR8202523 +BR8008328 +BR8800781 +BR112022008083 +BR9807213 +WO2022128935 +BR0417541 +BR7107050 +WO2013086633 +BR0615113 +BR7908261 +WO2016180259 +BR0007940 +BR8504455 +WO2016102316 +BR112019018575 +BR9204539 +BR0606399 +BR0618500 +WO2011031897 +BR9102236 +BR0212439 +BR102014032982 +BR8803909 +WO2018137013 +WO2012060961 +BR8102398 +BR9903629 +BR9804630 +BR8904539 +WO2013068459 +BR1001761 +BR9710635 +BR112015007209 +BR8101334 +BR8101335 +WO2017088061 +BR9903224 +WO2010089437 +WO2012167252 +WO2009059254 +BR9906713 +BR8906945 +BR9910158 +BR6915178 +BR0709516 +WO2011087676 +BR9910281 +BR9800295 +BR0308478 +BR9803413 +BR0607597 +BR9914519 +BR102018069025 +WO2013072723 +BR8003367 +WO2014154785 +WO2014187554 +BR9810952 +WO2016209183 +BR112022024215 +BR8103016 +BR9610780 +BR0113746 +BR112019019569 +BR102021004780 +BR0502582 +BR9803928 +BR9813015 +WO2010141928 +BR9102407 +BR9912853 +BR112022025469 +BR0702818 +BR9907855 +WO2013133455 +BR0301281 +WO2002014463 +WO2021243022 +BR112015029635 +WO2018116036 +BR7902079 +WO2020181166 +BR112018069064 +BR0312609 +WO2010124266 +WO2013012777 +BR8700673 +BR0808306 +BR0402723 +BR8008109 +WO2014130465 +WO2014081803 +BR0209546 +BR0015200 +BR0403558 +BR8302409 +WO2015058295 +BR102013001906 +BR112016014519 +WO2022128937 +BR0619103 +BR0103681 +BR9917122 +WO2021140208 +BR9910151 +BR0210153 +BR0000132 +WO2012016786 +BR112022025778 +BR9815632 +BR0113738 +BR9815580 +BR112023006304 +BR8007428 +BR8204524 +WO2008097620 +BR8306454 +BR9300623 +BR8001491 +BR9007609 +WO2011033371 +BR9600210 +BR8702590 +BR9910328 +WO2010000858 +BR9007975 +BR8200779 +BR0512595 +BR9202118 +BR122019028122 +WO2011002832 +BR102021000894 +BR9705451 +BR0514436 +BR9405657 +BR9207144 +WO2013042587 +WO2012122224 +BR8405412 +BR9907408 +BR0201089 +BR112012030596 +WO2015148440 +WO2014066062 +BR112022004726 +WO2008113309 +BR9104980 +BR8401826 +WO2018095579 +BR0902588 +BR1100042 +BR9609041 +WO2009048917 +BR0208739 +BR9810385 +BR0507067 +BR0616472 +WO2017081274 +BR112019008534 +WO2020188088 +WO2010119339 +WO2006121165 +BR8103394 +WO2015152658 +WO2006021587 +BR7702576 +BR0607365 +BR0111549 +BR8007537 +BR8404826 +WO2014052386 +BR8002162 +WO2014173973 +WO2011051977 +BR9910152 +BR0905131 +BR9408286 +BR8500568 +WO2021104672 +WO2017058802 +WO2013127489 +BR102017024441 +BR0016570 +WO2016135397 +BR0114674 +WO2009116286 +BR112022017874 +BR112018014845 +WO2009013160 +WO2019027988 +BR9806053 +WO2009085324 +BR112019008977 +BR9609771 +WO2013090782 +WO2008062558 +WO2013022799 +BR0400322 +BR0712008 +BR0000463 +BR112014016523 +BR0618432 +WO2012078205 +BR122012006762 +BR8207604 +BR7905354 +BR0716009 +BR8303869 +BR9810163 +WO2012158116 +WO2012088114 +WO2019048699 +BR0007807 +BR112022020771 +WO2016135605 +BR0400316 +BR9102738 +BR8008389 +BR0401746 +BR9910147 +BR9900523 +BR112019023977 +WO2013190876 +BR0316835 +BR8205193 +BR0605675 +WO2018066688 +BR0316455 +BR8207281 +BR8906211 +WO2019167371 +WO2014048863 +WO2009078687 +WO2012102617 +BR0201622 +BR0620543 +WO2012062767 +WO2010094665 +BR9506510 +BR9708680 +BR9007117 +WO2013191947 +WO2018095580 +BR0306437 +BR9915832 +BR0114717 +WO2017103421 +WO2015066316 +BR112022014760 +BR122019026534 +BR7504317 +WO2016135396 +BR8200667 +WO2009127727 +WO2019007938 +BR8002015 +BR7907063 +BR7608395 +WO2012088103 +WO2007147264 +BR8006806 +BR9610327 +WO2008006902 +WO2015018423 +BR9905353 +BR9507711 +WO2018191215 +WO2007147263 +BR9106015 +BR0116116 +BR0207835 +BR7900593 +BR8101487 +WO2002066785 +BR0511317 +WO2009031565 +WO2018114762 +WO2004003114 +BR8504666 +BR0011117 +WO2022128492 +WO2003089625 +BR9605230 +BR0701172 +WO2010062390 +BR8502798 +BR0207788 +BR9814368 +WO2014081700 +WO2019011892 +BR8106267 +BR7802073 +BR8405043 +WO2006109479 +WO2010060085 +WO2008018930 +BR0618373 +WO2015042201 +WO2008021141 +BR0511857 +BR102019024379 +BR112023005635 +BR8101894 +BR112022019896 +WO2009047275 +BR112023003476 +BR9307700 +BR112014017802 +BR9201155 +BR0314915 +WO2015186749 +BR9712933 +BR112015023269 +WO2005059139 +BR9902564 +WO2013069995 +BR0208402 +WO2013175074 +BR0212177 +WO2014133092 +WO2011089074 +WO2008140749 +WO2015054580 +WO2003095627 +BR0016030 +WO2012135375 +WO2018215610 +BR9200858 +BR0803772 +BR9705324 +WO2021018794 +BR112023002549 +BR102022024748 +BR8605780 +WO2021097218 +BR9300244 +BR8004894 +BR122019023952 +BR112014007353 +BR0712558 +BR9608515 +BR9708447 +BR112022003206 +BR8106920 +WO2008136369 +WO2012054729 +BR0108043 +BR9101517 +BR0406688 +WO2017216171 +BR8206603 +WO2016130005 +BR9503853 +BR7301431 +WO2012062962 +BR0212445 +BR0116328 +WO2008122980 +WO2013081456 +BR7908268 +WO2013092912 +BR8505255 +WO2016158527 +BR7500990 +BR8805131 +BR9908566 +WO2013015212 +BR9606172 +BR8904178 +BR112020004919 +WO2015174518 +WO2020245337 +WO2015121299 +BR0903489 +BR0407365 +BR9007028 +WO2018144965 +BR0606378 +WO2010093812 +BR7401756 +BR8403319 +BR102013030997 +WO2009144197 +WO2007126799 +BR8900257 +BR8003477 +BR0304818 +BR9709857 +WO2010071440 +BR0400308 +BR112022008800 +BR0306775 +BR7019343 +WO2018149707 +WO2011084626 +WO2020243806 +BR8601034 +BR8502297 +WO2013054005 +BR7907994 +WO2002101100 +BR9702986 +WO2009108601 +BR0115578 +BR0203353 +BR0403246 +WO2009141824 +BR9710399 +WO2017006252 +BR9803397 +BR7900515 +WO2004062365 +WO2013022070 +BR9712594 +WO2015054758 +BR9812640 +WO2009108599 +BR0014965 +BR0520135 +BR0309966 +BR0904515 +WO2014093312 +BR8107823 +BR7907709 +BR8108070 +BR9910650 +BR7907226 +WO2010011675 +WO2009093703 +BR0306208 +WO2011080130 +WO2009105372 +BR8206439 +BR112022014845 +WO2011159645 +WO2017007907 +BR7303535 +BR0303674 +WO2015084162 +BR7400391 +BR9802430 +WO2018071905 +BR9916323 +WO2014099431 +BR8800144 +WO2008109206 +BR0620256 +WO2018114758 +WO2011107506 +WO2008051348 +WO2013115659 +BR9910441 +BR9710839 +BR9106506 +BR0306292 +WO2012054554 +BR8201866 +BR112021000807 +WO2014199623 +BR0309921 +WO2015169920 +WO2012125951 +WO2012061432 +WO2017218577 +WO1998000383 +BR8907762 +BR9106876 +BR7300621 +BR112020007909 +WO2013106172 +WO2009111672 +BR9814053 +BR9712959 +WO2014025479 +BR8705856 +WO2014154787 +WO2015145279 +WO2013012975 +WO2017176875 +WO2015200354 +WO2012125959 +WO2011146277 +BR9912037 +BR8306312 +WO2008136476 +WO2013159662 +WO2013019439 +WO2019175809 +BR9911958 +BR9807186 +BR112023005610 +BR8506003 +WO2012158651 +BR9901230 +WO2008095916 +WO2002070672 +WO2013065541 +BR9916260 +BR0003888 +BR9505855 +WO2009093200 +BR8406684 +BR112022018361 +BR8104020 +WO2016069797 +WO2016010310 +WO2019089815 +WO2017221559 +WO2006009434 +WO2010111396 +BR8906210 +WO2019191263 +WO2011071682 +BR9100409 +WO2008147959 +WO2019135994 +BR9500487 +BR0607750 +BR112022018497 +BR6682027 +WO2013106617 +BR8901521 +BR0015788 +WO2010096931 +BR0402981 +BR0609216 +BR0716395 +BR0812022 +WO2010130806 +WO2021055656 +WO2011049945 +BR8901270 +BR9304298 +WO2002002487 +WO2008064429 +WO2020225506 +WO2017182403 +WO2014108900 +WO2011056227 +WO2012158118 +WO2019175807 +BR9301283 +WO2021163780 +WO2014076483 +WO2013173567 +WO2015144902 +WO2017025344 +WO2014205198 +WO2011097713 +BR8301196 +BR112022022607 +WO2006137725 +BR0112411 +WO2013089802 +WO2020187883 +BR112022004767 +WO2009128305 +BR0015416 +WO2013096366 +WO2008136475 +WO2021102139 +WO2021258077 +BR9611248 +WO2013036968 +WO2015086805 +BR6685707 +BR112015002828 +WO2022101182 +BR0102165 +WO2013094398 +WO2006025295 +WO2013050806 +WO2011010923 +BR8601855 +WO2014164581 +WO2015148272 +BR9405545 +WO2017218380 +BR8103338 +WO2009073557 +WO2009010836 +WO2021199009 +BR0206854 +BR8203330 +WO2012088852 +WO2016001156 +WO2012171123 +WO2012150332 +WO2015107415 +WO2011111638 +BR0016672 +BR8200427 +WO2014181848 +WO2018231552 +BR7704197 +WO2013067964 +BR9907831 +BR8400507 +WO2013019441 +BR7505206 +WO2010074954 +BR8804203 +WO2005095536 +WO2003062430 +WO2008145737 +WO2009075938 +BR7100809 +BR9809879 +BR9106636 +WO2022096615 +WO2014060377 +WO2021014460 +WO2013019440 +WO2014027059 +WO2008009643 +WO2007038833 +WO2021011881 +BR0515928 +WO2018187851 +WO2018106792 +WO2019057845 +BR0507088 +BR9701587 +WO2014075013 +WO2013017330 +BR8905434 +WO1998000558 +BR0302096 +WO2013071871 +WO2015153276 +WO2011128552 +WO2013092884 +BR112022013431 +BR0413756 +WO2012111023 +WO2020261245 +WO2013039705 +WO2017024150 +BR112022014995 +WO2012047614 +WO2022058460 +WO2015012783 +WO2010000656 +WO2013089798 +WO2008038019 +BR9708156 +BR9910192 +BR9814709 +BR8606579 +WO2013050669 +BR7404446 +BR0307303 +WO2013139627 +BR7405690 +WO2022032011 +WO2003076630 +BR6348637 +WO2014059229 +WO2012068634 +WO2019083831 +BR6794123 +WO2021100631 +WO2012109241 +WO2019059404 +BR8802060 +WO2012167796 +WO2014162117 +WO2012052368 +WO2020129001 +WO2015026978 +WO2012080421 +WO2014138540 +WO2020169466 +WO2008064314 +WO2010109203 +WO2014074528 +WO2021239649 +WO2009046524 +WO2022098897 +WO2015147322 +BR0403217 +WO2014058896 +WO2013114219 +WO2007060235 +WO2013015930 +WO2014074452 +WO2008025247 +WO2020109567 +WO2011030204 +WO2014159694 +BR0211285 +WO2014055527 +WO2015100444 +BR8302309 +WO2021250192 +WO2015101753 +WO2020260801 +WO2015057148 +WO2019228903 +WO2014186652 +WO2012082815 +BR9710614 +WO2015193548 +WO2018115251 +WO2012016633 +WO2016007865 +WO2017106633 +WO2013082616 +BR8803791 +WO2016102323 +WO2011130725 +WO2012015831 +WO2007110606 +BR0013915 +WO2006125854 +BR0016959 +WO2016208854 +WO2015118111 +WO2014072232 +WO2020074964 +WO2004062366 +BR8601852 +WO2011001249 +WO2012038459 +WO2012003178 +WO2022159439 +WO2015077573 +WO2006122405 +BR112017007326 +WO2008012058 +WO2010104938 +WO2004078966 +WO2018217722 +WO2011046818 +WO2018065591 +WO2011034871 +WO2013148420 +WO2013114222 +WO2008089299 +WO2013013318 +WO2013033308 +WO2014164392 +WO2018060373 +WO2014164410 +WO2016034610 +WO2006136674 +WO2014019220 +WO2009147541 +WO2010102971 +WO2014199220 +WO2014083261 +WO2020260798 +WO2010092040 +WO2009071996 +WO2020225505 +WO2018141872 +BR8800627 +WO2014144565 +WO2007039067 +BR9909351 +WO2011066318 +BR102012032927 +WO2003013435 +WO2013114223 +WO2010010116 +WO2020206058 +WO2007060233 +WO2017052027 +BR0113064 +WO2010128209 +WO2011044254 +BR7404445 +WO2019154373 +WO2010060964 +BR0015170 +WO2013070615 +WO2021167841 +WO2019016703 +WO2013138357 +WO2013096452 +WO2013030414 +WO2012145179 +WO2012035019 +WO2012160189 +WO2010017230 +BR7701831 +WO2014037254 +WO2021049591 +WO2009125292 +WO2013048700 +WO2014071498 +WO2020023890 +WO2018032785 +WO2009001985 +WO2012149139 +WO2006063467 +WO2010014632 +WO2014155214 +WO2014087016 +WO2009132392 +WO2013188361 +WO2022124590 +WO2008155636 +WO2015019346 +WO2007075204 +WO2021209725 +WO2010068052 +WO2012027469 +WO2019057458 +WO2020245405 +WO2013120492 +WO2022017912 +WO2020028039 +WO2011097075 +WO2012077739 +WO2013076051 +WO2016012701 +WO2012028993 +WO2011099015 +WO2016198653 +BR0015690 +WO2009127352 +WO2015079040 +WO2021181955 +WO2011137147 +BR8106061 +WO2015026987 +WO2013101650 +WO2011073744 +WO2010045629 +BR9709158 +WO2009126843 +WO2022036126 +WO2011095786 +WO2018129370 +WO2013190214 +WO2011143204 +BR8504879 +WO2019063543 +WO2017106262 +WO2013167663 +WO2014034957 +WO2010068821 +WO2012125925 +WO2016010243 +WO2013169645 +WO2017176631 +WO2020123508 +WO2007145858 +WO2007145857 +WO2009098267 +WO2011137150 +WO2013028361 +BR9005238 +WO2007143287 +WO2006019399 +WO2017043725 +WO2021110856 +WO2012135462 +BR8702649 +WO2021212095 +WO2017103679 +BR9809536 +WO2020089187 +WO2011021272 +WO2020104429 +WO2017060243 +WO1996023755 +WO2020245406 +WO2010044960 +WO2014063758 +WO2010135679 +WO2014138535 +WO2013103872 +WO2021180195 +BR9711654 +BR8807149 +WO2013039776 +WO2012010295 +WO2010130812 +WO2012160072 +WO2020214422 +BR0014236 +BR9200625 +WO2013086494 +WO2020115716 +WO2013121551 +WO2012082377 +WO2021115972 +WO2020035231 +WO2017165557 +WO2021133435 +WO2007012641 +WO2010104922 +WO2008033995 +WO2013089838 +WO2022170191 +WO2011097219 +WO2014066145 +BR6134418 +BR6685778 +WO2019240654 +WO2016145527 +WO2012150043 +BR7506132 +WO2013124461 +WO2012064830 +WO2015126899 +WO2014083260 +WO2013106823 +WO2011005554 +WO2006117536 +WO2019118638 +WO2012138494 +BR112022005588 +WO2021133644 +WO2010071697 +BR7204885 +WO2013081700 +WO2012005784 +WO2011076894 +BR0012880 +WO2016077967 +WO2009106703 +WO2012042545 +WO2016077968 +WO2011140460 +WO2019033014 +WO2020052952 +WO2022003237 +WO2014028436 +WO2020120136 +WO2010045576 +BR9804377 +WO2009125819 +BR102012033547 +WO2010132123 +WO2019173424 +WO2008090155 +WO2011160427 +WO2009032696 +WO2010012579 +WO2021133643 +WO2015132000 +WO2012023848 +WO2010097318 +WO2020078871 +WO2014200817 +BR0412729 +WO2022129802 +WO2014028434 +WO2012006217 +WO2012148460 +WO2021126966 +WO2012089517 +WO2022109716 +WO2013146738 +WO2014201439 +WO2020161280 +WO2018153727 +WO2021092173 +WO2013072868 +WO2014039984 +WO2016044713 +WO2014011867 +WO2006026278 +WO2015166387 +WO2020100062 +WO2011112189 +WO2022130343 +WO2019035058 +WO2010113129 +WO2011097065 +WO2017096255 +WO2016066752 +WO2013019232 +WO2006065579 +WO2018001982 +WO2017103564 +WO2021257843 +WO2014186565 +WO2014100424 +WO2021247885 +WO2019108233 +WO2009010231 +WO2017051008 +WO2014113571 +WO2018099954 +WO2011019403 +WO2013086499 +WO2010118022 +WO2019036468 +WO2011097189 +BR8304389 +WO2012019305 +BR112022005612 +WO2008039756 +WO2013080203 +WO2013190874 +WO2010020941 +WO2010120939 +WO2020006251 +WO2021146013 +WO2012093355 +BR9500272 +WO2021067294 +WO2009089185 +WO2019121752 +WO2020126921 +WO2010103137 +WO2013074277 +WO2020037098 +WO2011097186 +BR9100669 +WO2010132079 +WO2010123932 +WO2009149283 +WO2012050114 +WO2018153625 +WO2014176531 +WO2010053989 +BR9401604 +WO2013043286 +WO2014197514 +WO2018166873 +WO2009089630 +WO2013107948 +BR9603984 +WO2021156179 +WO2010014678 +WO2006048720 +WO2022067450 +WO2019005755 +WO2016056650 +WO2020009964 +WO2014033714 +WO2010080752 +WO2021093943 +WO2016145350 +WO2015063411 +WO2020055963 +WO2013117295 +WO2010051627 +BR7400755 +WO2016185801 +WO2015066492 +WO2016145530 +WO2011126654 +BR9800271 +WO2012138629 +WO2013011208 +WO2013053740 +BR0308936 +WO2010026412 +WO2012052204 +WO2014016065 +WO2014156858 +WO2010055495 +WO2016132092 +WO2016168195 +WO2012062961 +WO2016068223 +BR9104119 +WO2022069995 +WO2008145362 +WO2012148456 +WO2022055509 +WO2014108878 +WO2021058785 +WO2012074868 +WO2015081494 +WO2012006236 +WO2014047097 +WO2013036758 +WO2014102156 +WO2010135734 +WO2015162568 +WO2009010407 +BR7700679 +BR9804806 +WO2010052499 +WO2020036814 +WO2012018524 +WO2012012684 +WO2015011418 +WO2012177854 +WO2022144195 +WO2016177853 +WO2009065452 +WO2020035560 +WO2018169769 +WO2013053729 +WO2019148125 +WO2021083546 +WO2013096698 +WO2021204995 +WO2011103026 +WO2013155496 +WO2022115902 +WO2022075337 +WO2009126508 +WO2018001981 +WO2002031140 +WO2012126109 +WO2012012297 +WO2019238635 +WO2013016115 +WO2012158114 +WO2017165553 +WO2005019414 +WO2016069198 +WO2015118457 +WO2015038383 +WO2009083174 +WO2013000088 +WO2012123571 +BR7602696 +WO2008098254 +WO2019050830 +WO2009076520 +WO2008111613 +WO2019160400 +WO2019126097 +WO2013015287 +WO2012088165 +WO2010118932 +WO2017158189 +WO2014096254 +BR9100532 +WO2007136971 +WO2016144175 +WO2018148169 +WO2007032111 +BR0516070 +WO2006053985 +WO2014138551 +WO2008063309 +WO2014138543 +WO2020132318 +WO2008101403 +BR7601734 +WO2012081418 +WO2014028358 +WO2011157322 +WO2007083241 +WO2014108864 +WO2016145363 +WO2006061196 +WO2004078140 +WO2015072413 +WO2006034590 +WO2015097100 +WO2011128712 +WO2012061647 +WO2013056649 +WO2009091866 +WO2011097208 +WO2013107947 +WO2012035649 +WO2016168894 +BR9007039 +WO2013090139 +BR9713772 +WO2021030271 +WO2012072793 +WO2008040784 +WO2012146528 +WO2020010101 +WO2017096235 +WO2013078146 +WO2019160984 +WO2017077504 +WO2015107312 +WO2020126916 +WO2019036721 +WO2008130969 +WO2019162586 +WO2015200429 +WO2016042095 +WO2017144388 +WO2014210587 +WO2009100434 +WO2016180812 +WO2010094659 +BR9501539 +WO2009143244 +WO2017155803 +WO2009152359 +WO2016159767 +WO2018049128 +WO2011070544 +WO2013188313 +WO2014153210 +WO2009143059 +WO2016209831 +WO2019238634 +BR0407531 +WO2013010090 +WO2015025111 +WO2013043824 +WO2008069981 +WO2014139854 +WO2017143124 +WO2010138957 +WO2011127172 +WO2014108647 +WO2021185168 +WO2007102919 +WO2017051114 +WO2015140467 +BR9608843 +WO2011068748 +BR6573493 +WO2020153877 +WO2011097217 +WO2009058182 +BR0514769 +WO2018140928 +WO2016145358 +WO2009058938 +WO2006055183 +WO2008131155 +BR6573496 +WO2017090055 +WO2020154251 +BR7701218 +WO2010126443 +WO2013188367 +WO2016094029 +WO2012052327 +WO2015126581 +BR8102377 +BR0113771 +WO2014001595 +WO2014173995 +WO2017057085 +WO2013123871 +WO2009013750 +WO2014138310 +WO2020052979 +WO2013096700 +WO2022115002 +WO2020002152 +WO2006005269 +WO2019139720 +WO2015200902 +WO2009067751 +WO2014007921 +WO2012151526 +WO2019022890 +WO2014039986 +WO2015002841 +WO2009077087 +WO2011097220 +WO2012148510 +BR9708376 +WO2019022891 +WO2011051643 +BR7607517 +WO2012145230 +WO2015053998 +WO2012138540 +BR9509686 +WO2013102589 +WO2020178178 +WO2020094750 +WO2022117803 +WO2012039759 +WO2012015340 +WO2010101665 +WO2013103768 +WO2014047508 +WO2019003239 +WO2015098070 +WO2005123658 +WO2014047505 +WO2009017925 +WO2010104092 +WO2012087601 +WO2002066667 +WO2004043881 +WO1994020448 +BR7501394 +WO2013163271 +WO2008108674 +WO2006063289 +WO2021102078 +WO2020260799 +WO2011097211 +WO2008006384 +WO2012018520 +WO2013076680 +WO2017067887 +WO2015091018 +WO2016101073 +WO2007079323 +WO2015048383 +WO2013096699 +WO2014138600 +WO2012088429 +BR0106112 +BR7015918 +WO2006134227 +WO2014145973 +WO2014130812 +WO2018132736 +WO2020126917 +WO2020094751 +WO2006134088 +WO2007142840 +WO2013167438 +WO2016094594 +WO2022082310 +WO2015179578 +WO2021110859 +WO2013142338 +WO2013181760 +WO2017205089 +WO2009114451 +BR7410006 +WO2015111075 +WO2020243702 +WO2015048208 +BR9810448 +WO2003064364 +WO2010120173 +WO2014159992 +WO2011135527 +WO2016069251 +WO2014008203 +WO2011027353 +WO2012112773 +WO2021026615 +WO2013052499 +WO1997019018 +WO2009134670 +WO2016179485 +WO2014003475 +WO2016066813 +BR9404847 +WO2014059131 +WO2021211107 +WO2021003132 +WO2022133460 +WO2017167642 +BR9002360 +WO2018007565 +BR9406927 +BR9708682 +WO2015035734 +WO2012051412 +WO2020136003 +WO2012051411 +WO2015104238 +WO2022136374 +WO2006107931 +WO2013096891 +WO2020058160 +BR7308821 +BR9707481 +WO2008063755 +WO2013015990 +WO2016160999 +WO2018118461 +BR0015031 +BR112018074904 +WO2013188162 +BR7305727 +WO2011143392 +WO2021126734 +WO2016132091 +WO2008033018 +WO2008034109 +WO2018208163 +WO2010144332 +WO2022055906 +WO2014012601 +WO2011143391 +WO2012151447 +WO2022063926 +WO2022154212 +WO2016083242 +WO2018060654 +BR112019027907 +WO2022079434 +BR102015007046 +WO2005087698 +WO2013098819 +WO2001055433 +WO2015107504 +BR0718276 +WO2021206724 +WO2014198901 +WO2016083241 +BR8403630 +WO2005052148 +WO2010100595 +WO2009119395 +BR0309585 +WO2012138772 +WO2018096326 +WO2019022892 +WO2007039753 +WO2008069980 +WO2009049110 +WO2010129449 +BR9001845 +WO2012167005 +WO2015078624 +WO2008069982 +WO2010080377 +WO2019022886 +BR9404845 +WO2007083551 +BR9709241 +WO2013131191 +WO2011022471 +WO2021178880 +WO2016164586 +WO2016118448 +WO2004074230 +WO2016139579 +WO2008069983 +WO2017116840 +WO2015062735 +WO2010028456 +WO2015078625 +BR0206418 +WO2009156324 +WO2009103049 +WO2016048889 +WO2011127167 +WO2022094790 +WO2015034565 +WO1999010519 +WO2013123397 +WO2019006341 +WO2017087672 +WO2012040138 +WO2010052019 +WO2012138382 +WO2012085860 +WO2012103345 +WO2010124324 +WO2016120549 +WO2013124423 +WO2009034936 +WO2015054091 +WO2011051642 +WO2017136722 +WO2020117532 +WO2008121633 +WO2014052298 +WO2013148187 +WO2013096118 +WO2010014145 +WO2013129179 +WO2013014241 +WO2014189991 +WO2013148184 +WO2009156842 +WO2015036138 +WO2018107204 +WO2007116201 +WO2021076917 +WO2011002968 +WO2021038374 +WO2012103325 +WO2010076756 +BR9404844 +WO2012019159 +WO2022063620 +WO2013124404 +WO2013148190 +WO2018078592 +WO2022136708 +BR8801110 +BR9916209 +WO2008074116 +WO2001082685 +WO2016017641 +BR8705501 +WO2020187995 +WO2015128314 +WO2018007560 +WO2014029672 +BR0514773 +WO2001060832 +WO2019129736 +WO2010143138 +WO2012035160 +BR0204619 +BR8203010 +WO2013136940 +WO2012006642 +WO2012103317 +WO2012101403 +BR112014020824 +WO2012103322 +WO2013165962 +WO2019022884 +WO2020154810 +WO2013057149 +WO2019121032 +WO2008157432 +WO2004099403 +WO2008041921 +WO2014190477 +WO2007032899 +WO2016182516 +WO2021014988 +WO2011123154 +BR9003786 +WO2014087015 +WO2008052991 +BR0009471 +BR7302768 +WO2010071558 +WO2015075277 +WO2014144639 +BR112022006786 +BR0309870 +WO2016120546 +WO2011120615 +WO2007057749 +WO2013101756 +WO2012106824 +WO2015049573 +WO2011027105 +WO2019161143 +WO2011097194 +WO2011100601 +WO2016154196 +WO2007036478 +WO2019022882 +WO2009087680 +WO2019022888 +WO2017093345 +WO2011133895 +WO2018144840 +WO2010078519 +WO2013148185 +WO2012103330 +WO2009111263 +WO2002020717 +WO2015014364 +WO2014059133 +WO2019129808 +WO2004080956 +WO2009016082 +WO2013090720 +WO2013053730 +WO2013047752 +WO2006041019 +WO2010014151 +WO2010039693 +WO2017116235 +WO2021138443 +WO2004071650 +WO2016096971 +WO2014130539 +WO2019161151 +WO2012125937 +WO2016113063 +WO2008073578 +WO2017132239 +WO2011014345 +BR0922619 +WO2012103350 +WO2012112529 +WO2019161146 +WO2016094684 +WO2010071867 +WO2012149192 +WO2017080987 +WO2019161150 +WO2012009396 +WO2008051608 +WO2013110876 +WO2014020520 +WO2008112459 +WO2019239915 +WO2018151833 +WO2018138386 +WO2016196368 +WO2008095786 +WO2014044230 +WO2009033542 +BR0212219 +WO2014125020 +WO2016049443 +WO2013088001 +WO2010014153 +WO2013092881 +WO2015017436 +WO2012092440 +WO2014106532 +WO2022106584 +WO2015017434 +WO2009047023 +WO2010080464 +WO2020145371 +WO2011140468 +WO2011048091 +WO2012092436 +WO2017136740 +WO2012081416 +WO2013012141 +WO2018073129 +WO2019060192 +WO2015017437 +WO2013090076 +BR0411248 +WO2011005507 +WO2012138381 +WO2009112508 +WO2013113915 +WO2013086342 +WO2011103277 +WO2010129540 +BR112021019278 +WO2020210907 +BR0416091 +WO2020156857 +WO2013078391 +WO2020264179 +WO2003076492 +WO2016025139 +WO2021032647 +WO2013070160 +WO2015012538 +WO2015099042 +WO2020181171 +WO2011085223 +WO2013124401 +WO2020205265 +WO2018146895 +WO2013105653 +WO2016007216 +WO2021253124 +WO2008122661 +WO2014059140 +WO2019233656 +WO2014041091 +WO2018015403 +WO2017001382 +WO2010055189 +WO2006056838 +BR9814141 +WO2014158777 +WO2015081484 +WO2018217961 +WO2010146380 +WO2016071829 +WO2015181823 +WO2019069074 +WO2009117689 +WO2013178915 +WO2018015404 +WO2010103519 +WO2018011666 +WO2020263732 +WO2017097938 +WO2020117831 +WO2010048425 +WO2020007774 +WO2005110961 +WO2011056769 +WO2013027223 +WO2013105651 +WO2019022889 +WO2009077831 +WO2011082217 +WO2013105652 +WO2009142922 +WO2012059685 +WO2011084447 +WO2008148384 +WO2013096244 +WO2010025241 +WO2013080967 +WO2010027323 +WO2011161274 +WO2018163448 +WO2018067281 +WO2010055837 +WO2020182624 +WO2022038477 +WO2011133892 +WO2011007146 +WO2018093880 +WO2013092781 +WO2017216311 +WO2008011001 +BR0111627 +WO2021255631 +BR0016363 +WO2015007568 +WO2010067824 +WO2014161648 +WO2019086369 +WO2020132188 +WO2013110877 +WO2012110281 +WO2011046967 +WO2008020046 +WO2011133896 +WO2021239777 +WO2007149699 +WO2020010176 +WO2016168237 +WO2010011680 +WO2011034777 +WO2021170625 +WO2012081417 +WO2013028519 +WO2008120194 +BR0516831 +WO1994005423 +WO2008012047 +BR9709250 +WO2008082298 +WO2016069541 +WO2011005604 +WO2014118123 +BR0500968 +WO2021240426 +WO2012106516 +WO2008042616 +WO2013185149 +WO2013117433 +WO2004072291 +WO2013016396 +WO2012047883 +WO2009155169 +WO2014097867 +WO2013096703 +WO2013122268 +WO2011133891 +BR9003785 +WO2012009391 +WO2008125983 +WO2015162038 +WO2017105977 +WO2016012613 +WO2014207376 +WO2016066835 +WO2011042365 +WO2006067171 +WO2014131970 +WO2014088934 +WO2014151528 +WO2014074990 +WO2011067242 +WO2013096617 +WO2021086944 +WO2020216603 +WO2014151212 +WO2009061378 +WO2007133310 +WO2014146581 +WO2014159845 +WO2016069227 +WO2016193208 +WO2015191353 +WO2015099045 +WO2021121526 +WO2015107413 +WO2013074434 +WO2014184281 +WO2014088940 +WO2015077538 +WO2016074699 +WO2014041094 +WO2011008501 +WO2016087445 +WO2015153534 +WO2021216542 +WO2013083618 +WO2000063167 +WO2019161148 +WO2011001410 +WO2011143819 +WO2014049204 +WO2014088937 +WO2007051756 +WO2015065978 +WO2015075290 +WO2006017920 +BR112022010153 +WO2015012890 +WO2021233780 +WO2005085163 +WO2015086735 +WO1998008804 +WO2017065969 +WO2012103334 +WO2010036555 +WO2021126797 +WO2009113684 +WO2018069702 +WO2004018620 +WO2010104722 +WO2018184120 +WO2021168532 +WO2010124152 +WO2013190720 +WO2007076115 +WO2021216571 +WO2015165583 +WO2005001050 +WO2013098789 +WO2012143513 +WO2011120618 +WO2022043559 +WO2020254460 +WO2013119230 +WO2015061672 +WO2012138380 +WO2011120616 +WO2021154143 +WO2019084895 +WO2008124933 +WO2015114010 +WO2013045786 +WO2010007497 +WO2008143940 +WO2020207370 +WO2013067252 +WO2020205764 +WO2008142036 +WO2017074558 +WO2010130973 +WO2022056413 +WO2004091544 +WO2012047543 +BR112015013710 +WO2014058572 +WO2011041796 +WO2016071830 +WO2009078973 +WO2011154253 +WO2017029312 +WO2012170923 +WO2015179191 +WO2021244637 +WO2009103948 +WO2022132694 +WO2007085483 +WO2014047511 +WO2006002034 +BR0417928 +WO2015150497 +WO2022056155 +WO2008156863 +WO2019011708 +WO2017210508 +WO2019236257 +WO2018091004 +WO2022128993 +WO2018126201 +WO2009103237 +WO2020047656 +WO2013067296 +WO2022043991 +WO2018136385 +WO2009148330 +WO2008028121 +WO2014003556 +WO2020159587 +WO2008016401 +BR0514757 +WO2009015055 +WO2021250327 +WO2010113020 +WO2009067218 +WO2015073772 +WO2013111782 +WO2013108017 +WO2015044828 +WO2019133726 +WO2009083958 +WO2016091640 +WO2013098338 +WO2008028055 +WO2013063006 +WO2022096182 +WO2014070844 +WO2004053129 +BR0206692 +WO2013128448 +WO2019197232 +WO2012148835 +WO2021032590 +WO2009108689 +WO2013053455 +WO2018226573 +WO2004013304 +WO2021160889 +BR0214673 +WO2010012796 +WO2018053230 +BR9003784 +WO2011146046 +WO2020039199 +WO2013123400 +WO2012092666 +WO2019105366 +WO2018096176 +WO2017141128 +WO2013010885 +WO2007057138 +WO2012113832 +WO2009100555 +WO2010072798 +WO2009051977 +WO2011011833 +BR0405166 +WO2013010894 +WO2012007919 +BR112022021723 +WO2009055614 +WO2020002999 +WO2016081148 +WO2013169923 +WO2012025501 +WO2020049095 +WO2014070841 +WO2000066742 +WO2020248971 +WO2011127157 +WO2017208072 +WO2008025694 +WO2021162900 +WO2010124151 +WO2018002360 +WO2011075648 +WO2012103555 +BR0316880 +WO2013175188 +WO2010090695 +WO2013157255 +WO1996004243 +WO2011029895 +WO2015109257 +WO2017155092 +WO2022051696 +WO2012146904 +WO2008045489 +WO2018071485 +WO2018125753 +WO2018119225 +WO2006034228 +WO2018115042 +WO2011064190 +WO1996032190 +WO2014089533 +WO2016083137 +WO2012100093 +WO2014102773 +WO1999026910 +WO2016009051 +WO2008156736 +WO2012085862 +WO2021168207 +WO2008040465 +BR9301500 +WO2017115353 +WO2012115932 +WO2014082881 +WO2019098242 +WO2011109661 +WO2008153805 +WO2017153653 +WO2008085729 +WO2010071988 +WO2019051586 +WO2019083879 +WO2011051314 +WO2012041013 +WO2014102774 +WO2013098659 +BR0108187 +WO2011056597 +WO2009117044 +WO2019224353 +WO2020157378 +WO2009048488 +WO2007039442 +WO2013102084 +WO2011088365 +WO2012109503 +WO2005003312 +WO2014187621 +WO2013053940 +WO2013030803 +WO2021084159 +WO2008019468 +WO2011011492 +WO2017118686 +WO2018116164 +WO2004084627 +WO2016108185 +BR0014961 +BR9905616 +WO2015078925 +WO2005095457 +WO2021168250 +WO2013124457 +WO2014180778 +WO2008006792 +WO2021056087 +WO2013090547 +WO2007102812 +WO2016108638 +WO2014138666 +WO2015029031 +WO2021168799 +WO2011097003 +WO2019077514 +BR9003787 +WO2010138620 +WO2016101104 +WO2009150118 +WO2015121488 +WO2016096905 +WO2021063860 +WO2005028404 +WO2014100289 +WO2012072567 +WO2013102762 +WO2013088045 +WO2017140607 +WO2018007986 +WO2007094852 +WO2010148268 +WO2012084810 +WO2019232404 +WO2013053941 +BR0007487 +WO2014079691 +WO2014188428 +WO2009106877 +WO2012031198 +WO2010096613 +WO2007050498 +WO2013050537 +WO2008064595 +WO2008137491 +WO2011156227 +WO2006037957 +WO2017076505 +WO2010118889 +WO2009126208 +WO2007095243 +WO2011083255 +WO2013072466 +WO2019154797 +WO2013112656 +WO2011056595 +WO2017205834 +WO2014070837 +WO2002034919 +WO2011030083 +WO1994007998 +WO2018071272 +WO2007060380 +BR9813631 +WO2020227388 +WO2000053724 +WO2016092030 +WO2014086825 +WO2007143819 +BR0417914 +WO2012084794 +WO2017031161 +WO2020210161 +WO2014096311 +WO2012056458 +WO2020236132 +WO2010127062 +WO2012045849 +WO2013179211 +WO2008142034 +WO2013009820 +WO2002004019 +WO2012146371 +WO2022150601 +WO2019209700 +WO2011031922 +WO2014164777 +WO2007080174 +WO2009106619 +WO2011007369 +WO2020229533 +WO2021108782 +WO2021229226 +WO2002018572 +WO2012109515 +WO2010038021 +WO2002024926 +WO2009024567 +WO2012175614 +WO2020219983 +WO2013185778 +WO2016182847 +WO2022040436 +WO2019060986 +WO2009120257 +WO2015162143 +WO2011131667 +WO2020232371 +WO2008020112 +WO2022013440 +WO2013103399 +WO2009018396 +WO2019134048 +WO2020104650 +WO2000042012 +WO2013030569 +WO2021127155 +WO2008041920 +WO2012085645 +WO2012084831 +WO2013176803 +WO2006007432 +WO2020165097 +WO2005092840 +WO2012119927 +WO2016004482 +WO2016009050 +WO2016055879 +WO2018114484 +WO2019063101 +WO2016187494 +WO2007058833 +WO2019020522 +WO2018017664 +WO2016009060 +WO2012083219 +WO2011084631 +WO2004099447 +WO2022078796 +WO2014125027 +WO2009099783 +WO2020005689 +WO2013000273 +WO2020005693 +WO2019086865 +WO2009037279 +WO1999050399 +WO2010069137 +WO2019075281 +WO2021144356 +WO1994017028 +WO2009039507 +WO2019215333 +WO2019063757 +WO2021229414 +WO2020208379 +WO2007044137 +WO2010055027 +WO2008112729 +WO2010076527 +WO2011121797 +WO2022152749 +WO2008045391 +WO2014108529 +WO2001036360 +WO2017134441 +WO2003024916 +WO2007031877 +WO2011020825 +WO2020095058 +WO2007106181 +WO2012020061 +WO2015100799 +WO2001004106 +BR0208637 +WO2013103397 +WO2007040008 +WO2016098048 +BR122012021567 +WO2014191534 +BR9814375 +BR9403784 +WO2009047525 +WO2011106794 +WO2009025003 +BR9915210 +WO2016009053 +WO2009086634 +WO2013039583 +WO2007104175 +WO2012007142 +WO2020124273 +WO2007068745 +WO2010125414 +WO2010059095 +WO2014004683 +WO2019089702 +WO2010146331 +WO2019020520 +WO2020068661 +WO2012015824 +WO2016177801 +WO2002062358 +WO2015095462 +WO2020124274 +WO2016001286 +WO2015091158 +WO2015007997 +WO2020239568 +WO2021234459 +WO2020003126 +WO2013067547 +WO2013034657 +BR0110955 +WO2003018959 +WO2021063863 +WO2015197727 +WO2021184086 +WO2011038317 +WO2010091149 +WO2016194003 +WO2014191535 +WO2017031156 +WO2010121975 +WO2007067525 +WO2019134049 +WO2011053365 +WO2013103850 +WO2008039353 +WO2020249670 +WO2020048444 +WO2013143129 +WO2018059427 +WO2008044034 +WO2022023761 +WO2018207693 +WO2017011727 +WO2001072703 +WO2020152226 +WO2012119928 +WO2021224629 +WO2019011668 +BR0214017 +WO2019089206 +WO2011020852 +WO2015000929 +WO2018095559 +WO2017177326 +WO2012163668 +WO2019068578 +WO2002020812 +WO2014160790 +WO2020024045 +WO2008077546 +WO2018035449 +WO2012156817 +WO2018035446 +WO2020077007 +WO2010131054 +WO2019201569 +WO2020237368 +WO2014047079 +WO2010086398 +WO2020063628 +WO2019197468 +WO2009068649 +WO2014023775 +WO2005061544 +WO2020181324 +WO2017097275 +WO2019092064 +WO2015067601 +WO2015070034 +WO2018202808 +WO2005068637 +WO2012109256 +WO2008108735 +WO2008089223 +WO2008089224 +WO2008089225 +WO2008089226 +WO2008089227 +WO2008089228 +WO2008089229 +WO2008089230 +WO2008089231 +WO2008089232 +WO2008089233 +WO2008089234 +WO2008089235 +WO2008089236 +WO2008089237 +WO2008089238 +WO2008089239 +WO2008089240 +WO2008089241 +WO2008089242 +WO2008089243 +WO2008089244 +WO2008089245 +WO2008089246 +WO2008089247 +WO2008089248 +WO2008089249 +WO2008089250 +WO2008089251 +WO2008089252 +WO2008089253 +WO2008089254 +WO2008089255 +WO2008089256 +WO2008089257 +WO2008089258 +WO2008089259 +WO2008089260 +WO2008089261 +WO2008089262 +WO2008089263 +WO2008089264 +WO2008089265 +WO2008089266 +WO2008089267 +WO2008089268 +WO2008089269 +WO2008089270 +WO2008089271 +WO2008089272 +WO2008089273 +WO2008089274 +WO2008089275 +WO2008089276 +WO2008089277 +WO2008089278 +WO2008089279 +WO2008089280 +WO2008089281 +WO2008089282 +WO2008089283 +WO2008089284 +WO2008089285 +WO2008089286 +WO2008089287 +WO2008089288 +WO2008089289 +WO2008089290 +WO2008089291 +WO2008089292 +WO2008089293 +WO2008089294 +WO2008089295 +WO2008089296 +WO2008089297 +WO2008089298 +WO2008089299 +WO2008089300 +WO2008089301 +WO2008089302 +WO2008089303 +WO2008089304 +WO2008089305 +WO2008089306 +WO2008089307 +WO2008089308 +WO2008089309 +WO2008089310 +WO2008089311 +WO2008089312 +WO2008089313 +WO2008089314 +WO2008089315 +WO2008089316 +WO2008089317 +WO2008089318 +WO2008089319 +WO2008089320 +WO2008089321 +WO2008089322 +WO2008089323 +WO2008089324 +WO2008089325 +WO2008089326 +WO2008089327 +WO2008089328 +WO2008089329 +WO2008089330 +WO2008089331 +WO2008089332 +WO2008089333 +WO2008089334 +WO2008089335 +WO2008089336 +WO2008089337 +WO2008089338 +WO2008089339 +WO2008089340 +WO2008089341 +WO2008089342 +WO2008089343 +WO2008089344 +WO2008089345 +WO2008089346 +WO2008089347 +WO2008089348 +WO2008089349 +WO2008089350 +WO2008089351 +WO2008089352 +WO2008089353 +WO2008089354 +WO2008089355 +WO2008089356 +WO2008089357 +WO2008089358 +WO2008089359 +WO2008089360 +WO2008089361 +WO2008089362 +WO2008089363 +WO2008089364 +WO2008089365 +WO2008089366 +WO2008089367 +WO2008089368 diff --git a/PATENTES WIPO TO GOOGLE.py b/PATENTES WIPO TO GOOGLE.py new file mode 100644 index 0000000..0fb2e69 --- /dev/null +++ b/PATENTES WIPO TO GOOGLE.py @@ -0,0 +1,121 @@ +import time +import re +import pandas as pd +from tqdm import tqdm +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.chrome.service import Service +from webdriver_manager.chrome import ChromeDriverManager +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC + +# ---------- CONFIG ---------- +file_path = r"C:\Users\ATAF IP\COMPRAS\wipo_with_methanol (1).xlsx" +sheet_name = "ResultSet" +# small delay between requests (increase if you get blocks) +DELAY_BETWEEN = 1.0 +# timeout for element load +WAIT_TIMEOUT = 20 +# ---------------------------- + +# Ler planilha +df = pd.read_excel(file_path, sheet_name=sheet_name) + +# Garante que existe uma coluna B para armazenar o ID da patente e que ela aceita strings +if df.shape[1] < 2: + df.insert(1, 'Patent_ID', pd.NA) +else: + # renomeia a segunda coluna para um nome consistente (opcional) + second_col = df.columns[1] + if second_col != "Patent_ID": + df.rename(columns={second_col: "Patent_ID"}, inplace=True) + +df['Patent_ID'] = df['Patent_ID'].astype(object) # evita FutureWarning ao atribuir strings + +# Configurações do Chrome (headless) +options = Options() +# se sua versão do Chrome for antiga, substitua por "--headless" +# options.add_argument("--headless=new") +options.add_argument("--no-sandbox") +options.add_argument("--disable-dev-shm-usage") +options.add_argument("--disable-gpu") +options.add_argument("--window-size=1920,1080") + +service = Service(ChromeDriverManager().install()) +driver = webdriver.Chrome(service=service, options=options) +wait = WebDriverWait(driver, WAIT_TIMEOUT) + +# Itera por todos os índices (inclui o índice 0 — ou seja, a "primeira" linha de dados) +for idx in tqdm(df.index[1850:1900 ].tolist(), desc="Extraindo patentes"): + link = df.at[idx, df.columns[0]] + + # pula célula vazia ou valores óbvios não-URL + if pd.isna(link): + continue + if not isinstance(link, str): + link = str(link) + if not link.lower().startswith("http"): + tqdm.write(f"Pulando valor não-URL na Excel linha {idx+2}: {link!r}") + continue + + time.sleep(5) + try: + driver.get(link) + + # tenta localizar o elemento principal + text = None + try: + el = wait.until( + EC.presence_of_element_located((By.CSS_SELECTOR, "div.ps-page-header--subtitle--text")) + ) + text = el.text.strip() + except Exception: + # fallback via JS + text = driver.execute_script( + "const e=document.querySelector('div.ps-page-header--subtitle--text'); return e?e.innerText:null;" + ) + if not text: + # outro fallback por XPath (caso a estrutura varie) + elems = driver.find_elements(By.XPATH, "/html/body/div[2]/div[2]/form/div/h1/div/div[1]") + if elems: + text = elems[0].text.strip() + + if not text: + tqdm.write(f"⚠️ Elemento não encontrado na Excel linha {idx+2} ({link})") + df.at[idx, "Patent_ID"] = pd.NA + continue + + # extrai o identificador com regex (procura padrão tipo 'WO2015135046' ou 'BRPI...'): + m = re.search(r'\b([A-Z]{1,5}\d{2,}[A-Z0-9\-]*)\b', text) + if m: + patent_id = m.group(1) + else: + # fallback: pega primeiro token que contenha letra+digito + patent_id = None + for t in text.split(): + if re.search(r'[A-Za-z]\d', t): + patent_id = t + break + patent_id = patent_id or text.split()[0] + + df.at[idx, "Patent_ID"] = str(patent_id) + tqdm.write(f"✅ {patent_id} extraído da Excel linha {idx+2}") + + except Exception as e: + tqdm.write(f"⚠️ Erro na Excel linha {idx+2}: {e}") + df.at[idx, "Patent_ID"] = pd.NA + + time.sleep(DELAY_BETWEEN) + +driver.quit() + +# Faz backup do arquivo original e grava a aba substituída +backup_path = file_path.replace(".xlsx", ".backup.xlsx") +df.to_excel(backup_path, sheet_name=sheet_name, index=False) + +with pd.ExcelWriter(file_path, engine="openpyxl", mode="a", if_sheet_exists="replace") as writer: + df.to_excel(writer, sheet_name=sheet_name, index=False) + +print("✅ Processo concluído. Backup salvo em:", backup_path) +print("Verifique a célula B2 (Excel) para confirmar que o primeiro registro foi salvo.") diff --git a/PATENTS WIPO TO GOOGLE FINALIZADO.xlsx b/PATENTS WIPO TO GOOGLE FINALIZADO.xlsx new file mode 100644 index 0000000..3958f14 Binary files /dev/null and b/PATENTS WIPO TO GOOGLE FINALIZADO.xlsx differ diff --git a/SCRAPPER.py b/SCRAPPER.py new file mode 100644 index 0000000..2ef2fe4 --- /dev/null +++ b/SCRAPPER.py @@ -0,0 +1,191 @@ +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.chrome.options import Options +from selenium.common.exceptions import TimeoutException +from bs4 import BeautifulSoup +from openpyxl import load_workbook +import time +import spacy +from collections import Counter + +# Caminho do Excel +excel_path = r"C:\Users\ATAF IP\COMPRAS\WEBSCRAPPING.xlsx" + +# Abre o Excel +wb = load_workbook(excel_path) +ws = wb.active + +# Configurações do Chrome (headless para ficar mais rápido) +chrome_options = Options() +chrome_options.add_argument("--headless") +driver = webdriver.Chrome(options=chrome_options) + +# Carrega modelo spaCy em português (faça isso fora do loop se possível) +nlp = spacy.load("pt_core_news_sm") + +# Loop nas linhas da planilha (a partir da linha 2) +for row in range(2, ws.max_row + 1): + url = ws[f"A{row}"].value + if not url: + continue + + print(f"[Linha {row}] Acessando: {url}") + try: + driver.get(url) + time.sleep(3) # esperar renderização JS + soup = BeautifulSoup(driver.page_source, "html.parser") + + # ---------------- Inventores - Resolvido - COLUNA B ---------------- + inventors = [] + + try: + # Seleciona o bloco que contém "important-people" + important_people = soup.select('dl.important-people.style-scope.patent-result') + + if important_people: + dl = important_people[0] + # encontra o